From 40168991791ef1c675a8275407433989df19daa2 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Thu, 26 Dec 2024 12:34:29 -0600 Subject: [PATCH 01/88] chore: upgrade composer deps --- composer.json | 2 +- composer.lock | 627 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 429 insertions(+), 200 deletions(-) diff --git a/composer.json b/composer.json index 6c0612c..163a471 100644 --- a/composer.json +++ b/composer.json @@ -7,7 +7,7 @@ "require": { "php": "^8.2", "finnhub/client": "master@dev", - "laravel/framework": "^11.9", + "laravel/framework": "^11.35", "laravel/jetstream": "^5.1", "laravel/sanctum": "^4.0", "laravel/socialite": "^5.16", diff --git a/composer.lock b/composer.lock index edd3321..158a58f 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.334.1", + "version": "3.336.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "3938b3467f64a30fed7ee1762a6785f808a5ae4d" + "reference": "b863c7953ebeeae191c3835bb5413f872cfbb753" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3938b3467f64a30fed7ee1762a6785f808a5ae4d", - "reference": "3938b3467f64a30fed7ee1762a6785f808a5ae4d", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b863c7953ebeeae191c3835bb5413f872cfbb753", + "reference": "b863c7953ebeeae191c3835bb5413f872cfbb753", "shasum": "" }, "require": { @@ -154,9 +154,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.334.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.336.3" }, - "time": "2024-12-05T01:17:41+00:00" + "time": "2024-12-23T19:13:29+00:00" }, { "name": "bacon/bacon-qr-code", @@ -1966,16 +1966,16 @@ }, { "name": "laravel/fortify", - "version": "v1.25.0", + "version": "v1.25.1", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "047e84ea8afe217061f1afa7cf8c6410c9d6a480" + "reference": "5022e7c01385fd6edcef91c12b19071f8f20d6d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/047e84ea8afe217061f1afa7cf8c6410c9d6a480", - "reference": "047e84ea8afe217061f1afa7cf8c6410c9d6a480", + "url": "https://api.github.com/repos/laravel/fortify/zipball/5022e7c01385fd6edcef91c12b19071f8f20d6d8", + "reference": "5022e7c01385fd6edcef91c12b19071f8f20d6d8", "shasum": "" }, "require": { @@ -2027,20 +2027,20 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2024-11-21T20:06:18+00:00" + "time": "2024-11-27T14:51:15+00:00" }, { "name": "laravel/framework", - "version": "v11.34.2", + "version": "v11.36.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "865da6d73dd353f07a7bcbd778c55966a620121f" + "reference": "df06f5163f4550641fdf349ebc04916a61135a64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/865da6d73dd353f07a7bcbd778c55966a620121f", - "reference": "865da6d73dd353f07a7bcbd778c55966a620121f", + "url": "https://api.github.com/repos/laravel/framework/zipball/df06f5163f4550641fdf349ebc04916a61135a64", + "reference": "df06f5163f4550641fdf349ebc04916a61135a64", "shasum": "" }, "require": { @@ -2061,9 +2061,10 @@ "guzzlehttp/uri-template": "^1.0", "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0", "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.2.1", + "league/commonmark": "^2.6", "league/flysystem": "^3.25.1", "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", "monolog/monolog": "^3.0", "nesbot/carbon": "^2.72.2|^3.4", "nunomaduro/termwind": "^2.0", @@ -2075,7 +2076,7 @@ "symfony/console": "^7.0.3", "symfony/error-handler": "^7.0.3", "symfony/finder": "^7.0.3", - "symfony/http-foundation": "^7.0.3", + "symfony/http-foundation": "^7.2.0", "symfony/http-kernel": "^7.0.3", "symfony/mailer": "^7.0.3", "symfony/mime": "^7.0.3", @@ -2147,9 +2148,9 @@ "league/flysystem-read-only": "^3.25.1", "league/flysystem-sftp-v3": "^3.25.1", "mockery/mockery": "^1.6.10", - "nyholm/psr7": "^1.2", "orchestra/testbench-core": "^9.6", "pda/pheanstalk": "^5.0.6", + "php-http/discovery": "^1.15", "phpstan/phpstan": "^1.11.5", "phpunit/phpunit": "^10.5.35|^11.3.6", "predis/predis": "^2.3", @@ -2181,8 +2182,8 @@ "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", "mockery/mockery": "Required to use mocking (^1.6).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).", "predis/predis": "Required to use the predis connector (^2.3).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", @@ -2203,6 +2204,7 @@ }, "autoload": { "files": [ + "src/Illuminate/Collections/functions.php", "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", "src/Illuminate/Filesystem/functions.php", @@ -2240,20 +2242,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-11-27T15:43:57+00:00" + "time": "2024-12-17T22:32:08+00:00" }, { "name": "laravel/jetstream", - "version": "v5.3.3", + "version": "v5.3.4", "source": { "type": "git", "url": "https://github.com/laravel/jetstream.git", - "reference": "16859ea11a0bbce631c19d95ca0e172322e52e30" + "reference": "d8d4d83a64d1035b05030e2e97230524b1fa8177" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/jetstream/zipball/16859ea11a0bbce631c19d95ca0e172322e52e30", - "reference": "16859ea11a0bbce631c19d95ca0e172322e52e30", + "url": "https://api.github.com/repos/laravel/jetstream/zipball/d8d4d83a64d1035b05030e2e97230524b1fa8177", + "reference": "d8d4d83a64d1035b05030e2e97230524b1fa8177", "shasum": "" }, "require": { @@ -2261,7 +2263,7 @@ "illuminate/console": "^11.0", "illuminate/support": "^11.0", "laravel/fortify": "^1.20", - "mobiledetect/mobiledetectlib": "^4.8", + "mobiledetect/mobiledetectlib": "^4.8.08", "php": "^8.2.0", "symfony/console": "^7.0" }, @@ -2307,7 +2309,7 @@ "issues": "https://github.com/laravel/jetstream/issues", "source": "https://github.com/laravel/jetstream" }, - "time": "2024-11-13T13:59:38+00:00" + "time": "2024-12-10T15:11:20+00:00" }, { "name": "laravel/prompts", @@ -2370,16 +2372,16 @@ }, { "name": "laravel/sanctum", - "version": "v4.0.5", + "version": "v4.0.7", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "fe361b9a63407a228f884eb78d7217f680b50140" + "reference": "698064236a46df016e64a7eb059b1414e0b281df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/fe361b9a63407a228f884eb78d7217f680b50140", - "reference": "fe361b9a63407a228f884eb78d7217f680b50140", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/698064236a46df016e64a7eb059b1414e0b281df", + "reference": "698064236a46df016e64a7eb059b1414e0b281df", "shasum": "" }, "require": { @@ -2430,20 +2432,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2024-11-26T14:36:23+00:00" + "time": "2024-12-11T16:40:21+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "0d8d3d8086984996df86596a86dea60398093a81" + "reference": "613b2d4998f85564d40497e05e89cb6d9bd1cbe8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/0d8d3d8086984996df86596a86dea60398093a81", - "reference": "0d8d3d8086984996df86596a86dea60398093a81", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/613b2d4998f85564d40497e05e89cb6d9bd1cbe8", + "reference": "613b2d4998f85564d40497e05e89cb6d9bd1cbe8", "shasum": "" }, "require": { @@ -2491,20 +2493,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2024-11-19T01:38:44+00:00" + "time": "2024-12-16T15:26:28+00:00" }, { "name": "laravel/socialite", - "version": "v5.16.0", + "version": "v5.16.1", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf" + "reference": "4e5be83c0b3ecf81b2ffa47092e917d1f79dce71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf", - "reference": "40a2dc98c53d9dc6d55eadb0d490d3d72b73f1bf", + "url": "https://api.github.com/repos/laravel/socialite/zipball/4e5be83c0b3ecf81b2ffa47092e917d1f79dce71", + "reference": "4e5be83c0b3ecf81b2ffa47092e917d1f79dce71", "shasum": "" }, "require": { @@ -2514,7 +2516,7 @@ "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "league/oauth1-client": "^1.10.1", + "league/oauth1-client": "^1.11", "php": "^7.2|^8.0", "phpseclib/phpseclib": "^3.0" }, @@ -2526,16 +2528,16 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - }, "laravel": { - "providers": [ - "Laravel\\Socialite\\SocialiteServiceProvider" - ], "aliases": { "Socialite": "Laravel\\Socialite\\Facades\\Socialite" - } + }, + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "5.x-dev" } }, "autoload": { @@ -2563,7 +2565,7 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2024-09-03T09:46:57+00:00" + "time": "2024-12-11T16:43:51+00:00" }, { "name": "laravel/tinker", @@ -2633,16 +2635,16 @@ }, { "name": "league/commonmark", - "version": "2.5.3", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0" + "reference": "d150f911e0079e90ae3c106734c93137c184f932" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d150f911e0079e90ae3c106734c93137c184f932", + "reference": "d150f911e0079e90ae3c106734c93137c184f932", "shasum": "" }, "require": { @@ -2667,8 +2669,9 @@ "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 || ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -2678,7 +2681,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.6-dev" + "dev-main": "2.7-dev" } }, "autoload": { @@ -2735,7 +2738,7 @@ "type": "tidelift" } ], - "time": "2024-08-16T11:46:16+00:00" + "time": "2024-12-07T15:34:16+00:00" }, { "name": "league/config", @@ -3064,16 +3067,16 @@ }, { "name": "league/oauth1-client", - "version": "v1.10.1", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth1-client.git", - "reference": "d6365b901b5c287dd41f143033315e2f777e1167" + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/d6365b901b5c287dd41f143033315e2f777e1167", - "reference": "d6365b901b5c287dd41f143033315e2f777e1167", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055", "shasum": "" }, "require": { @@ -3134,22 +3137,196 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth1-client/issues", - "source": "https://github.com/thephpleague/oauth1-client/tree/v1.10.1" + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.11.0" }, - "time": "2022-04-15T14:02:14+00:00" + "time": "2024-12-10T19:59:05+00:00" }, { - "name": "livewire/livewire", - "version": "v3.5.17", + "name": "league/uri", + "version": "7.5.1", "source": { "type": "git", - "url": "https://github.com/livewire/livewire.git", - "reference": "7bbf80d93db9b866776bf957ca6229364bca8d87" + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/7bbf80d93db9b866776bf957ca6229364bca8d87", - "reference": "7bbf80d93db9b866776bf957ca6229364bca8d87", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" + }, + { + "name": "livewire/livewire", + "version": "v3.5.18", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "62f0fa6b340a467c25baa590a567d9a134b357da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/62f0fa6b340a467c25baa590a567d9a134b357da", + "reference": "62f0fa6b340a467c25baa590a567d9a134b357da", "shasum": "" }, "require": { @@ -3204,7 +3381,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.5.17" + "source": "https://github.com/livewire/livewire/tree/v3.5.18" }, "funding": [ { @@ -3212,7 +3389,7 @@ "type": "github" } ], - "time": "2024-12-06T13:41:21+00:00" + "time": "2024-12-23T15:05:02+00:00" }, { "name": "livewire/volt", @@ -3242,13 +3419,13 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "laravel": { "providers": [ "Livewire\\Volt\\VoltServiceProvider" ] + }, + "branch-alias": { + "dev-master": "1.x-dev" } }, "autoload": { @@ -3316,12 +3493,12 @@ "type": "library", "extra": { "laravel": { - "providers": [ - "Maatwebsite\\Excel\\ExcelServiceProvider" - ], "aliases": { "Excel": "Maatwebsite\\Excel\\Facades\\Excel" - } + }, + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ] } }, "autoload": { @@ -3553,28 +3730,29 @@ }, { "name": "mobiledetect/mobiledetectlib", - "version": "4.8.06", + "version": "4.8.09", "source": { "type": "git", "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "af088b54cecc13b3264edca7da93a89ba7aa2d9e" + "reference": "a06fe2e546a06bb8c2639d6823d5250b2efb3209" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/af088b54cecc13b3264edca7da93a89ba7aa2d9e", - "reference": "af088b54cecc13b3264edca7da93a89ba7aa2d9e", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/a06fe2e546a06bb8c2639d6823d5250b2efb3209", + "reference": "a06fe2e546a06bb8c2639d6823d5250b2efb3209", "shasum": "" }, "require": { "php": ">=8.0", - "psr/simple-cache": "^2 || ^3" + "psr/cache": "^3.0", + "psr/simple-cache": "^3" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^v3.35.1", + "friendsofphp/php-cs-fixer": "^v3.65.0", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.6", - "squizlabs/php_codesniffer": "^3.7" + "phpstan/phpstan": "^1.12.x-dev", + "phpunit/phpunit": "^9.6.18", + "squizlabs/php_codesniffer": "^3.11.1" }, "type": "library", "autoload": { @@ -3605,7 +3783,7 @@ ], "support": { "issues": "https://github.com/serbanghita/Mobile-Detect/issues", - "source": "https://github.com/serbanghita/Mobile-Detect/tree/4.8.06" + "source": "https://github.com/serbanghita/Mobile-Detect/tree/4.8.09" }, "funding": [ { @@ -3613,7 +3791,7 @@ "type": "github" } ], - "time": "2024-03-01T22:28:42+00:00" + "time": "2024-12-10T15:32:06+00:00" }, { "name": "monolog/monolog", @@ -3786,16 +3964,16 @@ }, { "name": "nesbot/carbon", - "version": "3.8.2", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947" + "reference": "f01cfa96468f4c38325f507ab81a4f1d2cd93cfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e1268cdbc486d97ce23fef2c666dc3c6b6de9947", - "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f01cfa96468f4c38325f507ab81a4f1d2cd93cfe", + "reference": "f01cfa96468f4c38325f507ab81a4f1d2cd93cfe", "shasum": "" }, "require": { @@ -3827,10 +4005,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev", - "dev-2.x": "2.x-dev" - }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -3840,6 +4014,10 @@ "includes": [ "extension.neon" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" } }, "autoload": { @@ -3888,7 +4066,7 @@ "type": "tidelift" } ], - "time": "2024-11-07T17:46:48+00:00" + "time": "2024-12-21T18:03:19+00:00" }, { "name": "nette/schema", @@ -4528,16 +4706,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.29.5", + "version": "1.29.6", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "727cb704d5479fe4ddc291497ee471c4ec08f1b6" + "reference": "08597725b84570cd6f32bf0ea92e75a803ef28c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/727cb704d5479fe4ddc291497ee471c4ec08f1b6", - "reference": "727cb704d5479fe4ddc291497ee471c4ec08f1b6", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/08597725b84570cd6f32bf0ea92e75a803ef28c2", + "reference": "08597725b84570cd6f32bf0ea92e75a803ef28c2", "shasum": "" }, "require": { @@ -4565,7 +4743,7 @@ }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "dev-main", - "dompdf/dompdf": "^1.0 || ^2.0", + "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0", "friendsofphp/php-cs-fixer": "^3.2", "mitoteam/jpgraph": "^10.3", "mpdf/mpdf": "^8.1.1", @@ -4627,9 +4805,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.5" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.6" }, - "time": "2024-11-22T05:57:44+00:00" + "time": "2024-12-08T05:49:00+00:00" }, { "name": "phpoption/phpoption", @@ -4708,16 +4886,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.42", + "version": "3.0.43", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98" + "reference": "709ec107af3cb2f385b9617be72af8cf62441d02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/db92f1b1987b12b13f248fe76c3a52cadb67bb98", - "reference": "db92f1b1987b12b13f248fe76c3a52cadb67bb98", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/709ec107af3cb2f385b9617be72af8cf62441d02", + "reference": "709ec107af3cb2f385b9617be72af8cf62441d02", "shasum": "" }, "require": { @@ -4798,7 +4976,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.42" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.43" }, "funding": [ { @@ -4814,7 +4992,7 @@ "type": "tidelift" } ], - "time": "2024-09-16T03:06:04+00:00" + "time": "2024-12-14T21:12:59+00:00" }, { "name": "pragmarx/google2fa", @@ -4929,6 +5107,55 @@ ], "time": "2024-11-21T20:00:02+00:00" }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, { "name": "psr/clock", "version": "1.0.0", @@ -5343,16 +5570,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.5", + "version": "v0.12.7", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "36a03ff27986682c22985e56aabaf840dd173cb5" + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/36a03ff27986682c22985e56aabaf840dd173cb5", - "reference": "36a03ff27986682c22985e56aabaf840dd173cb5", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", "shasum": "" }, "require": { @@ -5416,9 +5643,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.5" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" }, - "time": "2024-11-29T06:14:30+00:00" + "time": "2024-12-10T01:58:33+00:00" }, { "name": "ralouphie/getallheaders", @@ -5789,16 +6016,16 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.16.6", + "version": "1.17.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "1f26942dc1e5c49eacfced34fdbc29ed234bd7b3" + "reference": "9ab30fd24f677e5aa370ea4cf6b41c517d16cf85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/1f26942dc1e5c49eacfced34fdbc29ed234bd7b3", - "reference": "1f26942dc1e5c49eacfced34fdbc29ed234bd7b3", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/9ab30fd24f677e5aa370ea4cf6b41c517d16cf85", + "reference": "9ab30fd24f677e5aa370ea4cf6b41c517d16cf85", "shasum": "" }, "require": { @@ -5807,10 +6034,10 @@ }, "require-dev": { "mockery/mockery": "^1.5", - "orchestra/testbench": "^7.7|^8.0", - "pestphp/pest": "^1.22", - "phpunit/phpunit": "^9.5.24", - "spatie/pest-plugin-test-time": "^1.1" + "orchestra/testbench": "^7.7|^8.0|^9.0", + "pestphp/pest": "^1.22|^2", + "phpunit/phpunit": "^9.5.24|^10.5", + "spatie/pest-plugin-test-time": "^1.1|^2.2" }, "type": "library", "autoload": { @@ -5837,7 +6064,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.6" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.17.0" }, "funding": [ { @@ -5845,7 +6072,7 @@ "type": "github" } ], - "time": "2024-11-18T15:02:02+00:00" + "time": "2024-12-09T16:29:14+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep", @@ -6031,16 +6258,16 @@ }, { "name": "symfony/console", - "version": "v7.2.0", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf" + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", - "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", + "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", "shasum": "" }, "require": { @@ -6104,7 +6331,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.0" + "source": "https://github.com/symfony/console/tree/v7.2.1" }, "funding": [ { @@ -6120,7 +6347,7 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:24:19+00:00" + "time": "2024-12-11T03:49:26+00:00" }, { "name": "symfony/css-selector", @@ -6256,16 +6483,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.2.0", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "672b3dd1ef8b87119b446d67c58c106c43f965fe" + "reference": "6150b89186573046167796fa5f3f76601d5145f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/672b3dd1ef8b87119b446d67c58c106c43f965fe", - "reference": "672b3dd1ef8b87119b446d67c58c106c43f965fe", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/6150b89186573046167796fa5f3f76601d5145f8", + "reference": "6150b89186573046167796fa5f3f76601d5145f8", "shasum": "" }, "require": { @@ -6311,7 +6538,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.2.0" + "source": "https://github.com/symfony/error-handler/tree/v7.2.1" }, "funding": [ { @@ -6327,7 +6554,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:35:02+00:00" + "time": "2024-12-07T08:50:44+00:00" }, { "name": "symfony/event-dispatcher", @@ -6629,16 +6856,16 @@ }, { "name": "symfony/http-kernel", - "version": "v7.2.0", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d" + "reference": "d8ae58eecae44c8e66833e76cc50a4ad3c002d97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d", - "reference": "6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d8ae58eecae44c8e66833e76cc50a4ad3c002d97", + "reference": "d8ae58eecae44c8e66833e76cc50a4ad3c002d97", "shasum": "" }, "require": { @@ -6723,7 +6950,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.0" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.1" }, "funding": [ { @@ -6739,7 +6966,7 @@ "type": "tidelift" } ], - "time": "2024-11-29T08:42:40+00:00" + "time": "2024-12-11T12:09:10+00:00" }, { "name": "symfony/mailer", @@ -6823,16 +7050,16 @@ }, { "name": "symfony/mime", - "version": "v7.2.0", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "cc84a4b81f62158c3846ac7ff10f696aae2b524d" + "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/cc84a4b81f62158c3846ac7ff10f696aae2b524d", - "reference": "cc84a4b81f62158c3846ac7ff10f696aae2b524d", + "url": "https://api.github.com/repos/symfony/mime/zipball/7f9617fcf15cb61be30f8b252695ed5e2bfac283", + "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283", "shasum": "" }, "require": { @@ -6887,7 +7114,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.0" + "source": "https://github.com/symfony/mime/tree/v7.2.1" }, "funding": [ { @@ -6903,7 +7130,7 @@ "type": "tidelift" } ], - "time": "2024-11-23T09:19:39+00:00" + "time": "2024-12-07T08:50:44+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6931,8 +7158,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -7007,8 +7234,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -7086,8 +7313,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -7168,8 +7395,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -7252,8 +7479,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -7326,8 +7553,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -7406,8 +7633,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -7488,8 +7715,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -8185,31 +8412,33 @@ }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.2.7", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -8232,9 +8461,9 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" }, - "time": "2023-12-08T13:03:43+00:00" + "time": "2024-12-21T16:25:41+00:00" }, { "name": "tschucki/alphavantage-laravel", @@ -9207,16 +9436,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.7", + "version": "11.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca" + "reference": "418c59fd080954f8c4aa5631d9502ecda2387118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f7f08030e8811582cc459871d28d6f5a1a4d35ca", - "reference": "f7f08030e8811582cc459871d28d6f5a1a4d35ca", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/418c59fd080954f8c4aa5631d9502ecda2387118", + "reference": "418c59fd080954f8c4aa5631d9502ecda2387118", "shasum": "" }, "require": { @@ -9235,7 +9464,7 @@ "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^11.4.1" + "phpunit/phpunit": "^11.5.0" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -9273,7 +9502,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.7" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.8" }, "funding": [ { @@ -9281,7 +9510,7 @@ "type": "github" } ], - "time": "2024-10-09T06:21:38+00:00" + "time": "2024-12-11T12:34:27+00:00" }, { "name": "phpunit/php-file-iterator", @@ -9530,16 +9759,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.0", + "version": "11.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0569902506a6c0878930b87ea79ec3b50ea563f7" + "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0569902506a6c0878930b87ea79ec3b50ea563f7", - "reference": "0569902506a6c0878930b87ea79ec3b50ea563f7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/153d0531b9f7e883c5053160cad6dd5ac28140b3", + "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3", "shasum": "" }, "require": { @@ -9553,13 +9782,13 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.7", + "phpunit/php-code-coverage": "^11.0.8", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.1", + "sebastian/code-unit": "^3.0.2", "sebastian/comparator": "^6.2.1", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", @@ -9611,7 +9840,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.0" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.2" }, "funding": [ { @@ -9627,7 +9856,7 @@ "type": "tidelift" } ], - "time": "2024-12-06T05:57:38+00:00" + "time": "2024-12-21T05:51:08+00:00" }, { "name": "sebastian/cli-parser", @@ -9688,23 +9917,23 @@ }, { "name": "sebastian/code-unit", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "6bb7d09d6623567178cf54126afa9c2310114268" + "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6bb7d09d6623567178cf54126afa9c2310114268", - "reference": "6bb7d09d6623567178cf54126afa9c2310114268", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", + "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.5" }, "type": "library", "extra": { @@ -9733,7 +9962,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.2" }, "funding": [ { @@ -9741,7 +9970,7 @@ "type": "github" } ], - "time": "2024-07-03T04:44:28+00:00" + "time": "2024-12-12T09:59:06+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", From 89bfb2801915135a45e8d09b9b41ca6decd65cbb Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Wed, 15 Jan 2025 22:37:03 -0600 Subject: [PATCH 02/88] docs: add badges --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 019a7da..2ba178e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ + +

Investbrain Logo

+[![Docker Pulls](https://img.shields.io/docker/pulls/investbrainapp/investbrain)](https://hub.docker.com/r/investbrainapp/investbrain/) +[![Github Stars](https://img.shields.io/github/stars/investbrainapp/investbrain)](https://github.com/investbrainapp/investbrain/) + ## About Investbrain Investbrain is a smart open-source investment tracker that helps you manage, track, and make informed decisions about your investments. From 8dd153fb53a043bd0dbc8977b3ccc223338b1d89 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Fri, 17 Jan 2025 12:46:29 -0600 Subject: [PATCH 03/88] docs: added more badges --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2ba178e..dc43c15 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,11 @@

Investbrain Logo

-[![Docker Pulls](https://img.shields.io/docker/pulls/investbrainapp/investbrain)](https://hub.docker.com/r/investbrainapp/investbrain/) -[![Github Stars](https://img.shields.io/github/stars/investbrainapp/investbrain)](https://github.com/investbrainapp/investbrain/) +[![GitHub Repo Stars](https://img.shields.io/github/stars/investbrainapp/investbrain?style=for-the-badge&color=%23CCCCCC)](https://github.com/investbrainapp/investbrain/) +[![GitHub Contributors](https://img.shields.io/github/contributors/investbrainapp/investbrain?style=for-the-badge)](https://github.com/investbrainapp/investbrain/) +[![GitHub Issues](https://img.shields.io/github/issues/investbrainapp/investbrain?style=for-the-badge)](https://github.com/investbrainapp/investbrain/issues) +[![Docker Pulls](https://img.shields.io/docker/pulls/investbrainapp/investbrain?style=for-the-badge)](https://hub.docker.com/r/investbrainapp/investbrain/) + ## About Investbrain From 16d5b806572ffdce37b46be3ee9e11228214f983 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 18:09:02 -0600 Subject: [PATCH 04/88] wip --- docker-compose.yml | 23 +++++------------------ docker/Dockerfile | 33 ++++++++++++++++++++++----------- docker/entrypoint.sh | 12 ------------ docker/nginx.conf | 2 +- docker/supervisord.conf | 7 +++++++ 5 files changed, 35 insertions(+), 42 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6ea3f59..fd49e6c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,15 +7,16 @@ services: container_name: investbrain-app restart: unless-stopped tty: true - expose: - - "9000" - volumes: - - .:/var/www/app:delegated + ports: + - "${APP_PORT:-8000}:80" depends_on: - mysql - redis networks: - investbrain-network + volumes: + - ./storage:/var/www/app/storage + - .env:/var/www/app/.env redis: image: redis:alpine container_name: investbrain-redis @@ -25,20 +26,6 @@ services: - investbrain-network volumes: - investbrain-redis:/data - nginx: - image: nginx:alpine - container_name: investbrain-nginx - restart: unless-stopped - tty: true - ports: - - "${APP_PORT:-8000}:80" - volumes: - - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf - - .:/var/www/app:delegated - depends_on: - - app - networks: - - investbrain-network mysql: image: mysql:8.0 container_name: investbrain-mysql diff --git a/docker/Dockerfile b/docker/Dockerfile index dcd7733..ff9a70c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,40 +6,51 @@ ENV DEBIAN_FRONTEND=noninteractive COPY . /var/www/app WORKDIR /var/www/app +# Install Composer and Node.js +RUN apt-get update && apt-get install -y \ + curl \ + unzip \ + git \ + nodejs \ + npm \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +# Install PHP dependencies +RUN composer install --no-scripts --optimize-autoloader + +# Install Node dependencies and build assets +RUN npm install && npm run build + # Set permissions RUN chown -R www-data:www-data . \ - && chmod -R 775 ./storage \ && chmod +x ./docker/entrypoint.sh \ # Install common php extension dependencies && apt-get update && apt-get install -y \ + nginx \ libfreetype-dev \ libjpeg62-turbo-dev \ libpng-dev \ zlib1g-dev \ libzip-dev \ - unzip \ libicu-dev \ - git \ - curl \ supervisor \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-configure zip \ && docker-php-ext-install -j$(nproc) \ gd \ zip \ pdo_mysql \ mysqli \ intl \ -# Install Node.js and npm - && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ - && apt-get install -y nodejs \ - && npm install -g npm@latest +# remove default nginx config + && rm /etc/nginx/sites-enabled/default + +# Copy the custom Nginx configuration +COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf # Copy over supervisor configuration COPY ./docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf -# Install composer -COPY --from=composer:2.6.5 /usr/bin/composer /usr/local/bin/composer - # Serve on port 80 EXPOSE 80 diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ffdc0ca..84148f3 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -9,15 +9,7 @@ if [ ! -f ".env" ]; then cp .env.example .env fi -echo -e "\n====================== Installing Composer dependencies... ====================== " -/usr/local/bin/composer install - echo -e "\n====================== Validating environment... ====================== " -if [ $(stat -c '%U' .) != "www-data" ]; then - echo " > Setting correct permissions for pwd..." - chown -R www-data:www-data . -fi - if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then echo " > Ah, APP_KEY is missing in .env file. Generating a new key!" @@ -30,10 +22,6 @@ if [ ! -L "public/storage" ]; then /usr/local/bin/php artisan storage:link fi -echo -e "\n====================== Installing NPM dependencies and building frontend... ====================== " -/usr/bin/npm install -/usr/bin/npm run build - echo -e "\n====================== Running migrations... ====================== " run_migrations() { /usr/local/bin/php artisan migrate --force diff --git a/docker/nginx.conf b/docker/nginx.conf index 9e2fdca..93bf2c1 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -14,7 +14,7 @@ server { fastcgi_param HTTPS $http_x_forwarded_proto; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_pass investbrain-app:9000; + fastcgi_pass 127.0.0.1:9000; } location ~ /\.ht { diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 726bff0..44a392c 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -4,6 +4,13 @@ user=root logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid +[program:nginx] +command=nginx -g 'daemon off;' +autostart=true +autorestart=true +stderr_logfile=/var/log/nginx/error.log +stdout_logfile=/var/log/nginx/access.log + [program:php] command=php-fpm -F autostart=true From cf7c5fc23ab9118e4cdbc2b95507bdb151725022 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 18:12:55 -0600 Subject: [PATCH 05/88] wip --- composer.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/composer.json b/composer.json index 163a471..4e4b1d0 100644 --- a/composer.json +++ b/composer.json @@ -81,6 +81,12 @@ "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": true + }, + "platform": { + "php": "8.4.0", + "ext-gd": "8.4.0", + "ext-mbstring": "8.4.0", + "ext-zip": "8.4.0" } }, "minimum-stability": "stable", From dc69bfa8c72a49ec2d7c4d4aeb283fde9e23f099 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 18:18:31 -0600 Subject: [PATCH 06/88] make php extensions required --- composer.json | 9 +- composer.lock | 393 +++++++++++++++++++++++++------------------------- 2 files changed, 203 insertions(+), 199 deletions(-) diff --git a/composer.json b/composer.json index 4e4b1d0..cd97714 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,9 @@ "license": "CC-BY-NC 4.0", "require": { "php": "^8.2", + "ext-gd": "^8.2", + "ext-mbstring": "^8.2", + "ext-zip": "^1.22", "finnhub/client": "master@dev", "laravel/framework": "^11.35", "laravel/jetstream": "^5.1", @@ -81,12 +84,6 @@ "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": true - }, - "platform": { - "php": "8.4.0", - "ext-gd": "8.4.0", - "ext-mbstring": "8.4.0", - "ext-zip": "8.4.0" } }, "minimum-stability": "stable", diff --git a/composer.lock b/composer.lock index 158a58f..e61d17a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7a08994d8c9bda95b9481a926a63c405", + "content-hash": "7129fc2cd2aa4148f13bcbf5c5235105", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.336.3", + "version": "3.338.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "b863c7953ebeeae191c3835bb5413f872cfbb753" + "reference": "7a52364e053d74363f9976dfb4473bace5b7790e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b863c7953ebeeae191c3835bb5413f872cfbb753", - "reference": "b863c7953ebeeae191c3835bb5413f872cfbb753", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7a52364e053d74363f9976dfb4473bace5b7790e", + "reference": "7a52364e053d74363f9976dfb4473bace5b7790e", "shasum": "" }, "require": { @@ -79,31 +79,31 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0" + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/promises": "^2.0", + "guzzlehttp/psr7": "^2.4.5", + "mtdowling/jmespath.php": "^2.8.0", + "php": ">=8.1", + "psr/http-message": "^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", - "composer/composer": "^1.10.22", + "composer/composer": "^2.7.8", "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", "ext-pcntl": "*", "ext-sockets": "*", - "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" + "psr/cache": "^2.0 || ^3.0", + "psr/simple-cache": "^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", + "symfony/filesystem": "^v6.4.0 || ^v7.1.0", + "yoast/phpunit-polyfills": "^2.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -152,11 +152,11 @@ "sdk" ], "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.336.3" + "source": "https://github.com/aws/aws-sdk-php/tree/3.338.2" }, - "time": "2024-12-23T19:13:29+00:00" + "time": "2025-01-24T19:09:22+00:00" }, { "name": "bacon/bacon-qr-code", @@ -932,16 +932,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.2", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + "reference": "b115554301161fa21467629f1e1391c1936de517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", + "reference": "b115554301161fa21467629f1e1391c1936de517", "shasum": "" }, "require": { @@ -987,7 +987,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.3" }, "funding": [ { @@ -995,7 +995,7 @@ "type": "github" } ], - "time": "2023-10-06T06:47:41+00:00" + "time": "2024-12-27T00:36:43+00:00" }, { "name": "ezyang/htmlpurifier", @@ -1122,16 +1122,16 @@ }, { "name": "firebase/php-jwt", - "version": "v6.10.2", + "version": "v6.11.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "30c19ed0f3264cb660ea496895cfb6ef7ee3653b" + "reference": "8f718f4dfc9c5d5f0c994cdfd103921b43592712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/30c19ed0f3264cb660ea496895cfb6ef7ee3653b", - "reference": "30c19ed0f3264cb660ea496895cfb6ef7ee3653b", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/8f718f4dfc9c5d5f0c994cdfd103921b43592712", + "reference": "8f718f4dfc9c5d5f0c994cdfd103921b43592712", "shasum": "" }, "require": { @@ -1179,9 +1179,9 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.2" + "source": "https://github.com/firebase/php-jwt/tree/v6.11.0" }, - "time": "2024-11-24T11:22:49+00:00" + "time": "2025-01-23T05:11:06+00:00" }, { "name": "fruitcake/php-cors", @@ -1966,16 +1966,16 @@ }, { "name": "laravel/fortify", - "version": "v1.25.1", + "version": "v1.25.3", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "5022e7c01385fd6edcef91c12b19071f8f20d6d8" + "reference": "ee35e5b8ea25cc51f8323e27a839283becd44160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/5022e7c01385fd6edcef91c12b19071f8f20d6d8", - "reference": "5022e7c01385fd6edcef91c12b19071f8f20d6d8", + "url": "https://api.github.com/repos/laravel/fortify/zipball/ee35e5b8ea25cc51f8323e27a839283becd44160", + "reference": "ee35e5b8ea25cc51f8323e27a839283becd44160", "shasum": "" }, "require": { @@ -2027,20 +2027,20 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2024-11-27T14:51:15+00:00" + "time": "2025-01-17T15:17:57+00:00" }, { "name": "laravel/framework", - "version": "v11.36.1", + "version": "v11.40.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "df06f5163f4550641fdf349ebc04916a61135a64" + "reference": "599a28196d284fee158cc10086fd56ac625ad7a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/df06f5163f4550641fdf349ebc04916a61135a64", - "reference": "df06f5163f4550641fdf349ebc04916a61135a64", + "url": "https://api.github.com/repos/laravel/framework/zipball/599a28196d284fee158cc10086fd56ac625ad7a3", + "reference": "599a28196d284fee158cc10086fd56ac625ad7a3", "shasum": "" }, "require": { @@ -2066,7 +2066,7 @@ "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.72.2|^3.4", + "nesbot/carbon": "^2.72.6|^3.8.4", "nunomaduro/termwind": "^2.0", "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", @@ -2090,7 +2090,6 @@ "voku/portable-ascii": "^2.0.2" }, "conflict": { - "mockery/mockery": "1.6.8", "tightenco/collect": "<5.5.33" }, "provide": { @@ -2142,6 +2141,7 @@ "fakerphp/faker": "^1.24", "guzzlehttp/promises": "^2.0.3", "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", "league/flysystem-aws-s3-v3": "^3.25.1", "league/flysystem-ftp": "^3.25.1", "league/flysystem-path-prefixing": "^3.25.1", @@ -2242,7 +2242,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-12-17T22:32:08+00:00" + "time": "2025-01-24T16:17:42+00:00" }, { "name": "laravel/jetstream", @@ -2313,16 +2313,16 @@ }, { "name": "laravel/prompts", - "version": "v0.3.2", + "version": "v0.3.3", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f" + "reference": "749395fcd5f8f7530fe1f00dfa84eb22c83d94ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/0e0535747c6b8d6d10adca8b68293cf4517abb0f", - "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f", + "url": "https://api.github.com/repos/laravel/prompts/zipball/749395fcd5f8f7530fe1f00dfa84eb22c83d94ea", + "reference": "749395fcd5f8f7530fe1f00dfa84eb22c83d94ea", "shasum": "" }, "require": { @@ -2366,9 +2366,9 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.2" + "source": "https://github.com/laravel/prompts/tree/v0.3.3" }, - "time": "2024-11-12T14:59:47+00:00" + "time": "2024-12-30T15:53:31+00:00" }, { "name": "laravel/sanctum", @@ -2497,16 +2497,16 @@ }, { "name": "laravel/socialite", - "version": "v5.16.1", + "version": "v5.17.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "4e5be83c0b3ecf81b2ffa47092e917d1f79dce71" + "reference": "77be8be7ee5099aed8ca7cfddc1bf6f9ab3fc159" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/4e5be83c0b3ecf81b2ffa47092e917d1f79dce71", - "reference": "4e5be83c0b3ecf81b2ffa47092e917d1f79dce71", + "url": "https://api.github.com/repos/laravel/socialite/zipball/77be8be7ee5099aed8ca7cfddc1bf6f9ab3fc159", + "reference": "77be8be7ee5099aed8ca7cfddc1bf6f9ab3fc159", "shasum": "" }, "require": { @@ -2565,7 +2565,7 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2024-12-11T16:43:51+00:00" + "time": "2025-01-17T15:17:00+00:00" }, { "name": "laravel/tinker", @@ -2635,16 +2635,16 @@ }, { "name": "league/commonmark", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d150f911e0079e90ae3c106734c93137c184f932" + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d150f911e0079e90ae3c106734c93137c184f932", - "reference": "d150f911e0079e90ae3c106734c93137c184f932", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", "shasum": "" }, "require": { @@ -2738,7 +2738,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T15:34:16+00:00" + "time": "2024-12-29T14:10:59+00:00" }, { "name": "league/config", @@ -3465,16 +3465,16 @@ }, { "name": "maatwebsite/excel", - "version": "3.1.61", + "version": "3.1.62", "source": { "type": "git", "url": "https://github.com/SpartnerNL/Laravel-Excel.git", - "reference": "62616317c5ec07e885c5d7f6b537f57a7239c2ff" + "reference": "decfb9140161fcc117571e47e35ddf27983189ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/62616317c5ec07e885c5d7f6b537f57a7239c2ff", - "reference": "62616317c5ec07e885c5d7f6b537f57a7239c2ff", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/decfb9140161fcc117571e47e35ddf27983189ce", + "reference": "decfb9140161fcc117571e47e35ddf27983189ce", "shasum": "" }, "require": { @@ -3482,7 +3482,7 @@ "ext-json": "*", "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0", "php": "^7.0||^8.0", - "phpoffice/phpspreadsheet": "^1.29.4", + "phpoffice/phpspreadsheet": "^1.29.7", "psr/simple-cache": "^1.0||^2.0||^3.0" }, "require-dev": { @@ -3530,7 +3530,7 @@ ], "support": { "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", - "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.61" + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.62" }, "funding": [ { @@ -3542,7 +3542,7 @@ "type": "github" } ], - "time": "2024-11-25T18:41:59+00:00" + "time": "2025-01-04T12:14:36+00:00" }, { "name": "maennchen/zipstream-php", @@ -3964,16 +3964,16 @@ }, { "name": "nesbot/carbon", - "version": "3.8.3", + "version": "3.8.4", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "f01cfa96468f4c38325f507ab81a4f1d2cd93cfe" + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "129700ed449b1f02d70272d2ac802357c8c30c58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f01cfa96468f4c38325f507ab81a4f1d2cd93cfe", - "reference": "f01cfa96468f4c38325f507ab81a4f1d2cd93cfe", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/129700ed449b1f02d70272d2ac802357c8c30c58", + "reference": "129700ed449b1f02d70272d2ac802357c8c30c58", "shasum": "" }, "require": { @@ -4066,7 +4066,7 @@ "type": "tidelift" } ], - "time": "2024-12-21T18:03:19+00:00" + "time": "2024-12-27T09:25:35+00:00" }, { "name": "nette/schema", @@ -4218,16 +4218,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -4270,9 +4270,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "nunomaduro/termwind", @@ -4706,16 +4706,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.29.6", + "version": "1.29.8", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "08597725b84570cd6f32bf0ea92e75a803ef28c2" + "reference": "089ffdfc04b5fcf25a3503d81a4e589f247e20e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/08597725b84570cd6f32bf0ea92e75a803ef28c2", - "reference": "08597725b84570cd6f32bf0ea92e75a803ef28c2", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/089ffdfc04b5fcf25a3503d81a4e589f247e20e3", + "reference": "089ffdfc04b5fcf25a3503d81a4e589f247e20e3", "shasum": "" }, "require": { @@ -4805,9 +4805,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.6" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.8" }, - "time": "2024-12-08T05:49:00+00:00" + "time": "2025-01-12T03:16:27+00:00" }, { "name": "phpoption/phpoption", @@ -5874,16 +5874,16 @@ }, { "name": "robsontenorio/mary", - "version": "1.41.4", + "version": "1.41.5", "source": { "type": "git", "url": "https://github.com/robsontenorio/mary.git", - "reference": "d88af3a6e52c39e84455927111449035f1ede92d" + "reference": "a92f65bf3b8565ba93338955f3bc5418ed7f8deb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robsontenorio/mary/zipball/d88af3a6e52c39e84455927111449035f1ede92d", - "reference": "d88af3a6e52c39e84455927111449035f1ede92d", + "url": "https://api.github.com/repos/robsontenorio/mary/zipball/a92f65bf3b8565ba93338955f3bc5418ed7f8deb", + "reference": "a92f65bf3b8565ba93338955f3bc5418ed7f8deb", "shasum": "" }, "require": { @@ -5949,7 +5949,7 @@ ], "support": { "issues": "https://github.com/robsontenorio/mary/issues", - "source": "https://github.com/robsontenorio/mary/tree/1.41.4" + "source": "https://github.com/robsontenorio/mary/tree/1.41.5" }, "funding": [ { @@ -5957,20 +5957,20 @@ "type": "github" } ], - "time": "2024-11-12T14:30:56+00:00" + "time": "2025-01-01T14:48:44+00:00" }, { "name": "scheb/yahoo-finance-api", - "version": "v4.11.1", + "version": "v4.11.2", "source": { "type": "git", "url": "https://github.com/scheb/yahoo-finance-api.git", - "reference": "acb9ebacc057a13d69ca2b02fc88096369a5848a" + "reference": "6955d2db9b0c7e0a158dcb6abaca27946affdd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/yahoo-finance-api/zipball/acb9ebacc057a13d69ca2b02fc88096369a5848a", - "reference": "acb9ebacc057a13d69ca2b02fc88096369a5848a", + "url": "https://api.github.com/repos/scheb/yahoo-finance-api/zipball/6955d2db9b0c7e0a158dcb6abaca27946affdd18", + "reference": "6955d2db9b0c7e0a158dcb6abaca27946affdd18", "shasum": "" }, "require": { @@ -6010,22 +6010,22 @@ ], "support": { "issues": "https://github.com/scheb/yahoo-finance-api/issues", - "source": "https://github.com/scheb/yahoo-finance-api/tree/v4.11.1" + "source": "https://github.com/scheb/yahoo-finance-api/tree/v4.11.2" }, - "time": "2024-10-16T17:35:40+00:00" + "time": "2024-12-29T18:20:46+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.17.0", + "version": "1.18.3", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "9ab30fd24f677e5aa370ea4cf6b41c517d16cf85" + "reference": "ba67eee37d86ed775dab7dad58a7cbaf9a6cfe78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/9ab30fd24f677e5aa370ea4cf6b41c517d16cf85", - "reference": "9ab30fd24f677e5aa370ea4cf6b41c517d16cf85", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/ba67eee37d86ed775dab7dad58a7cbaf9a6cfe78", + "reference": "ba67eee37d86ed775dab7dad58a7cbaf9a6cfe78", "shasum": "" }, "require": { @@ -6064,7 +6064,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.17.0" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.18.3" }, "funding": [ { @@ -6072,7 +6072,7 @@ "type": "github" } ], - "time": "2024-12-09T16:29:14+00:00" + "time": "2025-01-22T08:51:18+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep", @@ -6433,12 +6433,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -6656,12 +6656,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -6714,16 +6714,16 @@ }, { "name": "symfony/finder", - "version": "v7.2.0", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { @@ -6758,7 +6758,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.0" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -6774,20 +6774,20 @@ "type": "tidelift" } ], - "time": "2024-10-23T06:56:12+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.2.0", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e88a66c3997859532bc2ddd6dd8f35aba2711744" + "reference": "62d1a43796ca3fea3f83a8470dfe63a4af3bc588" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e88a66c3997859532bc2ddd6dd8f35aba2711744", - "reference": "e88a66c3997859532bc2ddd6dd8f35aba2711744", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/62d1a43796ca3fea3f83a8470dfe63a4af3bc588", + "reference": "62d1a43796ca3fea3f83a8470dfe63a4af3bc588", "shasum": "" }, "require": { @@ -6836,7 +6836,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.0" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.2" }, "funding": [ { @@ -6852,20 +6852,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T18:58:46+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.1", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "d8ae58eecae44c8e66833e76cc50a4ad3c002d97" + "reference": "3c432966bd8c7ec7429663105f5a02d7e75b4306" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d8ae58eecae44c8e66833e76cc50a4ad3c002d97", - "reference": "d8ae58eecae44c8e66833e76cc50a4ad3c002d97", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3c432966bd8c7ec7429663105f5a02d7e75b4306", + "reference": "3c432966bd8c7ec7429663105f5a02d7e75b4306", "shasum": "" }, "require": { @@ -6950,7 +6950,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.1" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.2" }, "funding": [ { @@ -6966,7 +6966,7 @@ "type": "tidelift" } ], - "time": "2024-12-11T12:09:10+00:00" + "time": "2024-12-31T14:59:40+00:00" }, { "name": "symfony/mailer", @@ -7934,12 +7934,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -8082,16 +8082,16 @@ }, { "name": "symfony/translation", - "version": "v7.2.0", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5" + "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/dc89e16b44048ceecc879054e5b7f38326ab6cc5", - "reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5", + "url": "https://api.github.com/repos/symfony/translation/zipball/e2674a30132b7cc4d74540d6c2573aa363f05923", + "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923", "shasum": "" }, "require": { @@ -8157,7 +8157,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.0" + "source": "https://github.com/symfony/translation/tree/v7.2.2" }, "funding": [ { @@ -8173,7 +8173,7 @@ "type": "tidelift" } ], - "time": "2024-11-12T20:47:56+00:00" + "time": "2024-12-07T08:18:10+00:00" }, { "name": "symfony/translation-contracts", @@ -8194,12 +8194,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -8827,16 +8827,16 @@ }, { "name": "filp/whoops", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" + "reference": "075bc0c26631110584175de6523ab3f1652eb28e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", + "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e", "shasum": "" }, "require": { @@ -8886,7 +8886,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.16.0" + "source": "https://github.com/filp/whoops/tree/2.17.0" }, "funding": [ { @@ -8894,7 +8894,7 @@ "type": "github" } ], - "time": "2024-09-25T12:00:00+00:00" + "time": "2025-01-25T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -8949,16 +8949,16 @@ }, { "name": "laravel/pint", - "version": "v1.18.3", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "cef51821608239040ab841ad6e1c6ae502ae3026" + "reference": "53072e8ea22213a7ed168a8a15b96fbb8b82d44b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/cef51821608239040ab841ad6e1c6ae502ae3026", - "reference": "cef51821608239040ab841ad6e1c6ae502ae3026", + "url": "https://api.github.com/repos/laravel/pint/zipball/53072e8ea22213a7ed168a8a15b96fbb8b82d44b", + "reference": "53072e8ea22213a7ed168a8a15b96fbb8b82d44b", "shasum": "" }, "require": { @@ -8969,10 +8969,10 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.65.0", - "illuminate/view": "^10.48.24", - "larastan/larastan": "^2.9.11", - "laravel-zero/framework": "^10.4.0", + "friendsofphp/php-cs-fixer": "^3.66.0", + "illuminate/view": "^10.48.25", + "larastan/larastan": "^2.9.12", + "laravel-zero/framework": "^10.48.25", "mockery/mockery": "^1.6.12", "nunomaduro/termwind": "^1.17.0", "pestphp/pest": "^2.36.0" @@ -9011,20 +9011,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-11-26T15:34:00+00:00" + "time": "2025-01-14T16:20:53+00:00" }, { "name": "laravel/sail", - "version": "v1.39.1", + "version": "v1.40.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "1a3c7291bc88de983b66688919a4d298d68ddec7" + "reference": "237e70656d8eface4839de51d101284bd5d0cf71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/1a3c7291bc88de983b66688919a4d298d68ddec7", - "reference": "1a3c7291bc88de983b66688919a4d298d68ddec7", + "url": "https://api.github.com/repos/laravel/sail/zipball/237e70656d8eface4839de51d101284bd5d0cf71", + "reference": "237e70656d8eface4839de51d101284bd5d0cf71", "shasum": "" }, "require": { @@ -9074,7 +9074,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-11-27T15:42:28+00:00" + "time": "2025-01-13T16:57:11+00:00" }, { "name": "mockery/mockery", @@ -9221,37 +9221,37 @@ }, { "name": "nunomaduro/collision", - "version": "v8.5.0", + "version": "v8.6.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f5c101b929c958e849a633283adff296ed5f38f5" + "reference": "86f003c132143d5a2ab214e19933946409e0cae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5", - "reference": "f5c101b929c958e849a633283adff296ed5f38f5", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/86f003c132143d5a2ab214e19933946409e0cae7", + "reference": "86f003c132143d5a2ab214e19933946409e0cae7", "shasum": "" }, "require": { "filp/whoops": "^2.16.0", - "nunomaduro/termwind": "^2.1.0", + "nunomaduro/termwind": "^2.3.0", "php": "^8.2.0", - "symfony/console": "^7.1.5" + "symfony/console": "^7.2.1" }, "conflict": { - "laravel/framework": "<11.0.0 || >=12.0.0", - "phpunit/phpunit": "<10.5.1 || >=12.0.0" + "laravel/framework": "<11.39.1 || >=13.0.0", + "phpunit/phpunit": "<11.5.3 || >=12.0.0" }, "require-dev": { - "larastan/larastan": "^2.9.8", - "laravel/framework": "^11.28.0", - "laravel/pint": "^1.18.1", - "laravel/sail": "^1.36.0", - "laravel/sanctum": "^4.0.3", + "larastan/larastan": "^2.9.12", + "laravel/framework": "^11.39.1", + "laravel/pint": "^1.20.0", + "laravel/sail": "^1.40.0", + "laravel/sanctum": "^4.0.7", "laravel/tinker": "^2.10.0", - "orchestra/testbench-core": "^9.5.3", - "pestphp/pest": "^2.36.0 || ^3.4.0", + "orchestra/testbench-core": "^9.9.2", + "pestphp/pest": "^3.7.3", "sebastian/environment": "^6.1.0 || ^7.2.0" }, "type": "library", @@ -9289,6 +9289,7 @@ "cli", "command-line", "console", + "dev", "error", "handling", "laravel", @@ -9314,7 +9315,7 @@ "type": "patreon" } ], - "time": "2024-10-15T16:06:32+00:00" + "time": "2025-01-23T13:41:43+00:00" }, { "name": "phar-io/manifest", @@ -9759,16 +9760,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.2", + "version": "11.5.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3" + "reference": "30e319e578a7b5da3543073e30002bf82042f701" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/153d0531b9f7e883c5053160cad6dd5ac28140b3", - "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/30e319e578a7b5da3543073e30002bf82042f701", + "reference": "30e319e578a7b5da3543073e30002bf82042f701", "shasum": "" }, "require": { @@ -9789,7 +9790,7 @@ "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.2", - "sebastian/comparator": "^6.2.1", + "sebastian/comparator": "^6.3.0", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", "sebastian/exporter": "^6.3.0", @@ -9840,7 +9841,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.3" }, "funding": [ { @@ -9856,7 +9857,7 @@ "type": "tidelift" } ], - "time": "2024-12-21T05:51:08+00:00" + "time": "2025-01-13T09:36:00+00:00" }, { "name": "sebastian/cli-parser", @@ -10030,16 +10031,16 @@ }, { "name": "sebastian/comparator", - "version": "6.2.1", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739" + "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d4e47a769525c4dd38cea90e5dcd435ddbbc7115", + "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115", "shasum": "" }, "require": { @@ -10052,6 +10053,9 @@ "require-dev": { "phpunit/phpunit": "^11.4" }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, "type": "library", "extra": { "branch-alias": { @@ -10095,7 +10099,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.0" }, "funding": [ { @@ -10103,7 +10107,7 @@ "type": "github" } ], - "time": "2024-10-31T05:30:08+00:00" + "time": "2025-01-06T10:28:19+00:00" }, { "name": "sebastian/complexity", @@ -10964,7 +10968,10 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2" + "php": "^8.2", + "ext-gd": "^8.2", + "ext-mbstring": "^8.2", + "ext-zip": "^1.22" }, "platform-dev": [], "plugin-api-version": "2.3.0" From bc34519a26982a747432e680f83631eaae17f5c8 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 18:22:12 -0600 Subject: [PATCH 07/88] wip --- composer.json | 6 +++--- docker/Dockerfile | 47 +++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/composer.json b/composer.json index cd97714..4f1d155 100644 --- a/composer.json +++ b/composer.json @@ -6,9 +6,9 @@ "license": "CC-BY-NC 4.0", "require": { "php": "^8.2", - "ext-gd": "^8.2", - "ext-mbstring": "^8.2", - "ext-zip": "^1.22", + "ext-gd": "*", + "ext-mbstring": "*", + "ext-zip": "*", "finnhub/client": "master@dev", "laravel/framework": "^11.35", "laravel/jetstream": "^5.1", diff --git a/docker/Dockerfile b/docker/Dockerfile index ff9a70c..efc72b0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,6 +6,29 @@ ENV DEBIAN_FRONTEND=noninteractive COPY . /var/www/app WORKDIR /var/www/app +# Set permissions +RUN chown -R www-data:www-data . \ + && chmod +x ./docker/entrypoint.sh \ +# Install common php extension dependencies + && apt-get update && apt-get install -y \ + nginx \ + libfreetype-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + zlib1g-dev \ + libzip-dev \ + libicu-dev \ + supervisor \ + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install -j$(nproc) \ + gd \ + zip \ + pdo_mysql \ + mysqli \ + intl \ +# remove default nginx config + && rm /etc/nginx/sites-enabled/default + # Install Composer and Node.js RUN apt-get update && apt-get install -y \ curl \ @@ -21,30 +44,6 @@ RUN composer install --no-scripts --optimize-autoloader # Install Node dependencies and build assets RUN npm install && npm run build -# Set permissions -RUN chown -R www-data:www-data . \ - && chmod +x ./docker/entrypoint.sh \ -# Install common php extension dependencies - && apt-get update && apt-get install -y \ - nginx \ - libfreetype-dev \ - libjpeg62-turbo-dev \ - libpng-dev \ - zlib1g-dev \ - libzip-dev \ - libicu-dev \ - supervisor \ - && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && docker-php-ext-configure zip \ - && docker-php-ext-install -j$(nproc) \ - gd \ - zip \ - pdo_mysql \ - mysqli \ - intl \ -# remove default nginx config - && rm /etc/nginx/sites-enabled/default - # Copy the custom Nginx configuration COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf From e0b5610d906786114a5e182c21ca584ef6cb83cd Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 18:35:18 -0600 Subject: [PATCH 08/88] wip --- docker/entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 84148f3..cfb4378 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -6,6 +6,8 @@ echo -e "\n====================== Running entrypoint script... ================ if [ ! -f ".env" ]; then echo " > Ope, gotta create an .env file!" + [ -d ".env" ] && rm -rf .env + cp .env.example .env fi From 4f5894ef4a348ba676884ff1e26a01a28027eb71 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 18:41:20 -0600 Subject: [PATCH 09/88] wip --- docker-compose.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index fd49e6c..7496e5a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,14 +9,15 @@ services: tty: true ports: - "${APP_PORT:-8000}:80" + env_file: + - .env depends_on: - mysql - redis networks: - investbrain-network volumes: - - ./storage:/var/www/app/storage - - .env:/var/www/app/.env + - .:/var/www/app/:rw redis: image: redis:alpine container_name: investbrain-redis From 9a3e030ce779315d2b96489ae5da1570919044dd Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:13:19 -0600 Subject: [PATCH 10/88] wip --- docker-compose.yml | 8 +++----- docker/Dockerfile | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7496e5a..3713746 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,15 +9,12 @@ services: tty: true ports: - "${APP_PORT:-8000}:80" - env_file: - - .env + env_file: .env depends_on: - mysql - redis networks: - investbrain-network - volumes: - - .:/var/www/app/:rw redis: image: redis:alpine container_name: investbrain-redis @@ -36,8 +33,9 @@ services: MYSQL_USER: ${DB_USERNAME:-investbrain} MYSQL_PASSWORD: ${DB_PASSWORD:-investbrain} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-investbrain} + command: --cte-max-recursion-depth=1000 volumes: - - ./docker/mysql.conf:/etc/mysql/conf.d/my.cnf + # - ./docker/mysql.conf:/etc/mysql/conf.d/my.cnf - investbrain-mysql:/var/lib/mysql networks: - investbrain-network diff --git a/docker/Dockerfile b/docker/Dockerfile index efc72b0..4a202dd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -8,6 +8,7 @@ WORKDIR /var/www/app # Set permissions RUN chown -R www-data:www-data . \ + && chmod -R 775 ./storage \ && chmod +x ./docker/entrypoint.sh \ # Install common php extension dependencies && apt-get update && apt-get install -y \ From ec15e2bb63525a9587007f7d3712f6320a5ed9da Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:15:21 -0600 Subject: [PATCH 11/88] wip --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 4a202dd..5196ed0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /var/www/app # Set permissions RUN chown -R www-data:www-data . \ - && chmod -R 775 ./storage \ + && mkdir ./storage && chmod -R 775 ./storage \ && chmod +x ./docker/entrypoint.sh \ # Install common php extension dependencies && apt-get update && apt-get install -y \ From 75716368bb1ea8de72459199164d790c1f7f8fce Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:20:56 -0600 Subject: [PATCH 12/88] wip --- .dockerignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 741b0e9..b68a7ce 100644 --- a/.dockerignore +++ b/.dockerignore @@ -7,4 +7,9 @@ tests .DS_Store vapor.yml .vapor -storage \ No newline at end of file +storage/app/livewire-tmp/* +storage/app/public/profile-photos/* +storage/framework/cache/* +storage/framework/sessions/* +storage/framework/testing/* +storage/framework/views/* \ No newline at end of file From b1fcf515469fae15a713bb2f817e004ee97be3c8 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:21:38 -0600 Subject: [PATCH 13/88] wip --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5196ed0..4a202dd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /var/www/app # Set permissions RUN chown -R www-data:www-data . \ - && mkdir ./storage && chmod -R 775 ./storage \ + && chmod -R 775 ./storage \ && chmod +x ./docker/entrypoint.sh \ # Install common php extension dependencies && apt-get update && apt-get install -y \ From e93459ae5597ab5ddf1197e123ead7b7450f3385 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:25:25 -0600 Subject: [PATCH 14/88] wip --- .dockerignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index b68a7ce..721a151 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,4 +12,5 @@ storage/app/public/profile-photos/* storage/framework/cache/* storage/framework/sessions/* storage/framework/testing/* -storage/framework/views/* \ No newline at end of file +storage/framework/views/* +storage/framework/logs/* \ No newline at end of file From 1189325638ebc3223ad5d425c8dbedb2020c167e Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:28:38 -0600 Subject: [PATCH 15/88] wip --- docker/supervisord.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 44a392c..c2d67dd 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -1,6 +1,6 @@ [supervisord] nodaemon=true -user=root +user=www-data logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid From 8da153a476cf6458f90090b526d15c4ebe18988a Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:31:40 -0600 Subject: [PATCH 16/88] wip --- docker/supervisord.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index c2d67dd..44a392c 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -1,6 +1,6 @@ [supervisord] nodaemon=true -user=www-data +user=root logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid From 4bbb71d4343764c2b34d7951050e41acaf88bcea Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:34:03 -0600 Subject: [PATCH 17/88] wip --- docker/supervisord.conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 44a392c..b24190e 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -8,6 +8,7 @@ pidfile=/var/run/supervisord.pid command=nginx -g 'daemon off;' autostart=true autorestart=true +user=www-data stderr_logfile=/var/log/nginx/error.log stdout_logfile=/var/log/nginx/access.log @@ -15,6 +16,7 @@ stdout_logfile=/var/log/nginx/access.log command=php-fpm -F autostart=true autorestart=true +user=www-data stdout_logfile=/var/log/supervisor/php.log stderr_logfile=/var/log/supervisor/php_error.log @@ -22,6 +24,7 @@ stderr_logfile=/var/log/supervisor/php_error.log command=php artisan schedule:work autorestart=true redirect_stderr=true +user=www-data stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr @@ -32,6 +35,7 @@ command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600 process_name=%(program_name)s_%(process_num)02d autorestart=true redirect_stderr=true +user=www-data stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr From 7bacc28e3ba3d437922ff18386dd946a58ca7e23 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:37:50 -0600 Subject: [PATCH 18/88] wip --- docker/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index 4a202dd..38608af 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -57,6 +57,8 @@ EXPOSE 80 # Set up healthcheck HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhost || exit 1 +USER www-data + # Run everything else ENTRYPOINT ["/bin/bash", "./docker/entrypoint.sh"] CMD ["./docker/entrypoint.sh"] From 11cdf975bca25bc1d6134b9e7f9bdcb412a7f2e5 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:40:26 -0600 Subject: [PATCH 19/88] wip --- docker/Dockerfile | 6 +----- docker/supervisord.conf | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 38608af..2211f37 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -45,10 +45,8 @@ RUN composer install --no-scripts --optimize-autoloader # Install Node dependencies and build assets RUN npm install && npm run build -# Copy the custom Nginx configuration +# Copy over configs COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf - -# Copy over supervisor configuration COPY ./docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Serve on port 80 @@ -57,8 +55,6 @@ EXPOSE 80 # Set up healthcheck HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhost || exit 1 -USER www-data - # Run everything else ENTRYPOINT ["/bin/bash", "./docker/entrypoint.sh"] CMD ["./docker/entrypoint.sh"] diff --git a/docker/supervisord.conf b/docker/supervisord.conf index b24190e..86aa4b3 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -1,7 +1,6 @@ [supervisord] nodaemon=true user=root -logfile=/var/log/supervisor/supervisord.log pidfile=/var/run/supervisord.pid [program:nginx] From 6d92b49f3d794dc49537a095a1da99954666515f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:46:40 -0600 Subject: [PATCH 20/88] wip --- docker/supervisord.conf | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 86aa4b3..782e396 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -8,37 +8,35 @@ command=nginx -g 'daemon off;' autostart=true autorestart=true user=www-data -stderr_logfile=/var/log/nginx/error.log -stdout_logfile=/var/log/nginx/access.log +redirect_stderr=true +stdout_logfile=/dev/stdout +stderr_logfile=/dev/stderr [program:php] command=php-fpm -F autostart=true autorestart=true user=www-data -stdout_logfile=/var/log/supervisor/php.log -stderr_logfile=/var/log/supervisor/php_error.log +redirect_stderr=true +stdout_logfile=/dev/stdout +stderr_logfile=/dev/stderr [program:scheduler] command=php artisan schedule:work autorestart=true -redirect_stderr=true user=www-data +redirect_stderr=true stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 [program:queue-worker] command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600 process_name=%(program_name)s_%(process_num)02d autorestart=true -redirect_stderr=true user=www-data +redirect_stderr=true stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 numprocs=2 [supervisorctl] \ No newline at end of file From a31f807da8c24523cd0bd75033d66bec88441310 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 20:49:24 -0600 Subject: [PATCH 21/88] wip --- docker/supervisord.conf | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 782e396..2dcec30 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -8,35 +8,23 @@ command=nginx -g 'daemon off;' autostart=true autorestart=true user=www-data -redirect_stderr=true -stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr [program:php] command=php-fpm -F autostart=true autorestart=true user=www-data -redirect_stderr=true -stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr [program:scheduler] command=php artisan schedule:work autorestart=true user=www-data -redirect_stderr=true -stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr [program:queue-worker] command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600 process_name=%(program_name)s_%(process_num)02d autorestart=true user=www-data -redirect_stderr=true -stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr numprocs=2 [supervisorctl] \ No newline at end of file From 1684f3e0cba5570e52a3d7f6ecadf2eadf44df75 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:06:54 -0600 Subject: [PATCH 22/88] wip --- docker/supervisord.conf | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 2dcec30..5a7cc02 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -4,27 +4,35 @@ user=root pidfile=/var/run/supervisord.pid [program:nginx] -command=nginx -g 'daemon off;' +command=nginx -g 'user www-data; daemon off;' autostart=true autorestart=true -user=www-data +redirect_stderr=true +stdout_logfile=/dev/stdout +stderr_logfile=/dev/stderr [program:php] -command=php-fpm -F +command=php-fpm -F --user=www-data --group=www-data autostart=true autorestart=true -user=www-data +redirect_stderr=true +stdout_logfile=/dev/stdout +stderr_logfile=/dev/stderr [program:scheduler] command=php artisan schedule:work autorestart=true -user=www-data +redirect_stderr=true +stdout_logfile=/dev/stdout +stderr_logfile=/dev/stderr [program:queue-worker] command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600 process_name=%(program_name)s_%(process_num)02d autorestart=true -user=www-data +redirect_stderr=true +stdout_logfile=/dev/stdout +stderr_logfile=/dev/stderr numprocs=2 [supervisorctl] \ No newline at end of file From fa25a82693f11e3d3c17284e23f6bfa85e5ed7c6 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:12:16 -0600 Subject: [PATCH 23/88] wip --- docker/supervisord.conf | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 5a7cc02..dd812ae 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -4,12 +4,11 @@ user=root pidfile=/var/run/supervisord.pid [program:nginx] -command=nginx -g 'user www-data; daemon off;' +command=nginx -g 'daemon off;' autostart=true autorestart=true redirect_stderr=true stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr [program:php] command=php-fpm -F --user=www-data --group=www-data @@ -17,14 +16,12 @@ autostart=true autorestart=true redirect_stderr=true stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr [program:scheduler] command=php artisan schedule:work autorestart=true redirect_stderr=true stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr [program:queue-worker] command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600 @@ -32,7 +29,6 @@ process_name=%(program_name)s_%(process_num)02d autorestart=true redirect_stderr=true stdout_logfile=/dev/stdout -stderr_logfile=/dev/stderr numprocs=2 [supervisorctl] \ No newline at end of file From 92bdf14508fee4454110d2700ef00e4f10cc8162 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:17:27 -0600 Subject: [PATCH 24/88] wip --- docker/supervisord.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index dd812ae..e5d795a 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -11,7 +11,7 @@ redirect_stderr=true stdout_logfile=/dev/stdout [program:php] -command=php-fpm -F --user=www-data --group=www-data +command=php-fpm -F autostart=true autorestart=true redirect_stderr=true From 801d3739fc98156052c4dc53807e2f907f3dd58a Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:21:08 -0600 Subject: [PATCH 25/88] wip --- docker/supervisord.conf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/supervisord.conf b/docker/supervisord.conf index e5d795a..5c3e0cc 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -8,27 +8,27 @@ command=nginx -g 'daemon off;' autostart=true autorestart=true redirect_stderr=true -stdout_logfile=/dev/stdout +redirect_stdout=true [program:php] command=php-fpm -F autostart=true autorestart=true redirect_stderr=true -stdout_logfile=/dev/stdout +redirect_stdout=true [program:scheduler] command=php artisan schedule:work autorestart=true redirect_stderr=true -stdout_logfile=/dev/stdout +redirect_stdout=true [program:queue-worker] command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600 process_name=%(program_name)s_%(process_num)02d autorestart=true redirect_stderr=true -stdout_logfile=/dev/stdout +redirect_stdout=true numprocs=2 [supervisorctl] \ No newline at end of file From 4120b1abfa4f2d69806d9abe5594ae7311475adc Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:34:18 -0600 Subject: [PATCH 26/88] set permission in entry script --- docker/entrypoint.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index cfb4378..9e77d9c 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -12,6 +12,11 @@ if [ ! -f ".env" ]; then fi echo -e "\n====================== Validating environment... ====================== " +if [ $(stat -c '%U' .) != "www-data" ]; then + echo " > Setting correct permissions for application..." + chown -R www-data:www-data . +fi + if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then echo " > Ah, APP_KEY is missing in .env file. Generating a new key!" From 575fecb16344b7e7efdf34aa9a5d4b8e6339b90d Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:43:58 -0600 Subject: [PATCH 27/88] wip --- docker/entrypoint.sh | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 9e77d9c..f5f2ebf 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,34 +2,38 @@ cd /var/www/app -echo -e "\n====================== Running entrypoint script... ====================== " -if [ ! -f ".env" ]; then - echo " > Ope, gotta create an .env file!" +su - www-data -c " - [ -d ".env" ] && rm -rf .env +echo -e '\n====================== Running entrypoint script... ====================== ' + + +if [ ! -f '.env' ]; then + echo ' > Ope, gotta create an .env file!' + + [ -d '.env' ] && rm -rf .env cp .env.example .env fi -echo -e "\n====================== Validating environment... ====================== " -if [ $(stat -c '%U' .) != "www-data" ]; then - echo " > Setting correct permissions for application..." +echo -e '\n====================== Validating environment... ====================== ' +if [ $(stat -c '%U' .) != 'www-data' ]; then + echo ' > Setting correct permissions for application...' chown -R www-data:www-data . fi -if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then - echo " > Ah, APP_KEY is missing in .env file. Generating a new key!" +if ( ! grep -q '^APP_KEY=' '.env' || grep -q '^APP_KEY=$' '.env'); then + echo ' > Ah, APP_KEY is missing in .env file. Generating a new key!' /usr/local/bin/php artisan key:generate --force fi -if [ ! -L "public/storage" ]; then - echo " > Creating symbolic link for app public storage..." +if [ ! -L 'public/storage' ]; then + echo ' > Creating symbolic link for app public storage...' /usr/local/bin/php artisan storage:link fi -echo -e "\n====================== Running migrations... ====================== " +echo -e '\n====================== Running migrations... ====================== ' run_migrations() { /usr/local/bin/php artisan migrate --force } @@ -38,12 +42,12 @@ DELAY=5 until run_migrations; do RETRIES=$((RETRIES-1)) if [ $RETRIES -le 0 ]; then - echo " > Database is not ready after multiple attempts. Exiting..." + echo ' > Database is not ready after multiple attempts. Exiting...' exit 1 fi - echo " > Waiting for database to be ready... retrying in $DELAY seconds." + echo ' > Waiting for database to be ready... retrying in $DELAY seconds.' sleep $DELAY done -echo -e "\n====================== Spinning up Supervisor daemon... ====================== " -exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf +echo -e '\n====================== Spinning up Supervisor daemon... ====================== ' +exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf" \ No newline at end of file From 7245f4cc694285607239896939024dad2f1afa1f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:53:55 -0600 Subject: [PATCH 28/88] wip --- docker/Dockerfile | 2 +- docker/entrypoint.sh | 41 +++++++++++++++++++---------------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 2211f37..cd85345 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -57,4 +57,4 @@ HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhos # Run everything else ENTRYPOINT ["/bin/bash", "./docker/entrypoint.sh"] -CMD ["./docker/entrypoint.sh"] + diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index f5f2ebf..10698a1 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,52 +2,49 @@ cd /var/www/app -su - www-data -c " +echo -e "\n====================== Running entrypoint script... ====================== " -echo -e '\n====================== Running entrypoint script... ====================== ' +if [ ! -f ".env" ]; then + echo " > Ope, gotta create an .env file!" - -if [ ! -f '.env' ]; then - echo ' > Ope, gotta create an .env file!' - - [ -d '.env' ] && rm -rf .env + [ -d ".env" ] && rm -rf .env cp .env.example .env fi -echo -e '\n====================== Validating environment... ====================== ' -if [ $(stat -c '%U' .) != 'www-data' ]; then - echo ' > Setting correct permissions for application...' +echo -e "\n====================== Validating environment... ====================== " +if [ $(stat -c "%U" .) != "www-data" ]; then + echo " > Setting correct permissions for application..." chown -R www-data:www-data . fi -if ( ! grep -q '^APP_KEY=' '.env' || grep -q '^APP_KEY=$' '.env'); then - echo ' > Ah, APP_KEY is missing in .env file. Generating a new key!' +if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then + echo " > Ah, APP_KEY is missing in .env file. Generating a new key!" - /usr/local/bin/php artisan key:generate --force + su - www-data -c "/usr/local/bin/php artisan key:generate --force" fi -if [ ! -L 'public/storage' ]; then - echo ' > Creating symbolic link for app public storage...' +if [ ! -L "public/storage" ]; then + echo " > Creating symbolic link for app public storage..." - /usr/local/bin/php artisan storage:link + su - www-data -c "/usr/local/bin/php artisan storage:link" fi -echo -e '\n====================== Running migrations... ====================== ' +echo -e "\n====================== Running migrations... ====================== " run_migrations() { - /usr/local/bin/php artisan migrate --force + su - www-data -c "/usr/local/bin/php artisan migrate --force" } RETRIES=30 DELAY=5 until run_migrations; do RETRIES=$((RETRIES-1)) if [ $RETRIES -le 0 ]; then - echo ' > Database is not ready after multiple attempts. Exiting...' + echo " > Database is not ready after multiple attempts. Exiting..." exit 1 fi - echo ' > Waiting for database to be ready... retrying in $DELAY seconds.' + echo " > Waiting for database to be ready... retrying in $DELAY seconds." sleep $DELAY done -echo -e '\n====================== Spinning up Supervisor daemon... ====================== ' -exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf" \ No newline at end of file +echo -e "\n====================== Spinning up Supervisor daemon... ====================== " +exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf \ No newline at end of file From 620566490b45e7d6258512eaf58d7861ef3892a0 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 21:57:50 -0600 Subject: [PATCH 29/88] wip --- docker/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index cd85345..5a634a4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,6 +10,7 @@ WORKDIR /var/www/app RUN chown -R www-data:www-data . \ && chmod -R 775 ./storage \ && chmod +x ./docker/entrypoint.sh \ + && usermod -s /bin/bash www-data \ # Install common php extension dependencies && apt-get update && apt-get install -y \ nginx \ From 00067c56d486149b2eacbb1d25bf09709bf84a0f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:08:07 -0600 Subject: [PATCH 30/88] wip --- docker/entrypoint.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 10698a1..2b54876 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -13,26 +13,25 @@ if [ ! -f ".env" ]; then fi echo -e "\n====================== Validating environment... ====================== " -if [ $(stat -c "%U" .) != "www-data" ]; then - echo " > Setting correct permissions for application..." - chown -R www-data:www-data . -fi +run_as_www_user() { + su - www-data -c "/usr/local/bin/php /var/www/app/artisan $1" +} if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then echo " > Ah, APP_KEY is missing in .env file. Generating a new key!" - su - www-data -c "/usr/local/bin/php artisan key:generate --force" + run_as_www_user "key:generate --force" fi if [ ! -L "public/storage" ]; then echo " > Creating symbolic link for app public storage..." - su - www-data -c "/usr/local/bin/php artisan storage:link" + run_as_www_user "storage:link" fi echo -e "\n====================== Running migrations... ====================== " run_migrations() { - su - www-data -c "/usr/local/bin/php artisan migrate --force" + run_as_www_user "migrate --force" } RETRIES=30 DELAY=5 From 5ade4b35a08ac28673cb685f77c49f438f614e58 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:19:54 -0600 Subject: [PATCH 31/88] wip --- docker-compose.yml | 3 +-- docker/entrypoint.sh | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3713746..bae184b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,9 +33,8 @@ services: MYSQL_USER: ${DB_USERNAME:-investbrain} MYSQL_PASSWORD: ${DB_PASSWORD:-investbrain} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-investbrain} - command: --cte-max-recursion-depth=1000 + command: bash -c "echo -e '[mysqld]\ncte_max_recursion_depth = 25000' > /etc/mysql/conf.d/my.cnf && docker-entrypoint.sh mysqld" volumes: - # - ./docker/mysql.conf:/etc/mysql/conf.d/my.cnf - investbrain-mysql:/var/lib/mysql networks: - investbrain-network diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 2b54876..78d9d10 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -18,9 +18,19 @@ run_as_www_user() { } if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then - echo " > Ah, APP_KEY is missing in .env file. Generating a new key!" - - run_as_www_user "key:generate --force" + echo " > The required APP_KEY configuration is missing in your .env file. Copy and paste this key into your .env file. Then restart the container!" + + draw_box() { + local text="$1" + local length=${#text} + local border=$(printf '%*s' "$((length + 4))" | tr ' ' '*') + + echo "*$border*" + echo "* $text *" + echo "*$border*" + } + + draw_box "base64:$(openssl rand -base64 32)" fi if [ ! -L "public/storage" ]; then From 25112cb03acc54ed400d168524918a9566c2def2 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:22:42 -0600 Subject: [PATCH 32/88] wip --- docker/entrypoint.sh | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 78d9d10..eb43b37 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,21 +2,17 @@ cd /var/www/app -echo -e "\n====================== Running entrypoint script... ====================== " - -if [ ! -f ".env" ]; then - echo " > Ope, gotta create an .env file!" - - [ -d ".env" ] && rm -rf .env - - cp .env.example .env -fi - echo -e "\n====================== Validating environment... ====================== " run_as_www_user() { su - www-data -c "/usr/local/bin/php /var/www/app/artisan $1" } +if [ ! -f ".env" ]; then + echo " > Ope, you forgot to create an .env file! Create the required .env file and restart the container!" + + exit 1; +fi + if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then echo " > The required APP_KEY configuration is missing in your .env file. Copy and paste this key into your .env file. Then restart the container!" @@ -31,6 +27,8 @@ if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then } draw_box "base64:$(openssl rand -base64 32)" + + exit 1; fi if [ ! -L "public/storage" ]; then From 0c7d4a83f1cd8e2ee19f8c8109880797f051e84f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:24:51 -0600 Subject: [PATCH 33/88] wip --- docker/entrypoint.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index eb43b37..ad1e4f8 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -7,12 +7,6 @@ run_as_www_user() { su - www-data -c "/usr/local/bin/php /var/www/app/artisan $1" } -if [ ! -f ".env" ]; then - echo " > Ope, you forgot to create an .env file! Create the required .env file and restart the container!" - - exit 1; -fi - if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then echo " > The required APP_KEY configuration is missing in your .env file. Copy and paste this key into your .env file. Then restart the container!" From 390b137e0bef39258c2855240d70e919ef4a6a05 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:33:27 -0600 Subject: [PATCH 34/88] wiiiip --- docker/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ad1e4f8..3a8dbe1 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -7,7 +7,7 @@ run_as_www_user() { su - www-data -c "/usr/local/bin/php /var/www/app/artisan $1" } -if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then +if [[ -z "$APP_KEY" ]]; then echo " > The required APP_KEY configuration is missing in your .env file. Copy and paste this key into your .env file. Then restart the container!" draw_box() { From c19f13edc17b17a8403aaf945df65edeb80b20b1 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:36:48 -0600 Subject: [PATCH 35/88] wip --- docker/entrypoint.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 3a8dbe1..fda013f 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -8,16 +8,17 @@ run_as_www_user() { } if [[ -z "$APP_KEY" ]]; then - echo " > The required APP_KEY configuration is missing in your .env file. Copy and paste this key into your .env file. Then restart the container!" + echo " > The required APP_KEY configuration is missing in your .env file. " + echo " > Copy and paste this key into your .env file. Then restart the container! " draw_box() { local text="$1" local length=${#text} local border=$(printf '%*s' "$((length + 4))" | tr ' ' '*') - echo "*$border*" + echo "$border" echo "* $text *" - echo "*$border*" + echo "$border" } draw_box "base64:$(openssl rand -base64 32)" From 6f2324ad1b6e2091a709dc6914a5ba6c5ab69602 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:37:26 -0600 Subject: [PATCH 36/88] wip --- docker/entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index fda013f..19f84cd 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -8,8 +8,8 @@ run_as_www_user() { } if [[ -z "$APP_KEY" ]]; then - echo " > The required APP_KEY configuration is missing in your .env file. " - echo " > Copy and paste this key into your .env file. Then restart the container! " + echo " > Oops! The required APP_KEY configuration is missing in your .env file! " + echo " > Copy and paste the below key into your .env file and restart the container... " draw_box() { local text="$1" From 416a82058baf94d8641d4fd5bb4c48cbe2eda20f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:52:44 -0600 Subject: [PATCH 37/88] getting close --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index bae184b..6ba887e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,7 +33,8 @@ services: MYSQL_USER: ${DB_USERNAME:-investbrain} MYSQL_PASSWORD: ${DB_PASSWORD:-investbrain} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-investbrain} - command: bash -c "echo -e '[mysqld]\ncte_max_recursion_depth = 25000' > /etc/mysql/conf.d/my.cnf && docker-entrypoint.sh mysqld" + command: + - --cte-max-recursion-depth=25000 volumes: - investbrain-mysql:/var/lib/mysql networks: From d463ec689bfbc80c7edaa06116c4ab903b0ae20d Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:54:10 -0600 Subject: [PATCH 38/88] last one --- docker/entrypoint.sh | 9 +++++---- docker/mysql.conf | 2 -- 2 files changed, 5 insertions(+), 6 deletions(-) delete mode 100644 docker/mysql.conf diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 19f84cd..4057f02 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,11 +2,12 @@ cd /var/www/app -echo -e "\n====================== Validating environment... ====================== " -run_as_www_user() { +artisan_as_www_user() { su - www-data -c "/usr/local/bin/php /var/www/app/artisan $1" } +echo -e "\n====================== Validating environment... ====================== " + if [[ -z "$APP_KEY" ]]; then echo " > Oops! The required APP_KEY configuration is missing in your .env file! " echo " > Copy and paste the below key into your .env file and restart the container... " @@ -29,12 +30,12 @@ fi if [ ! -L "public/storage" ]; then echo " > Creating symbolic link for app public storage..." - run_as_www_user "storage:link" + artisan_as_www_user "storage:link" fi echo -e "\n====================== Running migrations... ====================== " run_migrations() { - run_as_www_user "migrate --force" + artisan_as_www_user "migrate --force" } RETRIES=30 DELAY=5 diff --git a/docker/mysql.conf b/docker/mysql.conf deleted file mode 100644 index 0eb286d..0000000 --- a/docker/mysql.conf +++ /dev/null @@ -1,2 +0,0 @@ -[mysqld] -cte_max_recursion_depth = 25000 \ No newline at end of file From 84171da29bd260aca00d65330213b24007a60898 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:55:45 -0600 Subject: [PATCH 39/88] bump php version --- composer.json | 2 +- composer.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 4f1d155..f8eb719 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "keywords": ["stocks", "dividends", "investments", "tracking"], "license": "CC-BY-NC 4.0", "require": { - "php": "^8.2", + "php": "^8.3", "ext-gd": "*", "ext-mbstring": "*", "ext-zip": "*", diff --git a/composer.lock b/composer.lock index e61d17a..1192fc7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7129fc2cd2aa4148f13bcbf5c5235105", + "content-hash": "d1b7456f149ebd4a89f5666f931c03fd", "packages": [ { "name": "aws/aws-crt-php", @@ -10968,10 +10968,10 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2", - "ext-gd": "^8.2", - "ext-mbstring": "^8.2", - "ext-zip": "^1.22" + "php": "^8.3", + "ext-gd": "*", + "ext-mbstring": "*", + "ext-zip": "*" }, "platform-dev": [], "plugin-api-version": "2.3.0" From e651eb86cadc4b7c9362aaf54a50c651c3629a3d Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 22:56:22 -0600 Subject: [PATCH 40/88] bump front end --- package-lock.json | 723 ++++++++++++++++++++++++++++++---------------- 1 file changed, 480 insertions(+), 243 deletions(-) diff --git a/package-lock.json b/package-lock.json index aa7bfdd..28e8147 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "app", + "name": "investbrain", "lockfileVersion": 3, "requires": true, "packages": { @@ -24,6 +24,7 @@ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -39,6 +40,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -55,6 +57,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -71,6 +74,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -87,6 +91,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -103,6 +108,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -119,6 +125,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -135,6 +142,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -151,6 +159,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -167,6 +176,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -183,6 +193,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -199,6 +210,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -215,6 +227,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -231,6 +244,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -247,6 +261,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -263,6 +278,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -279,6 +295,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -295,6 +312,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -311,6 +329,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -327,6 +346,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -343,6 +363,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -359,6 +380,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -375,6 +397,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -391,6 +414,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -404,6 +428,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -417,10 +442,11 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -435,6 +461,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -444,6 +471,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -452,13 +480,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -469,6 +499,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -482,6 +513,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -491,6 +523,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -504,236 +537,297 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", - "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.32.0.tgz", + "integrity": "sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", - "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.32.0.tgz", + "integrity": "sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", - "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.32.0.tgz", + "integrity": "sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", - "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.32.0.tgz", + "integrity": "sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.32.0.tgz", + "integrity": "sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.32.0.tgz", + "integrity": "sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", - "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.32.0.tgz", + "integrity": "sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", - "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.32.0.tgz", + "integrity": "sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", - "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.32.0.tgz", + "integrity": "sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", - "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.32.0.tgz", + "integrity": "sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.32.0.tgz", + "integrity": "sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", - "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.32.0.tgz", + "integrity": "sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", - "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.32.0.tgz", + "integrity": "sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", - "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.32.0.tgz", + "integrity": "sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", - "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.32.0.tgz", + "integrity": "sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", - "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.32.0.tgz", + "integrity": "sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", - "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.32.0.tgz", + "integrity": "sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", - "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.32.0.tgz", + "integrity": "sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", - "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.32.0.tgz", + "integrity": "sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@tailwindcss/forms": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz", - "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", "dev": true, + "license": "MIT", "dependencies": { "mini-svg-data-uri": "^1.2.3" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" } }, "node_modules/@tailwindcss/typography": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz", - "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", "dev": true, + "license": "MIT", "dependencies": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", @@ -741,25 +835,28 @@ "postcss-selector-parser": "6.0.10" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" }, "node_modules/@yr/monotone-cubic-spline": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", - "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -772,6 +869,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -783,13 +881,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -799,9 +899,10 @@ } }, "node_modules/apexcharts": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.51.0.tgz", - "integrity": "sha512-WpCdVdGiJjf9SAyEeg2rl3q5OqCcNqiEmH0+filMraUiH6Vqyn5GFeMMyH0pon44xjNr1G0xzIRERKRmsGEuRA==", + "version": "3.54.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.54.1.tgz", + "integrity": "sha512-E4et0h/J1U3r3EwS/WlqJCQIbepKbp6wGUmaAwJOMjHUP4Ci0gxanLa7FR3okx6p9coi4st6J853/Cb1NP0vpA==", + "license": "MIT", "dependencies": { "@yr/monotone-cubic-spline": "^1.0.3", "svg.draggable.js": "^2.2.2", @@ -816,13 +917,15 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/autoprefixer": { "version": "10.4.20", @@ -843,6 +946,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "browserslist": "^4.23.3", "caniuse-lite": "^1.0.30001646", @@ -862,10 +966,11 @@ } }, "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -876,13 +981,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -895,6 +1002,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -904,6 +1012,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -912,9 +1021,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -930,11 +1039,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -948,14 +1058,15 @@ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001647", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001647.tgz", - "integrity": "sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==", + "version": "1.0.30001695", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", + "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", "dev": true, "funding": [ { @@ -970,13 +1081,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1001,6 +1114,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1013,6 +1127,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1024,13 +1139,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -1043,15 +1160,17 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1066,6 +1185,7 @@ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "fastparse": "^1.1.2" @@ -1076,6 +1196,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -1088,15 +1209,17 @@ "resolved": "https://registry.npmjs.org/culori/-/culori-3.3.0.tgz", "integrity": "sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/daisyui": { - "version": "4.12.10", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.12.10.tgz", - "integrity": "sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA==", + "version": "4.12.23", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.12.23.tgz", + "integrity": "sha512-EM38duvxutJ5PD65lO/AFMpcw+9qEy6XAZrTpzp7WyaPeO/l+F/Qiq0ECHHmFNcFXh5aVoALY4MGrrxtCiaQCQ==", "dev": true, + "license": "MIT", "dependencies": { "css-selector-tokenizer": "^0.8", "culori": "^3", @@ -1116,6 +1239,7 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -1124,31 +1248,36 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", - "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", - "dev": true + "version": "1.5.88", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz", + "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.21.5", @@ -1156,6 +1285,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -1189,25 +1319,27 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -1218,6 +1350,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1229,13 +1362,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -1245,6 +1380,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1253,9 +1389,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -1263,6 +1399,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -1273,10 +1410,11 @@ } }, "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -1289,10 +1427,11 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -1307,6 +1446,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -1321,6 +1461,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1334,6 +1475,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1343,6 +1485,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -1363,6 +1506,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -1375,6 +1519,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -1387,6 +1532,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1395,10 +1541,11 @@ } }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -1414,6 +1561,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1423,6 +1571,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1432,6 +1581,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1444,6 +1594,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1452,13 +1603,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -1470,19 +1623,21 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } }, "node_modules/laravel-vite-plugin": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.0.5.tgz", - "integrity": "sha512-Zv+to82YLBknDCZ6g3iwOv9wZ7f6EWStb9pjSm7MGe9Mfoy5ynT2ssZbGsMr1udU6rDg9HOoYEVGw5Qf+p9zbw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.2.0.tgz", + "integrity": "sha512-R0pJ+IcTVeqEMoKz/B2Ij57QVq3sFTABiFmb06gAwFdivbOgsUtuhX6N2MGLEArajrS3U5JbberzwOe7uXHMHQ==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "vite-plugin-full-reload": "^1.1.0" @@ -1491,65 +1646,76 @@ "clean-orphaned-assets": "bin/clean.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "peerDependencies": { - "vite": "^5.0.0" + "vite": "^5.0.0 || ^6.0.0" } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.castarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1563,6 +1729,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1572,6 +1739,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -1584,6 +1752,7 @@ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", "dev": true, + "license": "MIT", "bin": { "mini-svg-data-uri": "cli.js" } @@ -1593,6 +1762,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1608,6 +1778,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -1617,6 +1788,7 @@ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -1624,9 +1796,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -1634,6 +1806,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1642,16 +1815,18 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1661,6 +1836,7 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1670,6 +1846,7 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1679,21 +1856,24 @@ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1702,13 +1882,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -1724,13 +1906,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1743,6 +1927,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1752,14 +1937,15 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", "dev": true, "funding": [ { @@ -1775,9 +1961,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -1789,6 +1976,7 @@ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -1806,6 +1994,7 @@ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", "dev": true, + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, @@ -1835,6 +2024,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" @@ -1855,18 +2045,6 @@ } } }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, "node_modules/postcss-nested": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", @@ -1882,6 +2060,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.1" }, @@ -1893,10 +2072,11 @@ } }, "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -1910,6 +2090,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -1922,13 +2103,15 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -1948,13 +2131,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.3.0" } @@ -1964,6 +2149,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -1972,18 +2158,22 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1993,18 +2183,20 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rollup": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", - "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.32.0.tgz", + "integrity": "sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -2014,22 +2206,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.20.0", - "@rollup/rollup-android-arm64": "4.20.0", - "@rollup/rollup-darwin-arm64": "4.20.0", - "@rollup/rollup-darwin-x64": "4.20.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", - "@rollup/rollup-linux-arm-musleabihf": "4.20.0", - "@rollup/rollup-linux-arm64-gnu": "4.20.0", - "@rollup/rollup-linux-arm64-musl": "4.20.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", - "@rollup/rollup-linux-riscv64-gnu": "4.20.0", - "@rollup/rollup-linux-s390x-gnu": "4.20.0", - "@rollup/rollup-linux-x64-gnu": "4.20.0", - "@rollup/rollup-linux-x64-musl": "4.20.0", - "@rollup/rollup-win32-arm64-msvc": "4.20.0", - "@rollup/rollup-win32-ia32-msvc": "4.20.0", - "@rollup/rollup-win32-x64-msvc": "4.20.0", + "@rollup/rollup-android-arm-eabi": "4.32.0", + "@rollup/rollup-android-arm64": "4.32.0", + "@rollup/rollup-darwin-arm64": "4.32.0", + "@rollup/rollup-darwin-x64": "4.32.0", + "@rollup/rollup-freebsd-arm64": "4.32.0", + "@rollup/rollup-freebsd-x64": "4.32.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.32.0", + "@rollup/rollup-linux-arm-musleabihf": "4.32.0", + "@rollup/rollup-linux-arm64-gnu": "4.32.0", + "@rollup/rollup-linux-arm64-musl": "4.32.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.32.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.32.0", + "@rollup/rollup-linux-riscv64-gnu": "4.32.0", + "@rollup/rollup-linux-s390x-gnu": "4.32.0", + "@rollup/rollup-linux-x64-gnu": "4.32.0", + "@rollup/rollup-linux-x64-musl": "4.32.0", + "@rollup/rollup-win32-arm64-msvc": "4.32.0", + "@rollup/rollup-win32-ia32-msvc": "4.32.0", + "@rollup/rollup-win32-x64-msvc": "4.32.0", "fsevents": "~2.3.2" } }, @@ -2052,6 +2247,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -2061,6 +2257,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2073,6 +2270,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2082,6 +2280,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -2094,6 +2293,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -2103,6 +2303,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2121,6 +2322,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2135,6 +2337,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2143,13 +2346,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2162,6 +2367,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2178,6 +2384,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2190,6 +2397,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2199,6 +2407,7 @@ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -2221,6 +2430,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2232,6 +2442,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "license": "MIT", "dependencies": { "svg.js": "^2.0.1" }, @@ -2243,6 +2454,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "license": "MIT", "dependencies": { "svg.js": ">=2.3.x" }, @@ -2254,6 +2466,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "license": "MIT", "dependencies": { "svg.js": "^2.2.5" }, @@ -2264,12 +2477,14 @@ "node_modules/svg.js": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", - "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==", + "license": "MIT" }, "node_modules/svg.pathmorphing.js": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "license": "MIT", "dependencies": { "svg.js": "^2.4.0" }, @@ -2281,6 +2496,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "license": "MIT", "dependencies": { "svg.js": "^2.6.5", "svg.select.js": "^2.1.2" @@ -2293,6 +2509,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "license": "MIT", "dependencies": { "svg.js": "^2.2.5" }, @@ -2304,6 +2521,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "license": "MIT", "dependencies": { "svg.js": "^2.6.5" }, @@ -2312,33 +2530,34 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz", - "integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "dev": true, + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -2349,10 +2568,11 @@ } }, "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2366,6 +2586,7 @@ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } @@ -2375,6 +2596,7 @@ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, + "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -2387,6 +2609,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2398,12 +2621,13 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -2419,9 +2643,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -2434,13 +2659,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -2500,6 +2727,7 @@ "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz", "integrity": "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "picomatch": "^2.3.1" @@ -2510,6 +2738,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2525,6 +2754,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2543,6 +2773,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2560,6 +2791,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2569,6 +2801,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2583,13 +2816,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2604,6 +2839,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2612,10 +2848,11 @@ } }, "node_modules/yaml": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", - "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, From 6d5a5f46b969579807938cb8bd38316a46033635 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 23:17:21 -0600 Subject: [PATCH 41/88] update readme for new install instructions --- README.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index dc43c15..ce9a81f 100644 --- a/README.md +++ b/README.md @@ -32,27 +32,25 @@ Investbrain is a Laravel PHP web application that leverages Livewire and Tailwin ## Self hosting -For ease of installation, we _highly recommend_ installing Investbrain using the provided [Docker Compose](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file, which downloads all the necessary dependencies and seamlessly builds everything you need to get started quickly! +For ease of installation, we _highly recommend_ installing Investbrain using the provided [Docker Compose](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file, which uses the official Investbrain Docker image and includes all the necessary dependencies to seamlessly build everything you need to get started quickly! -Before getting started, you should already have the following installed on your machine: [Docker Engine](https://docs.docker.com/engine/install/), [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), and a wild sense of adventure. +Before getting started, you should already have [Docker Engine](https://docs.docker.com/engine/install/) installed on your machine. Ready? Let's get started! -First, you can clone this repository: +**1. Copy [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml)** -```bash -git clone https://github.com/investbrainapp/investbrain.git && cd investbrain -``` +Grab a copy of the [Docker Compose](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and paste the contents where you plan to install Investbrain. -Then, build the Docker image and bring up the container (this will take a few minutes): +**2. Copy [.env](https://github.com/investbrainapp/investbrain/blob/main/.env.example)** -```bash -docker compose up -``` +Copy over the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file to the same directory as the compose file you created above. -In the previous step, all of the default configurations are set automatically. This includes creating a .env file and setting the required Laravel `APP_KEY`. +> Don't forget: You need to set the `APP_KEY` value in your .env! If you're unsure, you can run `openssl rand -base64 32` from your terminal to generate a strong key! -If everything worked as expected, you should now be able to access Investbrain in the browser at. You should create an account by visiting: +**3. Run `docker compose up`** + +This might take a few minutes. But if everything worked as expected, you should now be able to access Investbrain in the browser by visiting: ```bash http://localhost:8000/register @@ -135,6 +133,7 @@ There are several optional configurations available when installing using the re | ------------- | ------------- | ------------- | | APP_URL | The URL where your Investbrain installation will be accessible | http://localhost | | APP_PORT | The HTTP port exposed by the NGINX container | 8000 | +| APP_KEY | Must be set during install - encryption key for various security-related functions | `null` | | MARKET_DATA_PROVIDER | The market data provider to use (either `yahoo`, `alphavantage`, or `finnhub`) | yahoo | | ALPHAVANTAGE_API_KEY | If using the Alpha Vantage provider | `null` | | FINNHUB_API_KEY | If using the Finnhub provider | `null` | @@ -149,7 +148,7 @@ There are several optional configurations available when installing using the re | REGISTRATION_ENABLED | Whether to enable registration of new users | `true` | -> Note: These options affect the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file, so if you decide to make any changes to these default configurations, you'll have to restart the Docker containers before your changes take effect. +> Note: These options affect the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and are cached during run-time. If change any .env values, you'll have to restart the containers before your changes take effect. ## Updating From c6642e028ca8be28973a532cac6308d083c2ff41 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 23:30:00 -0600 Subject: [PATCH 42/88] updat example env --- .env.example | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/.env.example b/.env.example index 0304c05..85e48ee 100644 --- a/.env.example +++ b/.env.example @@ -1,21 +1,17 @@ -APP_NAME=Investbrain -APP_ENV=production -APP_KEY= -APP_DEBUG=true -APP_TIMEZONE=UTC -APP_PORT=8000 -APP_URL="http://localhost:${APP_PORT}" -SELF_HOSTED=true -REGISTRATION_ENABLED=true +APP_KEY= # Generate a secure key using `openssl rand -base64 32` +APP_TIMEZONE=UTC # Timezone used internally +APP_PORT=8000 # Port for NGINX to listen on +APP_URL="http://localhost:${APP_PORT}" # Used internally to generate absolute links +ASSET_URL="${APP_URL}" # Webroot for static assets (css, js, images, etc) +REGISTRATION_ENABLED=true # Enable or disable new user registration -# ASSET_URL="http://localhost:8000" # (optional) webroot for static assets (css, js, images, etc) +AI_CHAT_ENABLED=false # Enable or disable AI chat feature +OPENAI_API_KEY= # API key for OpenAI (for Llama support, see docs) +OPENAI_ORGANIZATION= # Org ID for OpenAI -AI_CHAT_ENABLED=false -OPENAI_API_KEY= -OPENAI_ORGANIZATION= - -MARKET_DATA_PROVIDER=yahoo +MARKET_DATA_PROVIDER=yahoo # Market data provider to use (comma separated list) MARKET_DATA_REFRESH=30 +DAILY_CHANGE_TIME= ALPHAVANTAGE_API_KEY= FINNHUB_API_KEY= @@ -29,9 +25,12 @@ LINKEDIN_CLIENT_SECRET= FACEBOOK_CLIENT_ID= FACEBOOK_CLIENT_SECRET= +APP_NAME=Investbrain +APP_ENV=production +APP_DEBUG=true APP_LOCALE=en APP_FALLBACK_LOCALE=en -APP_FAKER_LOCALE=en_US +SELF_HOSTED=true DB_CONNECTION=mysql DB_HOST=investbrain-mysql From e8ec94bfa85261dcb2a0e6bd4f055da819153b6f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 23:36:33 -0600 Subject: [PATCH 43/88] add in-line docs to env --- .env.example | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/.env.example b/.env.example index 85e48ee..52f8928 100644 --- a/.env.example +++ b/.env.example @@ -1,20 +1,39 @@ -APP_KEY= # Generate a secure key using `openssl rand -base64 32` -APP_TIMEZONE=UTC # Timezone used internally -APP_PORT=8000 # Port for NGINX to listen on -APP_URL="http://localhost:${APP_PORT}" # Used internally to generate absolute links -ASSET_URL="${APP_URL}" # Webroot for static assets (css, js, images, etc) -REGISTRATION_ENABLED=true # Enable or disable new user registration +# Generate a secure key using `openssl rand -base64 32` +APP_KEY= -AI_CHAT_ENABLED=false # Enable or disable AI chat feature -OPENAI_API_KEY= # API key for OpenAI (for Llama support, see docs) -OPENAI_ORGANIZATION= # Org ID for OpenAI +# Timezone used internally +APP_TIMEZONE=UTC -MARKET_DATA_PROVIDER=yahoo # Market data provider to use (comma separated list) -MARKET_DATA_REFRESH=30 -DAILY_CHANGE_TIME= +# Port for NGINX to listen on +APP_PORT=8000 + +# Used internally to generate absolute links +APP_URL="http://localhost:${APP_PORT}" + +# Webroot for static assets (css, js, images, etc) +ASSET_URL="${APP_URL}" + +# Enables or disables new user registration +REGISTRATION_ENABLED=true + +# Enable or disable AI chat feature +AI_CHAT_ENABLED=false + +# API key for OpenAI (for Llama support, see docs) +OPENAI_API_KEY= +OPENAI_ORGANIZATION= + +# Market data provider to use (comma separated list) +MARKET_DATA_PROVIDER=yahoo ALPHAVANTAGE_API_KEY= FINNHUB_API_KEY= +# Cadence to refresh market data (in minutes) +MARKET_DATA_REFRESH=30 +DAILY_CHANGE_TIME= + +#### Advanced configurations #### + ENABLED_LOGIN_PROVIDERS= GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= From 05174e93ad5e353f19c37c8536f67f6e1ed2c881 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 11:20:52 -0600 Subject: [PATCH 44/88] wip --- config/app.php | 2 +- config/database.php | 2 +- config/mail.php | 2 +- docker-compose.yml | 3 ++- docker/Dockerfile | 16 ++++++++++++++++ docker/entrypoint.sh | 11 +++++------ 6 files changed, 26 insertions(+), 10 deletions(-) diff --git a/config/app.php b/config/app.php index 0597435..02c21f0 100644 --- a/config/app.php +++ b/config/app.php @@ -13,7 +13,7 @@ return [ | */ - 'name' => env('APP_NAME', 'Laravel'), + 'name' => env('APP_NAME', 'Investbrain'), /* |-------------------------------------------------------------------------- diff --git a/config/database.php b/config/database.php index 125949e..2fcceb0 100644 --- a/config/database.php +++ b/config/database.php @@ -143,7 +143,7 @@ return [ 'redis' => [ - 'client' => env('REDIS_CLIENT', 'phpredis'), + 'client' => env('REDIS_CLIENT', 'predis'), 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), diff --git a/config/mail.php b/config/mail.php index df13d3d..d8e8701 100644 --- a/config/mail.php +++ b/config/mail.php @@ -110,7 +110,7 @@ return [ 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), - 'name' => env('MAIL_FROM_NAME', 'Example'), + 'name' => env('MAIL_FROM_NAME', 'Investbrain'), ], ]; diff --git a/docker-compose.yml b/docker-compose.yml index 6ba887e..55b04a5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,8 @@ services: tty: true ports: - "${APP_PORT:-8000}:80" - env_file: .env + volumes: + - ./storage:/var/www/app/storage:delegated depends_on: - mysql - redis diff --git a/docker/Dockerfile b/docker/Dockerfile index 5a634a4..d2f7faa 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,22 @@ FROM php:8.3-fpm ENV DEBIAN_FRONTEND=noninteractive +ENV APP_URL="http://localhost:8000" +ENV ASSET_URL="http://localhost:8000" +ENV APP_DEBUG=true +ENV SELF_HOSTED=true +ENV DB_CONNECTION=mysql +ENV DB_HOST=investbrain-mysql +ENV DB_PORT=3306 +ENV DB_DATABASE=investbrain +ENV DB_USERNAME=investbrain +ENV DB_PASSWORD=investbrain +ENV SESSION_DRIVER=redis +ENV QUEUE_CONNECTION=redis +ENV CACHE_STORE=redis +ENV REDIS_HOST=investbrain-redis +ENV REDIS_PATH=/tmp/database_server.sock +ENV VITE_APP_NAME=Investbrain # Set the working directory COPY . /var/www/app diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 4057f02..3a15b72 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -7,10 +7,10 @@ artisan_as_www_user() { } echo -e "\n====================== Validating environment... ====================== " - if [[ -z "$APP_KEY" ]]; then - echo " > Oops! The required APP_KEY configuration is missing in your .env file! " - echo " > Copy and paste the below key into your .env file and restart the container... " + echo " > Oops! The required APP_KEY configuration is missing in your environment! " + echo " > Generating a key (see below) but this will NOT be persisted between container restarts. " + echo " > You should set this APP_KEY in your .env file! " draw_box() { local text="$1" @@ -22,9 +22,8 @@ if [[ -z "$APP_KEY" ]]; then echo "$border" } - draw_box "base64:$(openssl rand -base64 32)" - - exit 1; + $APP_KEY="base64:$(openssl rand -base64 32)" + draw_box $APP_KEY fi if [ ! -L "public/storage" ]; then From ec2019430e1f152b43419c4dec209d511ade1970 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 11:28:20 -0600 Subject: [PATCH 45/88] ensure storage is there --- docker/entrypoint.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 3a15b72..8daed8c 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -26,6 +26,15 @@ if [[ -z "$APP_KEY" ]]; then draw_box $APP_KEY fi +for dir in storage/framework/cache storage/framework/sessions storage/framework/views; do + if [ ! -d "$dir" ]; then + echo " > $dir is missing. Creating scaffold for storage directory..." + mkdir -p storage/framework/{cache,sessions,views} + chmod -R 775 storage + chown -R www-data:www-data storage + fi +done + if [ ! -L "public/storage" ]; then echo " > Creating symbolic link for app public storage..." From 51c43e9893a25ba687c47fe8d5c1b486d3291435 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 11:31:07 -0600 Subject: [PATCH 46/88] make sure key is set --- docker/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 8daed8c..bbc9342 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -22,7 +22,7 @@ if [[ -z "$APP_KEY" ]]; then echo "$border" } - $APP_KEY="base64:$(openssl rand -base64 32)" + $APP_KEY=base64:$(openssl rand -base64 32) draw_box $APP_KEY fi From b27edd98188ad0d92f8e24bf48b6e73e4998b524 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 11:36:42 -0600 Subject: [PATCH 47/88] wip --- docker/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index bbc9342..cc3ada6 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -22,7 +22,7 @@ if [[ -z "$APP_KEY" ]]; then echo "$border" } - $APP_KEY=base64:$(openssl rand -base64 32) + export APP_KEY=base64:$(openssl rand -base64 32) draw_box $APP_KEY fi From 395eb31801cd25574940e34916c63c97799a8d84 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 20:40:44 -0600 Subject: [PATCH 48/88] wip --- docker/Dockerfile | 9 ++++----- docker/entrypoint.sh | 4 ++++ routes/web.php | 3 +++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index d2f7faa..03a2f55 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,7 @@ FROM php:8.3-fpm ENV DEBIAN_FRONTEND=noninteractive +ENV APP_NAME=Investbrain ENV APP_URL="http://localhost:8000" ENV ASSET_URL="http://localhost:8000" ENV APP_DEBUG=true @@ -56,11 +57,9 @@ RUN apt-get update && apt-get install -y \ npm \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer -# Install PHP dependencies -RUN composer install --no-scripts --optimize-autoloader - -# Install Node dependencies and build assets -RUN npm install && npm run build +# Install PHP dependencies and build front end assets +RUN composer install --no-scripts --optimize-autoloader \ + && npm install && npm run build # Copy over configs COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index cc3ada6..b69f1ee 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -24,6 +24,10 @@ if [[ -z "$APP_KEY" ]]; then export APP_KEY=base64:$(openssl rand -base64 32) draw_box $APP_KEY + + + + # persist the ENVs to a file so laravel can access? fi for dir in storage/framework/cache storage/framework/sessions storage/framework/views; do diff --git a/routes/web.php b/routes/web.php index d961542..0d07985 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,6 +11,9 @@ use App\Http\Controllers\InvitedOnboardingController; use Laravel\Jetstream\Http\Controllers\Livewire\PrivacyPolicyController; use Laravel\Jetstream\Http\Controllers\Livewire\TermsOfServiceController; +Route::get('/test', function() { + dd(env('APP_NAME'), env('DB_CONNECTION')); +}); Route::get('/', function () { if (!config('investbrain.self_hosted', true) && View::exists('landing-page::index')) { From 1201c248eea93b87d3ee480910e62de7a1c2353d Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:06:08 -0600 Subject: [PATCH 49/88] cleanup --- docker/Dockerfile | 31 ++++++++++++++++--------------- routes/web.php | 3 --- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 03a2f55..df1200c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -23,13 +23,8 @@ ENV VITE_APP_NAME=Investbrain COPY . /var/www/app WORKDIR /var/www/app -# Set permissions -RUN chown -R www-data:www-data . \ - && chmod -R 775 ./storage \ - && chmod +x ./docker/entrypoint.sh \ - && usermod -s /bin/bash www-data \ # Install common php extension dependencies - && apt-get update && apt-get install -y \ +RUN apt-get update && apt-get install -y \ nginx \ libfreetype-dev \ libjpeg62-turbo-dev \ @@ -38,15 +33,18 @@ RUN chown -R www-data:www-data . \ libzip-dev \ libicu-dev \ supervisor \ - && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && docker-php-ext-install -j$(nproc) \ - gd \ - zip \ - pdo_mysql \ - mysqli \ - intl \ -# remove default nginx config - && rm /etc/nginx/sites-enabled/default + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install -j$(nproc) \ + gd pgsql bcmath zip pdo_mysql mysqli intl \ + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Set permissions +RUN chown -R www-data:www-data . \ + && chmod -R 775 ./storage \ + && chmod +x ./docker/entrypoint.sh \ + && usermod -s /bin/bash www-data # Install Composer and Node.js RUN apt-get update && apt-get install -y \ @@ -61,6 +59,9 @@ RUN apt-get update && apt-get install -y \ RUN composer install --no-scripts --optimize-autoloader \ && npm install && npm run build +# Remove default nginx config +RUN rm /etc/nginx/sites-enabled/default + # Copy over configs COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf COPY ./docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf diff --git a/routes/web.php b/routes/web.php index 0d07985..d961542 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,9 +11,6 @@ use App\Http\Controllers\InvitedOnboardingController; use Laravel\Jetstream\Http\Controllers\Livewire\PrivacyPolicyController; use Laravel\Jetstream\Http\Controllers\Livewire\TermsOfServiceController; -Route::get('/test', function() { - dd(env('APP_NAME'), env('DB_CONNECTION')); -}); Route::get('/', function () { if (!config('investbrain.self_hosted', true) && View::exists('landing-page::index')) { From 497efcfa7658913caa8734fecddba4cc1863f477 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:08:48 -0600 Subject: [PATCH 50/88] wip --- .env.example | 5 +---- docker/Dockerfile | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 52f8928..89a6a3d 100644 --- a/.env.example +++ b/.env.example @@ -1,9 +1,6 @@ # Generate a secure key using `openssl rand -base64 32` APP_KEY= -# Timezone used internally -APP_TIMEZONE=UTC - # Port for NGINX to listen on APP_PORT=8000 @@ -33,7 +30,6 @@ MARKET_DATA_REFRESH=30 DAILY_CHANGE_TIME= #### Advanced configurations #### - ENABLED_LOGIN_PROVIDERS= GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= @@ -45,6 +41,7 @@ FACEBOOK_CLIENT_ID= FACEBOOK_CLIENT_SECRET= APP_NAME=Investbrain +APP_TIMEZONE=UTC APP_ENV=production APP_DEBUG=true APP_LOCALE=en diff --git a/docker/Dockerfile b/docker/Dockerfile index df1200c..6a8bde7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -32,6 +32,7 @@ RUN apt-get update && apt-get install -y \ zlib1g-dev \ libzip-dev \ libicu-dev \ + libpq-dev \ supervisor \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) \ From 46707c1149f00eda5e4ee01c1fc81e14d8802b27 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:20:02 -0600 Subject: [PATCH 51/88] wip --- docker/entrypoint.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index b69f1ee..a89bb67 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -24,10 +24,6 @@ if [[ -z "$APP_KEY" ]]; then export APP_KEY=base64:$(openssl rand -base64 32) draw_box $APP_KEY - - - - # persist the ENVs to a file so laravel can access? fi for dir in storage/framework/cache storage/framework/sessions storage/framework/views; do @@ -46,6 +42,7 @@ if [ ! -L "public/storage" ]; then fi echo -e "\n====================== Running migrations... ====================== " +echo $DB_CONNECTION run_migrations() { artisan_as_www_user "migrate --force" } From a0e9cfb40d29226db969eff87e20217acfc19a7e Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:24:59 -0600 Subject: [PATCH 52/88] wip --- docker/entrypoint.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index a89bb67..7fbc40b 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,10 +2,6 @@ cd /var/www/app -artisan_as_www_user() { - su - www-data -c "/usr/local/bin/php /var/www/app/artisan $1" -} - echo -e "\n====================== Validating environment... ====================== " if [[ -z "$APP_KEY" ]]; then echo " > Oops! The required APP_KEY configuration is missing in your environment! " @@ -38,13 +34,12 @@ done if [ ! -L "public/storage" ]; then echo " > Creating symbolic link for app public storage..." - artisan_as_www_user "storage:link" + /usr/local/bin/php /var/www/app/artisan storage:link fi echo -e "\n====================== Running migrations... ====================== " -echo $DB_CONNECTION run_migrations() { - artisan_as_www_user "migrate --force" + /usr/local/bin/php /var/www/app/artisan migrate --force } RETRIES=30 DELAY=5 From 72a8aacabec655ea7ad95e41ebed399199ffbb4f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:30:12 -0600 Subject: [PATCH 53/88] wip --- docker/entrypoint.sh | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 7fbc40b..66b9bf0 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -41,16 +41,25 @@ echo -e "\n====================== Running migrations... ====================== run_migrations() { /usr/local/bin/php /var/www/app/artisan migrate --force } -RETRIES=30 +RETRIES=10 DELAY=5 until run_migrations; do - RETRIES=$((RETRIES-1)) - if [ $RETRIES -le 0 ]; then - echo " > Database is not ready after multiple attempts. Exiting..." - exit 1 + EXIT_STATUS=$? + + if [ $EXIT_STATUS -ne 0 ]; then + + RETRIES=$((RETRIES-1)) + if [ $RETRIES -le 0 ]; then + echo " > Database is not ready after $RETRIES attempts. Exiting..." + exit 1 + fi + echo " > Waiting for database to be ready... retrying in $DELAY seconds." + sleep $DELAY + else + # If migration was successful, break out of the loop + echo " > Migration succeeded." + break fi - echo " > Waiting for database to be ready... retrying in $DELAY seconds." - sleep $DELAY done echo -e "\n====================== Spinning up Supervisor daemon... ====================== " From b71e9e2e80ff851bb59ac52b11c51378f6a3d919 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:33:49 -0600 Subject: [PATCH 54/88] make info messages pop --- docker/entrypoint.sh | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 66b9bf0..7c3b5e5 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -4,9 +4,9 @@ cd /var/www/app echo -e "\n====================== Validating environment... ====================== " if [[ -z "$APP_KEY" ]]; then - echo " > Oops! The required APP_KEY configuration is missing in your environment! " - echo " > Generating a key (see below) but this will NOT be persisted between container restarts. " - echo " > You should set this APP_KEY in your .env file! " + echo "\n > Oops! The required APP_KEY configuration is missing in your environment! \n\n" + echo "\n > Generating a key (see below) but this will NOT be persisted between container restarts. \n\n" + echo "\n > You should set this APP_KEY in your .env file! \n\n" draw_box() { local text="$1" @@ -24,7 +24,7 @@ fi for dir in storage/framework/cache storage/framework/sessions storage/framework/views; do if [ ! -d "$dir" ]; then - echo " > $dir is missing. Creating scaffold for storage directory..." + echo "\n > $dir is missing. Creating scaffold for storage directory... \n\n" mkdir -p storage/framework/{cache,sessions,views} chmod -R 775 storage chown -R www-data:www-data storage @@ -32,7 +32,7 @@ for dir in storage/framework/cache storage/framework/sessions storage/framework/ done if [ ! -L "public/storage" ]; then - echo " > Creating symbolic link for app public storage..." + echo "\n > Creating symbolic link for app public storage... \n\n" /usr/local/bin/php /var/www/app/artisan storage:link fi @@ -44,22 +44,13 @@ run_migrations() { RETRIES=10 DELAY=5 until run_migrations; do - EXIT_STATUS=$? - - if [ $EXIT_STATUS -ne 0 ]; then - - RETRIES=$((RETRIES-1)) - if [ $RETRIES -le 0 ]; then - echo " > Database is not ready after $RETRIES attempts. Exiting..." - exit 1 - fi - echo " > Waiting for database to be ready... retrying in $DELAY seconds." - sleep $DELAY - else - # If migration was successful, break out of the loop - echo " > Migration succeeded." - break + RETRIES=$((RETRIES-1)) + if [ $RETRIES -le 0 ]; then + echo "\n > Database is not ready after $RETRIES attempts. Exiting... \n\n" + exit 1 fi + echo "\n > Waiting for database to be ready... retrying in $DELAY seconds. \n\n" + sleep $DELAY done echo -e "\n====================== Spinning up Supervisor daemon... ====================== " From b3ca2e59276c10964f46747e7417d5be17377104 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:38:59 -0600 Subject: [PATCH 55/88] wip --- docker-compose.yml | 14 ++++++++++++++ docker/Dockerfile | 15 +-------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 55b04a5..20447d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,6 +9,20 @@ services: tty: true ports: - "${APP_PORT:-8000}:80" + environment: + - APP_KEY= # Generate a key using `openssl rand -base64 32` + - APP_URL="http://localhost:8000" + - ASSET_URL="http://localhost:8000" + - DB_CONNECTION=mysql + - DB_HOST=investbrain-mysql + - DB_PORT=3306 + - DB_DATABASE=investbrain + - DB_USERNAME=investbrain + - DB_PASSWORD=investbrain + - SESSION_DRIVER=redis + - QUEUE_CONNECTION=redis + - CACHE_STORE=redis + - REDIS_HOST=investbrain-redis volumes: - ./storage:/var/www/app/storage:delegated depends_on: diff --git a/docker/Dockerfile b/docker/Dockerfile index 6a8bde7..85eede2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -2,22 +2,9 @@ FROM php:8.3-fpm ENV DEBIAN_FRONTEND=noninteractive ENV APP_NAME=Investbrain -ENV APP_URL="http://localhost:8000" -ENV ASSET_URL="http://localhost:8000" +ENV VITE_APP_NAME=Investbrain ENV APP_DEBUG=true ENV SELF_HOSTED=true -ENV DB_CONNECTION=mysql -ENV DB_HOST=investbrain-mysql -ENV DB_PORT=3306 -ENV DB_DATABASE=investbrain -ENV DB_USERNAME=investbrain -ENV DB_PASSWORD=investbrain -ENV SESSION_DRIVER=redis -ENV QUEUE_CONNECTION=redis -ENV CACHE_STORE=redis -ENV REDIS_HOST=investbrain-redis -ENV REDIS_PATH=/tmp/database_server.sock -ENV VITE_APP_NAME=Investbrain # Set the working directory COPY . /var/www/app From 99749bd9c94bd7906a635d7c4977996d7b8516ad Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:42:39 -0600 Subject: [PATCH 56/88] this is it --- docker/entrypoint.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 7c3b5e5..ae696b5 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -4,18 +4,18 @@ cd /var/www/app echo -e "\n====================== Validating environment... ====================== " if [[ -z "$APP_KEY" ]]; then - echo "\n > Oops! The required APP_KEY configuration is missing in your environment! \n\n" - echo "\n > Generating a key (see below) but this will NOT be persisted between container restarts. \n\n" - echo "\n > You should set this APP_KEY in your .env file! \n\n" + echo -e "\n > Oops! The required APP_KEY configuration is missing in your environment! " + echo -e "\n > Generating a key (see below) but this will NOT be persisted between container restarts. " + echo -e "\n > You should set this APP_KEY in your .env file! \n\n" draw_box() { local text="$1" local length=${#text} local border=$(printf '%*s' "$((length + 4))" | tr ' ' '*') - echo "$border" + echo -e "\n\n$border" echo "* $text *" - echo "$border" + echo -e "$border\n\n" } export APP_KEY=base64:$(openssl rand -base64 32) @@ -24,7 +24,7 @@ fi for dir in storage/framework/cache storage/framework/sessions storage/framework/views; do if [ ! -d "$dir" ]; then - echo "\n > $dir is missing. Creating scaffold for storage directory... \n\n" + echo -e "\n > $dir is missing. Creating scaffold for storage directory... \n\n" mkdir -p storage/framework/{cache,sessions,views} chmod -R 775 storage chown -R www-data:www-data storage @@ -32,7 +32,7 @@ for dir in storage/framework/cache storage/framework/sessions storage/framework/ done if [ ! -L "public/storage" ]; then - echo "\n > Creating symbolic link for app public storage... \n\n" + echo -e "\n > Creating symbolic link for app public storage... \n\n" /usr/local/bin/php /var/www/app/artisan storage:link fi @@ -46,10 +46,10 @@ DELAY=5 until run_migrations; do RETRIES=$((RETRIES-1)) if [ $RETRIES -le 0 ]; then - echo "\n > Database is not ready after $RETRIES attempts. Exiting... \n\n" + echo -e "\n > Database is not ready after $RETRIES attempts. Exiting... \n\n" exit 1 fi - echo "\n > Waiting for database to be ready... retrying in $DELAY seconds. \n\n" + echo -e "\n > Waiting for database to be ready... retrying in $DELAY seconds. \n\n" sleep $DELAY done From 60577d02c77f3c845e14bb44a707bc9c9c8dda01 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:45:17 -0600 Subject: [PATCH 57/88] wip --- docker/entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ae696b5..ebc24e9 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -13,9 +13,9 @@ if [[ -z "$APP_KEY" ]]; then local length=${#text} local border=$(printf '%*s' "$((length + 4))" | tr ' ' '*') - echo -e "\n\n$border" + echo -e "$border" echo "* $text *" - echo -e "$border\n\n" + echo -e "$border" } export APP_KEY=base64:$(openssl rand -base64 32) From cff3c02851c37eeea94f3724db3fb9e118d0352f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:45:38 -0600 Subject: [PATCH 58/88] wip --- docker/entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ebc24e9..ae75bf8 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -13,9 +13,9 @@ if [[ -z "$APP_KEY" ]]; then local length=${#text} local border=$(printf '%*s' "$((length + 4))" | tr ' ' '*') - echo -e "$border" + echo "$border" echo "* $text *" - echo -e "$border" + echo "$border" } export APP_KEY=base64:$(openssl rand -base64 32) From 64c84fe708268609a0874402b61b33252b5b288a Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:46:59 -0600 Subject: [PATCH 59/88] wip --- docker/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index ae75bf8..75c6d70 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -53,5 +53,5 @@ until run_migrations; do sleep $DELAY done -echo -e "\n====================== Spinning up Supervisor daemon... ====================== " +echo -e "\n====================== Spinning up Supervisor daemon... ====================== \n" exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf \ No newline at end of file From 118232e9065c00b11e96341b69eed1384e8b07d6 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:50:25 -0600 Subject: [PATCH 60/88] update readme --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ce9a81f..529bdf5 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,13 @@ Ready? Let's get started! Grab a copy of the [Docker Compose](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and paste the contents where you plan to install Investbrain. -**2. Copy [.env](https://github.com/investbrainapp/investbrain/blob/main/.env.example)** +**2. Set your environment** -Copy over the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file to the same directory as the compose file you created above. +Adjust the `environment` property in the Docker Compose file to your preferences. -> Don't forget: You need to set the `APP_KEY` value in your .env! If you're unsure, you can run `openssl rand -base64 32` from your terminal to generate a strong key! +Particularly, you need to set the `APP_KEY` value for your environment. If you're unsure, you can run `openssl rand -base64 32` from your terminal to generate a strong key. + +> Tip: Want to know what options are available? You can reference the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file in this respository for available environment configurations. **3. Run `docker compose up`** From 47cd1b6a9158d8afd771e4f978ef5b4dccde92c5 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:54:56 -0600 Subject: [PATCH 61/88] wip --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 529bdf5..1ab8c7d 100644 --- a/README.md +++ b/README.md @@ -38,15 +38,15 @@ Before getting started, you should already have [Docker Engine](https://docs.doc Ready? Let's get started! -**1. Copy [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml)** +**1. Copy Docker Compose file** -Grab a copy of the [Docker Compose](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and paste the contents where you plan to install Investbrain. +Grab a copy of the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml)** file and paste the contents into the directory where you plan to install Investbrain. **2. Set your environment** -Adjust the `environment` property in the Docker Compose file to your preferences. +Adjust the `environment` properties in the Docker Compose file to your preferences. -Particularly, you need to set the `APP_KEY` value for your environment. If you're unsure, you can run `openssl rand -base64 32` from your terminal to generate a strong key. +_Particularly_, you need to set the `APP_KEY` value to a complex random value. If you're unsure, you can run `openssl rand -base64 32` from your terminal to generate a strong application key. > Tip: Want to know what options are available? You can reference the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file in this respository for available environment configurations. From 778d7991136819d8e1cb0451a916fb56c92af98e Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 21:56:41 -0600 Subject: [PATCH 62/88] cleanup --- docker/entrypoint.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 75c6d70..4b3e559 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -6,14 +6,14 @@ echo -e "\n====================== Validating environment... =================== if [[ -z "$APP_KEY" ]]; then echo -e "\n > Oops! The required APP_KEY configuration is missing in your environment! " echo -e "\n > Generating a key (see below) but this will NOT be persisted between container restarts. " - echo -e "\n > You should set this APP_KEY in your .env file! \n\n" + echo -e "\n > You should set this APP_KEY in your .env file! " draw_box() { local text="$1" local length=${#text} local border=$(printf '%*s' "$((length + 4))" | tr ' ' '*') - echo "$border" + echo -e "\n\n$border" echo "* $text *" echo "$border" } @@ -24,7 +24,7 @@ fi for dir in storage/framework/cache storage/framework/sessions storage/framework/views; do if [ ! -d "$dir" ]; then - echo -e "\n > $dir is missing. Creating scaffold for storage directory... \n\n" + echo -e "\n > $dir is missing. Creating scaffold for storage directory... " mkdir -p storage/framework/{cache,sessions,views} chmod -R 775 storage chown -R www-data:www-data storage @@ -32,7 +32,7 @@ for dir in storage/framework/cache storage/framework/sessions storage/framework/ done if [ ! -L "public/storage" ]; then - echo -e "\n > Creating symbolic link for app public storage... \n\n" + echo -e "\n > Creating symbolic link for app public storage... " /usr/local/bin/php /var/www/app/artisan storage:link fi @@ -46,10 +46,10 @@ DELAY=5 until run_migrations; do RETRIES=$((RETRIES-1)) if [ $RETRIES -le 0 ]; then - echo -e "\n > Database is not ready after $RETRIES attempts. Exiting... \n\n" + echo -e "\n > Database is not ready after $RETRIES attempts. Exiting... " exit 1 fi - echo -e "\n > Waiting for database to be ready... retrying in $DELAY seconds. \n\n" + echo -e "\n > Waiting for database to be ready... retrying in $DELAY seconds. " sleep $DELAY done From 4220bb629f34a0eee2bb75f5790b13551b974b63 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 22:56:41 -0600 Subject: [PATCH 63/88] remove bcmath --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 85eede2..4d55820 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -23,7 +23,7 @@ RUN apt-get update && apt-get install -y \ supervisor \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) \ - gd pgsql bcmath zip pdo_mysql mysqli intl \ + gd pgsql zip pdo_mysql mysqli intl \ && apt-get -y autoremove \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* From 1bf05a1b879f4f1628735eb7f9af3dde9fb8a354 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 23:02:40 -0600 Subject: [PATCH 64/88] use default vars for db config --- docker-compose.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 20447d2..0577b33 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,19 +10,19 @@ services: ports: - "${APP_PORT:-8000}:80" environment: - - APP_KEY= # Generate a key using `openssl rand -base64 32` - - APP_URL="http://localhost:8000" - - ASSET_URL="http://localhost:8000" - - DB_CONNECTION=mysql - - DB_HOST=investbrain-mysql - - DB_PORT=3306 - - DB_DATABASE=investbrain - - DB_USERNAME=investbrain - - DB_PASSWORD=investbrain - - SESSION_DRIVER=redis - - QUEUE_CONNECTION=redis - - CACHE_STORE=redis - - REDIS_HOST=investbrain-redis + APP_KEY: "" # Generate a key using `openssl rand -base64 32` + APP_URL: "http://localhost:8000" + ASSET_URL: "http://localhost:8000" + DB_CONNECTION: mysql + DB_HOST: investbrain-mysql + DB_PORT: 3306 + DB_DATABASE: ${DB_DATABASE:-investbrain} + DB_USERNAME: ${DB_USERNAME:-investbrain} + DB_PASSWORD: ${DB_PASSWORD:-investbrain} + SESSION_DRIVER: redis + QUEUE_CONNECTION: redis + CACHE_STORE: redis + REDIS_HOST: investbrain-redis volumes: - ./storage:/var/www/app/storage:delegated depends_on: From a9783775018f745108494311e451e58af3cd7de2 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 23:20:40 -0600 Subject: [PATCH 65/88] Update build-and-push-images.yml --- .github/workflows/build-and-push-images.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index d662ca6..5d83251 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -23,6 +23,17 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GIT_HUB_TOKEN }} + - name: Increase swap space + run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=4096 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1 + + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Set up QEMU uses: docker/setup-qemu-action@v3 From efc67c63d885c8e38564fab5f1b92f7618135061 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 23:22:46 -0600 Subject: [PATCH 66/88] Update build-and-push-images.yml --- .github/workflows/build-and-push-images.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index 5d83251..09a0fa2 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -23,6 +23,12 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GIT_HUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Increase swap space run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=4096 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1 @@ -34,12 +40,6 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Extract version from tag id: extract-version run: | From 064343c1ff4a43135a028996e26b20f05145f4c8 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 23:25:31 -0600 Subject: [PATCH 67/88] Update build-and-push-images.yml --- .github/workflows/build-and-push-images.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index 09a0fa2..4aba1cf 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -33,7 +33,7 @@ jobs: run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=4096 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1 - name: Cache Docker layers - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} From 2e187b5e089d2ebac024be4df2d326f782f22a1d Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 23:39:30 -0600 Subject: [PATCH 68/88] rmeove pgsql --- docker/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 4d55820..1bc713b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,11 +19,10 @@ RUN apt-get update && apt-get install -y \ zlib1g-dev \ libzip-dev \ libicu-dev \ - libpq-dev \ supervisor \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) \ - gd pgsql zip pdo_mysql mysqli intl \ + gd zip pdo_mysql mysqli intl \ && apt-get -y autoremove \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* From 2da57d95b7a75382806754cb0d7917baf90a9499 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sun, 26 Jan 2025 23:48:24 -0600 Subject: [PATCH 69/88] add pgsql back --- docker/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 1bc713b..4d55820 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,10 +19,11 @@ RUN apt-get update && apt-get install -y \ zlib1g-dev \ libzip-dev \ libicu-dev \ + libpq-dev \ supervisor \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) \ - gd zip pdo_mysql mysqli intl \ + gd pgsql zip pdo_mysql mysqli intl \ && apt-get -y autoremove \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* From 0babcbfac45d71a9af7764d16907e9bd5d14ce53 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 08:23:47 -0600 Subject: [PATCH 70/88] update readme --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1ab8c7d..6091907 100644 --- a/README.md +++ b/README.md @@ -44,15 +44,15 @@ Grab a copy of the [docker-compose.yml](https://github.com/investbrainapp/invest **2. Set your environment** -Adjust the `environment` properties in the Docker Compose file to your preferences. +Adjust the `environment` properties in the Docker Compose file to your preferences. Alternatively, create a .env file in the same directory as your compose file, then reference the .env file using the `env_file` property. -_Particularly_, you need to set the `APP_KEY` value to a complex random value. If you're unsure, you can run `openssl rand -base64 32` from your terminal to generate a strong application key. +_Importantly_, you need to set the `APP_KEY` value to a complex random value. If you're unsure, Investbrain will generate an `APP_KEY` for you on first run - but you must **manually** update your environment configuration with this generated value! -> Tip: Want to know what options are available? You can reference the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file in this respository for available environment configurations. +> Tip: Want to know what other configuration options are available? You can reference the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file in this respository for available environment configurations. **3. Run `docker compose up`** -This might take a few minutes. But if everything worked as expected, you should now be able to access Investbrain in the browser by visiting: +This might take a few minutes to pull the Docker images. But assuming everything worked as expected, you should now be able to access Investbrain in the browser by visiting: ```bash http://localhost:8000/register @@ -76,7 +76,7 @@ Investbrain includes an extensible market data provider interface that allows yo ### Configuration -You can specify the market data provider you want to use in your .env file: +You can specify the market data provider you want to use in your environment variables: ```bash MARKET_DATA_PROVIDER=yahoo @@ -84,7 +84,7 @@ MARKET_DATA_PROVIDER=yahoo You can also use Investbrain's built-in fallback mechanism to ensure reliable data access. If any provider fails, Investbrain will automatically attempt to retrieve data from the next available provider, continuing through your configured providers until one returns successfully. -Your selected providers should be listed in your .env file. Each should be separated by a comma: +Your selected providers should be listed in your environment variables. Each should be separated by a comma: ```bash MARKET_DATA_PROVIDER=yahoo,alphavantage @@ -129,7 +129,7 @@ Exporting your portfolios and transactions is a convenient way to back-up your I ## Configuration -There are several optional configurations available when installing using the recommended [Docker method](#self-hosting). These options are configurable using an environment file. Changes can be made in your [.env](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file before installation. +There are several optional configurations available when installing using the recommended [Docker method](#self-hosting). These options are configurable using an environment file. Configurations can be added to your [.env](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file or to the `environment` property in the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file. | Option | Description | Default | | ------------- | ------------- | ------------- | @@ -150,7 +150,7 @@ There are several optional configurations available when installing using the re | REGISTRATION_ENABLED | Whether to enable registration of new users | `true` | -> Note: These options affect the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and are cached during run-time. If change any .env values, you'll have to restart the containers before your changes take effect. +> Note: These options affect the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and are cached during run-time. If change any environment configurations, you'll have to restart the container before your changes take effect. ## Updating @@ -160,10 +160,10 @@ To update Investbrain using the recommended [Docker installation](#self-hosting) docker compose stop ``` -Then pull the latest updates from this repository using git: +Then pull the latest Docker image: ```bash -git pull +docker image pull investbrainapp/investbrain:latest ``` Finally bring the containers back up! From 04b32c3f33db3a615ea54d7f992ef6a2b4fc42e9 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 10:49:24 -0600 Subject: [PATCH 71/88] try mac for github action --- .github/workflows/build-and-push-images.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index d662ca6..e856945 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - name: Login to Docker Hub uses: docker/login-action@v3 From fafbbe9b3a93ba11406aaf3ea1fe789df4e92dbf Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 10:51:31 -0600 Subject: [PATCH 72/88] back to ubuntu (has docker preinstalled) --- .github/workflows/build-and-push-images.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index e856945..d662ca6 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: macos-latest + runs-on: ubuntu-latest steps: - name: Login to Docker Hub uses: docker/login-action@v3 From 74b16f2165ddeee20a8b79f013d7e56815f26800 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 11:06:58 -0600 Subject: [PATCH 73/88] streamline --- docker/Dockerfile | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 4d55820..73e2808 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,7 +10,7 @@ ENV SELF_HOSTED=true COPY . /var/www/app WORKDIR /var/www/app -# Install common php extension dependencies +# Install required packages RUN apt-get update && apt-get install -y \ nginx \ libfreetype-dev \ @@ -20,13 +20,18 @@ RUN apt-get update && apt-get install -y \ libzip-dev \ libicu-dev \ libpq-dev \ + binutils libc6-dev \ supervisor \ + unzip curl git \ + nodejs npm \ +# Clean up APT + && apt-get -y autoremove \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ +# Install PHP extensions && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) \ - gd pgsql zip pdo_mysql mysqli intl \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + gd pgsql zip pdo_mysql mysqli intl # Set permissions RUN chown -R www-data:www-data . \ @@ -34,17 +39,9 @@ RUN chown -R www-data:www-data . \ && chmod +x ./docker/entrypoint.sh \ && usermod -s /bin/bash www-data -# Install Composer and Node.js -RUN apt-get update && apt-get install -y \ - curl \ - unzip \ - git \ - nodejs \ - npm \ - && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -# Install PHP dependencies and build front end assets -RUN composer install --no-scripts --optimize-autoloader \ +# Install Composer and Node.js Install PHP dependencies and build front end assets +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ + && composer install --no-scripts --optimize-autoloader \ && npm install && npm run build # Remove default nginx config From ab698c8903b8635757d08c0670d11978b3a3d45c Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 11:33:45 -0600 Subject: [PATCH 74/88] add fpic support for multi arch --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 73e2808..9a2c7f1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -29,7 +29,7 @@ RUN apt-get update && apt-get install -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ # Install PHP extensions - && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-configure gd --with-freetype --with-jpeg CFLAGS="-fPIC" \ && docker-php-ext-install -j$(nproc) \ gd pgsql zip pdo_mysql mysqli intl From 8116d1d4de1a40350b9f761b32cffce6c510fefd Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 11:55:18 -0600 Subject: [PATCH 75/88] try sury package no buikd --- docker/Dockerfile | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 9a2c7f1..eda3c1a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -11,7 +11,8 @@ COPY . /var/www/app WORKDIR /var/www/app # Install required packages -RUN apt-get update && apt-get install -y \ +RUN apt-get update && apt-get upgrade -y \ + && apt-get install -y \ nginx \ libfreetype-dev \ libjpeg62-turbo-dev \ @@ -20,18 +21,22 @@ RUN apt-get update && apt-get install -y \ libzip-dev \ libicu-dev \ libpq-dev \ - binutils libc6-dev \ supervisor \ unzip curl git \ nodejs npm \ +# Install PHP extensions + && curl -sSL https://packages.sury.org/php/README.txt | bash -x \ + apt-get update \ + && apt-get install -y \ + php8.3-gd \ + php8.3-pgsql \ + php8.3-zip \ + php8.3-mysql \ + php8.3-intl \ # Clean up APT && apt-get -y autoremove \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ -# Install PHP extensions - && docker-php-ext-configure gd --with-freetype --with-jpeg CFLAGS="-fPIC" \ - && docker-php-ext-install -j$(nproc) \ - gd pgsql zip pdo_mysql mysqli intl + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # Set permissions RUN chown -R www-data:www-data . \ From be189cf89956aa6311c8cb7e2e25a3e4180af17f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 12:01:14 -0600 Subject: [PATCH 76/88] typo --- docker/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index eda3c1a..20b340f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -22,11 +22,10 @@ RUN apt-get update && apt-get upgrade -y \ libicu-dev \ libpq-dev \ supervisor \ - unzip curl git \ + unzip git \ nodejs npm \ # Install PHP extensions - && curl -sSL https://packages.sury.org/php/README.txt | bash -x \ - apt-get update \ + && curl -sSL https://packages.sury.org/php/README.txt | bash -x && apt-get update \ && apt-get install -y \ php8.3-gd \ php8.3-pgsql \ From c1009a19fb916e36de9aa326abaa9a6e5e2a8bd9 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 12:48:16 -0600 Subject: [PATCH 77/88] wip --- docker/Dockerfile | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 20b340f..eeaeffd 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,7 +12,7 @@ WORKDIR /var/www/app # Install required packages RUN apt-get update && apt-get upgrade -y \ - && apt-get install -y \ + && apt-get upgrade -y \ nginx \ libfreetype-dev \ libjpeg62-turbo-dev \ @@ -21,21 +21,18 @@ RUN apt-get update && apt-get upgrade -y \ libzip-dev \ libicu-dev \ libpq-dev \ + binutils libc6-dev \ supervisor \ - unzip git \ + unzip curl git \ nodejs npm \ -# Install PHP extensions - && curl -sSL https://packages.sury.org/php/README.txt | bash -x && apt-get update \ - && apt-get install -y \ - php8.3-gd \ - php8.3-pgsql \ - php8.3-zip \ - php8.3-mysql \ - php8.3-intl \ # Clean up APT && apt-get -y autoremove \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ +# Install PHP extensions + && docker-php-ext-configure gd --with-freetype --with-jpeg \ + && docker-php-ext-install -j$(nproc) \ + gd pgsql zip pdo_mysql mysqli intl # Set permissions RUN chown -R www-data:www-data . \ From 16fed7a8ca4c12c2c859b88eca48b78319731506 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 13:03:13 -0600 Subject: [PATCH 78/88] add flags --- docker/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index eeaeffd..0c90e28 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,6 +10,8 @@ ENV SELF_HOSTED=true COPY . /var/www/app WORKDIR /var/www/app +ENV CFLAGS="-fstack-protector-strong -fpic -fPIC -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + # Install required packages RUN apt-get update && apt-get upgrade -y \ && apt-get upgrade -y \ From 8c4d0fa1a1236fab4b7d38a47bb1bda1cb4b3bdd Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 13:23:00 -0600 Subject: [PATCH 79/88] merge --- .github/workflows/build-and-push-images.yml | 15 ++++++++++++--- docker/Dockerfile | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index d662ca6..b702bb3 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -29,6 +29,17 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Increase swap space + run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=4096 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1 + + - name: Cache Docker layers + uses: actions/cache@v4 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Extract version from tag id: extract-version run: | @@ -44,6 +55,4 @@ jobs: investbrainapp/investbrain:latest investbrainapp/investbrain:${{ env.version }} ghcr.io/investbrainapp/investbrain:latest - ghcr.io/investbrainapp/investbrain:${{ env.version }} - - + ghcr.io/investbrainapp/investbrain:${{ env.version }} \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 0c90e28..bc9536d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,6 +10,7 @@ ENV SELF_HOSTED=true COPY . /var/www/app WORKDIR /var/www/app +# Allow PHP installs to be built cross-platform ENV CFLAGS="-fstack-protector-strong -fpic -fPIC -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" # Install required packages From 43541c1af2c0f09e3ec175cb756703c582d7e410 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 13:57:30 -0600 Subject: [PATCH 80/88] swap --- .github/workflows/build-and-push-images.yml | 23 ++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index b702bb3..fe6d9a3 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -10,6 +10,13 @@ jobs: build: runs-on: ubuntu-latest steps: + - name: Set up swap space + run: | + sudo fallocate -l 5G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + - name: Login to Docker Hub uses: docker/login-action@v3 with: @@ -29,8 +36,12 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Increase swap space - run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=4096 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1 + - name: Set up swap space + run: | + sudo fallocate -l 4G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile - name: Cache Docker layers uses: actions/cache@v4 @@ -48,6 +59,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: + options: --memory=4g # platforms: linux/amd64,linux/arm64 file: ./docker/Dockerfile push: true @@ -55,4 +67,9 @@ jobs: investbrainapp/investbrain:latest investbrainapp/investbrain:${{ env.version }} ghcr.io/investbrainapp/investbrain:latest - ghcr.io/investbrainapp/investbrain:${{ env.version }} \ No newline at end of file + ghcr.io/investbrainapp/investbrain:${{ env.version }} + + - name: Clean up swap space + run: | + sudo swapoff /swapfile + sudo rm /swapfile \ No newline at end of file From b84602a5edd3064430f17daa4de457c32ead8d86 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 13:59:03 -0600 Subject: [PATCH 81/88] swap --- .github/workflows/build-and-push-images.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index fe6d9a3..e4b8a45 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Set up swap space run: | - sudo fallocate -l 5G /swapfile + sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile From 077b5257e83d2aab3f8fb614873b7abadbf026a4 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 14:02:28 -0600 Subject: [PATCH 82/88] swap --- .github/workflows/build-and-push-images.yml | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index e4b8a45..7557070 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -10,13 +10,9 @@ jobs: build: runs-on: ubuntu-latest steps: - - name: Set up swap space - run: | - sudo fallocate -l 4G /swapfile - sudo chmod 600 /swapfile - sudo mkswap /swapfile - sudo swapon /swapfile - + - name: Increase swap space + run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=5120 && sudo chmod 600 /var/swap.1 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1 + - name: Login to Docker Hub uses: docker/login-action@v3 with: @@ -67,9 +63,4 @@ jobs: investbrainapp/investbrain:latest investbrainapp/investbrain:${{ env.version }} ghcr.io/investbrainapp/investbrain:latest - ghcr.io/investbrainapp/investbrain:${{ env.version }} - - - name: Clean up swap space - run: | - sudo swapoff /swapfile - sudo rm /swapfile \ No newline at end of file + ghcr.io/investbrainapp/investbrain:${{ env.version }} \ No newline at end of file From 9d48ebbad99d2b496f80cd1ccef7d03909b81f8f Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 14:26:27 -0600 Subject: [PATCH 83/88] downgrade --- .github/workflows/build-and-push-images.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index 7557070..ebc6d31 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 #ubuntu-latest steps: - name: Increase swap space run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=5120 && sudo chmod 600 /var/swap.1 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1 From 19fb9a85fc59a3ceafe8fc31e5fd95507560a4c0 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 14:26:40 -0600 Subject: [PATCH 84/88] cleanup --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index bc9536d..2316aff 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -11,7 +11,7 @@ COPY . /var/www/app WORKDIR /var/www/app # Allow PHP installs to be built cross-platform -ENV CFLAGS="-fstack-protector-strong -fpic -fPIC -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" +#ENV CFLAGS="-fstack-protector-strong -fpic -fPIC -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" # Install required packages RUN apt-get update && apt-get upgrade -y \ From 5db54adfb74eb037ba023dd8f6751c78c82139d9 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 15:16:01 -0600 Subject: [PATCH 85/88] cleanup --- .github/workflows/build-and-push-images.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index ebc6d31..9e8ff70 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -55,7 +55,6 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - options: --memory=4g # platforms: linux/amd64,linux/arm64 file: ./docker/Dockerfile push: true From 5e56c97bf98d80c83f5a78e9759bd1bbaf09fbc2 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 15:28:16 -0600 Subject: [PATCH 86/88] docs: fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6091907..4e43dec 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Ready? Let's get started! **1. Copy Docker Compose file** -Grab a copy of the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml)** file and paste the contents into the directory where you plan to install Investbrain. +Grab a copy of the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and paste the contents into the directory where you plan to install Investbrain. **2. Set your environment** From f58fbf9d6de6d464e09f34be2d0284c33b73215d Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 16:41:40 -0600 Subject: [PATCH 87/88] docs: clean up install guide --- README.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4e43dec..867fff6 100644 --- a/README.md +++ b/README.md @@ -38,17 +38,23 @@ Before getting started, you should already have [Docker Engine](https://docs.doc Ready? Let's get started! -**1. Copy Docker Compose file** +**1. Download copy of Docker Compose file** -Grab a copy of the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and paste the contents into the directory where you plan to install Investbrain. +Grab a copy of the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) using `wget`, `curl` or similar: + +```bash +curl -O https://raw.githubusercontent.com/investbrainapp/investbrain/main/docker-compose.yml +``` **2. Set your environment** -Adjust the `environment` properties in the Docker Compose file to your preferences. Alternatively, create a .env file in the same directory as your compose file, then reference the .env file using the `env_file` property. +Adjust the `environment` properties in the compose file to your preferences. -_Importantly_, you need to set the `APP_KEY` value to a complex random value. If you're unsure, Investbrain will generate an `APP_KEY` for you on first run - but you must **manually** update your environment configuration with this generated value! +**Importantly**, you need to set the `APP_KEY` value. If you're unsure, Investbrain will generate an `APP_KEY` for you on first run, but it will not persist. You must _manually_ update your environment configuration with this generated value! -> Tip: Want to know what other configuration options are available? You can reference the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file in this respository for available environment configurations. +Alternatively, create a .env file in the same directory as your compose file, then reference the .env file using the `env_file` property. + +> Want to know what other configuration options are available? You can reference the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file in this respository for available environment configurations. **3. Run `docker compose up`** From e498e7668e8e9484897858f0f35a01ff35bbe529 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Mon, 27 Jan 2025 16:41:49 -0600 Subject: [PATCH 88/88] docs: clean up install guide --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 867fff6..7e47e41 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Alternatively, create a .env file in the same directory as your compose file, th **3. Run `docker compose up`** -This might take a few minutes to pull the Docker images. But assuming everything worked as expected, you should now be able to access Investbrain in the browser by visiting: +It might take a few minutes to pull the Docker images. But assuming everything worked as expected, you should now be able to access Investbrain in the browser by visiting: ```bash http://localhost:8000/register