diff --git a/.prettierrc.json b/.prettierrc.json index 9931f23c23f..1bf93220bb9 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -19,6 +19,11 @@ "tabWidth": 4, "importOrderSeparation": true, "importOrderSortSpecifiers": true, - "importOrder": ["^@/api/(.*)$", "^@/components/elements/(.*)$", "^@/components/(.*)$", "^[./]"], + "importOrder": [ + "^@/api/(.*)$", + "^@/components/elements/(.*)$", + "^@/components/(.*)$", + "^[./]" + ], "plugins": ["@trivago/prettier-plugin-sort-imports"] -} \ No newline at end of file +} diff --git a/.styleci.yml b/.styleci.yml index 4705a373849..c19337e46e9 100644 --- a/.styleci.yml +++ b/.styleci.yml @@ -1,12 +1,12 @@ php: - preset: laravel - disabled: - - no_unused_imports - finder: - not-name: - - index.php + preset: laravel + disabled: + - no_unused_imports + finder: + not-name: + - index.php js: - finder: - not-name: - - vite.config.js + finder: + not-name: + - vite.config.js css: true diff --git a/CHANGELOG.md b/CHANGELOG.md index a3b5636a97a..1457bffbe53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,55 +8,55 @@ This project follows [Semantic Versioning](http://semver.org) guidelines. ### Additions -- Added IP pools and overhauled IP Address Management (IPAM) +- Added IP pools and overhauled IP Address Management (IPAM) ### Changes -- Switched out MySQL for PostgreSQL (pending) +- Switched out MySQL for PostgreSQL (pending) ### Fixes -- Fixed inability to use special characters for Redis password +- Fixed inability to use special characters for Redis password ## v3.10.1-beta ### Fixes -- Fixed `workspace` image failing to build because PHP Composer hash changed from a recent update. +- Fixed `workspace` image failing to build because PHP Composer hash changed from a recent update. ## v3.10.0-beta ### Additions -- Added ISO imports (thanks A LOTTTT Fro!!!) -- Added new logo courtesy of Yatin Manuel from [Halvex Inc.](https://halvex.net/) - - This changelog was forgotten, so I will add it now +- Added ISO imports (thanks A LOTTTT Fro!!!) +- Added new logo courtesy of Yatin Manuel from [Halvex Inc.](https://halvex.net/) + - This changelog was forgotten, so I will add it now ### Changes -- mind-numbing frontend refactorings +- mind-numbing frontend refactorings ## v3.9.3-beta ### Fixes -- Fixed inability to successfully build the `workspace` container because the PHP Docker image recently upgraded from Debian 11 to 12 while Nodesource hasn't added stable support for Debian 12. +- Fixed inability to successfully build the `workspace` container because the PHP Docker image recently upgraded from Debian 11 to 12 while Nodesource hasn't added stable support for Debian 12. ## v3.9.2-beta ### Fixes -- Fixed inability to save new password/ssh keys on Client > Server > Settings > Security > Authentication +- Fixed inability to save new password/ssh keys on Client > Server > Settings > Security > Authentication ## v3.9.1-beta ### Fixes -- Fixed coterm fields required when trying to update node information instead of updating Coterm information. +- Fixed coterm fields required when trying to update node information instead of updating Coterm information. ### Changes -- Reorganized frontend React Router routes +- Reorganized frontend React Router routes ## v3.9.0-beta @@ -64,23 +64,23 @@ The release candidate process for non-beta v3.9.0 was discontinued. Convoy will If you are upgrading from v3.8.1-beta, keep note of these notices: -- v3.9.0-rc.9: :warning: This release may require you to regenerate your Proxmox API token credentials for each of your nodes with the implementation of encryption of node credentials in Convoy from this point on. -- v3.9.0-rc.3: :warning: This release makes changes to the data in your database. Rows that have a non-null `deleted_at` field in -your `servers` and `users` table will be purged. If your routine relies on soft deletes, please make changes now to stop -relying on them as they are removed in this update. +- v3.9.0-rc.9: :warning: This release may require you to regenerate your Proxmox API token credentials for each of your nodes with the implementation of encryption of node credentials in Convoy from this point on. +- v3.9.0-rc.3: :warning: This release makes changes to the data in your database. Rows that have a non-null `deleted_at` field in + your `servers` and `users` table will be purged. If your routine relies on soft deletes, please make changes now to stop + relying on them as they are removed in this update. ### Fixed -- Servers using IP addresses that they shouldn't have access to. +- Servers using IP addresses that they shouldn't have access to. ### Added -- Address pools (not in use yet) +- Address pools (not in use yet) ### Changed -- IPAddress internal naming to Address -- SSO to use JWT instead of generating+saving tokens to the database +- IPAddress internal naming to Address +- SSO to use JWT instead of generating+saving tokens to the database ## v3.9.0-rc.9 @@ -88,42 +88,42 @@ relying on them as they are removed in this update. ### Added -- Coterm support (DEV PREVIEW) -- Encryption for PVE node credentials +- Coterm support (DEV PREVIEW) +- Encryption for PVE node credentials ### Fixed -- Potential security vulnerability allowing unauthorized users to access another user's server +- Potential security vulnerability allowing unauthorized users to access another user's server ## v3.9.0-rc.8 ### Fixed -- Inability to reimport the same IP address across different nodes. +- Inability to reimport the same IP address across different nodes. ## v3.9.0-rc.7 ### Fixed -- Password updating when marked optional in a server import +- Password updating when marked optional in a server import ## v3.9.0-rc.6 ### Fixed -- Email max length on the login screen +- Email max length on the login screen ## v3.9.0-rc.5 ### Fixed -- Password setting when rebuilding/creating a new server +- Password setting when rebuilding/creating a new server ## v3.9.0-rc.4 ### Fixed -- Browser history hijacking on client server settings page +- Browser history hijacking on client server settings page ## v3.9.0-rc.3 @@ -133,105 +133,105 @@ relying on them as they are removed in this update. ### Fixed -- Adding both a IPv4 and IPv6 address to a server +- Adding both a IPv4 and IPv6 address to a server ### Added -- Base code for adding translations/localizations to Convoy +- Base code for adding translations/localizations to Convoy ### Removed -- Soft deletes from `servers` and `users` table +- Soft deletes from `servers` and `users` table ### Changes -- Some automatic refactors done by PHPStorm -- Renamed Media to Iso +- Some automatic refactors done by PHPStorm +- Renamed Media to Iso ## v3.9.0-rc.2 ### Fixed -- Server reinstallations firing wrong job chain -- can sync server usages test -- ISO download progress monitor -- Backup creation progress monitor +- Server reinstallations firing wrong job chain +- can sync server usages test +- ISO download progress monitor +- Backup creation progress monitor ## v3.9.0-rc.1 ### Added -- Tests +- Tests ### Changed -- Internal HTTP client from Guzzle to a wrapper of it from Laravel -- VM building, deletion, and server deletion logic - - This should improve reliability of Convoy tremendously +- Internal HTTP client from Guzzle to a wrapper of it from Laravel +- VM building, deletion, and server deletion logic + - This should improve reliability of Convoy tremendously ## v3.8.1-beta ### Fixed -- Rate limit throttling +- Rate limit throttling ## v3.8.0-beta ### Changed -- Made system OS password optional if create server option isn't checked when creating a new server in the administrator - area +- Made system OS password optional if create server option isn't checked when creating a new server in the administrator + area ## v3.7.5-beta ### Fixed -- English keyboard characters validation rule in create server modal in the administrator area. +- English keyboard characters validation rule in create server modal in the administrator area. ### Changed -- Some minor refactoring that changed the namespacings of some files to improve code consistency. +- Some minor refactoring that changed the namespacings of some files to improve code consistency. ## v3.7.4-beta ### Fixed -- Server power commands +- Server power commands ## v3.7.3-beta ### Fixed -- Server deletion failing when the virtual machine is running +- Server deletion failing when the virtual machine is running ## v3.7.2-beta ### Fixed -- Error unmounting media (or ISOs) in the server control panel in the client area +- Error unmounting media (or ISOs) in the server control panel in the client area ## v3.7.1-beta ### Fixed -- Server bandwidth statistic not updating #14 +- Server bandwidth statistic not updating #14 ## v3.7.0-beta ### Fixed -- Overallocation check logic whenever an administrator tries to update a server's build #16 -- Issue where you can't use IPv6 for nameservers +- Overallocation check logic whenever an administrator tries to update a server's build #16 +- Issue where you can't use IPv6 for nameservers ### Changed -- Made account_password required by default for creating new servers and server installations -- Refactored all settings pages -- Refactored menu component to reduce bundle size -- Refactored Server Usages and Rate Limit sync for better scaling -- Minor frontend styling -- Refactored disk data transfer object -- All password inputs (except for Convoy user account password) has these two validation rules: +- Made account_password required by default for creating new servers and server installations +- Refactored all settings pages +- Refactored menu component to reduce bundle size +- Refactored Server Usages and Rate Limit sync for better scaling +- Minor frontend styling +- Refactored disk data transfer object +- All password inputs (except for Convoy user account password) has these two validation rules: 1. `/^[A-Za-z0-9!@#$%^&*()_+\-=[\]{}|;\':",.\/<>?\\ ]*$/` for checking if the password contains only characters on the U.S. English keyboard. 2. `/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/` for checking if the password contains 8 @@ -239,145 +239,145 @@ relying on them as they are removed in this update. ### Added -- Search bars in the administrator area -- Log rotation for Laravel log file -- Proxmox user pruning to prune expired temporary NoVNC users +- Search bars in the administrator area +- Log rotation for Laravel log file +- Proxmox user pruning to prune expired temporary NoVNC users ## v3.6.2-beta ### Fixed -- IP Addresses being clipped if too long in the UI (x2) -- Hostname validation regex in frontend -- Viewport glitch when a server name or hostname is too long -- Validation rule not catching special characters from other languages for OS password validation +- IP Addresses being clipped if too long in the UI (x2) +- Hostname validation regex in frontend +- Viewport glitch when a server name or hostname is too long +- Validation rule not catching special characters from other languages for OS password validation ### Note If you are developing automation software for Convoy, please implement these regular expressions in your code. Otherwise, your code will error when you send invalid requests. -- server `account_password` validation - - `/^[A-z0-9!@£$%^&*()\'~*_+\-]+$/` to detect special characters from other language - - `/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/u` minimum password requirements -- server `hostname` validation - - `/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/` +- server `account_password` validation + - `/^[A-z0-9!@£$%^&*()\'~*_+\-]+$/` to detect special characters from other language + - `/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/u` minimum password requirements +- server `hostname` validation + - `/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/` ## v3.6.1-beta ### Fixed -- IP Addresses being clipped if too long in the UI -- Awkward delete address modal +- IP Addresses being clipped if too long in the UI +- Awkward delete address modal ## v3.6.0-beta ### Fixed -- IPv6 addresses wouldn't display in client area settings -- Confusing "account password" placeholder when creating a server in the admin area +- IPv6 addresses wouldn't display in client area settings +- Confusing "account password" placeholder when creating a server in the admin area ### Added -- Ability to view IP addresses of a server on the dashboard in the client area +- Ability to view IP addresses of a server on the dashboard in the client area ## v3.5.1-beta ### Added -- Support for hosting Convoy without a hostname +- Support for hosting Convoy without a hostname ### Changed -- Default redis configuration in .env because some people were getting confused by the documentation +- Default redis configuration in .env because some people were getting confused by the documentation ## v3.5.0-beta ### Changed -- Settings layout for client side server settings +- Settings layout for client side server settings ### Fixed -- possibility that `address_ids` will cause an exception when it's null when creating a new server +- possibility that `address_ids` will cause an exception when it's null when creating a new server ## v3.4.0-beta ### Changed -- Refactored routes +- Refactored routes ### Added -- Navigation Bar Context. Now switching pages are even more seamless +- Navigation Bar Context. Now switching pages are even more seamless ## v3.3.0-beta ### Fixed -- Lack of cancel button when deleting an API key +- Lack of cancel button when deleting an API key ### Added -- Ability for administrators to impersonate the client view for a server and also visit the server's configuration in - the admin area. -- Warnings when creating a new node to disable privilege separation and grant root permissions. +- Ability for administrators to impersonate the client view for a server and also visit the server's configuration in + the admin area. +- Warnings when creating a new node to disable privilege separation and grant root permissions. ## v3.2.0-beta ### Fixed -- Broken network syncing when updating an address's assigned server -- Text alignment for server counter on the users table in the admin area +- Broken network syncing when updating an address's assigned server +- Text alignment for server counter on the users table in the admin area ### Added -- Hyperlinks to the owner on the servers table +- Hyperlinks to the owner on the servers table ## v3.1.2-beta ### Fixed -- Scoped routing bindings in RouteServiceProvider that were breaking some routes +- Scoped routing bindings in RouteServiceProvider that were breaking some routes ## v3.1.1-beta ### Fixed -- Conflicting named routes that would break route optimization/caching +- Conflicting named routes that would break route optimization/caching ## v3.1.0-beta ### Fixed -- IP Address updating -- Server build updating +- IP Address updating +- Server build updating ### Removed -- Option to sync or not sync network settings when deleting an IP address - - The default behavior is always to sync +- Option to sync or not sync network settings when deleting an IP address + - The default behavior is always to sync ## v3.0.0-beta (Tuxedo) ### Fixed -- Server installs -- a bunch of other stuff +- Server installs +- a bunch of other stuff ### Changed -- from proprietary hard-coded api tokens to Bearer tokens for the application/external api -- the whole entire frontend +- from proprietary hard-coded api tokens to Bearer tokens for the application/external api +- the whole entire frontend ### Added -- Server hostnames -- Node location grouping +- Server hostnames +- Node location grouping ### Notes -- This release is so big that I can't really summarize everything +- This release is so big that I can't really summarize everything ![The maxwell cat meme is the mascot for v3](https://imgur.com/mowvogE.png) @@ -385,47 +385,47 @@ Otherwise, your code will error when you send invalid requests. ### Fixed -- Inability to delete IP address from the admin user interface +- Inability to delete IP address from the admin user interface ## v2.0.2-beta ### Fixed -- FQDN validator for the hostname field when adding a new node +- FQDN validator for the hostname field when adding a new node ## v2.0.1-beta ### Fixed -- Problem where validation errors for the SSH key wouldn't show up -- Bug where user couldn't unset a SSH key after saving one +- Problem where validation errors for the SSH key wouldn't show up +- Bug where user couldn't unset a SSH key after saving one ## v2.0.0-beta (Bombay) ### Added -- Storing of CPU, memory, disk, snapshots, backups, and bandwidth limits -- Added server suspensions -- Added real-time status updates of server installs (though it will be deprecated in v3.x.x) -- Automatic bandwidth throttler when a user exceeds the bandwidth limit +- Storing of CPU, memory, disk, snapshots, backups, and bandwidth limits +- Added server suspensions +- Added real-time status updates of server installs (though it will be deprecated in v3.x.x) +- Automatic bandwidth throttler when a user exceeds the bandwidth limit ### Changed -- Internally, server details are now passed around the application using Laravel Data by Spatie. Though in v3.x.x, we - are planning on switching to Data Transfer Objects by Spatie. We pulled the wrong package and didn't realize until one - month in using the package LOL. -- Virtual machines are now limited to one disk. Multiple disks may be supported when a daemon is available in the - future. -- The built-in web server is now Caddy instead of Nginx. This provides auto SSL out of the box. +- Internally, server details are now passed around the application using Laravel Data by Spatie. Though in v3.x.x, we + are planning on switching to Data Transfer Objects by Spatie. We pulled the wrong package and didn't realize until one + month in using the package LOL. +- Virtual machines are now limited to one disk. Multiple disks may be supported when a daemon is available in the + future. +- The built-in web server is now Caddy instead of Nginx. This provides auto SSL out of the box. ### Fixed -- The commands in the node viewing page for installing the VNC Broker and templates. +- The commands in the node viewing page for installing the VNC Broker and templates. ### Known Bugs -- The real-time server installation communication is known to be buggy and will be resolved in v3.x.x -- Editing the server field for IP Addresses will sometime result in the first server of the node to be used. This will - be resolved in v3.x.x +- The real-time server installation communication is known to be buggy and will be resolved in v3.x.x +- Editing the server field for IP Addresses will sometime result in the first server of the node to be used. This will + be resolved in v3.x.x ![The Bombay cat breed is the mascot for v2](https://imgur.com/fP6oxn9.png) diff --git a/README.md b/README.md index e09ef8c90cf..d64003192c4 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FConvoyPanel%2Fpanel.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FConvoyPanel%2Fpanel?ref=badge_shield) # Convoy + Convoy is a modern and performant KVM server management panel for hosting businesses. It's built with PHP and React and proven technology like Proxmox, making it easier to drop Convoy in an existing system. Stop paying hundreds of dollars for unreliable and slow software. Subscribe to a license to use Convoy today for $6/node/mo @@ -14,21 +15,23 @@ Stop paying hundreds of dollars for unreliable and slow software. Subscribe to a ![Screenshot of Convoy](https://imgur.com/GsORIRQ.png) ## Documentation -* [Panel Documentation](https://docs.convoypanel.com) -* [Discord Community](https://discord.convoypanel.com) + +- [Panel Documentation](https://docs.convoypanel.com) +- [Discord Community](https://discord.convoypanel.com) ## Acknowledgements Convoy wouldn't have been possible without these organizations and people -* Advin Servers - provided several development servers (at least $200 of hardware) to help me develop this SaaS -* Kjartann - donated $250 to support Convoy development and encouraged me to keep on working on this panel! -* Pterodactyl Panel - provided the architecture and a lot of backend/boilerplate code for Convoy. -* FastKVM.EU - for reporting bugs and testing the panel -* Just Code Cats - created [Convoy's Blesta module](https://marketplace.blesta.com/#/extensions/179-Convoy%20Module), https://code-cats.com/ -* [HeavyNode](https://heavynode.com/) - for helping create [Coterm](https://github.com/ConvoyPanel/coterm) +- Advin Servers - provided several development servers (at least $200 of hardware) to help me develop this SaaS +- Kjartann - donated $250 to support Convoy development and encouraged me to keep on working on this panel! +- Pterodactyl Panel - provided the architecture and a lot of backend/boilerplate code for Convoy. +- FastKVM.EU - for reporting bugs and testing the panel +- Just Code Cats - created [Convoy's Blesta module](https://marketplace.blesta.com/#/extensions/179-Convoy%20Module), https://code-cats.com/ +- [HeavyNode](https://heavynode.com/) - for helping create [Coterm](https://github.com/ConvoyPanel/coterm) ## License + Convoy is licensed under the Business Source License. Production use of Convoy without an active license from Performave is strictly disallowed. [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FConvoyPanel%2Fpanel.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2FConvoyPanel%2Fpanel?ref=badge_large) diff --git a/composer.lock b/composer.lock index 98cc486c8ff..17b3b5ca5f9 100644 --- a/composer.lock +++ b/composer.lock @@ -41,9 +41,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], + "license": ["BSD-2-Clause"], "authors": [ { "name": "Ben Scholzen 'DASPRiD'", @@ -89,9 +87,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "Arbitrary-precision arithmetic library", "keywords": [ "Arbitrary-precision", @@ -153,9 +149,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Casey McLaughlin", @@ -215,9 +209,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], + "license": ["BSD-2-Clause"], "authors": [ { "name": "Ben Scholzen 'DASPRiD'", @@ -227,10 +219,7 @@ } ], "description": "PHP 7.1 enum implementation", - "keywords": [ - "enum", - "map" - ], + "keywords": ["enum", "map"], "support": { "issues": "https://github.com/DASPRiD/Enum/issues", "source": "https://github.com/DASPRiD/Enum/tree/1.0.4" @@ -273,9 +262,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Dragonfly Development Inc.", @@ -300,12 +287,7 @@ ], "description": "Given a deep data structure, access data by dot notation.", "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], + "keywords": ["access", "data", "dot", "notation"], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" @@ -347,9 +329,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Guilherme Blanco", @@ -444,9 +424,7 @@ "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." }, - "bin": [ - "bin/doctrine-dbal" - ], + "bin": ["bin/doctrine-dbal"], "type": "library", "autoload": { "psr-4": { @@ -454,9 +432,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Guilherme Blanco", @@ -549,9 +525,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", "homepage": "https://www.doctrine-project.org/", "support": { @@ -593,9 +567,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Guilherme Blanco", @@ -683,9 +655,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Guilherme Blanco", @@ -773,9 +743,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Guilherme Blanco", @@ -792,13 +760,7 @@ ], "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], + "keywords": ["annotations", "docblock", "lexer", "parser", "php"], "support": { "issues": "https://github.com/doctrine/lexer/issues", "source": "https://github.com/doctrine/lexer/tree/3.0.0" @@ -853,9 +815,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Chris Tankersley", @@ -864,10 +824,7 @@ } ], "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], + "keywords": ["cron", "schedule"], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" @@ -918,9 +875,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Eduardo Gulias Davis" @@ -982,9 +937,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fruitcake", @@ -997,11 +950,7 @@ ], "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", "homepage": "https://github.com/fruitcake/php-cors", - "keywords": [ - "cors", - "laravel", - "symfony" - ], + "keywords": ["cors", "laravel", "symfony"], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" @@ -1046,9 +995,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Graham Campbell", @@ -1124,17 +1071,13 @@ } }, "autoload": { - "files": [ - "src/functions_include.php" - ], + "files": ["src/functions_include.php"], "psr-4": { "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Graham Campbell", @@ -1231,17 +1174,13 @@ } }, "autoload": { - "files": [ - "src/functions_include.php" - ], + "files": ["src/functions_include.php"], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Graham Campbell", @@ -1265,9 +1204,7 @@ } ], "description": "Guzzle promises library", - "keywords": [ - "promise" - ], + "keywords": ["promise"], "support": { "issues": "https://github.com/guzzle/promises/issues", "source": "https://github.com/guzzle/promises/tree/1.5.2" @@ -1333,9 +1270,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Graham Campbell", @@ -1438,9 +1373,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Graham Campbell", @@ -1464,10 +1397,7 @@ } ], "description": "A polyfill class for uri_template of PHP", - "keywords": [ - "guzzlehttp", - "uri-template" - ], + "keywords": ["guzzlehttp", "uri-template"], "support": { "issues": "https://github.com/guzzle/uri-template/issues", "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" @@ -1521,9 +1451,7 @@ "dev-master": "1.x-dev" }, "laravel": { - "providers": [ - "Laravel\\Fortify\\FortifyServiceProvider" - ] + "providers": ["Laravel\\Fortify\\FortifyServiceProvider"] } }, "autoload": { @@ -1532,9 +1460,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -1542,10 +1468,7 @@ } ], "description": "Backend controllers and scaffolding for Laravel authentication.", - "keywords": [ - "auth", - "laravel" - ], + "keywords": ["auth", "laravel"], "support": { "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" @@ -1731,9 +1654,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -1742,10 +1663,7 @@ ], "description": "The Laravel Framework.", "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], + "keywords": ["framework", "laravel"], "support": { "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" @@ -1780,14 +1698,10 @@ } }, "autoload": { - "files": [ - "src/helpers.php" - ] + "files": ["src/helpers.php"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -1799,10 +1713,7 @@ } ], "description": "Provides backwards compatibility for helpers in the latest Laravel release.", - "keywords": [ - "helpers", - "laravel" - ], + "keywords": ["helpers", "laravel"], "support": { "source": "https://github.com/laravel/helpers/tree/v1.6.0" }, @@ -1852,9 +1763,7 @@ "dev-master": "5.x-dev" }, "laravel": { - "providers": [ - "Laravel\\Horizon\\HorizonServiceProvider" - ], + "providers": ["Laravel\\Horizon\\HorizonServiceProvider"], "aliases": { "Horizon": "Laravel\\Horizon\\Horizon" } @@ -1866,9 +1775,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -1876,10 +1783,7 @@ } ], "description": "Dashboard and code-driven configuration for Laravel queues.", - "keywords": [ - "laravel", - "queue" - ], + "keywords": ["laravel", "queue"], "support": { "issues": "https://github.com/laravel/horizon/issues", "source": "https://github.com/laravel/horizon/tree/v5.15.0" @@ -1920,9 +1824,7 @@ "dev-master": "3.x-dev" }, "laravel": { - "providers": [ - "Laravel\\Sanctum\\SanctumServiceProvider" - ] + "providers": ["Laravel\\Sanctum\\SanctumServiceProvider"] } }, "autoload": { @@ -1931,9 +1833,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -1941,11 +1841,7 @@ } ], "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", - "keywords": [ - "auth", - "laravel", - "sanctum" - ], + "keywords": ["auth", "laravel", "sanctum"], "support": { "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" @@ -1987,9 +1883,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -2001,11 +1895,7 @@ } ], "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": [ - "closure", - "laravel", - "serializable" - ], + "keywords": ["closure", "laravel", "serializable"], "support": { "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" @@ -2047,9 +1937,7 @@ "dev-master": "2.x-dev" }, "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] + "providers": ["Laravel\\Tinker\\TinkerServiceProvider"] } }, "autoload": { @@ -2058,9 +1946,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -2068,12 +1954,7 @@ } ], "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], + "keywords": ["REPL", "Tinker", "laravel", "psysh"], "support": { "issues": "https://github.com/laravel/tinker/issues", "source": "https://github.com/laravel/tinker/tree/v2.8.1" @@ -2124,9 +2005,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Luís Cobucci", @@ -2135,10 +2014,7 @@ } ], "description": "A simple library to work with JSON Web Token and JSON Web Signature", - "keywords": [ - "JWS", - "jwt" - ], + "keywords": ["JWS", "jwt"], "support": { "issues": "https://github.com/lcobucci/jwt/issues", "source": "https://github.com/lcobucci/jwt/tree/5.0.0" @@ -2211,9 +2087,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Colin O'Dell", @@ -2299,9 +2173,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Colin O'Dell", @@ -2391,9 +2263,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Frank de Jonge", @@ -2475,9 +2345,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Phil Sturgeon", @@ -2488,12 +2356,7 @@ ], "description": "Handle the output of complex data structures ready for API output.", "homepage": "http://fractal.thephpleague.com/", - "keywords": [ - "api", - "json", - "league", - "rest" - ], + "keywords": ["api", "json", "league", "rest"], "support": { "issues": "https://github.com/thephpleague/fractal/issues", "source": "https://github.com/thephpleague/fractal/tree/0.20.1" @@ -2530,9 +2393,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Frank de Jonge", @@ -2624,9 +2485,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Jordi Boggiano", @@ -2636,11 +2495,7 @@ ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], + "keywords": ["log", "logging", "psr-3"], "support": { "issues": "https://github.com/Seldaek/monolog/issues", "source": "https://github.com/Seldaek/monolog/tree/3.3.1" @@ -2691,9 +2546,7 @@ "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", "squizlabs/php_codesniffer": "^3.4" }, - "bin": [ - "bin/carbon" - ], + "bin": ["bin/carbon"], "type": "library", "extra": { "branch-alias": { @@ -2701,14 +2554,10 @@ "dev-master": "2.x-dev" }, "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] + "providers": ["Carbon\\Laravel\\ServiceProvider"] }, "phpstan": { - "includes": [ - "extension.neon" - ] + "includes": ["extension.neon"] } }, "autoload": { @@ -2717,9 +2566,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Brian Nesbitt", @@ -2733,11 +2580,7 @@ ], "description": "An API extension for DateTime that supports 281 different languages.", "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], + "keywords": ["date", "datetime", "time"], "support": { "docs": "https://carbon.nesbot.com/docs", "issues": "https://github.com/briannesbitt/Carbon/issues", @@ -2789,16 +2632,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], + "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], "authors": [ { "name": "David Grudl", @@ -2811,10 +2648,7 @@ ], "description": "📐 Nette Schema: validating data structures against a given Schema.", "homepage": "https://nette.org", - "keywords": [ - "config", - "nette" - ], + "keywords": ["config", "nette"], "support": { "issues": "https://github.com/nette/schema/issues", "source": "https://github.com/nette/schema/tree/v1.2.3" @@ -2864,16 +2698,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], + "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], "authors": [ { "name": "David Grudl", @@ -2930,9 +2758,7 @@ "ircmaxell/php-yacc": "^0.0.7", "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, - "bin": [ - "bin/php-parse" - ], + "bin": ["bin/php-parse"], "type": "library", "extra": { "branch-alias": { @@ -2945,19 +2771,14 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Nikita Popov" } ], "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], + "keywords": ["parser", "php"], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" @@ -2998,23 +2819,17 @@ "type": "library", "extra": { "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] + "providers": ["Termwind\\Laravel\\TermwindServiceProvider"] } }, "autoload": { - "files": [ - "src/Functions.php" - ], + "files": ["src/Functions.php"], "psr-4": { "Termwind\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nuno Maduro", @@ -3022,14 +2837,7 @@ } ], "description": "Its like Tailwind CSS, but for the console.", - "keywords": [ - "cli", - "console", - "css", - "package", - "php", - "style" - ], + "keywords": ["cli", "console", "css", "package", "php", "style"], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" @@ -3078,9 +2886,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Paragon Initiative Enterprises", @@ -3143,9 +2949,7 @@ }, "type": "library", "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Paragon Initiative Enterprises", @@ -3154,12 +2958,7 @@ } ], "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], + "keywords": ["csprng", "polyfill", "pseudorandom", "random"], "support": { "email": "info@paragonie.com", "issues": "https://github.com/paragonie/random_compat/issues", @@ -3194,14 +2993,10 @@ }, "type": "library", "autoload": { - "files": [ - "autoload.php" - ] + "files": ["autoload.php"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], + "license": ["ISC"], "authors": [ { "name": "Paragon Initiative Enterprises", @@ -3282,9 +3077,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Jaap van Otterdijk", @@ -3348,9 +3141,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Mike van Riel", @@ -3401,9 +3192,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], + "license": ["Apache-2.0"], "authors": [ { "name": "Johannes M. Schmitt", @@ -3417,12 +3206,7 @@ } ], "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], + "keywords": ["language", "option", "php", "type"], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" @@ -3470,17 +3254,13 @@ }, "type": "library", "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], + "files": ["phpseclib/bootstrap.php"], "psr-4": { "phpseclib3\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Jim Wigginton", @@ -3578,15 +3358,11 @@ "type": "library", "autoload": { "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] + "PHPStan\\PhpDocParser\\": ["src/"] } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", @@ -3623,9 +3399,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Antonio Carlos Ribeiro", @@ -3675,9 +3449,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -3685,11 +3457,7 @@ } ], "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], + "keywords": ["cache", "psr", "psr-6"], "support": { "source": "https://github.com/php-fig/cache/tree/3.0.0" }, @@ -3719,9 +3487,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -3730,13 +3496,7 @@ ], "description": "Common interface for reading the clock.", "homepage": "https://github.com/php-fig/clock", - "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" - ], + "keywords": ["clock", "now", "psr", "psr-20", "time"], "support": { "issues": "https://github.com/php-fig/clock/issues", "source": "https://github.com/php-fig/clock/tree/1.0.0" @@ -3772,9 +3532,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -3825,9 +3583,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -3835,11 +3591,7 @@ } ], "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], + "keywords": ["events", "psr", "psr-14"], "support": { "issues": "https://github.com/php-fig/event-dispatcher/issues", "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" @@ -3876,9 +3628,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -3887,12 +3637,7 @@ ], "description": "Common interface for HTTP clients", "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], + "keywords": ["http", "http-client", "psr", "psr-18"], "support": { "source": "https://github.com/php-fig/http-client/tree/1.0.2" }, @@ -3928,9 +3673,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -3982,9 +3725,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -4035,9 +3776,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -4046,11 +3785,7 @@ ], "description": "Common interface for logging libraries", "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], + "keywords": ["log", "psr", "psr-3"], "support": { "source": "https://github.com/php-fig/log/tree/3.0.0" }, @@ -4085,9 +3820,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "PHP-FIG", @@ -4095,13 +3828,7 @@ } ], "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], + "keywords": ["cache", "caching", "psr", "psr-16", "simple-cache"], "support": { "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, @@ -4141,9 +3868,7 @@ "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." }, - "bin": [ - "bin/psysh" - ], + "bin": ["bin/psysh"], "type": "library", "extra": { "branch-alias": { @@ -4151,17 +3876,13 @@ } }, "autoload": { - "files": [ - "src/functions.php" - ], + "files": ["src/functions.php"], "psr-4": { "Psy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Justin Hileman", @@ -4171,12 +3892,7 @@ ], "description": "An interactive shell for modern PHP.", "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], + "keywords": ["REPL", "console", "interactive", "shell"], "support": { "issues": "https://github.com/bobthecow/psysh/issues", "source": "https://github.com/bobthecow/psysh/tree/v0.11.16" @@ -4221,9 +3937,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "Library for interacting with the Pusher REST API", "keywords": [ "events", @@ -4267,14 +3981,10 @@ }, "type": "library", "autoload": { - "files": [ - "src/getallheaders.php" - ] + "files": ["src/getallheaders.php"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Ralph Khattar", @@ -4342,9 +4052,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Ben Ramsey", @@ -4353,14 +4061,7 @@ } ], "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], + "keywords": ["array", "collection", "hash", "map", "queue", "set"], "support": { "issues": "https://github.com/ramsey/collection/issues", "source": "https://github.com/ramsey/collection/tree/2.0.0" @@ -4436,23 +4137,15 @@ } }, "autoload": { - "files": [ - "src/functions.php" - ], + "files": ["src/functions.php"], "psr-4": { "Ramsey\\Uuid\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], + "keywords": ["guid", "identifier", "uuid"], "support": { "issues": "https://github.com/ramsey/uuid/issues", "source": "https://github.com/ramsey/uuid/tree/4.7.4" @@ -4508,9 +4201,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Freek Van der Herten", @@ -4572,9 +4263,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Freek Van der Herten", @@ -4657,9 +4346,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Ruben Van Assche", @@ -4669,11 +4356,7 @@ ], "description": "Create unified resources and data transfer objects", "homepage": "https://github.com/spatie/laravel-data", - "keywords": [ - "laravel", - "laravel-data", - "spatie" - ], + "keywords": ["laravel", "laravel-data", "spatie"], "support": { "issues": "https://github.com/spatie/laravel-data/issues", "source": "https://github.com/spatie/laravel-data/tree/2.2.3" @@ -4717,26 +4400,20 @@ "type": "library", "extra": { "laravel": { - "providers": [ - "Spatie\\Fractal\\FractalServiceProvider" - ], + "providers": ["Spatie\\Fractal\\FractalServiceProvider"], "aliases": { "Fractal": "Spatie\\Fractal\\Facades\\Fractal" } } }, "autoload": { - "files": [ - "src/helpers.php" - ], + "files": ["src/helpers.php"], "psr-4": { "Spatie\\Fractal\\": "src" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Freek Van der Herten", @@ -4799,9 +4476,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Freek Van der Herten", @@ -4811,10 +4486,7 @@ ], "description": "Tools for creating Laravel packages", "homepage": "https://github.com/spatie/laravel-package-tools", - "keywords": [ - "laravel-package-tools", - "spatie" - ], + "keywords": ["laravel-package-tools", "spatie"], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", "source": "https://github.com/spatie/laravel-package-tools/tree/1.15.0" @@ -4870,9 +4542,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Alex Vanderbist", @@ -4883,10 +4553,7 @@ ], "description": "Easily build Eloquent queries from API requests", "homepage": "https://github.com/spatie/laravel-query-builder", - "keywords": [ - "laravel-query-builder", - "spatie" - ], + "keywords": ["laravel-query-builder", "spatie"], "support": { "issues": "https://github.com/spatie/laravel-query-builder/issues", "source": "https://github.com/spatie/laravel-query-builder" @@ -4950,14 +4617,10 @@ "psr-4": { "Symfony\\Component\\Console\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -4970,12 +4633,7 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], + "keywords": ["cli", "command-line", "console", "terminal"], "support": { "source": "https://github.com/symfony/console/tree/v6.2.10" }, @@ -5017,14 +4675,10 @@ "psr-4": { "Symfony\\Component\\CssSelector\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5088,14 +4742,10 @@ } }, "autoload": { - "files": [ - "function.php" - ] + "files": ["function.php"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -5151,22 +4801,16 @@ "symfony/http-kernel": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0" }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], + "bin": ["Resources/bin/patch-type-declarations"], "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\ErrorHandler\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5242,14 +4886,10 @@ "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5318,9 +4958,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -5385,14 +5023,10 @@ "psr-4": { "Symfony\\Component\\Finder\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5463,14 +5097,10 @@ "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5574,14 +5204,10 @@ "psr-4": { "Symfony\\Component\\HttpKernel\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5653,14 +5279,10 @@ "psr-4": { "Symfony\\Component\\Mailer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5732,14 +5354,10 @@ "psr-4": { "Symfony\\Component\\Mime\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -5752,10 +5370,7 @@ ], "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], + "keywords": ["mime", "mime-type"], "support": { "source": "https://github.com/symfony/mime/tree/v6.2.10" }, @@ -5809,17 +5424,13 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Gert de Pagter", @@ -5832,12 +5443,7 @@ ], "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], + "keywords": ["compatibility", "ctype", "polyfill", "portable"], "support": { "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, @@ -5888,17 +5494,13 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -5971,17 +5573,13 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Laurent Bassin", @@ -6056,20 +5654,14 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "classmap": [ - "Resources/stubs" - ] + "classmap": ["Resources/stubs"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -6143,17 +5735,13 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -6220,17 +5808,13 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Php72\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -6243,12 +5827,7 @@ ], "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], + "keywords": ["compatibility", "polyfill", "portable", "shim"], "support": { "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" }, @@ -6296,20 +5875,14 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, - "classmap": [ - "Resources/stubs" - ] + "classmap": ["Resources/stubs"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Ion Bazan", @@ -6326,12 +5899,7 @@ ], "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], + "keywords": ["compatibility", "polyfill", "portable", "shim"], "support": { "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, @@ -6385,17 +5953,13 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], + "files": ["bootstrap.php"], "psr-4": { "Symfony\\Polyfill\\Uuid\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Grégoire Pineau", @@ -6408,12 +5972,7 @@ ], "description": "Symfony polyfill for uuid functions", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], + "keywords": ["compatibility", "polyfill", "portable", "uuid"], "support": { "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" }, @@ -6455,14 +6014,10 @@ "psr-4": { "Symfony\\Component\\Process\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -6537,14 +6092,10 @@ "psr-4": { "Symfony\\Component\\Routing\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -6557,12 +6108,7 @@ ], "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], + "keywords": ["router", "routing", "uri", "url"], "support": { "source": "https://github.com/symfony/routing/tree/v6.2.8" }, @@ -6620,14 +6166,10 @@ "psr-4": { "Symfony\\Contracts\\Service\\": "" }, - "exclude-from-classmap": [ - "/Test/" - ] + "exclude-from-classmap": ["/Test/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -6700,20 +6242,14 @@ }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], + "files": ["Resources/functions.php"], "psr-4": { "Symfony\\Component\\String\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -6806,20 +6342,14 @@ }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], + "files": ["Resources/functions.php"], "psr-4": { "Symfony\\Component\\Translation\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -6885,14 +6415,10 @@ "psr-4": { "Symfony\\Contracts\\Translation\\": "" }, - "exclude-from-classmap": [ - "/Test/" - ] + "exclude-from-classmap": ["/Test/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -6958,14 +6484,10 @@ "psr-4": { "Symfony\\Component\\Uid\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Grégoire Pineau", @@ -6982,11 +6504,7 @@ ], "description": "Provides an object-oriented API to generate and represent UIDs", "homepage": "https://symfony.com", - "keywords": [ - "UID", - "ulid", - "uuid" - ], + "keywords": ["UID", "ulid", "uuid"], "support": { "source": "https://github.com/symfony/uid/tree/v6.2.7" }, @@ -7040,25 +6558,17 @@ "ext-intl": "To show region name in time zone dump", "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, - "bin": [ - "Resources/bin/var-dump-server" - ], + "bin": ["Resources/bin/var-dump-server"], "type": "library", "autoload": { - "files": [ - "Resources/functions/dump.php" - ], + "files": ["Resources/functions/dump.php"], "psr-4": { "Symfony\\Component\\VarDumper\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nicolas Grekas", @@ -7071,10 +6581,7 @@ ], "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], + "keywords": ["debug", "dump"], "support": { "source": "https://github.com/symfony/var-dumper/tree/v6.2.10" }, @@ -7129,9 +6636,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Tijs Verkoyen", @@ -7194,9 +6699,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Graham Campbell", @@ -7210,11 +6713,7 @@ } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], + "keywords": ["dotenv", "env", "environment"], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" @@ -7261,9 +6760,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Lars Moelleken", @@ -7272,11 +6769,7 @@ ], "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], + "keywords": ["ascii", "clean", "php"], "support": { "issues": "https://github.com/voku/portable-ascii/issues", "source": "https://github.com/voku/portable-ascii/tree/2.0.1" @@ -7342,9 +6835,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Bernhard Schussek", @@ -7352,11 +6843,7 @@ } ], "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], + "keywords": ["assert", "check", "validate"], "support": { "issues": "https://github.com/webmozarts/assert/issues", "source": "https://github.com/webmozarts/assert/tree/1.11.0" @@ -7415,15 +6902,11 @@ "type": "library", "autoload": { "psr-4": { - "ParaTest\\": [ - "src/" - ] + "ParaTest\\": ["src/"] } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Brian Scaturro", @@ -7438,12 +6921,7 @@ ], "description": "Parallel testing for PHP", "homepage": "https://github.com/paratestphp/paratest", - "keywords": [ - "concurrent", - "parallel", - "phpunit", - "testing" - ], + "keywords": ["concurrent", "parallel", "phpunit", "testing"], "support": { "issues": "https://github.com/paratestphp/paratest/issues", "source": "https://github.com/paratestphp/paratest/tree/v7.1.3" @@ -7508,20 +6986,14 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "François Zaninotto" } ], "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], + "keywords": ["data", "faker", "fixtures"], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0" @@ -7563,9 +7035,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Théo FIDRY", @@ -7573,10 +7043,7 @@ } ], "description": "Tiny utility to get the number of CPU cores.", - "keywords": [ - "CPU", - "core" - ], + "keywords": ["CPU", "core"], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" @@ -7628,9 +7095,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Filipe Dobreira", @@ -7693,18 +7158,12 @@ } }, "autoload": { - "classmap": [ - "hamcrest" - ] + "classmap": ["hamcrest"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], + "keywords": ["test"], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" @@ -7748,9 +7207,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Alessandro Lai", @@ -7758,12 +7215,7 @@ } ], "description": "A library to get pretty versions strings of installed dependencies", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], + "keywords": ["composer", "package", "release", "versions"], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" @@ -7801,9 +7253,7 @@ "dev-master": "1.x-dev" }, "laravel": { - "providers": [ - "Laravel\\Breeze\\BreezeServiceProvider" - ] + "providers": ["Laravel\\Breeze\\BreezeServiceProvider"] } }, "autoload": { @@ -7812,9 +7262,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -7822,10 +7270,7 @@ } ], "description": "Minimal Laravel authentication scaffolding with Blade and Tailwind.", - "keywords": [ - "auth", - "laravel" - ], + "keywords": ["auth", "laravel"], "support": { "issues": "https://github.com/laravel/breeze/issues", "source": "https://github.com/laravel/breeze" @@ -7862,9 +7307,7 @@ "nunomaduro/termwind": "^1.15.1", "pestphp/pest": "^2.4.0" }, - "bin": [ - "builds/pint" - ], + "bin": ["builds/pint"], "type": "project", "autoload": { "psr-4": { @@ -7874,9 +7317,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nuno Maduro", @@ -7885,13 +7326,7 @@ ], "description": "An opinionated code formatter for PHP.", "homepage": "https://laravel.com", - "keywords": [ - "format", - "formatter", - "lint", - "linter", - "php" - ], + "keywords": ["format", "formatter", "lint", "linter", "php"], "support": { "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" @@ -7923,18 +7358,14 @@ "orchestra/testbench": "^6.0|^7.0|^8.0", "phpstan/phpstan": "^1.10" }, - "bin": [ - "bin/sail" - ], + "bin": ["bin/sail"], "type": "library", "extra": { "branch-alias": { "dev-master": "1.x-dev" }, "laravel": { - "providers": [ - "Laravel\\Sail\\SailServiceProvider" - ] + "providers": ["Laravel\\Sail\\SailServiceProvider"] } }, "autoload": { @@ -7943,9 +7374,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Taylor Otwell", @@ -7953,10 +7382,7 @@ } ], "description": "Docker files for running a basic Laravel application.", - "keywords": [ - "docker", - "laravel" - ], + "keywords": ["docker", "laravel"], "support": { "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" @@ -8000,9 +7426,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Pádraic Brady", @@ -8063,17 +7487,13 @@ }, "type": "library", "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], + "files": ["src/DeepCopy/deep_copy.php"], "psr-4": { "DeepCopy\\": "src/DeepCopy/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "Create deep copies (clones) of your objects", "keywords": [ "clone", @@ -8140,17 +7560,13 @@ } }, "autoload": { - "files": [ - "./src/Adapters/Phpunit/Autoload.php" - ], + "files": ["./src/Adapters/Phpunit/Autoload.php"], "psr-4": { "NunoMaduro\\Collision\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nuno Maduro", @@ -8231,9 +7647,7 @@ "dev-master": "2.0-dev" }, "phpstan": { - "includes": [ - "extension.neon" - ] + "includes": ["extension.neon"] } }, "autoload": { @@ -8242,9 +7656,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nuno Maduro", @@ -8317,9 +7729,7 @@ "pestphp/pest-dev-tools": "^2.6.0", "symfony/process": "^6.2.8" }, - "bin": [ - "bin/pest" - ], + "bin": ["bin/pest"], "type": "library", "extra": { "pest": { @@ -8342,18 +7752,13 @@ } }, "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], + "files": ["src/Functions.php", "src/Pest.php"], "psr-4": { "Pest\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Nuno Maduro", @@ -8361,14 +7766,7 @@ } ], "description": "An elegant PHP Testing Framework.", - "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" - ], + "keywords": ["framework", "pest", "php", "test", "testing", "unit"], "support": { "issues": "https://github.com/pestphp/pest/issues", "source": "https://github.com/pestphp/pest/tree/v2.5.3" @@ -8421,9 +7819,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "The Pest plugin manager", "keywords": [ "framework", @@ -8480,17 +7876,13 @@ }, "type": "library", "autoload": { - "files": [ - "src/Autoload.php" - ], + "files": ["src/Autoload.php"], "psr-4": { "Pest\\Arch\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "The Arch plugin for Pest PHP.", "keywords": [ "arch", @@ -8545,23 +7937,17 @@ "type": "library", "extra": { "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" - ] + "providers": ["Pest\\Laravel\\PestServiceProvider"] } }, "autoload": { - "files": [ - "src/Autoload.php" - ], + "files": ["src/Autoload.php"], "psr-4": { "Pest\\Laravel\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "The Pest Laravel Plugin", "keywords": [ "framework", @@ -8615,14 +8001,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Arne Blankerts", @@ -8666,14 +8048,10 @@ }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Arne Blankerts", @@ -8735,9 +8113,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Mike van Riel", @@ -8806,9 +8182,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], + "license": ["GPL-2.0-or-later"], "authors": [ { "name": "The phpMyAdmin Team", @@ -8862,25 +8236,15 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "bin": [ - "phpstan", - "phpstan.phar" - ], + "bin": ["phpstan", "phpstan.phar"], "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ] + "files": ["bootstrap.php"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], + "keywords": ["dev", "static analysis"], "support": { "docs": "https://phpstan.org/user-guide/getting-started", "forum": "https://github.com/phpstan/phpstan/discussions", @@ -8947,14 +8311,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -8964,11 +8324,7 @@ ], "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], + "keywords": ["coverage", "testing", "xunit"], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", @@ -9009,14 +8365,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9026,10 +8378,7 @@ ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], + "keywords": ["filesystem", "iterator"], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.1" @@ -9073,14 +8422,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9090,9 +8435,7 @@ ], "description": "Invoke callables with a timeout", "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], + "keywords": ["process"], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" @@ -9132,14 +8475,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9149,9 +8488,7 @@ ], "description": "Simple template engine.", "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], + "keywords": ["template"], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" @@ -9191,14 +8528,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9208,9 +8541,7 @@ ], "description": "Utility class for timing", "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], + "keywords": ["timer"], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" @@ -9268,9 +8599,7 @@ "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" }, - "bin": [ - "phpunit" - ], + "bin": ["phpunit"], "type": "library", "extra": { "branch-alias": { @@ -9278,17 +8607,11 @@ } }, "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] + "files": ["src/Framework/Assert/Functions.php"], + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9298,11 +8621,7 @@ ], "description": "The PHP Unit Testing framework.", "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], + "keywords": ["phpunit", "testing", "xunit"], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", @@ -9351,14 +8670,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9407,14 +8722,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9463,14 +8774,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9522,14 +8829,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9550,11 +8853,7 @@ ], "description": "Provides the functionality to compare PHP values for equality", "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], + "keywords": ["comparator", "compare", "equality"], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" @@ -9595,14 +8894,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9652,14 +8947,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9672,12 +8963,7 @@ ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], + "keywords": ["diff", "udiff", "unidiff", "unified diff"], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", @@ -9721,14 +9007,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9737,11 +9019,7 @@ ], "description": "Provides functionality to handle HHVM/PHP environments", "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "keywords": ["Xdebug", "environment", "hhvm"], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", @@ -9784,14 +9062,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9816,10 +9090,7 @@ ], "description": "Provides the functionality to export PHP variables for visualization", "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], + "keywords": ["export", "exporter"], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" @@ -9862,14 +9133,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9878,9 +9145,7 @@ ], "description": "Snapshotting of global state", "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], + "keywords": ["global state"], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" @@ -9921,14 +9186,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -9979,14 +9240,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -10034,14 +9291,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -10089,14 +9342,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -10152,14 +9401,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -10205,14 +9450,10 @@ } }, "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Sebastian Bergmann", @@ -10264,9 +9505,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Freek Van de Herten", @@ -10277,10 +9516,7 @@ ], "description": "A better backtrace", "homepage": "https://github.com/spatie/backtrace", - "keywords": [ - "Backtrace", - "spatie" - ], + "keywords": ["Backtrace", "spatie"], "support": { "source": "https://github.com/spatie/backtrace/tree/1.4.0" }, @@ -10334,25 +9570,16 @@ } }, "autoload": { - "files": [ - "src/helpers.php" - ], + "files": ["src/helpers.php"], "psr-4": { "Spatie\\FlareClient\\": "src" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "description": "Send PHP errors to Flare", "homepage": "https://github.com/spatie/flare-client-php", - "keywords": [ - "exception", - "flare", - "reporting", - "spatie" - ], + "keywords": ["exception", "flare", "reporting", "spatie"], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", "source": "https://github.com/spatie/flare-client-php/tree/1.3.6" @@ -10416,9 +9643,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Spatie", @@ -10428,12 +9653,7 @@ ], "description": "A beautiful error page for PHP applications.", "homepage": "https://flareapp.io/ignition", - "keywords": [ - "error", - "flare", - "laravel", - "page" - ], + "keywords": ["error", "flare", "laravel", "page"], "support": { "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", "forum": "https://twitter.com/flareappio", @@ -10500,17 +9720,13 @@ } }, "autoload": { - "files": [ - "src/helpers.php" - ], + "files": ["src/helpers.php"], "psr-4": { "Spatie\\LaravelIgnition\\": "src" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Spatie", @@ -10520,12 +9736,7 @@ ], "description": "A beautiful error page for Laravel applications.", "homepage": "https://flareapp.io/ignition", - "keywords": [ - "error", - "flare", - "laravel", - "page" - ], + "keywords": ["error", "flare", "laravel", "page"], "support": { "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", "forum": "https://twitter.com/flareappio", @@ -10567,22 +9778,16 @@ "suggest": { "symfony/console": "For validating YAML files using the lint command" }, - "bin": [ - "Resources/bin/yaml-lint" - ], + "bin": ["Resources/bin/yaml-lint"], "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "exclude-from-classmap": ["/Tests/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Fabien Potencier", @@ -10646,9 +9851,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "license": ["MIT"], "authors": [ { "name": "Ni Shi", @@ -10695,14 +9898,10 @@ }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "classmap": ["src/"] }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], + "license": ["BSD-3-Clause"], "authors": [ { "name": "Arne Blankerts", diff --git a/crowdin.yml b/crowdin.yml index 6bc109d8dff..766590747cc 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,4 +1,4 @@ preserve_hierarchy: true files: - - source: /lang/en_US/**/*.php - translation: /lang/%locale_with_underscore%/**/%original_file_name% + - source: /lang/en_US/**/*.php + translation: /lang/%locale_with_underscore%/**/%original_file_name% diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index dcb43896d09..34d13dccef4 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -1,24 +1,24 @@ services: - workspace: - image: performave/convoy-workspace:latest - tty: true - volumes: - - .:/var/www/ - redis: - image: redis:7.0.4-alpine3.16 - restart: unless-stopped - command: redis-server --save 20 1 --loglevel notice --requirepass ${REDIS_PASSWORD} - expose: - - 6379 - database: - image: mysql:8.0.29 - restart: unless-stopped - volumes: - - ./dockerfiles/mysql/data:/var/lib/mysql/ - expose: - - 3306 - environment: - MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} - MYSQL_DATABASE: ${DB_DATABASE} - MYSQL_USER: ${DB_USERNAME} - MYSQL_PASSWORD: ${DB_PASSWORD} \ No newline at end of file + workspace: + image: performave/convoy-workspace:latest + tty: true + volumes: + - .:/var/www/ + redis: + image: redis:7.0.4-alpine3.16 + restart: unless-stopped + command: redis-server --save 20 1 --loglevel notice --requirepass ${REDIS_PASSWORD} + expose: + - 6379 + database: + image: mysql:8.0.29 + restart: unless-stopped + volumes: + - ./dockerfiles/mysql/data:/var/lib/mysql/ + expose: + - 3306 + environment: + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + MYSQL_DATABASE: ${DB_DATABASE} + MYSQL_USER: ${DB_USERNAME} + MYSQL_PASSWORD: ${DB_PASSWORD} diff --git a/docker-compose.yml b/docker-compose.yml index f92f7b80a82..6686c16069f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,78 +1,78 @@ services: - caddy: - build: - context: ./dockerfiles/caddy - args: - - APP_ENV=$APP_ENV - - APP_URL=$APP_URL - restart: unless-stopped - volumes: - - .:/var/www/ - - ./dockerfiles/caddy/data/config:/config - - ./dockerfiles/caddy/data/data:/data - ports: - - 80:80 - - 443:443 - depends_on: - - php - env_file: .env - php: - build: - context: ./dockerfiles/php - args: - - APP_ENV=$APP_ENV - - PHP_XDEBUG=$PHP_XDEBUG - - PHP_XDEBUG_MODE=$PHP_XDEBUG_MODE - restart: unless-stopped - volumes: - - .:/var/www/ - expose: - - 9000 - depends_on: - - database - - redis - env_file: .env - extra_hosts: - host.docker.internal: host-gateway - workspace: - build: - context: ./dockerfiles/workspace - args: - - PHP_XDEBUG=$PHP_XDEBUG - - PHP_XDEBUG_MODE=$PHP_XDEBUG_MODE - tty: true - ports: - - 1234:1234 - volumes: - - .:/var/www/ - extra_hosts: - host.docker.internal: host-gateway - redis: - image: redis:7.0-alpine - restart: unless-stopped - command: redis-server --save 60 1 --loglevel notice --requirepass '${REDIS_PASSWORD}' - ports: - - 6379:6379 - workers: - build: - context: ./dockerfiles/workers - args: - - APP_ENV=$APP_ENV - restart: unless-stopped - volumes: - - .:/var/www/ - depends_on: - - database - - redis - database: - image: mysql:8.0 - restart: unless-stopped - volumes: - - ./dockerfiles/mysql/data:/var/lib/mysql/ - ports: - - 3306:3306 - environment: - MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} - MYSQL_DATABASE: ${DB_DATABASE} - MYSQL_USER: ${DB_USERNAME} - MYSQL_PASSWORD: ${DB_PASSWORD} \ No newline at end of file + caddy: + build: + context: ./dockerfiles/caddy + args: + - APP_ENV=$APP_ENV + - APP_URL=$APP_URL + restart: unless-stopped + volumes: + - .:/var/www/ + - ./dockerfiles/caddy/data/config:/config + - ./dockerfiles/caddy/data/data:/data + ports: + - 80:80 + - 443:443 + depends_on: + - php + env_file: .env + php: + build: + context: ./dockerfiles/php + args: + - APP_ENV=$APP_ENV + - PHP_XDEBUG=$PHP_XDEBUG + - PHP_XDEBUG_MODE=$PHP_XDEBUG_MODE + restart: unless-stopped + volumes: + - .:/var/www/ + expose: + - 9000 + depends_on: + - database + - redis + env_file: .env + extra_hosts: + host.docker.internal: host-gateway + workspace: + build: + context: ./dockerfiles/workspace + args: + - PHP_XDEBUG=$PHP_XDEBUG + - PHP_XDEBUG_MODE=$PHP_XDEBUG_MODE + tty: true + ports: + - 1234:1234 + volumes: + - .:/var/www/ + extra_hosts: + host.docker.internal: host-gateway + redis: + image: redis:7.0-alpine + restart: unless-stopped + command: redis-server --save 60 1 --loglevel notice --requirepass '${REDIS_PASSWORD}' + ports: + - 6379:6379 + workers: + build: + context: ./dockerfiles/workers + args: + - APP_ENV=$APP_ENV + restart: unless-stopped + volumes: + - .:/var/www/ + depends_on: + - database + - redis + database: + image: mysql:8.0 + restart: unless-stopped + volumes: + - ./dockerfiles/mysql/data:/var/lib/mysql/ + ports: + - 3306:3306 + environment: + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + MYSQL_DATABASE: ${DB_DATABASE} + MYSQL_USER: ${DB_USERNAME} + MYSQL_PASSWORD: ${DB_PASSWORD} diff --git a/postcss.config.js b/postcss.config.js index 67cdf1a55fc..fef1b2256d6 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -3,4 +3,4 @@ module.exports = { tailwindcss: {}, autoprefixer: {}, }, -}; +} diff --git a/resources/scripts/api/admin/addressPools/addresses/createAddress.ts b/resources/scripts/api/admin/addressPools/addresses/createAddress.ts index 7ed4030aada..be9250f7bd5 100644 --- a/resources/scripts/api/admin/addressPools/addresses/createAddress.ts +++ b/resources/scripts/api/admin/addressPools/addresses/createAddress.ts @@ -1,8 +1,9 @@ +import { ipAddress, macAddress } from '@/util/validation' +import { z } from 'zod' + import { AddressInclude } from '@/api/admin/nodes/addresses/getAddresses' -import { Address, AddressType, rawDataToAddress } from '@/api/server/getServer' import http from '@/api/http' -import { z } from 'zod' -import { ipAddress, macAddress } from '@/util/validation' +import { Address, AddressType, rawDataToAddress } from '@/api/server/getServer' const baseSchema = z.object({ type: z.enum(['ipv4', 'ipv6']), @@ -24,7 +25,10 @@ const multipleAddressesSchema = z.object({ }) export const schema = z - .discriminatedUnion('isBulkAction', [singleAddressSchema, multipleAddressesSchema]) + .discriminatedUnion('isBulkAction', [ + singleAddressSchema, + multipleAddressesSchema, + ]) .and(baseSchema) type CreateAddressParameters = z.infer & { @@ -35,7 +39,15 @@ type CreateAddressParameters = z.infer & { const createAddress = async ( poolId: number, - { isBulkAction, startingAddress, endingAddress, macAddress, serverId, include, ...payload }: CreateAddressParameters + { + isBulkAction, + startingAddress, + endingAddress, + macAddress, + serverId, + include, + ...payload + }: CreateAddressParameters ): Promise
=> { const { data: { data }, diff --git a/resources/scripts/api/admin/addressPools/addresses/updateAddress.ts b/resources/scripts/api/admin/addressPools/addresses/updateAddress.ts index 5812cc66e45..7588e7122cd 100644 --- a/resources/scripts/api/admin/addressPools/addresses/updateAddress.ts +++ b/resources/scripts/api/admin/addressPools/addresses/updateAddress.ts @@ -1,6 +1,6 @@ -import { AddressType, rawDataToAddress } from '@/api/server/getServer' import { AddressInclude } from '@/api/admin/nodes/addresses/getAddresses' import http from '@/api/http' +import { AddressType, rawDataToAddress } from '@/api/server/getServer' interface UpdateAddressParameters { address: string diff --git a/resources/scripts/api/admin/addressPools/createAddressPool.ts b/resources/scripts/api/admin/addressPools/createAddressPool.ts index 9a741288e16..e8052ec6a1b 100644 --- a/resources/scripts/api/admin/addressPools/createAddressPool.ts +++ b/resources/scripts/api/admin/addressPools/createAddressPool.ts @@ -1,12 +1,15 @@ -import http from '@/api/http' import { rawDataToAddressPool } from '@/api/admin/addressPools/getAddressPools' +import http from '@/api/http' interface CreateAddressParameters { name: string nodeIds?: number[] | string[] } -const createAddressPool = async ({ name, nodeIds }: CreateAddressParameters) => { +const createAddressPool = async ({ + name, + nodeIds, +}: CreateAddressParameters) => { const { data: { data }, } = await http.post('/api/admin/address-pools', { diff --git a/resources/scripts/api/admin/addressPools/deleteAddressPool.ts b/resources/scripts/api/admin/addressPools/deleteAddressPool.ts index 8fd25cf908f..c6a7c2beb4e 100644 --- a/resources/scripts/api/admin/addressPools/deleteAddressPool.ts +++ b/resources/scripts/api/admin/addressPools/deleteAddressPool.ts @@ -1,5 +1,6 @@ import http from '@/api/http' -const deleteAddressPool = (id: number) => http.delete(`/api/admin/address-pools/${id}`) +const deleteAddressPool = (id: number) => + http.delete(`/api/admin/address-pools/${id}`) export default deleteAddressPool diff --git a/resources/scripts/api/admin/addressPools/getAddressPool.ts b/resources/scripts/api/admin/addressPools/getAddressPool.ts index 23d11d57d8d..e8885774b27 100644 --- a/resources/scripts/api/admin/addressPools/getAddressPool.ts +++ b/resources/scripts/api/admin/addressPools/getAddressPool.ts @@ -1,5 +1,5 @@ -import http from '@/api/http' import { rawDataToAddressPool } from '@/api/admin/addressPools/getAddressPools' +import http from '@/api/http' const getAddressPool = async (id: number) => { const { diff --git a/resources/scripts/api/admin/addressPools/getAddressPools.ts b/resources/scripts/api/admin/addressPools/getAddressPools.ts index 16859499095..3ca1fc7d64c 100644 --- a/resources/scripts/api/admin/addressPools/getAddressPools.ts +++ b/resources/scripts/api/admin/addressPools/getAddressPools.ts @@ -1,4 +1,4 @@ -import http, { getPaginationSet, PaginatedResult } from '@/api/http' +import http, { PaginatedResult, getPaginationSet } from '@/api/http' export interface AddressPool { id: number @@ -15,7 +15,11 @@ export interface QueryParams { export type AddressPoolResponse = PaginatedResult -const getAddressPools = async ({ query, page, perPage = 50 }: QueryParams): Promise => { +const getAddressPools = async ({ + query, + page, + perPage = 50, +}: QueryParams): Promise => { const { data } = await http.get('/api/admin/address-pools', { params: { 'filter[*]': query, diff --git a/resources/scripts/api/admin/addressPools/getAddresses.ts b/resources/scripts/api/admin/addressPools/getAddresses.ts index c1809cdb873..3b77fb24111 100644 --- a/resources/scripts/api/admin/addressPools/getAddresses.ts +++ b/resources/scripts/api/admin/addressPools/getAddresses.ts @@ -1,4 +1,7 @@ -import { AddressInclude, AddressResponse } from '@/api/admin/nodes/addresses/getAddresses' +import { + AddressInclude, + AddressResponse, +} from '@/api/admin/nodes/addresses/getAddresses' import http, { getPaginationSet } from '@/api/http' import { rawDataToAddress } from '@/api/server/getServer' @@ -13,14 +16,17 @@ const getAddresses = async ( addressPoolId: number, { query, page, perPage = 50, include }: QueryParams ): Promise => { - const { data } = await http.get(`/api/admin/address-pools/${addressPoolId}/addresses`, { - params: { - 'filter[*]': query, - page, - 'per_page': perPage, - 'include': include?.join(','), - }, - }) + const { data } = await http.get( + `/api/admin/address-pools/${addressPoolId}/addresses`, + { + params: { + 'filter[*]': query, + page, + 'per_page': perPage, + 'include': include?.join(','), + }, + } + ) return { items: data.data.map(rawDataToAddress), diff --git a/resources/scripts/api/admin/addressPools/updateAddressPool.ts b/resources/scripts/api/admin/addressPools/updateAddressPool.ts index 8b8e44540d8..64457c5721e 100644 --- a/resources/scripts/api/admin/addressPools/updateAddressPool.ts +++ b/resources/scripts/api/admin/addressPools/updateAddressPool.ts @@ -1,11 +1,14 @@ -import http from '@/api/http' import { rawDataToAddressPool } from '@/api/admin/addressPools/getAddressPools' +import http from '@/api/http' interface UpdateAddressPoolParameters { name: string } -const updateAddressPool = async (id: number, payload: UpdateAddressPoolParameters) => { +const updateAddressPool = async ( + id: number, + payload: UpdateAddressPoolParameters +) => { const { data: { data }, } = await http.put(`/api/admin/address-pools/${id}`, payload) diff --git a/resources/scripts/api/admin/addressPools/useAddressPoolSWR.ts b/resources/scripts/api/admin/addressPools/useAddressPoolSWR.ts index 791462c600b..aecc0e881de 100644 --- a/resources/scripts/api/admin/addressPools/useAddressPoolSWR.ts +++ b/resources/scripts/api/admin/addressPools/useAddressPoolSWR.ts @@ -1,8 +1,9 @@ -import useSWR, { Key, SWRResponse } from 'swr' -import { useMatch } from 'react-router-dom' import { Optimistic } from '@/lib/swr' -import { AddressPool } from '@/api/admin/addressPools/getAddressPools' +import { useMatch } from 'react-router-dom' +import useSWR, { Key, SWRResponse } from 'swr' + import getAddressPool from '@/api/admin/addressPools/getAddressPool' +import { AddressPool } from '@/api/admin/addressPools/getAddressPools' export const getKey = (id: number): Key => ['admin.address-pools', id] diff --git a/resources/scripts/api/admin/addressPools/useAddressPoolsSWR.ts b/resources/scripts/api/admin/addressPools/useAddressPoolsSWR.ts index c6094d7bcce..40a3e4cb3e5 100644 --- a/resources/scripts/api/admin/addressPools/useAddressPoolsSWR.ts +++ b/resources/scripts/api/admin/addressPools/useAddressPoolsSWR.ts @@ -1,13 +1,19 @@ -import getAddressPools, { AddressPoolResponse, QueryParams } from '@/api/admin/addressPools/getAddressPools' import useSWR from 'swr' +import getAddressPools, { + AddressPoolResponse, + QueryParams, +} from '@/api/admin/addressPools/getAddressPools' + const useAddressPoolsSWR = ({ page, query, ...params }: QueryParams) => { - return useSWR(['admin.address-pools', page, query], () => - getAddressPools({ - page, - query, - ...params, - }) + return useSWR( + ['admin.address-pools', page, query], + () => + getAddressPools({ + page, + query, + ...params, + }) ) } diff --git a/resources/scripts/api/admin/addressPools/useAddressesSWR.ts b/resources/scripts/api/admin/addressPools/useAddressesSWR.ts index 3a176a5b2a8..cca898b9fb8 100644 --- a/resources/scripts/api/admin/addressPools/useAddressesSWR.ts +++ b/resources/scripts/api/admin/addressPools/useAddressesSWR.ts @@ -1,8 +1,11 @@ -import useSWR, { Key, SWRResponse } from 'swr' -import getAddresses, { QueryParams } from '@/api/admin/addressPools/getAddresses' +import { Optimistic } from '@/lib/swr' import { useMatch } from 'react-router-dom' +import useSWR, { Key, SWRResponse } from 'swr' + +import getAddresses, { + QueryParams, +} from '@/api/admin/addressPools/getAddresses' import { AddressResponse } from '@/api/admin/nodes/addresses/getAddresses' -import { Optimistic } from '@/lib/swr' export const getKey = (id: number, page?: number, query?: string): Key => [ 'admin.address-pools.addresses', @@ -15,12 +18,14 @@ const useAddressesSWR = ({ page, query, ...params }: QueryParams) => { const match = useMatch('/admin/ipam/:id/*') const id = parseInt(match!.params.id!) - return useSWR(getKey(id, page, query), () => - getAddresses(id, { - page, - query, - ...params, - }), + return useSWR( + getKey(id, page, query), + () => + getAddresses(id, { + page, + query, + ...params, + }), { revalidateOnMount: false, } diff --git a/resources/scripts/api/admin/locations/createLocation.ts b/resources/scripts/api/admin/locations/createLocation.ts index ba4e83c43d3..d2d35ccfeed 100644 --- a/resources/scripts/api/admin/locations/createLocation.ts +++ b/resources/scripts/api/admin/locations/createLocation.ts @@ -1,7 +1,10 @@ +import { Location, rawDataToLocation } from '@/api/admin/locations/getLocations' import http from '@/api/http' -import { rawDataToLocation, Location } from '@/api/admin/locations/getLocations' -export default async (shortCode: string, description: string | null): Promise => { +export default async ( + shortCode: string, + description: string | null +): Promise => { const { data: { data }, } = await http.post('/api/admin/locations', { diff --git a/resources/scripts/api/admin/locations/getLocations.ts b/resources/scripts/api/admin/locations/getLocations.ts index 045fd313fde..5b14d7bdb89 100644 --- a/resources/scripts/api/admin/locations/getLocations.ts +++ b/resources/scripts/api/admin/locations/getLocations.ts @@ -1,4 +1,8 @@ -import http, { FractalResponseData, getPaginationSet, PaginatedResult } from '@/api/http' +import http, { + FractalResponseData, + PaginatedResult, + getPaginationSet, +} from '@/api/http' export interface Location { id: number @@ -25,26 +29,25 @@ export interface QueryParams { export type LocationResponse = PaginatedResult export default ({ - query, - perPage = 50, - ...params - }: QueryParams): Promise> => { + query, + perPage = 50, + ...params +}: QueryParams): Promise> => { return new Promise((resolve, reject) => { - http - .get('/api/admin/locations', { - params: { - 'filter[*]': query, - per_page: perPage, - ...params, - }, - }) + http.get('/api/admin/locations', { + params: { + 'filter[*]': query, + 'per_page': perPage, + ...params, + }, + }) .then(({ data }) => resolve({ items: (data.data || []).map((datum: any) => - rawDataToLocation(datum), + rawDataToLocation(datum) ), pagination: getPaginationSet(data.meta.pagination), - }), + }) ) .catch(reject) }) diff --git a/resources/scripts/api/admin/locations/updateLocation.ts b/resources/scripts/api/admin/locations/updateLocation.ts index ca65c9e27de..2f9eabae7d0 100644 --- a/resources/scripts/api/admin/locations/updateLocation.ts +++ b/resources/scripts/api/admin/locations/updateLocation.ts @@ -1,7 +1,11 @@ -import http from '@/api/http' import { Location, rawDataToLocation } from '@/api/admin/locations/getLocations' +import http from '@/api/http' -const updateLocation = async (id: number, shortCode: string, description: string | null): Promise => { +const updateLocation = async ( + id: number, + shortCode: string, + description: string | null +): Promise => { const { data: { data }, } = await http.put(`/api/admin/locations/${id}`, { diff --git a/resources/scripts/api/admin/locations/useLocationsSWR.ts b/resources/scripts/api/admin/locations/useLocationsSWR.ts index f357ba111ba..d08d7126e88 100644 --- a/resources/scripts/api/admin/locations/useLocationsSWR.ts +++ b/resources/scripts/api/admin/locations/useLocationsSWR.ts @@ -1,8 +1,14 @@ -import getLocations, { LocationResponse, QueryParams } from '@/api/admin/locations/getLocations' import useSWR from 'swr' -const useLocationsSWR = ({page, query, ...params}: QueryParams) => { - return useSWR(['admin:locations', page, query], () => getLocations({page, query, ...params})) +import getLocations, { + LocationResponse, + QueryParams, +} from '@/api/admin/locations/getLocations' + +const useLocationsSWR = ({ page, query, ...params }: QueryParams) => { + return useSWR(['admin:locations', page, query], () => + getLocations({ page, query, ...params }) + ) } -export default useLocationsSWR \ No newline at end of file +export default useLocationsSWR diff --git a/resources/scripts/api/admin/nodes/addresses/createAddress.ts b/resources/scripts/api/admin/nodes/addresses/createAddress.ts index fc1c4472ef2..734cf32ace7 100644 --- a/resources/scripts/api/admin/nodes/addresses/createAddress.ts +++ b/resources/scripts/api/admin/nodes/addresses/createAddress.ts @@ -11,7 +11,10 @@ export interface AddressParameters { type: AddressType } -const createAddress = async (nodeId: number, payload: AddressParameters): Promise
=> { +const createAddress = async ( + nodeId: number, + payload: AddressParameters +): Promise
=> { const { data: { data }, } = await http.post(`/api/admin/nodes/${nodeId}/addresses`, { diff --git a/resources/scripts/api/admin/nodes/addresses/deleteAddress.ts b/resources/scripts/api/admin/nodes/addresses/deleteAddress.ts index c315c509af0..0567dfbf237 100644 --- a/resources/scripts/api/admin/nodes/addresses/deleteAddress.ts +++ b/resources/scripts/api/admin/nodes/addresses/deleteAddress.ts @@ -1,6 +1,10 @@ import http from '@/api/http' -const deleteAddress = (nodeId: number, addressId: number, syncNetworkConfig: boolean) => +const deleteAddress = ( + nodeId: number, + addressId: number, + syncNetworkConfig: boolean +) => http.delete(`/api/admin/nodes/${nodeId}/addresses/${addressId}`, { params: { sync_network_config: syncNetworkConfig, diff --git a/resources/scripts/api/admin/nodes/addresses/getAddresses.ts b/resources/scripts/api/admin/nodes/addresses/getAddresses.ts index 009c4c4f604..fcb443adb37 100644 --- a/resources/scripts/api/admin/nodes/addresses/getAddresses.ts +++ b/resources/scripts/api/admin/nodes/addresses/getAddresses.ts @@ -1,4 +1,4 @@ -import http, { getPaginationSet, PaginatedResult } from '@/api/http' +import http, { PaginatedResult, getPaginationSet } from '@/api/http' import { Address, AddressType, rawDataToAddress } from '@/api/server/getServer' export type AddressInclude = 'server' @@ -17,7 +17,15 @@ export interface QueryParams { const getAddresses = async ( nodeId: number, - { serverId, type, address, query, perPage = 50, include, ...params }: QueryParams + { + serverId, + type, + address, + query, + perPage = 50, + include, + ...params + }: QueryParams ): Promise => { const { data } = await http.get(`/api/admin/nodes/${nodeId}/addresses`, { params: { diff --git a/resources/scripts/api/admin/nodes/addresses/updateAddress.ts b/resources/scripts/api/admin/nodes/addresses/updateAddress.ts index 20de0c243d6..0caac1e2d3b 100644 --- a/resources/scripts/api/admin/nodes/addresses/updateAddress.ts +++ b/resources/scripts/api/admin/nodes/addresses/updateAddress.ts @@ -1,8 +1,12 @@ import { AddressParameters } from '@/api/admin/nodes/addresses/createAddress' -import { Address, rawDataToAddress } from '@/api/server/getServer' import http from '@/api/http' +import { Address, rawDataToAddress } from '@/api/server/getServer' -const updateAddress = async (nodeId: number, addressId: number, payload: AddressParameters): Promise
=> { +const updateAddress = async ( + nodeId: number, + addressId: number, + payload: AddressParameters +): Promise
=> { const { data: { data }, } = await http.put(`/api/admin/nodes/${nodeId}/addresses/${addressId}`, { diff --git a/resources/scripts/api/admin/nodes/addresses/useAddressesSWR.ts b/resources/scripts/api/admin/nodes/addresses/useAddressesSWR.ts index 7c0bedf9b8b..af00570b4b6 100644 --- a/resources/scripts/api/admin/nodes/addresses/useAddressesSWR.ts +++ b/resources/scripts/api/admin/nodes/addresses/useAddressesSWR.ts @@ -1,13 +1,18 @@ -import getAddresses, { AddressResponse, QueryParams } from '@/api/admin/nodes/addresses/getAddresses' import useSWR from 'swr' +import getAddresses, { + AddressResponse, + QueryParams, +} from '@/api/admin/nodes/addresses/getAddresses' + interface Params extends QueryParams { id?: string | number } const useAddressesSWR = (nodeId: number, { page, id, ...params }: Params) => { - return useSWR(['admin:node:addresses', nodeId, page, id], () => - getAddresses(nodeId, { page, ...params }) + return useSWR( + ['admin:node:addresses', nodeId, page, id], + () => getAddresses(nodeId, { page, ...params }) ) } diff --git a/resources/scripts/api/admin/nodes/deleteNode.ts b/resources/scripts/api/admin/nodes/deleteNode.ts index 233b49d8aa5..df5103012dd 100644 --- a/resources/scripts/api/admin/nodes/deleteNode.ts +++ b/resources/scripts/api/admin/nodes/deleteNode.ts @@ -2,4 +2,4 @@ import http from '@/api/http' const deleteNode = (id: number) => http.delete(`/api/admin/nodes/${id}`) -export default deleteNode \ No newline at end of file +export default deleteNode diff --git a/resources/scripts/api/admin/nodes/getNodes.ts b/resources/scripts/api/admin/nodes/getNodes.ts index a7e5000381b..f6a91ce0bb1 100644 --- a/resources/scripts/api/admin/nodes/getNodes.ts +++ b/resources/scripts/api/admin/nodes/getNodes.ts @@ -1,4 +1,4 @@ -import http, { getPaginationSet, PaginatedResult } from '@/api/http' +import http, { PaginatedResult, getPaginationSet } from '@/api/http' export interface Node { id: number @@ -57,11 +57,20 @@ export interface QueryParams { perPage?: number } -const getNodes = async ({ query, id, perPage = 50, ...params }: QueryParams): Promise => { +const getNodes = async ({ + query, + id, + perPage = 50, + ...params +}: QueryParams): Promise => { const { data } = await http.get('/api/admin/nodes', { params: { 'filter[*]': query, - 'filter[id]': id ? (Array.isArray(id) ? id.join(',') : id) : undefined, + 'filter[id]': id + ? Array.isArray(id) + ? id.join(',') + : id + : undefined, ...params, }, }) diff --git a/resources/scripts/api/admin/nodes/isos/createIso.ts b/resources/scripts/api/admin/nodes/isos/createIso.ts index 70c2093cf69..3b378d75080 100644 --- a/resources/scripts/api/admin/nodes/isos/createIso.ts +++ b/resources/scripts/api/admin/nodes/isos/createIso.ts @@ -1,7 +1,13 @@ import { ISO, rawDataToISO } from '@/api/admin/nodes/isos/getIsos' import http from '@/api/http' -export type ChecksumAlgorithm = 'md5' | 'sha1' | 'sha224' | 'sha256' | 'sha384' | 'sha512' +export type ChecksumAlgorithm = + | 'md5' + | 'sha1' + | 'sha224' + | 'sha256' + | 'sha384' + | 'sha512' interface CreateIsoParameters { shouldDownload: boolean @@ -15,7 +21,13 @@ interface CreateIsoParameters { const createIso = async ( nodeId: number, - { shouldDownload, fileName, checksumAlgorithm, checksum, ...data }: CreateIsoParameters + { + shouldDownload, + fileName, + checksumAlgorithm, + checksum, + ...data + }: CreateIsoParameters ): Promise => { const { data: { data: responseData }, diff --git a/resources/scripts/api/admin/nodes/isos/deleteIso.ts b/resources/scripts/api/admin/nodes/isos/deleteIso.ts index 0af497681b9..bc012677071 100644 --- a/resources/scripts/api/admin/nodes/isos/deleteIso.ts +++ b/resources/scripts/api/admin/nodes/isos/deleteIso.ts @@ -1,5 +1,6 @@ -import http from '@/api/http'; +import http from '@/api/http' -const deleteIso = (nodeId: number, isoUuid: string) => http.delete(`/api/admin/nodes/${nodeId}/isos/${isoUuid}`) +const deleteIso = (nodeId: number, isoUuid: string) => + http.delete(`/api/admin/nodes/${nodeId}/isos/${isoUuid}`) -export default deleteIso \ No newline at end of file +export default deleteIso diff --git a/resources/scripts/api/admin/nodes/isos/getIsos.ts b/resources/scripts/api/admin/nodes/isos/getIsos.ts index d73b02fb2f2..d7a39876e74 100644 --- a/resources/scripts/api/admin/nodes/isos/getIsos.ts +++ b/resources/scripts/api/admin/nodes/isos/getIsos.ts @@ -1,4 +1,4 @@ -import http, { getPaginationSet, PaginatedResult } from '@/api/http' +import http, { PaginatedResult, getPaginationSet } from '@/api/http' export interface ISO { uuid: string @@ -18,7 +18,9 @@ export const rawDataToISO = (rawData: any): ISO => ({ fileName: rawData.file_name, size: rawData.size, hidden: Boolean(rawData.hidden), - completedAt: rawData.completed_at ? new Date(rawData.completed_at) : undefined, + completedAt: rawData.completed_at + ? new Date(rawData.completed_at) + : undefined, createdAt: new Date(rawData.created_at), }) @@ -31,13 +33,16 @@ export interface QueryParams { export type IsoResponse = PaginatedResult -const getIsos = async ({ nodeId, query, perPage = 50, ...params }: QueryParams): Promise => { - const { - data, - } = await http.get(`/api/admin/nodes/${nodeId}/isos`, { +const getIsos = async ({ + nodeId, + query, + perPage = 50, + ...params +}: QueryParams): Promise => { + const { data } = await http.get(`/api/admin/nodes/${nodeId}/isos`, { params: { 'filter[name]': query, - per_page: perPage, + 'per_page': perPage, ...params, }, }) diff --git a/resources/scripts/api/admin/nodes/isos/updateIso.ts b/resources/scripts/api/admin/nodes/isos/updateIso.ts index 584e8c6a7e8..de3ca29cb07 100644 --- a/resources/scripts/api/admin/nodes/isos/updateIso.ts +++ b/resources/scripts/api/admin/nodes/isos/updateIso.ts @@ -1,8 +1,15 @@ import { ISO, rawDataToISO } from '@/api/admin/nodes/isos/getIsos' import http from '@/api/http' -const updateIso = async (nodeId: number, isoUuid: string, name: string, hidden: boolean): Promise => { - const { data: { data} } = await http.put(`/api/admin/nodes/${nodeId}/isos/${isoUuid}`, { +const updateIso = async ( + nodeId: number, + isoUuid: string, + name: string, + hidden: boolean +): Promise => { + const { + data: { data }, + } = await http.put(`/api/admin/nodes/${nodeId}/isos/${isoUuid}`, { name, hidden, }) @@ -10,4 +17,4 @@ const updateIso = async (nodeId: number, isoUuid: string, name: string, hidden: return rawDataToISO(data) } -export default updateIso \ No newline at end of file +export default updateIso diff --git a/resources/scripts/api/admin/nodes/isos/useIsosSWR.ts b/resources/scripts/api/admin/nodes/isos/useIsosSWR.ts index b3e2c4b4ed2..a16b0fbcba6 100644 --- a/resources/scripts/api/admin/nodes/isos/useIsosSWR.ts +++ b/resources/scripts/api/admin/nodes/isos/useIsosSWR.ts @@ -1,8 +1,14 @@ -import getIsos, { IsoResponse, QueryParams } from '@/api/admin/nodes/isos/getIsos' import useSWR from 'swr' -const useIsosSWR = ({page, nodeId, ...params}: QueryParams) => { - return useSWR(['admin:node:isos', nodeId, page], () => getIsos({page, nodeId, ...params})) +import getIsos, { + IsoResponse, + QueryParams, +} from '@/api/admin/nodes/isos/getIsos' + +const useIsosSWR = ({ page, nodeId, ...params }: QueryParams) => { + return useSWR(['admin:node:isos', nodeId, page], () => + getIsos({ page, nodeId, ...params }) + ) } -export default useIsosSWR \ No newline at end of file +export default useIsosSWR diff --git a/resources/scripts/api/admin/nodes/settings/resetCotermToken.ts b/resources/scripts/api/admin/nodes/settings/resetCotermToken.ts index 05131db974f..997df2dccf2 100644 --- a/resources/scripts/api/admin/nodes/settings/resetCotermToken.ts +++ b/resources/scripts/api/admin/nodes/settings/resetCotermToken.ts @@ -3,7 +3,9 @@ import http from '@/api/http' const resetCotermToken = async (nodeId: number): Promise => { const { data: { data }, - } = await http.post(`/api/admin/nodes/${nodeId}/settings/reset-coterm-token`) + } = await http.post( + `/api/admin/nodes/${nodeId}/settings/reset-coterm-token` + ) return data.token } diff --git a/resources/scripts/api/admin/nodes/settings/updateCoterm.ts b/resources/scripts/api/admin/nodes/settings/updateCoterm.ts index 3929a71c239..4b9a3b63b3a 100644 --- a/resources/scripts/api/admin/nodes/settings/updateCoterm.ts +++ b/resources/scripts/api/admin/nodes/settings/updateCoterm.ts @@ -7,7 +7,10 @@ interface UpdateCotermParameters { isTlsEnabled: boolean } -const updateCoterm = async (nodeId: number, { isEnabled, fqdn, port, isTlsEnabled }: UpdateCotermParameters) => { +const updateCoterm = async ( + nodeId: number, + { isEnabled, fqdn, port, isTlsEnabled }: UpdateCotermParameters +) => { const { data: { data }, } = await http.patch(`/api/admin/nodes/${nodeId}/settings/coterm`, { diff --git a/resources/scripts/api/admin/nodes/templateGroups/createTemplateGroup.ts b/resources/scripts/api/admin/nodes/templateGroups/createTemplateGroup.ts index 6222f14b90a..7eaa7a9da60 100644 --- a/resources/scripts/api/admin/nodes/templateGroups/createTemplateGroup.ts +++ b/resources/scripts/api/admin/nodes/templateGroups/createTemplateGroup.ts @@ -1,4 +1,7 @@ -import { rawDataToTemplateGroup, TemplateGroup } from '@/api/admin/nodes/templateGroups/getTemplateGroups' +import { + TemplateGroup, + rawDataToTemplateGroup, +} from '@/api/admin/nodes/templateGroups/getTemplateGroups' import http from '@/api/http' export interface TemplateGroupParameters { @@ -12,7 +15,10 @@ const createTemplateGroup = async ( ): Promise => { const { data: { data }, - } = await http.post(`/api/admin/nodes/${nodeId}/template-groups`, parameters) + } = await http.post( + `/api/admin/nodes/${nodeId}/template-groups`, + parameters + ) return rawDataToTemplateGroup(data) } diff --git a/resources/scripts/api/admin/nodes/templateGroups/deleteTemplateGroup.ts b/resources/scripts/api/admin/nodes/templateGroups/deleteTemplateGroup.ts index ef77ec2d998..c75b9c36dd8 100644 --- a/resources/scripts/api/admin/nodes/templateGroups/deleteTemplateGroup.ts +++ b/resources/scripts/api/admin/nodes/templateGroups/deleteTemplateGroup.ts @@ -1,5 +1,6 @@ import http from '@/api/http' -const deleteTemplateGroup = (nodeId: number, groupUuid: string) => http.delete(`/api/admin/nodes/${nodeId}/template-groups/${groupUuid}`) +const deleteTemplateGroup = (nodeId: number, groupUuid: string) => + http.delete(`/api/admin/nodes/${nodeId}/template-groups/${groupUuid}`) -export default deleteTemplateGroup \ No newline at end of file +export default deleteTemplateGroup diff --git a/resources/scripts/api/admin/nodes/templateGroups/reorderTemplateGroups.ts b/resources/scripts/api/admin/nodes/templateGroups/reorderTemplateGroups.ts index 77772f345de..68791095f9d 100644 --- a/resources/scripts/api/admin/nodes/templateGroups/reorderTemplateGroups.ts +++ b/resources/scripts/api/admin/nodes/templateGroups/reorderTemplateGroups.ts @@ -1,13 +1,20 @@ -import { rawDataToTemplateGroup, TemplateGroup } from '@/api/admin/nodes/templateGroups/getTemplateGroups' +import { + TemplateGroup, + rawDataToTemplateGroup, +} from '@/api/admin/nodes/templateGroups/getTemplateGroups' import http from '@/api/http' - -const reorderTemplateGroups = async (nodeId: number, groups: number[]): Promise => { - const { data: { data } } = await http.post(`/api/admin/nodes/${nodeId}/template-groups/reorder`, { +const reorderTemplateGroups = async ( + nodeId: number, + groups: number[] +): Promise => { + const { + data: { data }, + } = await http.post(`/api/admin/nodes/${nodeId}/template-groups/reorder`, { order: groups, }) return data.map(rawDataToTemplateGroup) } -export default reorderTemplateGroups \ No newline at end of file +export default reorderTemplateGroups diff --git a/resources/scripts/api/admin/nodes/templateGroups/templates/createTemplate.ts b/resources/scripts/api/admin/nodes/templateGroups/templates/createTemplate.ts index bb3f33ef781..a2f9cc1c632 100644 --- a/resources/scripts/api/admin/nodes/templateGroups/templates/createTemplate.ts +++ b/resources/scripts/api/admin/nodes/templateGroups/templates/createTemplate.ts @@ -1,4 +1,7 @@ -import { rawDataToTemplate, Template } from '@/api/admin/nodes/templateGroups/getTemplateGroups' +import { + Template, + rawDataToTemplate, +} from '@/api/admin/nodes/templateGroups/getTemplateGroups' import http from '@/api/http' export interface TemplateParameters { @@ -7,10 +10,17 @@ export interface TemplateParameters { hidden: boolean } -const createTemplate = async (nodeId: number, groupUuid: string, parameters: TemplateParameters): Promise