From 16d5b806572ffdce37b46be3ee9e11228214f983 Mon Sep 17 00:00:00 2001 From: hackerESQ Date: Sat, 25 Jan 2025 18:09:02 -0600 Subject: [PATCH 01/59] 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 02/59] 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 03/59] 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 04/59] 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 05/59] 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 06/59] 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 07/59] 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 08/59] 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 09/59] 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 10/59] 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 11/59] 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 12/59] 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 13/59] 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 14/59] 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 15/59] 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 16/59] 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 17/59] 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 18/59] 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 19/59] 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 20/59] 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 21/59] 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 22/59] 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 23/59] 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 24/59] 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 25/59] 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 26/59] 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 27/59] 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 28/59] 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 29/59] 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 30/59] 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 31/59] 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 32/59] 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 33/59] 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 34/59] 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 35/59] 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 36/59] 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 37/59] 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 38/59] 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 39/59] 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 40/59] 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 41/59] 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 42/59] 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 43/59] 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 44/59] 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 45/59] 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 46/59] 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 47/59] 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 48/59] 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 49/59] 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 50/59] 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 51/59] 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 52/59] 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 53/59] 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 54/59] 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 55/59] 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 56/59] 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 57/59] 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 58/59] 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 59/59] 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