diff --git a/.gitignore b/.gitignore index 9bb6f73..27332d2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /public/bundles/ /var/ /vendor/ +/migrations/ ###< symfony/framework-bundle ### ###> phpunit/phpunit ### @@ -22,4 +23,6 @@ /assets/vendor/ ###< symfony/asset-mapper ### -/references/ \ No newline at end of file +/references/ +composer.lock +.continue \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 6d615a1..96a7887 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.4-apache +FROM php:8.5-apache RUN apt update && \ apt upgrade -y && \ @@ -11,11 +11,14 @@ RUN apt update && \ libjpeg-dev \ libicu-dev \ libpq-dev \ + libsqlite3-dev \ sqlite3 \ curl \ git \ + cron \ nano + RUN docker-php-ext-configure gd --with-jpeg RUN docker-php-ext-configure zip @@ -28,7 +31,8 @@ RUN docker-php-ext-install \ xml \ intl \ pdo_mysql \ - pdo_pgsql + pdo_pgsql \ + pdo_sqlite RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \ @@ -37,22 +41,38 @@ RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && RUN curl -sS https://get.symfony.com/cli/installer | bash && \ mv /root/.symfony5/bin/symfony /usr/local/bin/symfony -COPY . /var/www/html/ +ARG CACHEBURST=1 +ARG BRANCH=main + +WORKDIR /var/www/html +RUN git clone -b ${BRANCH} --single-branch https://gitea.rkprather.com/ryan/sermon-notes.git ./ +RUN git config --global --add safe.directory /var/www/html RUN mv 000-default.conf /etc/apache2/sites-available/ -RUN rm /var/www/html/.env* -RUN rm -rf /var/www/html/var/* -RUN rm -rf /var/www/html/vendor -RUN rm -rf /var/www/html/tests -RUN rm -rf /var/www/html/translations + +RUN echo "20 1 * * 6 root cd /var/www/html && /usr/local/bin/php bin/console app:get-audio > /proc/1/fd/1 2>&1" > /etc/cron.d/get-audio +RUN chmod 644 /etc/cron.d/get-audio +RUN crontab /etc/cron.d/get-audio RUN COMPOSER_ALLOW_SUPERUSER=1 composer install --no-scripts --no-dev --optimize-autoloader RUN mkdir /data -RUN mkdir /var/www/html/var/cache -RUN mkdir /var/www/html/var/log +RUN mkdir -p /var/www/html/var/cache/prod +RUN mkdir -p /var/www/html/var/log RUN chown -R 33:33 /var/www/html /data -RUN chmod -R 755 /var/www/html /data +RUN find /var/www/html -type d -exec chmod 755 '{}' \; +RUN find /var/www/html -type f -exec chmod 644 '{}' \; +RUN chmod 755 /data +RUN a2enmod rewrite setenvif headers + +COPY prod.env /var/www/html/.env +RUN /usr/local/bin/php bin/console importmap:install +RUN /usr/local/bin/php bin/console asset-map:compile +RUN rm /var/www/html/.env +RUN chmod +x /var/www/html/bin/entrypoint.sh EXPOSE 80 + +ENTRYPOINT ["/var/www/html/bin/entrypoint.sh"] +CMD ["apache2-foreground"] diff --git a/README.md b/README.md index b30838d..c4c7d7a 100644 --- a/README.md +++ b/README.md @@ -28,11 +28,12 @@ This was my first publicly available docker container so I did not realize what 5. [`compose.shared-db.yml`](https://gitea.rkprather.com/ryan/sermon-notes/raw/branch/main/docker/compose.shared-db.yml) - compose file with no database image because you are planning on using an existing database container or bare metal server 4. Pull the image `docker pull gitea.rkprather.com/ryan/sermon-notes:latest` 5. **NOTE: IF UPGRADING SKIP THIS STEP!!!** - Run the setup script, this will setup your .env file so that when you start the container everything will be where it is supposed to be. - - `docker run --rm -it -v ${PWD}/.env:/var/www/html/.env gitea.rkprather.com/ryan/sermon-notes:latest /var/www/html/setup.php --{database-type} {--shared}` + - `docker run --rm -it -v ${PWD}/.env:/var/www/html/.env gitea.rkprather.com/ryan/sermon-notes:latest php /var/www/html/setup.php --{database-type} {--shared}` - `{database-type}` = `sqlite`, `mysql`, `mariadb`, or `pgsql` - If you intend on this being connected to a shared database make sure that you specify `--shared`. 6. Start the container with compose `docker compose up -d` -7. **NOTE: IF UPGRADING SKIP THIS STEP!!!** Run `docker exec -it sermon-notes /var/www/html/install.php`. This will run the `php composer` to populate the database with all the desired reference material. +7. **NOTE: IF UPGRADING SKIP THIS STEP!!!** Run `docker exec -it sermon-notes php /var/www/html/install.php`. This will run the `php composer` to populate the database with all the desired reference material. + - NOTE: You will see deprecation warnings, you can ignore these 8. Once complete you have a running system that you can navigate to in your browser with `http://{ip}:{port}`|`http://{hostname}:{port}`. Then you just need to register for an account. The first account that is created is made an admin so that you can access the `Reference Editor` and update any reference material if necessary. ## Operation diff --git a/assets/app.js b/assets/app.js index c31a289..1c3b114 100644 --- a/assets/app.js +++ b/assets/app.js @@ -5,7 +5,6 @@ import './bootstrap.js'; * This file will be included onto the page via the importmap() Twig function, * which should already be in your base.html.twig. */ -import './styles/app.css'; -const $ = require('jquery'); +//import './styles/app.css'; // console.log('This log comes from assets/app.js - welcome to AssetMapper! 🎉'); diff --git a/assets/css/dark-mode.css b/assets/css/dark-mode.css new file mode 100644 index 0000000..563fa27 --- /dev/null +++ b/assets/css/dark-mode.css @@ -0,0 +1,18 @@ +:root { + --dark: #3d4449; + --primary: #00760e; + --light: #f5f6f7; + --medium: #d1d1d1; + --text: var(--light); + --background: var(--dark); + --recording: #00f; + --success: #080; + --warning: orange; + --error: #f00; + --border: var(--primary); + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +}/*# sourceMappingURL=dark-mode.css.map */ \ No newline at end of file diff --git a/assets/css/dark-mode.css.map b/assets/css/dark-mode.css.map new file mode 100644 index 0000000..2c038fc --- /dev/null +++ b/assets/css/dark-mode.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["dark-mode.scss","dark-mode.css"],"names":[],"mappings":"AACA;EACC,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,oBAAA;EACA,yBAAA;EACA,iBAAA;EACA,eAAA;EACA,iBAAA;EACA,aAAA;EACA,wBAAA;EAEA,SAAA;EACA,UAAA;EACA,SAAA;EACA,aAAA;EACA,wBAAA;ACDD","file":"dark-mode.css"} \ No newline at end of file diff --git a/assets/css/dark-mode.scss b/assets/css/dark-mode.scss new file mode 100644 index 0000000..0768967 --- /dev/null +++ b/assets/css/dark-mode.scss @@ -0,0 +1,20 @@ +// dark mode color scheme +:root { + --dark: #3d4449; + --primary: #00760e; + --light: #f5f6f7; + --medium: #d1d1d1; + --text: var(--light); + --background: var(--dark); + --recording: #00f; + --success: #080; + --warning: orange; + --error: #f00; + --border: var(--primary); + + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} diff --git a/assets/css/fontawesome-all.min.css b/assets/css/fontawesome-all.min.css index 03c42e3..d53d97d 100644 --- a/assets/css/fontawesome-all.min.css +++ b/assets/css/fontawesome-all.min.css @@ -3,99 +3,4 @@ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/assets/css/lg-screen-style.css b/assets/css/lg-screen-style.css new file mode 100644 index 0000000..dd74ea5 --- /dev/null +++ b/assets/css/lg-screen-style.css @@ -0,0 +1,121 @@ +@media screen and (min-width: 1501px) { + .mobile-note-header { + display: none; + } + #note-list { + display: none; + overflow-y: scroll; + } + #note-table_wrapper { + width: 97%; + } + .container #sidebar-link.toggle { + left: 25em; + } + .container { + display: grid; + height: 100vh; + grid-template-columns: 25em 60px 35% 0.98fr; + grid-template-rows: 60px 100vh; + gap: 5px 5px; + grid-auto-flow: row; + grid-template-areas: "sidebar-header ref-btn-header ref-header note-header" "sidebar ref-btn ref-text notes"; + transition: grid-template-columns 0.5s ease-in-out; + } + .container p { + margin: 0 0 1em 0; + } + .container .fields-container { + display: none; + } + .container.sidebar-collapsed { + grid-template-columns: 0px 60px 35% 0.98fr; + } + .container.sidebar-collapsed #sidebar-link.toggle { + left: 0; + } + .bottom-row { + height: calc(100vh - 75px); + } + .notes { + display: flex; + flex-direction: column; + grid-template-columns: 100vh; + grid-template-rows: 75px 100vh; + gap: 2px 0px; + grid-template-areas: "fields-container" "note-text"; + grid-area: notes; + } + .notes .fields-container { + justify-content: space-evenly; + flex-wrap: wrap; + width: 99.5%; + } + .notes .fields-container input[type=text], .notes .fields-container select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 2; + min-width: 50px; + max-width: 200px; + } + .notes .note-text { + height: 100%; + width: 100%; + } + .notes .note-text textarea { + height: -webkit-fill-available; + height: -moz-available; + height: stretch; + width: -webkit-fill-available; + width: -moz-available; + width: stretch; + border-radius: 10px; + background-color: transparent; + color: var(--text); + font-family: "Roboto Sans"; + } + .note-header, .ref-header { + display: flex; + justify-content: space-between; + align-items: center; + } + .note-header h2, .ref-header h2 { + margin: 0; + } + .note-header select, .ref-header select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 2; + min-width: 50px; + max-width: 200px; + margin-right: 3px; + } +}/*# sourceMappingURL=lg-screen-style.css.map */ \ No newline at end of file diff --git a/assets/css/lg-screen-style.css.map b/assets/css/lg-screen-style.css.map new file mode 100644 index 0000000..ab81be7 --- /dev/null +++ b/assets/css/lg-screen-style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["lg-screen-style.scss","lg-screen-style.css"],"names":[],"mappings":"AAAA;EACA;IACC,aAAA;ECCC;EDEF;IACC,aAAA;IACA,kBAAA;ECAC;EDGF;IACC,UAAA;ECDC;EDIF;IACI,UAAA;ECFF;EDKF;IACC,aAAA;IACA,aAAA;IACA,2CAAA;IACA,8BAAA;IACA,YAAA;IACA,mBAAA;IACA,4GACC;IAGD,kDAAA;ECNC;EDQD;IACC,iBAAA;ECNA;EDSD;IACC,aAAA;ECPA;EDUD;IACC,0CAAA;ECRA;EDUA;IACC,OAAA;ECRD;EDaF;IACC,0BAAA;ECXC;EDcF;IACC,aAAA;IACA,sBAAA;IACA,4BAAA;IACA,8BAAA;IACA,YAAA;IACA,mDAAA;IAEA,gBAAA;ECbC;EDeD;IACC,6BAAA;IACA,eAAA;IACA,YAAA;ECbA;EDgBA;IACC,mCAAA;IACA,kBAAA;IACA,aAAA;IACA,qBAAA;IACA,wBAAA;IAEA,gBAAA;IACA,sBAAA;IACA,6BAAA;IACA,UAAA;IACA,cAAA;IACA,qBAAA;IACA,eAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,YAAA;IACA,cAAA;IACA,eAAA;IACA,gBAAA;ECdD;EDkBD;IACC,YAAA;IACA,WAAA;EChBA;EDkBA;IACC,8BAAA;IAAA,sBAAA;IAAA,eAAA;IACA,6BAAA;IAAA,qBAAA;IAAA,cAAA;IACA,mBAAA;IACA,6BAAA;IACA,kBAAA;IACA,0BAAA;EChBD;EDqBF;IACC,aAAA;IACA,8BAAA;IACA,mBAAA;ECnBC;EDqBD;IACC,SAAA;ECnBA;EDsBD;IACC,mCAAA;IACA,kBAAA;IACA,aAAA;IACA,qBAAA;IACA,wBAAA;IAEA,gBAAA;IACA,sBAAA;IACA,6BAAA;IACA,UAAA;IACA,cAAA;IACA,qBAAA;IACA,eAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,YAAA;IACA,cAAA;IACA,eAAA;IACA,gBAAA;IACA,iBAAA;ECpBA;AACF","file":"lg-screen-style.css"} \ No newline at end of file diff --git a/assets/css/lg-screen-style.scss b/assets/css/lg-screen-style.scss new file mode 100644 index 0000000..ce96ad3 --- /dev/null +++ b/assets/css/lg-screen-style.scss @@ -0,0 +1,141 @@ +@media screen and (min-width: 1501px) { +.mobile-note-header { + display: none; +} + +#note-list { + display: none; + overflow-y: scroll +} + +#note-table_wrapper { + width: 97%; +} + +.container #sidebar-link.toggle { + left: 25em; +} + +.container { + display: grid; + height: 100vh; + grid-template-columns: 25em 60px 35% 0.98fr; + grid-template-rows: 60px 100vh; + gap: 5px 5px; + grid-auto-flow: row; + grid-template-areas: + "sidebar-header ref-btn-header ref-header note-header" + "sidebar ref-btn ref-text notes"; + + transition: grid-template-columns 0.5s ease-in-out; + + p { + margin: 0 0 1em 0; + } + + .fields-container { + display: none; + } + + &.sidebar-collapsed { + grid-template-columns: 0px 60px 35% 0.98fr; + + #sidebar-link.toggle { + left: 0; + } + } +} + +.bottom-row { + height: calc(100vh - 75px); +} + +.notes { + display: flex; + flex-direction: column; + grid-template-columns: 100vh; + grid-template-rows: 75px 100vh; + gap: 2px 0px; + grid-template-areas: "fields-container" "note-text"; + + grid-area: notes; + + .fields-container { + justify-content: space-evenly; + flex-wrap: wrap; + width: 99.5%; + // height: 75px; + + input[type="text"], select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 2; + min-width: 50px; + max-width: 200px; + } + } + + .note-text { + height: 100%; + width: 100%; + + textarea { + height: stretch; + width: stretch; + border-radius: 10px; + background-color: transparent; + color: var(--text); + font-family: 'Roboto Sans'; + } + } +} + +.note-header, .ref-header { + display: flex; + justify-content: space-between; + align-items: center; + + h2 { + margin: 0; + } + + select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 2; + min-width: 50px; + max-width: 200px; + margin-right: 3px; + } +} +} diff --git a/assets/css/light-mode.css b/assets/css/light-mode.css new file mode 100644 index 0000000..c96e055 --- /dev/null +++ b/assets/css/light-mode.css @@ -0,0 +1,18 @@ +:root { + --dark: #3d4449; + --primary: #f56a6a; + --light: #f5f6f7; + --medium: #d1d1d1; + --text: var(--dark); + --background: var(--light); + --recording: #00f; + --success: #080; + --warning: orange; + --error: #f00; + --border: var(--primary); + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +}/*# sourceMappingURL=light-mode.css.map */ \ No newline at end of file diff --git a/assets/css/light-mode.css.map b/assets/css/light-mode.css.map new file mode 100644 index 0000000..3a56135 --- /dev/null +++ b/assets/css/light-mode.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["light-mode.scss","light-mode.css"],"names":[],"mappings":"AACA;EACC,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;EACA,0BAAA;EACA,iBAAA;EACA,eAAA;EACA,iBAAA;EACA,aAAA;EACA,wBAAA;EAEA,SAAA;EACA,UAAA;EACA,SAAA;EACA,aAAA;EACA,wBAAA;ACDD","file":"light-mode.css"} \ No newline at end of file diff --git a/assets/css/light-mode.scss b/assets/css/light-mode.scss new file mode 100644 index 0000000..f9cb2fd --- /dev/null +++ b/assets/css/light-mode.scss @@ -0,0 +1,20 @@ +// light mode color scheme +:root { + --dark: #3d4449; + --primary: #f56a6a; + --light: #f5f6f7; + --medium: #d1d1d1; + --text: var(--dark); + --background: var(--light); + --recording: #00f; + --success: #080; + --warning: orange; + --error: #f00; + --border: var(--primary); + + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} diff --git a/assets/css/main.css b/assets/css/main.css index 07d07ba..c3e126e 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -6,7 +6,8 @@ html5up.net | @ajlkn Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) */ -html, + +/*html, body, div, span, @@ -420,8 +421,111 @@ hr.major { text-align: right; } +/* ========================================= + Base & Mobile First (Phones) + ========================================= */ +body { + margin: 0; + height: 100vh; + overflow: hidden; +} + +.inner { + display: flex; + flex-direction: column; + height: 100vh; + width: 100%; + padding-left: 0; /* from your original CSS */ +} + +.ref-tab { + display: none; +} + +.ref { + flex: 1; + display: flex; + flex-direction: column; + padding: 10px; + overflow-y: auto; +} + +.notes { + flex: 1; + display: flex; + flex-direction: column; + padding: 10px; +} + +#note-header-left, +#note-header-right { + /* display: none !important; */ +} + +/* ========================================= + Mobile "Typing Mode" (Keyboard Active) + ========================================= */ +body.typing-mode .ref { + display: none; +} +body.typing-mode .notes { + flex: 1 1 100%; +} + +/* ========================================= + Tablet & Desktop (Pixel Tablet Layout) + ========================================= */ +@media (min-width: 768px) { + .inner { + flex-direction: row; + max-width: 1060px; /* Kept your original width preference */ + margin: 0 auto; + } + + .ref-tab { + display: block; + flex: 0 0 60px; + padding-top: 60px !important; + } + + .ref { + flex: 0 0 36%; + padding: 20px; + } + + .notes { + flex: 1; + padding: 20px; + } + + #note-header-left { + display: inline-flex; + flex-direction: row; + width: 25%; + } + + #note-header-right { + display: inline-flex; + flex-direction: row-reverse; + width: 74%; + } +} + +/* ========================================= + App Specific Styles (DO NOT DELETE BELOW THIS LINE) + ========================================= */ +textarea#notes { + width: 100%; + height: 100%; + font-size: 14pt; + flex-grow: 1; + resize: none; +} + +/* ... the rest of your original style.css continues here (#notePreview, #save-check, modals, etc.) ... */ + /* Row */ -.row { +/* .row { display: flex; flex-wrap: wrap; box-sizing: border-box; @@ -1876,7 +1980,7 @@ hr.major { padding-top: 3em; } } - + */ /* Section/Article */ section.special, article.special { diff --git a/assets/css/mid-screen-style.css b/assets/css/mid-screen-style.css new file mode 100644 index 0000000..271b601 --- /dev/null +++ b/assets/css/mid-screen-style.css @@ -0,0 +1,162 @@ +@media screen and (min-width: 1051px) and (max-width: 1500px) { + :root { + --sidebar-width: 20em; + --sidebar-header-width: 15em; + --hidden-sidebar-width: -20em; + --hidden-sidebar-header-width: -15em; + } + .mobile-note-header, #note-list { + display: none; + } + .container #sidebar-link.toggle { + left: 20em; + } + .container { + position: relative; + height: 100vh; + overflow-x: hidden; + display: grid; + grid-template-columns: 60px 35% 0.95fr; + grid-template-rows: 60px 1fr; + gap: 5px 5px; + grid-auto-flow: row; + grid-template-areas: "ref-btn-header ref-header note-header" "ref-btn ref-text notes"; + } + .container #sidebar-header, .container #sidebar { + position: absolute; + left: 0; + z-index: 10000; + transition: left 0.5s ease-in-out; + box-shadow: 2px 0 10px rgba(0, 0, 0, 0.5); + box-sizing: border-box; + } + .container #sidebar-header { + top: 0; + width: calc(var(--sidebar-header-width) + 40px); + height: 60px; + padding: 0 !important; + overflow: visible !important; + } + .container #sidebar { + top: 61px; + width: var(--sidebar-width); + height: calc(100vh - 61px); + padding: 15px; + } + .container #sidebar .inner { + width: 100%; + } + .container #sidebar-header #search { + padding: 19px; + width: 15em !important; + } + .container #sidebar-link.toggle { + left: calc(var(--sidebar-header-width) + 40px); + } + .container.sidebar-collapsed #sidebar { + left: var(--hidden-sidebar-width); + box-shadow: none; + } + .container.sidebar-collapsed #sidebar-header { + left: calc(var(--hidden-sidebar-header-width) - 40px); + box-shadow: none; + } + .container .fields-container { + display: none; + } + .bottom-row { + height: calc(100vh - 75px); + } + .notes { + display: flex; + flex-direction: column; + grid-template-columns: 1fr; + grid-template-rows: 75px 1fr; + gap: 2px 0px; + grid-template-areas: "fields-container" "note-text"; + grid-area: notes; + } + .notes .fields-container { + justify-content: space-evenly; + flex-wrap: wrap; + width: 99.5%; + } + .notes .fields-container input[type=text], .notes .fields-container select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + min-width: 50px; + max-width: 200px; + } + .notes .note-text { + height: 100%; + width: 98.5%; + } + .notes .note-text textarea { + height: -webkit-fill-available; + height: -moz-available; + height: stretch; + width: 95.5%; + border-radius: 10px; + background-color: transparent; + color: var(--text); + font-family: "Roboto Sans"; + } + .note-header, .ref-header { + display: flex; + justify-content: space-between; + align-items: center; + } + .note-header h2, .ref-header h2 { + margin: 0; + } + .note-header select, .ref-header select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 2; + min-width: 50px; + max-width: 200px; + margin-right: 3px; + } + input#query { + font-size: 10pt !important; + padding: 0 !important; + } + #old-notes { + padding: 15px !important; + } + #menu { + padding: 15px !important; + } + #sidebar header.major { + margin: 0 15px !important; + } +}/*# sourceMappingURL=mid-screen-style.css.map */ \ No newline at end of file diff --git a/assets/css/mid-screen-style.css.map b/assets/css/mid-screen-style.css.map new file mode 100644 index 0000000..4f029f0 --- /dev/null +++ b/assets/css/mid-screen-style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["mid-screen-style.scss","mid-screen-style.css"],"names":[],"mappings":"AAAA;EACA;IACC,qBAAA;IACA,4BAAA;IACA,6BAAA;IACA,oCAAA;ECCC;EDEF;IACC,aAAA;ECAC;EDGF;IACI,UAAA;ECDF;EDIF;IACC,kBAAA;IACA,aAAA;IACA,kBAAA;IAEA,aAAA;IACA,sCAAA;IACA,4BAAA;IACA,YAAA;IACA,mBAAA;IACA,qFACC;ECJA;EDOD;IACC,kBAAA;IACA,OAAA;IACA,cAAA;IACA,iCAAA;IACA,yCAAA;IAEA,sBAAA;ECNA;EDSD;IACC,MAAA;IACA,+CAAA;IACA,YAAA;IACA,qBAAA;IACA,4BAAA;ECPA;EDUD;IACC,SAAA;IACA,2BAAA;IACA,0BAAA;IACA,aAAA;ECRA;EDUA;IACC,WAAA;ECRD;EDYD;IACC,aAAA;IACA,sBAAA;ECVA;EDaD;IACC,8CAAA;ECXA;EDeA;IACC,iCAAA;IACA,gBAAA;ECbD;EDgBA;IACC,qDAAA;IACA,gBAAA;ECdD;EDkBD;IACC,aAAA;EChBA;EDoBF;IACC,0BAAA;EClBC;EDqBF;IACC,aAAA;IACA,sBAAA;IACA,0BAAA;IACA,4BAAA;IACA,YAAA;IACA,mDAAA;IAEA,gBAAA;ECpBC;EDsBD;IACC,6BAAA;IACA,eAAA;IACA,YAAA;ECpBA;EDuBA;IACC,mCAAA;IACA,kBAAA;IACA,aAAA;IACA,qBAAA;IACA,wBAAA;IAEA,gBAAA;IACA,sBAAA;IACA,6BAAA;IACA,UAAA;IACA,cAAA;IACA,qBAAA;IACA,eAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,YAAA;IACA,cAAA;IACA,eAAA;IACA,gBAAA;ECrBD;EDyBD;IACC,YAAA;IACA,YAAA;ECvBA;EDyBA;IACC,8BAAA;IAAA,sBAAA;IAAA,eAAA;IACA,YAAA;IACA,mBAAA;IACA,6BAAA;IACA,kBAAA;IACA,0BAAA;ECvBD;ED4BF;IACC,aAAA;IACA,8BAAA;IACA,mBAAA;EC1BC;ED4BD;IACC,SAAA;EC1BA;ED6BD;IACC,mCAAA;IACA,kBAAA;IACA,aAAA;IACA,qBAAA;IACA,wBAAA;IAEA,gBAAA;IACA,sBAAA;IACA,6BAAA;IACA,UAAA;IACA,cAAA;IACA,qBAAA;IACA,eAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,YAAA;IACA,cAAA;IACA,eAAA;IACA,gBAAA;IACA,iBAAA;EC3BA;ED+BF;IACC,0BAAA;IACA,qBAAA;EC7BC;EDgCF;IACC,wBAAA;EC9BC;EDiCF;IACC,wBAAA;EC/BC;EDkCF;IACC,yBAAA;EChCC;AACF","file":"mid-screen-style.css"} \ No newline at end of file diff --git a/assets/css/mid-screen-style.scss b/assets/css/mid-screen-style.scss new file mode 100644 index 0000000..01a1502 --- /dev/null +++ b/assets/css/mid-screen-style.scss @@ -0,0 +1,195 @@ +@media screen and (min-width: 1051px) and (max-width: 1500px) { +:root { + --sidebar-width: 20em; + --sidebar-header-width: 15em; + --hidden-sidebar-width: -20em; + --hidden-sidebar-header-width: -15em; +} + +.mobile-note-header, #note-list { + display: none; +} + +.container #sidebar-link.toggle { + left: 20em; +} + +.container { + position: relative; + height: 100vh; + overflow-x: hidden; + + display: grid; + grid-template-columns: 60px 35% 0.95fr; + grid-template-rows: 60px 1fr; + gap: 5px 5px; + grid-auto-flow: row; + grid-template-areas: + "ref-btn-header ref-header note-header" + "ref-btn ref-text notes"; + + #sidebar-header, #sidebar { + position: absolute; + left: 0; + z-index: 10000; + transition: left 0.5s ease-in-out; + box-shadow: 2px 0 10px rgba(0, 0, 0, 0.5); + //display: block; + box-sizing: border-box; + } + + #sidebar-header { + top: 0; + width: calc(var(--sidebar-header-width) + 40px); + height: 60px; + padding: 0 !important; + overflow: visible !important; + } + + #sidebar { + top: 61px; + width: var(--sidebar-width); + height: calc(100vh - 61px); + padding: 15px; + + .inner { + width: 100%; + } + } + + #sidebar-header #search { + padding: 19px; + width: 15em !important; + } + + #sidebar-link.toggle { + left: calc(var(--sidebar-header-width) + 40px); + } + + &.sidebar-collapsed { + #sidebar { + left: var(--hidden-sidebar-width); + box-shadow: none; + } + + #sidebar-header { + left: calc(var(--hidden-sidebar-header-width) - 40px); + box-shadow: none; + } + } + + .fields-container { + display: none; + } +} + +.bottom-row { + height: calc(100vh - 75px); +} + +.notes { + display: flex; + flex-direction: column; + grid-template-columns: 1fr; + grid-template-rows: 75px 1fr; + gap: 2px 0px; + grid-template-areas: "fields-container" "note-text"; + + grid-area: notes; + + .fields-container { + justify-content: space-evenly; + flex-wrap: wrap; + width: 99.5%; + // height: 75px; + + input[type="text"], select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + min-width: 50px; + max-width: 200px; + } + } + + .note-text { + height: 100%; + width: 98.5%; + + textarea { + height: stretch; + width: 95.5%; + border-radius: 10px; + background-color: transparent; + color: var(--text); + font-family: 'Roboto Sans'; + } + } +} + +.note-header, .ref-header { + display: flex; + justify-content: space-between; + align-items: center; + + h2 { + margin: 0; + } + + select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--dark); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 2; + min-width: 50px; + max-width: 200px; + margin-right: 3px; + } +} + +input#query { + font-size: 10pt !important; + padding: 0 !important; +} + +#old-notes { + padding: 15px !important; +} + +#menu { + padding: 15px !important; +} + +#sidebar header.major { + margin: 0 15px !important; +} +} diff --git a/assets/css/mobile-style.css b/assets/css/mobile-style.css new file mode 100644 index 0000000..946112f --- /dev/null +++ b/assets/css/mobile-style.css @@ -0,0 +1,97 @@ +@media screen and (max-width: 1050px) { + #sidebar { + display: none; + } + .note-header, #note-list, .ref-header, .ref-btn-header, .ref-btn, .fields-container { + display: none; + } + .container { + display: grid; + height: 100vh; + width: 100vw; + grid-template-columns: 1fr; + grid-template-rows: 50px 50% 1fr; + gap: 5px 0; + grid-auto-flow: column; + grid-template-areas: "mobile-note-header" "notes" "ref-text"; + } + .container .ref-text { + height: 100%; + width: 98vw; + margin-left: 1vw; + } + .container .ref-text a { + color: var(--primary); + } + .ref-header, .ref-btn-header, .ref-btn, .note-header, .fields-container { + display: none; + } + .mobile-note-header { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + .mobile-note-header h2 { + margin: 0 10px; + } + .mobile-note-header button { + margin: 0 10px; + } + .notes { + width: 98vw; + margin-left: 1vw; + display: flex; + flex-direction: column; + grid-template-columns: 1fr; + grid-template-rows: 1fr 50px; + gap: 2px 0; + grid-template-areas: "note-text" "fields-container"; + grid-area: notes; + } + .notes .fields-container { + justify-content: space-between; + flex-wrap: wrap; + width: 99.5%; + } + .notes .fields-container input[type=text], .notes .fields-container select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--border); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + min-width: 50px; + max-width: 200px; + } + .notes .note-text { + height: 100%; + width: 100%; + } + .notes .note-text textarea { + height: 100%; + width: 98%; + border-radius: 10px; + background-color: transparent; + color: var(--text); + font-family: "Roboto Sans"; + padding: 0 5px; + } + #sidebar { + position: fixed !important; + } + #refQuery { + height: 150px !important; + } +}/*# sourceMappingURL=mobile-style.css.map */ \ No newline at end of file diff --git a/assets/css/mobile-style.css.map b/assets/css/mobile-style.css.map new file mode 100644 index 0000000..575334d --- /dev/null +++ b/assets/css/mobile-style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["mobile-style.scss","mobile-style.css"],"names":[],"mappings":"AAAA;EACA;IACC,aAAA;ECCC;EDEF;IACC,aAAA;ECAC;EDGF;IACC,aAAA;IACA,aAAA;IACA,YAAA;IACA,0BAAA;IACA,gCAAA;IACA,UAAA;IACA,sBAAA;IACA,4DACC;ECFA;EDMD;IACC,YAAA;IACA,WAAA;IACA,gBAAA;ECJA;EDMA;IACC,qBAAA;ECJD;EDSF;IACC,aAAA;ECPC;EDUF;IACC,aAAA;IACA,mBAAA;IACA,8BAAA;IACA,mBAAA;ECRC;EDUD;IACC,cAAA;ECRA;EDWD;IACC,cAAA;ECTA;EDaF;IACC,WAAA;IACA,gBAAA;IAEA,aAAA;IACA,sBAAA;IACA,0BAAA;IACA,4BAAA;IACA,UAAA;IACA,mDAAA;IAEA,gBAAA;ECbC;EDeD;IACC,8BAAA;IACA,eAAA;IACA,YAAA;ECbA;EDeA;IACC,mCAAA;IACA,kBAAA;IACA,aAAA;IACA,qBAAA;IACA,wBAAA;IAEA,gBAAA;IACA,sBAAA;IACA,+BAAA;IACA,UAAA;IACA,cAAA;IACA,qBAAA;IACA,eAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,YAAA;IACA,cAAA;IACA,eAAA;IACA,gBAAA;ECbD;EDiBD;IACC,YAAA;IACA,WAAA;ECfA;EDiBA;IACC,YAAA;IACA,UAAA;IACA,mBAAA;IACA,6BAAA;IACA,kBAAA;IACA,0BAAA;IACA,cAAA;ECfD;EDoBF;IACC,0BAAA;EClBC;EDqBF;IACC,wBAAA;ECnBC;AACF","file":"mobile-style.css"} \ No newline at end of file diff --git a/assets/css/mobile-style.scss b/assets/css/mobile-style.scss new file mode 100644 index 0000000..3958b2e --- /dev/null +++ b/assets/css/mobile-style.scss @@ -0,0 +1,118 @@ +@media screen and (max-width: 1050px) { +#sidebar { + display: none; +} + +.note-header, #note-list, .ref-header, .ref-btn-header, .ref-btn, .fields-container { + display: none; +} + +.container { + display: grid; + height: 100vh; + width: 100vw; + grid-template-columns: 1fr; + grid-template-rows: 50px 50% 1fr; + gap: 5px 0; + grid-auto-flow: column; + grid-template-areas: + "mobile-note-header" + "notes" + "ref-text"; + + .ref-text { + height: 100%; + width: 98vw; + margin-left: 1vw; + + & a { + color: var(--primary); + } + } +} + +.ref-header, .ref-btn-header, .ref-btn, .note-header, .fields-container { + display: none; +} + +.mobile-note-header { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + + h2 { + margin: 0 10px; + } + + button { + margin: 0 10px; + } +} + +.notes { + width: 98vw; + margin-left: 1vw; + + display: flex; + flex-direction: column; + grid-template-columns: 1fr; + grid-template-rows: 1fr 50px; + gap: 2px 0; + grid-template-areas: "note-text" "fields-container"; + + grid-area: notes; + + .fields-container { + justify-content: space-between; + flex-wrap: wrap; + width: 99.5%; + + input[type="text"], select { + background-color: var(--background); + color: var(--text); + height: 1.5em; + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border-radius: 0.375em; + border: solid 1px var(--border); + outline: 0; + padding: 0 1em; + text-decoration: none; + font-size: 14pt; + font-weight: 400; + line-height: 1.65; + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + min-width: 50px; + max-width: 200px; + } + } + + .note-text { + height: 100%; + width: 100%; + + textarea { + height: 100%; + width: 98%; + border-radius: 10px; + background-color: transparent; + color: var(--text); + font-family: 'Roboto Sans'; + padding: 0 5px; + } + } +} + +#sidebar { + position: fixed !important; +} + +#refQuery { + height: 150px !important; +} +} \ No newline at end of file diff --git a/assets/css/sidebar-style.css b/assets/css/sidebar-style.css new file mode 100644 index 0000000..0a4f4e5 --- /dev/null +++ b/assets/css/sidebar-style.css @@ -0,0 +1,198 @@ +/** + * Sidebar + */ +#sidebar-header { + grid-area: sidebar-header; + background-color: var(--background); + overflow: hidden; + min-width: 0; + padding: 10px; +} +#sidebar-header #search { + width: 90%; +} + +#sidebar { + grid-area: sidebar; + top: 0; + z-index: 10000; + overflow-y: auto; + min-width: 0; + border-right: solid 2px var(--border); + height: calc(100vh - 60px); + background-color: var(--background); + color: var(--text); + font-size: 0.9em; + position: relative; + overflow-x: hidden; +} +#sidebar .inner { + width: 25em; +} + +#sidebar h2 { + font-size: 1.38889em; + text-align: center; + display: block; +} + +.container #sidebar-link.toggle { + position: absolute; + top: 0; + width: 60px; + height: 60px; + line-height: 60px; + z-index: 10001; + transition: left 0.5s ease-in-out; + background-color: var(--background); + text-decoration: none; + border: 0; + overflow: hidden; + text-indent: -9999px; +} +.container #sidebar-link.toggle:before { + content: "\f0c9"; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + text-align: center; + text-indent: 0; + font-size: 2rem; + color: var(--text); +} + +#menu { + padding: 25px; +} + +#menu a { + color: var(--text); +} + +#menu ul { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + font-family: "Roboto Slab", serif; + font-weight: 400; + letter-spacing: 0.075em; + list-style: none; + padding: 0; + text-transform: uppercase; +} + +#menu ul li { + border-top: solid 1px var(--medium); + margin: 0.5em 0 0 0; + padding: 0.5em 0 0 0; +} + +#menu ul li:first-child { + border-top: 0; + margin-top: 0; + padding-top: 0; +} + +#menu ul a { + border-bottom: 0; + color: inherit; + cursor: pointer; + display: block; + font-size: 0.9em; + padding: 0.625em 0; + text-decoration: none; +} + +input#query { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: var(--background); + border-radius: 0.375em; + border: solid 1px var(--medium); + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 90%; + font-weight: 400; + line-height: 1.65; + font-size: 14pt; + height: 1.5em; +} + +#sidebar header.major { + border-bottom: solid 3px var(--border); + border-top: solid 3px var(--border); + display: block; + padding: 10px 0; + text-align: center; + margin: 0 25px; +} + +#old-notes { + padding: 25px; +} + +.mini-posts article { + display: block; + width: 100%; + margin-bottom: 1em; + border-top: solid 1px var(--medium); + padding-top: 1em; +} +.mini-posts article a { + font-size: 12pt; + border-bottom: dotted 1px; + color: var(--primary); + text-decoration: none; + cursor: pointer; +} +.mini-posts article p:last-child { + font-size: 12pt; + text-indent: 0; + margin-top: 0; +} + +.mini-posts article:first-child { + border-top: 0; + margin-top: 1em; + padding-top: 0; +} + +.mini-posts article:last-child { + border-bottom: 0; + margin-bottom: 1em; + padding-bottom: 0; +} + +#old-notes article p:first-child { + margin-bottom: 0; + font-size: 10pt; + text-indent: 0; +} + +ul.contact { + list-style: none; + padding: 0; +} +ul.contact li:before { + font-family: "Font Awesome 5 Free"; + color: var(--text); + font-weight: 900; + display: inline-block; + font-size: 1.5em; + height: 1.125em; + position: absolute; + text-align: center; + width: 1.5em; +} +ul.contact a { + color: var(--primary); + margin-left: 35px; +}/*# sourceMappingURL=sidebar-style.css.map */ \ No newline at end of file diff --git a/assets/css/sidebar-style.css.map b/assets/css/sidebar-style.css.map new file mode 100644 index 0000000..4d838cf --- /dev/null +++ b/assets/css/sidebar-style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["sidebar-style.scss","sidebar-style.css"],"names":[],"mappings":"AAAA;;EAAA;AAIA;EACI,yBAAA;EACA,mCAAA;EACA,gBAAA;EACA,YAAA;EACA,aAAA;ACAJ;ADEI;EACI,UAAA;ACAR;;ADIA;EACI,kBAAA;EACA,MAAA;EACA,cAAA;EACA,gBAAA;EACA,YAAA;EACA,qCAAA;EACA,0BAAA;EAEA,mCAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,kBAAA;ACFJ;ADII;EACI,WAAA;ACFR;;ADMA;EACI,oBAAA;EACA,kBAAA;EACA,cAAA;ACHJ;;ADMA;EACI,kBAAA;EACA,MAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,cAAA;EACA,iCAAA;EACA,mCAAA;EACA,qBAAA;EACA,SAAA;EACA,gBAAA;EACA,oBAAA;ACHJ;ADKI;EACI,gBAAA;EACA,kCAAA;EACA,gBAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;ACHR;;ADOA;EACI,aAAA;ACJJ;;ADOA;EACI,kBAAA;ACJJ;;ADOA;EACC,yBAAA;KAAA,sBAAA;UAAA,iBAAA;EACA,iCAAA;EACA,gBAAA;EACA,uBAAA;EACA,gBAAA;EACA,UAAA;EACA,yBAAA;ACJD;;ADOA;EACC,mCAAA;EACA,mBAAA;EACA,oBAAA;ACJD;;ADOA;EACC,aAAA;EACA,aAAA;EACA,cAAA;ACJD;;ADOA;EACC,gBAAA;EACA,cAAA;EACA,eAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;EACG,qBAAA;ACJJ;;ADOA;EACI,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,6BAAA;EACA,sBAAA;EACA,+BAAA;EACA,cAAA;EACA,cAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,UAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,aAAA;ACJJ;;ADOA;EACI,sCAAA;EACA,mCAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;ACJJ;;ADOA;EACI,aAAA;ACJJ;;ADOA;EACI,cAAA;EACA,WAAA;EACA,kBAAA;EAEA,mCAAA;EACA,gBAAA;ACLJ;ADOI;EACI,eAAA;EACA,yBAAA;EACA,qBAAA;EACA,qBAAA;EACA,eAAA;ACLR;ADQI;EACI,eAAA;EACA,cAAA;EACA,aAAA;ACNR;;ADUA;EACI,aAAA;EACA,eAAA;EACA,cAAA;ACPJ;;ADUA;EACI,gBAAA;EACA,kBAAA;EACA,iBAAA;ACPJ;;ADUA;EACI,gBAAA;EACA,eAAA;EACA,cAAA;ACPJ;;ADUA;EACI,gBAAA;EACA,UAAA;ACPJ;ADSI;EACI,kCAAA;EACA,kBAAA;EACA,gBAAA;EACA,qBAAA;EACA,gBAAA;EACA,eAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;ACPR;ADUI;EACI,qBAAA;EACA,iBAAA;ACRR","file":"sidebar-style.css"} \ No newline at end of file diff --git a/assets/css/sidebar-style.scss b/assets/css/sidebar-style.scss new file mode 100644 index 0000000..b6776aa --- /dev/null +++ b/assets/css/sidebar-style.scss @@ -0,0 +1,204 @@ +/** + * Sidebar + */ + +#sidebar-header { + grid-area: sidebar-header; + background-color: var(--background); + overflow: hidden; + min-width: 0; + padding: 10px; + + #search { + width: 90%; + } +} + +#sidebar { + grid-area: sidebar; + top: 0; + z-index: 10000; + overflow-y: auto; + min-width: 0; + border-right: solid 2px var(--border); + height: calc(100vh - 60px); + + background-color: var(--background); + color: var(--text); + font-size: 0.9em; + position: relative; + overflow-x: hidden; + + .inner { + width: 25em; + } +} + +#sidebar h2 { + font-size: 1.38889em; + text-align: center; + display: block; +} + +.container #sidebar-link.toggle { + position: absolute; + top: 0; + width: 60px; + height: 60px; + line-height: 60px; + z-index: 10001; + transition: left 0.5s ease-in-out; + background-color: var(--background); + text-decoration: none; + border: 0; + overflow: hidden; + text-indent: -9999px; + + &:before { + content: '\f0c9'; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + text-align: center; + text-indent: 0; + font-size: 2rem; + color: var(--text); + } +} + +#menu { + padding: 25px; +} + +#menu a { + color: var(--text); +} + +#menu ul { + user-select: none; + font-family: "Roboto Slab", serif; + font-weight: 400; + letter-spacing: 0.075em; + list-style: none; + padding: 0; + text-transform: uppercase; +} + +#menu ul li { + border-top: solid 1px var(--medium); + margin: 0.5em 0 0 0; + padding: 0.5em 0 0 0; +} + +#menu ul li:first-child { + border-top: 0; + margin-top: 0; + padding-top: 0; +} + +#menu ul a { + border-bottom: 0; + color: inherit; + cursor: pointer; + display: block; + font-size: 0.9em; + padding: 0.625em 0; + text-decoration: none; +} + +input#query { + appearance: none; + background: var(--background); + border-radius: 0.375em; + border: solid 1px var(--medium); + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 90%; + font-weight: 400; + line-height: 1.65; + font-size: 14pt; + height: 1.5em; +} + +#sidebar header.major { + border-bottom: solid 3px var(--border); + border-top: solid 3px var(--border); + display: block; + padding: 10px 0; + text-align: center; + margin: 0 25px; +} + +#old-notes { + padding: 25px; +} + +.mini-posts article { + display: block; + width: 100%; + margin-bottom: 1em; + + border-top: solid 1px var(--medium); + padding-top: 1em; + + a { + font-size: 12pt; + border-bottom: dotted 1px; + color: var(--primary); + text-decoration: none; + cursor: pointer; + } + + p:last-child { + font-size: 12pt; + text-indent: 0; + margin-top: 0; + } +} + +.mini-posts article:first-child { + border-top: 0; + margin-top: 1em; + padding-top: 0; +} + +.mini-posts article:last-child { + border-bottom: 0; + margin-bottom: 1em; + padding-bottom: 0; +} + +#old-notes article p:first-child { + margin-bottom: 0; + font-size: 10pt; + text-indent: 0; +} + +ul.contact { + list-style: none; + padding: 0; + + li:before { + font-family: 'Font Awesome 5 Free'; + color: var(--text); + font-weight: 900; + display: inline-block; + font-size: 1.5em; + height: 1.125em; + position: absolute; + text-align: center; + width: 1.5em; + } + + a { + color: var(--primary); + margin-left: 35px; + } +} \ No newline at end of file diff --git a/assets/css/styles.css b/assets/css/styles.css new file mode 100644 index 0000000..1f86b40 --- /dev/null +++ b/assets/css/styles.css @@ -0,0 +1,263 @@ +@import url(mobile-style.css); +@import url(mid-screen-style.css); +@import url(lg-screen-style.css); +@import url(sidebar-style.css); +@import url(fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,400italic,600italic|Roboto+Slab:400,700"); +/* Global style settings */ +#previewBtn.active, +#show-hide-btn.active, +.ref-list button.active, +#open-ref.active, +#mobile-open-ref.active { + background-color: var(--primary) !important; + color: var(--light) !important; +} + +input:focus { + border-color: var(--primary); +} + +#save-check { + color: var(--success); + opacity: 0; + font-size: 20pt; + margin-left: 15px; +} +#save-check.saving { + color: var(--warning); + opacity: 1; +} +#save-check.error { + color: var(--error); + opacity: 1; +} + +#ui-datepicker-div { + z-index: 11 !important; +} + +body { + font-family: "Roboto Slab", "Open Sans", sans-serif !important; + background-color: var(--background); + color: var(--text); + margin: 0; + padding: 0; +} + +h1, h2, h3, h4, h5, h6 { + color: var(--text); + font-family: "Roboto Slab", serif; + font-weight: 700; + line-height: 1.5; + margin: 0 0 1.5em 0; +} + +h2 { + font-size: 1.5em; + display: inline-block; +} + +.tab button { + display: flex; + justify-content: center; + align-items: center; + height: 80px; + width: 60px; + text-align: center; + font-size: 14px; + margin-bottom: 3px; +} + +button, +.button { + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: transparent; + border-radius: 0.5em; + border: 0; + box-shadow: inset 0 0 0 2px var(--primary); + color: var(--primary) !important; + cursor: pointer; + display: inline-block; + font-family: "Roboto Slab", serif; + font-size: 0.8em; + font-weight: 700; + height: 3em; + letter-spacing: 0.075em; + line-height: 3em; + padding: 0 2em; + text-align: center; + text-decoration: none; + text-transform: uppercase; + white-space: nowrap; +} + +button.button i { + font-size: 1.5em; +} + +.input-warning { + border: solid 2px var(--warning) !important; +} + +.input-error { + border: solid 2px var(--error) !important; +} + +.ref-btn-header { + grid-area: ref-btn-header; +} + +.ref-btn { + grid-area: ref-btn; +} +.ref-btn .ref-list { + display: flex; + flex-direction: column; + align-items: start; + height: calc(100vh - 80px); + padding: 1px; + margin: 1px; + list-style: none; +} + +.ref-text { + grid-area: ref-text; + display: block; + overflow-y: scroll; + border: var(--border) solid 1px; + border-radius: 10px; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); + z-index: 1; +} +.ref-text h2 { + display: block; +} + +#refQuery { + position: fixed; + background-color: var(--background); + z-index: 999; + width: 400px; + height: 200px; + border: solid 2px var(--border); + border-radius: 10px; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); + margin: 10px 50px; + padding: 5px; +} + +#chapter-range, #verse-range { + color: var(--text); +} + +.note-header { + grid-area: note-header; +} + +.notes { + z-index: 10; +} + +#notePreview { + display: none; + z-index: 9; +} + +.ref-header { + grid-area: ref-header; +} + +/** drowndown button */ +.dropdown { + position: relative; +} + +.dropdown select { + background-color: var(--background); + color: var(--text); +} +.dropdown select option:hover { + background-color: var(--primary); + color: var(--text); +} + +/* slider switch */ +/* The switch - the box around the slider */ +.switch { + position: relative; + display: inline-block; + width: 42px; + height: 24px; +} + +/* Hide default HTML checkbox */ +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +/* The slider */ +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: 0.5s; +} + +.slider:before { + position: absolute; + content: ""; + height: 18px; + width: 18px; + left: 3px; + bottom: 3px; + background-color: white; + transition: 0.5s; +} + +input:checked + .slider { + background-color: var(--primary); +} + +input:focus + .slider { + box-shadow: 0 0 1px var(--primary); +} + +input:checked + .slider:before { + transform: translateX(18px); +} + +/* Rounded sliders */ +.slider.round { + border-radius: 24px; +} + +.slider.round:before { + border-radius: 50%; +} + +#refQuery, #passage-popup, #modal-backdrop, #modal-container { + display: none; +} + +h2.dirty { + color: darkorange; +} + +textarea { + padding: 0.75em 1em; +} + +#note-table a, #note-table a:active { + color: var(--text); + cursor: pointer; +}/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/assets/css/styles.css.map b/assets/css/styles.css.map new file mode 100644 index 0000000..1289f44 --- /dev/null +++ b/assets/css/styles.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["styles.scss","styles.css"],"names":[],"mappings":"AAAQ,6BAAA;AACA,iCAAA;AACA,gCAAA;AACA,8BAAA;AAEA,oCAAA;AACA,gHAAA;AACR,0BAAA;AAEA;;;;;EAKE,2CAAA;EACA,8BAAA;ACDF;;ADIA;EACC,4BAAA;ACDD;;ADIA;EACC,qBAAA;EACA,UAAA;EACA,eAAA;EACA,iBAAA;ACDD;ADGC;EACC,qBAAA;EACA,UAAA;ACDF;ADIC;EACC,mBAAA;EACA,UAAA;ACFF;;ADMA;EACC,sBAAA;ACHD;;ADMA;EACE,8DAAA;EACA,mCAAA;EACA,kBAAA;EACA,SAAA;EACA,UAAA;ACHF;;ADMA;EACC,kBAAA;EACA,iCAAA;EACA,gBAAA;EACA,gBAAA;EACA,mBAAA;ACHD;;ADKA;EACC,gBAAA;EACA,qBAAA;ACFD;;ADKA;EACE,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,eAAA;EACA,kBAAA;ACFF;;ADKA;;EAEC,qBAAA;EACA,wBAAA;EAEA,gBAAA;EAIA,qEAAA;EACA,6BAAA;EACA,oBAAA;EACA,SAAA;EACA,0CAAA;EACA,gCAAA;EACA,eAAA;EACA,qBAAA;EACA,iCAAA;EACA,gBAAA;EACA,gBAAA;EACA,WAAA;EACA,uBAAA;EACA,gBAAA;EACA,cAAA;EAGA,kBAAA;EACA,qBAAA;EACA,yBAAA;EACA,mBAAA;ACJD;;ADOA;EACC,gBAAA;ACJD;;ADOA;EACC,2CAAA;ACJD;;ADOA;EACC,yCAAA;ACJD;;ADOA;EAAkB,yBAAA;ACHlB;;ADKA;EACC,kBAAA;ACFD;ADIC;EACC,aAAA;EACA,sBAAA;EACA,kBAAA;EACA,0BAAA;EACA,YAAA;EACA,WAAA;EACA,gBAAA;ACFF;;ADMA;EACC,mBAAA;EAEA,cAAA;EACA,kBAAA;EAEA,+BAAA;EACA,mBAAA;EACA,0CAAA;EACA,UAAA;ACLD;ADQC;EACC,cAAA;ACNF;;ADUA;EACC,eAAA;EACA,mCAAA;EACA,YAAA;EACA,YAAA;EACA,aAAA;EACA,+BAAA;EACA,mBAAA;EACA,0CAAA;EACA,iBAAA;EACA,YAAA;ACPD;;ADUA;EACC,kBAAA;ACPD;;ADUA;EACC,sBAAA;ACPD;;ADUA;EACC,WAAA;ACPD;;ADUA;EACC,aAAA;EACA,UAAA;ACPD;;ADUA;EACC,qBAAA;ACPD;;ADUA,sBAAA;AACA;EACC,kBAAA;ACPD;;ADWA;EACC,mCAAA;EACA,kBAAA;ACRD;ADUC;EACC,gCAAA;EACA,kBAAA;ACRF;;ADYA,kBAAA;AACA,2CAAA;AACA;EACE,kBAAA;EACA,qBAAA;EACA,WAAA;EACA,YAAA;ACTF;;ADYA,+BAAA;AACA;EACE,UAAA;EACA,QAAA;EACA,SAAA;ACTF;;ADYA,eAAA;AACA;EACE,kBAAA;EACA,eAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,sBAAA;EAEA,gBAAA;ACTF;;ADYA;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,SAAA;EACA,WAAA;EACA,uBAAA;EAEA,gBAAA;ACTF;;ADYA;EACE,gCAAA;ACTF;;ADYA;EACE,kCAAA;ACTF;;ADYA;EAGE,2BAAA;ACTF;;ADYA,oBAAA;AACA;EACE,mBAAA;ACTF;;ADYA;EACE,kBAAA;ACTF;;ADYA;EACC,aAAA;ACTD;;ADYA;EACE,iBAAA;ACTF;;ADYA;EACC,mBAAA;ACTD;;ADYA;EACC,kBAAA;EACA,eAAA;ACTD","file":"styles.css"} \ No newline at end of file diff --git a/assets/css/styles.scss b/assets/css/styles.scss new file mode 100644 index 0000000..1ee784c --- /dev/null +++ b/assets/css/styles.scss @@ -0,0 +1,281 @@ +@import url(mobile-style.css); +@import url(mid-screen-style.css); +@import url(lg-screen-style.css); +@import url(sidebar-style.css); +// Set up the global font styles +@import url(fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,400italic,600italic|Roboto+Slab:400,700"); +/* Global style settings */ + +#previewBtn.active, +#show-hide-btn.active, +.ref-list button.active, +#open-ref.active, +#mobile-open-ref.active { + background-color: var(--primary) !important; + color: var(--light) !important; +} + +input:focus { + border-color: var(--primary); +} + +#save-check { + color: var(--success); + opacity: 0; + font-size: 20pt; + margin-left: 15px; + + &.saving { + color: var(--warning); + opacity: 1; + } + + &.error { + color: var(--error); + opacity: 1; + } +} + +#ui-datepicker-div { + z-index: 11 !important; +} + +body { + font-family: 'Roboto Slab', 'Open Sans', sans-serif !important; + background-color: var(--background); + color: var(--text); + margin: 0; + padding: 0; +} + +h1, h2, h3, h4, h5, h6 { + color: var(--text); + font-family: 'Roboto Slab', serif; + font-weight: 700; + line-height: 1.5; + margin: 0 0 1.5em 0; +} +h2 { + font-size: 1.5em; + display: inline-block; +} + +.tab button { + display: flex; + justify-content: center; + align-items: center; + height: 80px; + width: 60px; + text-align: center; + font-size: 14px; + margin-bottom: 3px; +} + +button, +.button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: transparent; + border-radius: 0.5em; + border: 0; + box-shadow: inset 0 0 0 2px var(--primary); + color: var(--primary) !important; + cursor: pointer; + display: inline-block; + font-family: "Roboto Slab", serif; + font-size: 0.8em; + font-weight: 700; + height: 3em; + letter-spacing: 0.075em; + line-height: 3em; + padding: 0 2em; + // min-width: 30px; + // max-width: 60px; + text-align: center; + text-decoration: none; + text-transform: uppercase; + white-space: nowrap; +} + +button.button i { + font-size: 1.5em; +} + +.input-warning { + border: solid 2px var(--warning) !important; +} + +.input-error { + border: solid 2px var(--error) !important; +} + +.ref-btn-header { grid-area: ref-btn-header; } + +.ref-btn { + grid-area: ref-btn; + + .ref-list { + display: flex; + flex-direction: column; + align-items: start; + height: calc(100vh - 80px); + padding: 1px; + margin: 1px; + list-style: none; + } +} + +.ref-text { + grid-area: ref-text; + + display: block; + overflow-y: scroll; + // width: 100%; + border: var(--border) solid 1px; + border-radius: 10px; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); + z-index: 1; + // position: relative; + + h2 { + display: block; + } +} + +#refQuery { + position: fixed; + background-color: var(--background); + z-index: 999; + width: 400px; + height: 200px; + border: solid 2px var(--border); + border-radius: 10px; + box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3); + margin: 10px 50px; + padding: 5px; +} + +#chapter-range, #verse-range { + color: var(--text); +} + +.note-header { + grid-area: note-header; +} + +.notes { + z-index: 10; +} + +#notePreview { + display: none; + z-index: 9; +} + +.ref-header { + grid-area: ref-header; +} + +/** drowndown button */ +.dropdown { + position: relative; + // height: 20px; +} + +.dropdown select { + background-color: var(--background); + color: var(--text); + + option:hover { + background-color: var(--primary); + color: var(--text); + } +} + +/* slider switch */ +/* The switch - the box around the slider */ +.switch { + position: relative; + display: inline-block; + width: 42px; + height: 24px; +} + +/* Hide default HTML checkbox */ +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +/* The slider */ +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .5s; + transition: .5s; +} + +.slider:before { + position: absolute; + content: ""; + height: 18px; + width: 18px; + left: 3px; + bottom: 3px; + background-color: white; + -webkit-transition: 0.5s; + transition: 0.5s; +} + +input:checked + .slider { + background-color: var(--primary); +} + +input:focus + .slider { + box-shadow: 0 0 1px var(--primary); +} + +input:checked + .slider:before { + -webkit-transform: translateX(18px); + -ms-transform: translateX(18px); + transform: translateX(18px); +} + +/* Rounded sliders */ +.slider.round { + border-radius: 24px; +} + +.slider.round:before { + border-radius: 50%; +} + +#refQuery, #passage-popup, #modal-backdrop, #modal-container { + display: none; +} + +h2.dirty { + color: darkorange; +} + +textarea { + padding: 0.75em 1em; +} + +#note-table a, #note-table a:active { + color: var(--text); + cursor: pointer; +} \ No newline at end of file diff --git a/assets/js/home.js b/assets/js/home.js new file mode 100644 index 0000000..8eff68b --- /dev/null +++ b/assets/js/home.js @@ -0,0 +1,383 @@ +import * as note from './note.js'; +import { state } from './state.js'; +import * as ref from './reference.js'; + +// Get the link element +var tabs = []; +let controller; + +// Function to change the CSS file based on checkbox state +/** + * Method to toggle dark/light mode + * + * @param {*} event + */ +export function toggleDarkMode(event) { + let mainCssLink = $('link[data-css="mode"'); + if(mainCssLink.length > 0) { + mainCssLink[0].href = (event.target.checked ? mainCssLink.data('dark') : mainCssLink.data('light')); + } +} + +/** + * Toggles the visibility of the fields container and updates the active state of the show/hide button. + * + * @param Event e + * @param boolean forceShow + * @return {void} + */ +export function toggleFields(e, forceShow = false) { + const fieldsContainer = document.querySelector('.fields-container'); + let showHideBtn = document.getElementById('show-hide-btn'); + let mobileShowHideBtn = document.getElementById('mobile-show-hide-btn'); + + if (forceShow || !fieldsContainer.classList.contains('show')) { + fieldsContainer.classList.add('show'); + fieldsContainer.style.display = 'flex'; + showHideBtn.classList.add('active'); + mobileShowHideBtn.classList.add('active'); + } else { + fieldsContainer.classList.remove('show'); + fieldsContainer.style.display = 'none'; + showHideBtn.classList.remove('active'); + mobileShowHideBtn.classList.remove('active'); + } +} + +/** + * Increases the font size of the element with the id 'ref' by 1 point. + * + * @return {void} This function does not return a value. + */ +export function increaseFont() { + var currentSize = document.querySelector('#ref-text').style.fontSize; + const newSize = parseInt(currentSize) + 1; + document.querySelector('#ref-text').style.fontSize = newSize + 'pt'; + document.querySelector('#notes').style.fontSize = newSize + 'pt'; + document.querySelector('#notePreview').style.fontSize = newSize + 'pt'; +} + +/** + * Decreases the font size of the element with the id 'ref' by 1 point. + * + * @return {void} This function does not return a value. + */ +export function decreaseFont() { + var currentSize = document.querySelector('#ref-text').style.fontSize; + const newSize = parseInt(currentSize) - 1; + document.querySelector('#ref-text').style.fontSize = newSize + 'pt'; + document.querySelector('#notes').style.fontSize = newSize + 'pt'; + document.querySelector('#notePreview').style.fontSize = newSize + 'pt'; +} + +/** + * Previews a note by rendering the markdown content of the note in a preview section. + * Toggles between the note text and preview sections. + * + * @return {void} This function does not return anything. + */ +export function previewNote() { + var noteText = document.querySelector('#notes'); + var notePreview = document.querySelector('#notePreview'); + var previewButton = document.querySelector('#previewBtn'); + + const title = document.querySelector('#noteTitle'); + const speaker = document.querySelector('#speaker'); + const passage = document.querySelector('#passage'); + + const markdownPreview = "# " + title.value + " - " + + speaker.options[speaker.selectedIndex].text + " - " + passage.value + "\n\n" + noteText.value; + + notePreview.innerHTML = state.md.render(markdownPreview); + + if (previewButton.classList.contains('active')) { + document.querySelector('.note-text').style.display = 'block'; + notePreview.style.display = 'none'; + previewButton.classList.remove('active'); + } else { + document.querySelector('.note-text').style.display = 'none'; + notePreview.style.display = 'block'; + previewButton.classList.add('active'); + } + + note.findLinks(); +} + +/** + * Sets event listeners for keyup events on the document and the '#notes' element. + * + * @return {void} + */ +export function setEventListeners() { + document.addEventListener('keyup', function (event) { + if (event.key == "F3") { + openRef(); + } + }); + + document.querySelector('#notes').addEventListener('keyup', function (event) { + let key = event.keyCode; + + if (key == 8 || key >= 48 && key <= 90 || key >= 96 && key <= 111 || key >= 186 && key <= 222) { + state.saved = false + state.textDirty = true; + document.querySelector('.mobile-note-header h2').classList.add('dirty'); + document.querySelector('.note-header h2').classList.add('dirty'); + + if(state.failureCount > 0 && !state.to) { + state.to = setTimeout(note.saveNote, state.saveTimeout); + } + } + }); + + document.getElementById('dark-mode-checkbox').addEventListener('click', toggleDarkMode); + document.getElementById('mobile-dark-mode-checkbox').addEventListener('click', toggleDarkMode); + + document.getElementById('show-hide-btn').addEventListener('click', toggleFields); + document.getElementById('mobile-show-hide-btn').addEventListener('click', toggleFields); + + document.getElementById('increaseFont').addEventListener('click', increaseFont); + document.getElementById('decreaseFont').addEventListener('click', decreaseFont); + + const openRefBtn = document.getElementById('open-ref'); + openRefBtn.addEventListener('click', openRef); + openRefBtn.closeSidebar = true; + const mobileOpenRefBtn = document.getElementById('mobile-open-ref'); + mobileOpenRefBtn.addEventListener('click', openRef); + mobileOpenRefBtn.closeSidebar = true; + + document.getElementById('previewBtn').addEventListener('click', previewNote); + //document.getElementById('shareBtn').addEventListener('click', note.openShareNote); + document.getElementById('searchBtn').addEventListener('click', ref.queryRef); + document.getElementById('closeSearch').addEventListener('click', closeRef); +} + +export function initHome() { + setBooks(); + setEventListeners(); + + // expand the sidebar by default if we are on a large screen + if(document.body.clientWidth >= 1501) { + document.querySelector('.container').classList.remove('sidebar-collapsed'); + } + + $('#note-table').DataTable({ + paging: false, + ajax: { + url: '/get-notes', + type: 'POST' + }, + columns: [ + { data: 'link' }, + { data: 'speaker.name' }, + { data: 'passage' }, + { + data: 'date.date', + render: DataTable.render.date("L") + }, + ] + }); + $('#note-table').css('width', '100%'); + $('#shareBtn').on('click', note.openShareNote); + $('#modal-backdrop').on('click', note.closeShareNote); + + state.md = new markdownit({ + html: true, + linkify: true, + breaks: true + }); + + if ($('#noteDate')) { + $('#noteDate').datepicker(); + } + + if ($('#query')) { + document.querySelector('#query').addEventListener('keyup', function (event) { + if (event.key == "Enter") { + search(); + } + }); + } + + // Assuming 'to' and 'saveInterval' are declared globally elsewhere in your script + if (typeof state.to === 'undefined' || !state.to) { + state.to = setTimeout(note.saveNote, state.saveInterval); + } +} + +/** + * Fetches data from '/js/data.json', assigns it to BOOKS, and handles errors. + * + * @return {void} + */ +export function setBooks() { + fetch('js/data.json') + .then((res) => { + if (!res.ok) { + throw new Error('HTTP Error: Status: ${res.status}'); + } + return res.json(); + }) + .then((data) => { + state.BOOKS = data; + }) + .catch((error) => { + console.log(error); + }) +} + +/** + * Opens the reference with the option to close the sidebar. + */ +export function openRef(e) { + document.querySelector('#open-ref').classList.add('active'); + document.querySelector('#mobile-open-ref').classList.add('active'); + + let refQuery = document.querySelector('#refQuery'); + refQuery.style.display = 'block'; + + let closeSidebar = false; + if(typeof e.currentTarget.closeSidebar !== 'undefined') { + closeSidebar = e.currentTarget.closeSidebar; + } + + if (closeSidebar && !document.querySelector('.container').classList.contains('sidebar-collapsed')) { + document.querySelector('.toggle').click(); + } + + let ref = document.querySelector('#ref-text'); + refQuery.style.left = ref.offsetLeft + 'px'; + refQuery.style.top = ref.offsetTop + 'px'; +} + +/** + * Closes the reference query and resets the reference search form. + * + * @return {void} This function does not return anything. + */ +export function closeRef() { + document.querySelector('#referenceSearch').value = ''; + document.querySelector('#referenceSearch').style.display = ''; + document.querySelector('#referenceType').value = ''; + document.querySelector('#referenceBook').value = ''; + document.querySelector('#referenceBook').style.display = 'none'; + document.querySelector('#chapter-range').innerText = ''; + document.querySelector('#verse-range').innerText = ''; + + document.querySelector('#refQuery').style.display = 'none'; + document.querySelector('#open-ref').classList.remove('active'); + document.querySelector('#mobile-open-ref').classList.remove('active'); +} + +/** + * A function to create a button element with the specified title and event listeners for click and double click actions. + * + * @param {string} title - The title to be displayed on the button. + * @return {Element} The created button element. + */ +export function makeButton(title) { + var btn = document.createElement('button'); + btn.innerText = title; + btn.class = 'button'; + btn.style = 'line-height:normal;' + btn.addEventListener('click', function () { + removeActiveRef(); + document.querySelector('#ref-text').innerHTML = state.md.render(state.references[title]); + this.classList.add('active'); + note.findRefLinks(); + }); + + btn.addEventListener('dblclick', function () { + document.querySelector('#ref-text').innerHTML = ''; + delete state.references[title]; + var list = this.parentElement; + list.remove(); + state.saved = false; + state.textDirty = true; + note.saveNote(); + }); + + removeActiveRef(); + btn.classList.add('active'); + + return btn; +} + +/** + * Removes the 'active' class from all elements with the class 'active'. + * + * @return {void} This function does not return a value. + */ +export function removeActiveRef() { + tabs = document.querySelectorAll('#ref-list .active'); + for (var t in tabs) { + if (isFinite(parseInt(t))) { + tabs[t].classList.remove('active'); + } + } +} + +/** + * Generates a random UUIDv4 string. + * + * @return {string} The generated UUIDv4 string. + */ +export function uuidv4() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' + .replace(/[xy]/g, function (c) { + const r = Math.random() * 16 | 0, + v = c == 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); +} + +/** + * Searches for notes based on the query entered in the search field. + * Sends a POST request to the '/search' endpoint with the query as a JSON payload. + * Updates the '#old-notes' element with the search results. + * + * @return {Promise} A Promise that resolves with the search results. + */ +export function search() { + query = document.querySelector('#query').value; + fetch('/search', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'query': query + }) + }) + .then(response => response.json()) + .then(results => { + var oldNotes = document.querySelector('#old-notes'); + oldNotes.innerHTML = ''; + for (var n in results) { + var link = document.createElement('a'); + link.href = '#'; + link.setAttribute('onclick', "note.retrieveNote('" + results[n].id + "');note.openNote();"); + link.innerHTML = results[n].title; + + var p = document.createElement('p'); + p.innerHTML = results[n].passage; + + var article = document.createElement('article'); + article.appendChild(link); + article.appendChild(p); + + oldNotes.append(article); + } + }); +} + +/** + * Closes the passage popup by clearing its content and hiding it. + * + * @return {void} This function does not return anything. + */ +export function closePopup() { + const popup = document.querySelector('#passage-popup'); + popup.innerHTML = ''; + popup.style.display = 'none'; +} diff --git a/assets/js/note.js b/assets/js/note.js new file mode 100644 index 0000000..aba9337 --- /dev/null +++ b/assets/js/note.js @@ -0,0 +1,506 @@ +import { state } from './state.js'; +import { toggleFields, makeButton } from './home.js'; + +var failureCount = state.saveFailureCount; + +/** + * Retrieves a note from the server based on the provided ID. + * + * @param {string} id - The ID of the note to retrieve. + * @param {boolean} [runOpen=true] - Whether to open the note sidebar after retrieving the note. + * @return {Promise} A promise that resolves when the note is successfully retrieved and the UI is updated. + */ +export function retrieveNote(id, runOpen = true) { + fetch('/get-note', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'id': id + }) + }) + .then(response => response.json()) + .then(result => { + var dt = new Date(result.date.date); + + document.querySelector('#notes').value = result.text; + document.querySelector('#passage').value = result.passage; + document.querySelector('#series').value = result.series.id; + document.querySelector('#speaker').value = result.speaker.id; + document.querySelector('#noteTitle').value = result.title; + document.querySelector('#noteDate').value = ''; + document.querySelector('#noteDate').value = + (dt.getMonth() < 9 ? '0' + (dt.getMonth() + 1) : (dt.getMonth() + 1)) + '/' + + (dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate()) + '/' + + dt.getFullYear(); + document.querySelector('#noteId').value = result.id; + + if (result.recording) { + document.querySelector('#recording').value = result.recording; + } + + if (result.refs) { + state.references = result.refs; + } + + const list = document.querySelector('#ref-list'); + list.innerHTML = ''; + var newList = null; + for (var x in state.references) { + var newList = document.createElement('li'); + newList.className = 'tab'; + var button = makeButton(x); + newList.appendChild(button); + list.appendChild(newList); + } + + if (runOpen) { + note.openNote(false); + } + }); +} + +/** + * Toggles the visibility of the note list and reference elements. + * + * @param {boolean} [openSidebar=true] - Whether to open the sidebar after toggling the visibility. + * @return {void} + */ +export function openNote(openSidebar = true) { + const noteList = document.querySelector('#note-list'); + const refs = document.querySelector('#ref-text'); + + if (noteList.style.display == 'block') { + noteList.style.display = 'none'; + refs.style.display = 'block'; + } else { + noteList.style.display = 'block'; + refs.style.display = 'none'; + } + + if (openSidebar && !document.querySelector('.container').classList.contains('sidebar-collapsed')) { + document.querySelector('.container').classList.add('sidebar-collapsed'); + } +} + +/** + * Starts the save process by updating the save-check element's classList, removing error, fa-times-circle, and fa-save classes, + * adding the 'saving' and 'fa-save' classes, and setting the opacity to 1. + * + * @return {void} This function does not return anything. + */ +export function startSave() { + document.querySelector('#save-check').classList.remove('error', 'fa-times-circle', 'fa-save'); + document.querySelector('#save-check').classList.add('saving', 'fa-save'); + document.querySelector('#save-check').style.opacity = 1; +} + +/** + * Displays a checkmark animation on the screen. + * + * @param {none} - This function does not take any parameters. + * @return {none} - This function does not return any value. + */ +export function showSave() { + if (state.saved) { return; } + + var checkmark = document.getElementById("save-check"); + checkmark.classList.add('fa-save'); + + // Schedule the animation to run every 1 second (which is equivalent to a 1-second delay between each iteration) + var si = setInterval(function () { + // Increment the opacity of the checkmark by 0.01 each time + let op = parseFloat(checkmark.style.opacity); + checkmark.style.opacity = op - 0.1; + + // If the opacity is greater than or equal to 1, reset it back to 0 and stop the animation + if (checkmark.style.opacity == 0.1) { + checkmark.style.opacity = 0; + clearInterval(si); + state.saved = false; + } + }, 100); +} + +/** + * function to discard the note by clearing all input fields and closing the menu. + */ +export function deleteNote(noteId, link) { + document.querySelector('#noteTitle').value = ''; + document.querySelector('#speaker').value = 0; + document.querySelector('#series').value = 0; + document.querySelector('#template').value = 0; + document.querySelector('#passage').value = ''; + document.querySelector('#notes').value = ''; + document.querySelector('#recording').value = ''; + document.querySelector('#noteDate').value = ''; + document.querySelector('#noteId').value = ''; + + var row = link.parentElement.parentElement; + + fetch('/delete-note', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'id': noteId + }) + }) + .then(response => response.json()) + .then(data => { + if (data.msg != 'deleted') { + return; + } + + alert('Note deleted.'); + row.remove(); + }); +} + +/** + * Validates a note by checking if all required fields are filled. + * + * @return {boolean} Returns true if all required fields are filled, false otherwise. + */ +export function validateNote() { + const note = document.querySelector('#notes'); + const date = document.querySelector('#noteDate'); + const speaker = document.querySelector('#speaker'); + const series = document.querySelector('#series'); + const title = document.querySelector('#noteTitle'); + const psg = document.querySelector('#passage'); + + let ret = true; + + if (!title.value.length) { title.classList.add('input-error'); ret = false; } + if (!date.value) { date.classList.add('input-error'); ret = false; } + if (!parseInt(speaker.value)) { speaker.classList.add('input-error'); ret = false; } + if (!parseInt(series.value)) { series.classList.add('input-error'); ret = false; } + if (!psg.value) { psg.classList.add('input-error'); ret = false; } + if (!note.value.length) { note.classList.add('input-error'); ret = false; } + + if (!ret) { + toggleFields(null, true); + } + + return ret; +} + +/** + * Resets the state of the note editor by clearing the text and form fields, + * resetting the references, and removing any dirty classes. It also sets the + * date to the current date, clears the speaker, series, template, passage, + * recording, and note ID fields. Finally, it clears the reference list and + * reference display. + * + * @return {void} This function does not return anything. + */ +export function newNote() { + notes = document.querySelector('#notes'); + notes.text = ''; + notes.value = ''; + state.references = {}; + state.saved = true; + state.textDirty = false; + document.querySelector('.note-header-column h2').classList.remove('dirty'); + + var dt = new Date(); + document.querySelector('#noteDate').value = dt.getFullYear() + '-' + + (dt.getMonth() < 9 ? '0' + (dt.getMonth() + 1) : (dt.getMonth() + 1)) + '-' + + (dt.getDate() < 10 ? '0' + dt.getDate() : dt.getDate()); + document.querySelector('#noteTitle').value = ''; + document.querySelector('#speaker').value = 0; + document.querySelector('#series').value = 0; + document.querySelector('#template').value = 0; + document.querySelector('#passage').value = ''; + document.querySelector('#recording').value = ''; + document.querySelector('#noteId').value = ''; + + document.querySelector('#ref-list').innerHTML = ''; + document.querySelector('#ref-text').innerHTML = ''; + document.querySelector('.container').classList.add('sidebar-collapsed'); +} + +/** + * Save a note by sending it to the server for storage. + * + * @param {Event} event - The event object triggering the save action. + * @return {void} No explicit return value. + */ +export function saveNote(event) { + console.debug('called saveNote '+new Date()); + if (event) { + event.preventDefault(); + } + + if (!state.textDirty) { + clearTimeout(state.to); + state.to = setTimeout(saveNote, state.saveInterval); + return; + } + + document.querySelector('#noteTitle').classList.remove('input-error'); + document.querySelector('#noteDate').classList.remove('input-error'); + document.querySelector('#speaker').classList.remove('input-error'); + document.querySelector('#series').classList.remove('input-error'); + document.querySelector('#passage').classList.remove('input-error'); + document.querySelector('#notes').classList.remove('input-error'); + + if (!validateNote()) { + clearTimeout(state.to); + state.to = setTimeout(saveNote, state.saveInterval); + return; + } + + let saveCheck = document.querySelector('#save-check'); + var noteText = document.querySelector('#notes').value; + + startSave(); + + var note = { + id: document.querySelector("#noteId").value, + date: document.querySelector('#noteDate').value, + title: document.querySelector('#noteTitle').value, + speaker: document.querySelector('#speaker').value, + series: document.querySelector('#series').value, + passage: document.querySelector('#passage').value, + note: document.querySelector('#notes').value, + recording: document.querySelector('#recording').value, + refs: state.references + }; + $.ajax({ + url: '/save-note', + method: 'POST', + contentType: 'application/json', + data: JSON.stringify(note), + dataType: 'json', + timeout: state.saveTimeout + }) + .done(function (data) { + if (data.msg == 'saved' && !state.saved) { + saveCheck.classList.remove('saving', 'error', 'fa-times-circle', 'fa-save'); + showSave(); + if (noteText == document.querySelector('#notes').value) { + state.saved = true; + state.textDirty = false; + document.querySelector('.note-header h2').classList.remove('dirty'); + document.querySelector('.mobile-note-header h2').classList.remove('dirty'); + } + + if (data.new) { + document.querySelector('#noteId').value = data.id; + } + } + }) + .fail(function (xhr, status, error) { + state.failureCount--; + saveCheck.classList.remove('saving', 'fa-save'); + saveCheck.classList.add('fa-times-circle', 'error'); + console.error(error); + }) + .always(function (xhr, status) { + if (status == 'timeout') { + saveCheck.classList.remove('saving', 'fa-save'); + saveCheck.classList.add('error', 'fa-times-circle'); + } + clearTimeout(state.to); + if (state.failureCount > 0) { + state.to = setTimeout(saveNote, state.saveInterval); + } else { + state.failureCount = state.saveFailureCount; + } + }); +} + +/** + * Function that finds reference links and fetches passage data when clicked. + */ +export function findRefLinks() { + var links = document.querySelector('#ref-text').querySelectorAll('a'); + + for (var i = 0; i < links.length; i++) { + links[i].addEventListener('click', function (e) { + e.preventDefault(); + if (!this.href.includes('get-passage')) { + return; + } + var passage = this.href.split('/'); + passage = passage[passage.length - 1]; + + fetch(this.href, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'passage': passage + }) + }) + .then(response => response.text()) + .then(result => { + let psg, book, cv; + + passage = passage.replace(/\+/g, ' '); + psg = passage.split(' '); + if (psg.length > 2) { + book = psg[0] + ' ' + psg[1]; + cv = psg[2]; + } else { + book = psg[0]; + cv = psg[1]; + } + showPassage( + e, + "  " + + "
" + + result); + }); + }); + } +} + +/** + * Finds all links in the note preview and adds event listeners to them. + * + * @return {void} + */ +export function findLinks() { + var links = document.querySelector('#notePreview').querySelectorAll('a'); + + for (var i = 0; i < links.length; i++) { + links[i].addEventListener('click', function (e) { + e.preventDefault(); + if (!this.href.includes('get-passage')) { + return; + } + var passage = this.href.split('/'); + passage = passage[passage.length - 1]; + + fetch(this.href, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'passage': passage + }) + }) + .then(response => response.text()) + .then(result => { + passage = passage.replace(/\+/g, ' '); + psg = passage.split(' '); + if (psg.length > 2) { + book = psg[0] + ' ' + psg[1]; + cv = psg[2]; + } else { + book = psg[0]; + cv = psg[1]; + } + showPassage( + e, + "  " + + "
" + + result); + }); + }); + } +} + +/** + * Shows a passage in a popup element relative to the cursor position. + * + * @param {Event} event - The event that triggered the function. + * @param {string} text - The text to be displayed in the popup. + * @return {void} This function does not return a value. + */ +export function showPassage(event, text) { + // Create a new div element for the popup + const popup = document.querySelector('#passage-popup'); + popup.innerHTML = state.md.render(text); + + // Position the popup relative to the cursor + let x = event.clientX + window.scrollX; + let y = event.clientY + window.scrollY; + + // Set the position of the popup element + popup.style.top = `${y}px`; + popup.style.left = `${x}px`; + popup.style.display = 'block'; +} + +/** + * Closes the passage popup by clearing its content and hiding it. + * + * @return {void} This function does not return anything. + */ +export function closePopup() { + const popup = document.querySelector('#passage-popup'); + popup.innerHTML = ''; + popup.style.display = 'none'; +} + +/** + * Opens the share note functionality. + */ +export function openShareNote() { + let id = document.querySelector('#noteId').value; + if (!id) { + alert('No Open Note Found'); + return; + } + + let bd = document.querySelector('#modal-backdrop'); + bd.style.display = 'block'; + let cont = document.querySelector('#modal-container'); + cont.style.display = bd.style.display; + + let emailCont = document.querySelector('#modal-container'); + emailCont.style.left = ((window.innerWidth / 2) - (emailCont.clientWidth / 2)) + 'px'; + emailCont.style.top = ((window.innerHeight / 2) - (emailCont.clientHeight / 2)) + 'px'; +} + +/** + * Closes the share note modal by hiding the backdrop and container, + * and clears the email input value. + */ +export function closeShareNote() { + var bd = document.querySelector('#modal-backdrop'); + var cont = document.querySelector('#modal-container'); + bd.style.display = 'none'; + cont.style.display = 'none'; + document.querySelector('#shareEmail').value = ''; +} + +/** + * Function to share a note by sending the note ID and email to the server. + */ +export function shareNote(event) { + var id = document.querySelector('#noteId').value; + var email = document.querySelector('#shareEmail').value; + if (!id || !email) { + alert('Invalid Input'); + return; + } + + fetch('/share-note', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'id': id, + 'email': email + }) + }) + .then(response => response.json()) + .then(result => { + if (result) { + alert(result.msg); + } + }); + + closeShareNote(); +} + diff --git a/assets/js/reference.js b/assets/js/reference.js index f778dd5..4ceaf32 100644 --- a/assets/js/reference.js +++ b/assets/js/reference.js @@ -1,3 +1,7 @@ +import { state } from './state.js'; +import { closeRef, makeButton } from './home.js'; +import { saveNote, findRefLinks } from './note.js'; + /** * Retrieves the reference type from the server and populates the reference series dropdown. * @@ -7,7 +11,7 @@ export function retrieveReferenceType(el) { fetch('/reference/' + el.value, { method: 'GET', - header: { + headers: { 'Content-Type': 'application/json' } }) @@ -41,7 +45,7 @@ export function retrieveReference(el) { } fetch('/get-reference', { method: "POST", - header: { + headers: { "Content-Type": "application/json" }, body: JSON.stringify({ @@ -66,7 +70,7 @@ export function saveReference() { let cont = document.querySelector('#reference'); fetch('/save-reference', { method: 'POST', - header: { + headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ @@ -76,10 +80,213 @@ export function saveReference() { }) .then(response => response.json()) .then(results => { - //alert(results.msg); - document.querySelector('#reference').value = ''; document.querySelector('#referenceType').value = ''; document.querySelector('#referenceSeries').value = ''; }); } + +/** + * Retrieves the list of books based on the selected reference type. + * + * @return {void} + */ +export function retrieveBooks() { + document.querySelector('#chapter-range').innerText = ''; + document.querySelector('#verse-range').innerText = ''; + document.querySelector('#referenceSearch').value = ''; + document.querySelector('#referenceSearch').style.display = 'none'; + const selectedType = document.querySelector('#referenceType').value; + if (!selectedType) { return; } + + var bookList = document.querySelector('#referenceBook'); + bookList.style.display = "block"; + bookList.innerHTML = ''; + if (selectedType == 'bible') { + document.querySelector('#referenceSearch').style.display = 'block'; + var none = document.createElement("option"); + none.value = ''; + none.text = '-- Select --'; + bookList.appendChild(none); + for (var x in state.BOOKS.bible) { + var newBook = document.createElement("option"); + newBook.text = x; + bookList.appendChild(newBook); + } + } else if (selectedType == 'creed') { + var none = document.createElement('option'); + none.value = ''; + none.text = '-- Select --'; + bookList.appendChild(none); + for (var x in state.BOOKS.creed) { + var newBook = document.createElement('option'); + newBook.value = x; + newBook.text = state.BOOKS.creed[x]; + bookList.appendChild(newBook); + } + } else if (selectedType == 'cd') { + var none = document.createElement("option"); + none.value = ''; + none.text = '-- Select --'; + bookList.appendChild(none); + for (var x in state.BOOKS.cd) { + var newBook = document.createElement("option"); + newBook.text = state.BOOKS.cd[x]; + bookList.appendChild(newBook); + } + } else if (selectedType == 'hc') { + var none = document.createElement("option"); + none.value = ''; + none.text = '-- Select --'; + bookList.appendChild(none); + for (var x in state.BOOKS[selectedType]) { + var newBook = document.createElement("optgroup"); + newBook.label = "Lord's Day " + (parseInt(x) + 1) + var ld = document.createElement("option"); + ld.value = 'ld' + (parseInt(x) + 1); + ld.text = "LD " + (parseInt(x) + 1) + " All"; + newBook.appendChild(ld); + + for (var y in state.BOOKS[selectedType][x]) { + var question = document.createElement("option"); + question.value = 'hc' + state.BOOKS[selectedType][x][y]; + question.text = "HC" + state.BOOKS[selectedType][x][y]; + newBook.appendChild(question); + } + bookList.appendChild(newBook); + } + } else if (selectedType == 'note') { + var none = document.createElement("option"); + none.value = ''; + none.text = '-- Select --'; + bookList.appendChild(none); + + fetch('/retrieve-reference', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'type': 'note' + }) + }) + .then(response => response.json()) + .then(results => { + for (var x in results) { + var newBook = document.createElement("option"); + newBook.value = results[x].id; + newBook.text = results[x].title; + bookList.appendChild(newBook); + } + }); + } else { + var min = state.BOOKS[selectedType][0]; + var max = state.BOOKS[selectedType][1]; + var none = document.createElement("option"); + none.value = ''; + none.text = '-- Select --'; + bookList.appendChild(none); + for (var x = min; x <= max; x++) { + var newBook = document.createElement("option"); + newBook.value = x; + newBook.text = x; + bookList.appendChild(newBook); + } + } +} + +/** + * Filters the books based on the selected reference type and updates the chapter range. + * + * @return {void} This function does not return anything. + */ +export function filterBooks() { + document.querySelector('#chapter-range').innerText = ''; + document.querySelector('#verse-range').innerText = ''; + if (document.querySelector('#referenceType').value != 'bible') { + return; + } + + var bookList = document.querySelector('#referenceBook'); + var book = state.BOOKS.bible[bookList.value]; + var max = Object.keys(book).length; + + var chapterRange = document.querySelector('#chapter-range'); + chapterRange.innerText = 'Chapters: ' + max; +} + +/** + * Filters the verse based on the selected book and chapter. + * + * @return {void} This function does not return anything. + */ +export function filterVerse() { + if (document.querySelector('#referenceType').value != 'bible') { + return; + } + + var bookList = document.querySelector('#referenceBook').value; + var search = document.querySelector('#referenceSearch').value; + var chapter = search.split(':')[0]; + var verseRange = document.querySelector('#verse-range'); + + if (!state.BOOKS.bible[bookList] || !state.BOOKS.bible[bookList][chapter]) { + verseRange.innerText = 'Unknown Chapter'; + return; + } + var verse = state.BOOKS.bible[bookList][chapter]; + verseRange.innerText = 'Verse: ' + verse; +} + +/** + * Fetches a reference based on the provided type, book, and input. + * + * @param {string} type - The type of reference. + * @param {string} book - The book of the reference. + * @param {string} input - The input for the reference. + * @return {void} This function does not return anything directly, but processes the fetched reference data. + */ +export function queryRef(e, type = null, book = null, input = null) { + if (!input) { + var input = document.querySelector('#refQuery #referenceSearch').value; + } + if (!type) { + var type = document.querySelector('#referenceType').value; + } + if (!book) { + var book = document.querySelector('#referenceBook').value; + } + fetch('/retrieve-reference', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'type': type, + 'book': book, + 'reference': input, + }) + }) + .then(response => response.json()) + .then(results => { + const list = document.querySelector('#ref-list'); + var newList = document.createElement('li'); + newList.className = 'tab'; + let button = makeButton(results.title); + newList.appendChild(button); + list.appendChild(newList); + + const ref = document.querySelector('#ref-text'); + ref.innerHTML = state.md.render(results.text); + + state.references[results.title] = results.text; + + closeRef(); + + state.saved = false; + state.textDirty = true; + saveNote(); + findRefLinks(); + }); +} + diff --git a/assets/js/register.js b/assets/js/register.js index 90240c2..7662772 100644 --- a/assets/js/register.js +++ b/assets/js/register.js @@ -10,15 +10,13 @@ registerBtn.addEventListener("click", handleSubmit); // Function to handle form submission function handleSubmit(event) { - // Prevent default form submission behavior - event.preventDefault(); - // Validate input const name = nameInput.value; const email = emailInput.value; const password = passwordInput.value; if (name === "" || email === "" || password === "") { + event.preventDefault(); alert("Please fill in all fields."); return; } diff --git a/assets/js/series.js b/assets/js/series.js new file mode 100644 index 0000000..cf1f292 --- /dev/null +++ b/assets/js/series.js @@ -0,0 +1,54 @@ +import { state } from './state.js'; + +/** + * A description of the entire function. + */ +export function newSeries() { + if (document.querySelector('#series').value == 'new') { + document.querySelector('#newSeries').style.display = 'inline-block'; + document.querySelector('#series').style.display = 'none'; + } + + state.saved = false; + state.textDirty = true; +} + +/** + * Saves a series by making a POST request to '/save-series' with the series name as the request body. + * + * @param {Event} event - The keydown event. + * @return {Promise} A Promise that resolves with the response from the server. + */ +export function saveSeries(event) { + if (event.keyCode == 27) { + document.querySelector('#newSeries').style.display = 'none'; + document.querySelector('#series').style.display = 'inline-block'; + document.querySelector('#series').value = 0; + } + if (event.keyCode == 13 && document.querySelector('#newSeries').value != '') { + fetch('/save-series', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'seriesName': document.querySelector('#newSeries').value + }) + }) + .then(response => response.json()) + .then(results => { + var newSeries = document.createElement('option'); + newSeries.text = document.querySelector('#newSeries').value; + newSeries.value = results.id; + document.querySelector('#series').add(newSeries); + + alert(results.msg); + document.querySelector('#newSeries').style.display = 'none'; + document.querySelector('#series').style.display = 'inline-block'; + + document.querySelector('#newSeries').value = ''; + document.querySelector('#series').value = results.id; + }); + } +} + diff --git a/assets/js/site.js b/assets/js/site.js deleted file mode 100644 index ba1d05b..0000000 --- a/assets/js/site.js +++ /dev/null @@ -1,116 +0,0 @@ -export function initHome() { - setHeight(); - setBooks(); - setEventListeners(); - $('#note-table').DataTable({ - paging: false, - ajax: { - url: '/get-notes', - type: 'POST' - }, - columns: [ - { data: 'link' }, - { data: 'speaker.name' }, - { data: 'passage' }, - { - data: 'date.date', - render: DataTable.render.date("L") - }, - ] - }); - $('#shareBtn').on('click', openShareNote); - $('#modal-backdrop').on('click', closeShareNote); -} - -/** - * Fetches data from '/js/data.json', assigns it to BOOKS, and handles errors. - * - * @return {void} - */ -export function setBooks() { - fetch('js/data.json') - .then((res) => { - if (!res.ok) { - throw new Error('HTTP Error: Status: ${res.status}'); - } - return res.json(); - }) - .then((data) => { - BOOKS = data; - }) - .catch((error) => { - console.log(error); - }) -} - -/** - * Sets event listeners for keyup events on the document and the '#notes' element. - * - * @return {void} - */ -export function setEventListeners() { - document.addEventListener('keyup', function (event) { - if (event.key == "F3") { - openRef(false); - } - }); - - document.querySelector('#notes').addEventListener('keyup', function (event) { - let key = event.keyCode; - - if (key == 8 || key >= 48 && key <= 90 || key >= 96 && key <= 111 || key >= 186 && key <= 222) { - textDirty = true; - document.querySelector('#note-header-left h2').classList.add('dirty'); - } - }); -} - -/** - * Sets the height of various elements on the page based on the window's inner height. - * Also initializes a datepicker and event listener for the search input field. - * - * @return {void} - */ -export function setHeight() { - md = new markdownit({ - html: true, - linkify: true, - breaks: true - }); - - var body = document.querySelector('body'); - body.style.height = window.innerHeight + 'px'; - - var cont = document.querySelector('#main'); - cont.style.height = (window.innerHeight) + 'px'; - - var tabs = document.querySelector('.ref-tab'); - tabs.style.height = (window.innerHeight - 13) + 'px'; - - var ref = document.querySelector('.ref'); - ref.style.height = (window.innerHeight - 60) + 'px'; - - var noteList = document.querySelector('#note-list'); - noteList.style.height = (window.innerHeight - 60) + 'px'; - - var notes = document.querySelector('.notes'); - notes.style.height = (window.innerHeight - 60) + 'px'; - - var notePreview = document.querySelector('#notePreview'); - notePreview.style.height = (window.innerHeight - 50) + 'px'; - - if ($('#noteDate')) { - $('#noteDate').datepicker(); - } - - if ($('#query')) { - document.querySelector('#query').addEventListener('keyup', function (event) { - if (event.key == "Enter") { - search(); - } - }); - } - if (!to) { - to = setTimeout(saveNote, saveInterval); - } -} diff --git a/assets/js/speaker.js b/assets/js/speaker.js new file mode 100644 index 0000000..3852d4c --- /dev/null +++ b/assets/js/speaker.js @@ -0,0 +1,54 @@ +import { state } from './state.js'; +/** + * Toggles the display of the new speaker input field and hides the speaker select field. + * + * @return {void} This function does not return anything. + */ +export function newSpeaker() { + if (document.querySelector('#speaker').value == 'new') { + document.querySelector('#newSpeaker').style.display = 'inline-block'; + document.querySelector('#speaker').style.display = 'none'; + } + + state.saved = false; + state.textDirty = true; +} + +/** + * Saves a new speaker to the database and updates the UI with the new speaker option. + * + * @param {Event} event - The keydown event triggered by the user. + * @return {Promise} A Promise that resolves with the results of the fetch request. + */ +export function saveSpeaker(event) { + if (event.keyCode == 27) { + document.querySelector('#newSpeaker').style.display = 'none'; + document.querySelector('#speaker').style.display = 'inline-block'; + document.querySelector('#speaker').value = 0; + } + if (event.keyCode == 13 && document.querySelector('#newSpeaker').value != '') { + fetch('/save-speaker', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + 'speakerName': document.querySelector('#newSpeaker').value + }) + }) + .then(response => response.json()) + .then(results => { + var newSpeaker = document.createElement('option'); + newSpeaker.text = document.querySelector('#newSpeaker').value; + newSpeaker.value = results.id; + document.querySelector('#speaker').add(newSpeaker); + + alert(results.msg); + document.querySelector('#newSpeaker').style.display = 'none'; + document.querySelector('#speaker').style.display = 'inline-block'; + + document.querySelector('#newSpeaker').value = ''; + document.querySelector('#speaker').value = results.id; + }); + } +} diff --git a/assets/js/state.js b/assets/js/state.js new file mode 100644 index 0000000..3d16c79 --- /dev/null +++ b/assets/js/state.js @@ -0,0 +1,12 @@ +export let state = { + textDirty: false, + saved: true, + references: {}, + saveTimeout: null, + saveInterval: 5000, + saveFailureCount: 0, + to: null, + BOOKS: {}, + md: null, + failureCount: 0, +} \ No newline at end of file diff --git a/assets/js/template.js b/assets/js/template.js index ae91649..d800aca 100644 --- a/assets/js/template.js +++ b/assets/js/template.js @@ -1,3 +1,5 @@ +import { state } from "./state.js"; + /** * Retrieves a template from the server and sets it as the value of a specified destination element. * @@ -24,6 +26,7 @@ export function retrieveTemplate(orig, dest) { .then(results => { const div = document.querySelector('#' + dest); div.value = results; + state.textDirty = true; }); } diff --git a/assets/sass/main.css b/assets/sass/main.css index 1bab7d1..522d79a 100644 --- a/assets/sass/main.css +++ b/assets/sass/main.css @@ -1507,14 +1507,6 @@ input[type=radio] { input[type=checkbox] + label, input[type=radio] + label { text-decoration: none; - color: #7f888f; - cursor: pointer; - display: inline-block; - font-size: 1em; - font-weight: 400; - padding-left: 2.4em; - padding-right: 0.75em; - position: relative; } input[type=checkbox] + label:before, input[type=radio] + label:before { @@ -1529,6 +1521,17 @@ input[type=radio] + label:before { font-family: "Font Awesome 5 Free"; font-weight: 900; } +input[type=checkbox] + label, +input[type=radio] + label { + color: #7f888f; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 400; + padding-left: 2.4em; + padding-right: 0.75em; + position: relative; +} input[type=checkbox] + label:before, input[type=radio] + label:before { background: #ffffff; @@ -1607,8 +1610,6 @@ input[type=radio] + label:before { /* Icon */ .icon { text-decoration: none; - border-bottom: none; - position: relative; } .icon:before { -moz-osx-font-smoothing: grayscale; @@ -1622,6 +1623,10 @@ input[type=radio] + label:before { font-family: "Font Awesome 5 Free"; font-weight: 400; } +.icon { + border-bottom: none; + position: relative; +} .icon > .label { display: none; } @@ -1812,10 +1817,6 @@ ul.contact { } ul.contact li { text-decoration: none; - border-top: solid 1px rgba(210, 215, 217, 0.75); - margin: 1.5em 0 0 0; - padding: 1.5em 0 0 3em; - position: relative; } ul.contact li:before { -moz-osx-font-smoothing: grayscale; @@ -1829,6 +1830,12 @@ ul.contact li:before { font-family: "Font Awesome 5 Free"; font-weight: 400; } +ul.contact li { + border-top: solid 1px rgba(210, 215, 217, 0.75); + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 3em; + position: relative; +} ul.contact li:before { color: #f56a6a; display: inline-block; @@ -1883,10 +1890,10 @@ ul.pagination li > .page.active { color: #ffffff !important; } ul.pagination li > .page.active:hover { - background-color: #f67878; + background-color: rgb(245.9622641509, 120.3377358491, 120.3377358491); } ul.pagination li > .page.active:active { - background-color: #f45c5c; + background-color: rgb(244.0377358491, 91.6622641509, 91.6622641509); } ul.pagination li:first-child { padding-right: 0.75em; @@ -2045,14 +2052,14 @@ input[type=reset].primary:hover, input[type=button].primary:hover, button.primary:hover, .button.primary:hover { - background-color: #f67878; + background-color: rgb(245.9622641509, 120.3377358491, 120.3377358491); } input[type=submit].primary:active, input[type=reset].primary:active, input[type=button].primary:active, button.primary:active, .button.primary:active { - background-color: #f45c5c; + background-color: rgb(244.0377358491, 91.6622641509, 91.6622641509); } input[type=submit].disabled, input[type=submit]:disabled, input[type=reset].disabled, @@ -2418,7 +2425,6 @@ button:disabled, /* Sidebar */ #search form { text-decoration: none; - position: relative; } #search form:before { -moz-osx-font-smoothing: grayscale; @@ -2432,6 +2438,9 @@ button:disabled, font-family: "Font Awesome 5 Free"; font-weight: 900; } +#search form { + position: relative; +} #search form:before { transform: scaleX(-1); color: #7f888f; @@ -2486,7 +2495,7 @@ button:disabled, padding-bottom: 0; } #sidebar > .inner > .alt { - background-color: #eff1f2; + background-color: rgb(239.3333333333, 240.9, 242.4666666667); border-bottom: 0; margin: -2.2222222222em 0 4.4444444444em -2.2222222222em; padding: 2.2222222222em; @@ -2494,6 +2503,20 @@ button:disabled, } #sidebar .toggle { text-decoration: none; +} +#sidebar .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: "Font Awesome 5 Free"; + font-weight: 900; +} +#sidebar .toggle { transition: left 0.5s ease; -webkit-tap-highlight-color: rgba(255, 255, 255, 0); border: 0; @@ -2511,18 +2534,6 @@ button:disabled, width: 6em; z-index: 10000; } -#sidebar .toggle:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: "Font Awesome 5 Free"; - font-weight: 900; -} #sidebar .toggle:before { content: "\f0c9"; font-size: 2rem; @@ -2616,7 +2627,7 @@ button:disabled, z-index: 1; } #sidebar .toggle:after { - background: rgba(222, 225, 226, 0.75); + background: rgba(222.2, 224.50625, 226.3, 0.75); border-radius: 0.375em; content: ""; height: 3.5em; @@ -2786,8 +2797,6 @@ button:disabled, #menu ul a.opener, #menu ul span.opener { transition: color 0.2s ease-in-out; text-decoration: none; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - position: relative; } #menu ul a.opener:before, #menu ul span.opener:before { -moz-osx-font-smoothing: grayscale; @@ -2801,6 +2810,10 @@ button:disabled, font-family: "Font Awesome 5 Free"; font-weight: 900; } +#menu ul a.opener, #menu ul span.opener { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + position: relative; +} #menu ul a.opener:before, #menu ul span.opener:before { transition: color 0.2s ease-in-out, transform 0.2s ease-in-out; color: #9fa3a6; diff --git a/assets/sass/main.css.map b/assets/sass/main.css.map index 147077e..12f69fd 100644 --- a/assets/sass/main.css.map +++ b/assets/sass/main.css.map @@ -1 +1 @@ -{"version":3,"sources":["main.scss","base/_reset.scss","main.css","base/_page.scss","libs/_breakpoints.scss","libs/_vendor.scss","base/_typography.scss","components/_row.scss","libs/_html-grid.scss","components/_section.scss","components/_form.scss","libs/_mixins.scss","components/_box.scss","components/_icon.scss","components/_image.scss","components/_list.scss","components/_actions.scss","components/_icons.scss","components/_contact.scss","components/_pagination.scss","components/_table.scss","components/_button.scss","components/_mini-posts.scss","components/_features.scss","components/_posts.scss","layout/_wrapper.scss","layout/_main.scss","layout/_sidebar.scss","layout/_header.scss","layout/_banner.scss","layout/_footer.scss","layout/_menu.scss"],"names":[],"mappings":"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","file":"main.css"} \ No newline at end of file +{"version":3,"sources":["main.scss","base/_reset.scss","main.css","base/_page.scss","libs/_breakpoints.scss","libs/_vendor.scss","base/_typography.scss","components/_row.scss","libs/_html-grid.scss","components/_section.scss","components/_form.scss","libs/_mixins.scss","components/_box.scss","components/_icon.scss","components/_image.scss","components/_list.scss","components/_actions.scss","components/_icons.scss","components/_contact.scss","components/_pagination.scss","components/_table.scss","components/_button.scss","components/_mini-posts.scss","components/_features.scss","components/_posts.scss","layout/_wrapper.scss","layout/_main.scss","layout/_sidebar.scss","layout/_header.scss","layout/_banner.scss","layout/_footer.scss","layout/_menu.scss"],"names":[],"mappings":"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","file":"main.css"} \ No newline at end of file diff --git a/bin/entrypoint.sh b/bin/entrypoint.sh new file mode 100755 index 0000000..3c83dc9 --- /dev/null +++ b/bin/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Start the cron service in the background +service cron start + +chown -R www-data:www-data /var/www/html/var + +# Execute the default Docker CMD (which starts Apache in the foreground) +exec "$@" \ No newline at end of file diff --git a/composer.lock b/composer.lock index 44c6051..69361bb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,28 +4,28 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7f57aa7d9b15ae1237c769af447ea233", + "content-hash": "385eabd8c1a4fb1abc992811007bd51c", "packages": [ { "name": "composer/semver", - "version": "3.4.0", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -69,7 +69,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.4.4" }, "funding": [ { @@ -79,132 +79,35 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" - }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "doctrine/collections", - "version": "2.2.2", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "d8af7f248c74f195f7347424600fd9e17b57af59" + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/d8af7f248c74f195f7347424600fd9e17b57af59", - "reference": "d8af7f248c74f195f7347424600fd9e17b57af59", + "url": "https://api.github.com/repos/doctrine/collections/zipball/7713da39d8e237f28411d6a616a3dce5e20d5de2", + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2", "shasum": "" }, "require": { "doctrine/deprecations": "^1", - "php": "^8.1" + "php": "^8.1", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "ext-json": "*", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.11" + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" }, "type": "library", "autoload": { @@ -248,7 +151,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.2.2" + "source": "https://github.com/doctrine/collections/tree/2.6.0" }, "funding": [ { @@ -264,44 +167,45 @@ "type": "tidelift" } ], - "time": "2024-04-18T06:56:21+00:00" + "time": "2026-01-15T10:01:58+00:00" }, { "name": "doctrine/dbal", - "version": "3.8.4", + "version": "3.10.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd" + "reference": "95d84866bf3c04b2ddca1df7c049714660959aef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/b05e48a745f722801f55408d0dbd8003b403dbbd", - "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/95d84866bf3c04b2ddca1df7c049714660959aef", + "reference": "95d84866bf3c04b2ddca1df7c049714660959aef", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", "doctrine/event-manager": "^1|^2", "php": "^7.4 || ^8.0", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, + "conflict": { + "doctrine/cache": "< 1.11" + }, "require-dev": { - "doctrine/coding-standard": "12.0.0", + "doctrine/cache": "^1.11|^2.0", + "doctrine/coding-standard": "14.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.58", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.16", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.9.0", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "9.6.34", + "slevomat/coding-standard": "8.27.1", + "squizlabs/php_codesniffer": "4.0.1", + "symfony/cache": "^5.4|^6.0|^7.0|^8.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0|^8.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -361,7 +265,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.4" + "source": "https://github.com/doctrine/dbal/tree/3.10.5" }, "funding": [ { @@ -377,33 +281,34 @@ "type": "tidelift" } ], - "time": "2024-04-25T07:04:44+00:00" + "time": "2026-02-24T08:03:57+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.3", + "version": "1.1.6", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=14" + }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -411,7 +316,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -422,68 +327,70 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.6" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2026-02-07T07:09:04+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.12.0", + "version": "2.18.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "5418e811a14724068e95e0ba43353b903ada530f" + "reference": "241d61f6bbc77275d5a9f95d514241c058bf2d0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5418e811a14724068e95e0ba43353b903ada530f", - "reference": "5418e811a14724068e95e0ba43353b903ada530f", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/241d61f6bbc77275d5a9f95d514241c058bf2d0a", + "reference": "241d61f6bbc77275d5a9f95d514241c058bf2d0a", "shasum": "" }, "require": { - "doctrine/cache": "^1.11 || ^2.0", "doctrine/dbal": "^3.7.0 || ^4.0", - "doctrine/persistence": "^2.2 || ^3", + "doctrine/deprecations": "^1.0", + "doctrine/persistence": "^3.1 || ^4", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.4 || ^8.0", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" + "php": "^8.1", + "symfony/cache": "^6.4 || ^7.0", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3", + "symfony/framework-bundle": "^6.4 || ^7.0", + "symfony/service-contracts": "^2.5 || ^3" }, "conflict": { "doctrine/annotations": ">=3.0", + "doctrine/cache": "< 1.11", "doctrine/orm": "<2.17 || >=4.0", - "twig/twig": "<1.34 || >=2.0 <2.4" + "symfony/var-exporter": "< 6.4.1 || 7.0.0", + "twig/twig": "<2.13 || >=3.0 <3.0.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^12", - "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.17 || ^3.0", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^14", + "doctrine/orm": "^2.17 || ^3.1", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^5", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.53 || ^12.3.10", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1 || ^7.0", - "symfony/property-info": "^5.4 || ^6.0 || ^7.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/string": "^5.4 || ^6.0 || ^7.0", - "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/validator": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", - "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0", - "twig/twig": "^1.34 || ^2.12 || ^3.0", - "vimeo/psalm": "^5.15" + "symfony/doctrine-messenger": "^6.4 || ^7.0", + "symfony/expression-language": "^6.4 || ^7.0", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/messenger": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.0", + "symfony/security-bundle": "^6.4 || ^7.0", + "symfony/stopwatch": "^6.4 || ^7.0", + "symfony/string": "^6.4 || ^7.0", + "symfony/twig-bridge": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "symfony/var-exporter": "^6.4.1 || ^7.0.1", + "symfony/web-profiler-bundle": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0", + "twig/twig": "^2.14.7 || ^3.0.4" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -528,7 +435,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.12.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.3" }, "funding": [ { @@ -544,54 +451,47 @@ "type": "tidelift" } ], - "time": "2024-03-19T07:20:37+00:00" + "time": "2026-06-08T08:22:50+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.3.1", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0" + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", - "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1e380c6dd8ac8488217f39cff6b77e367f1a644b", + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-bundle": "^2.4 || ^3.0", "doctrine/migrations": "^3.2", - "php": "^7.2|^8.0", + "php": "^7.2 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "composer/semver": "^3.0", - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^12 || ^14", "doctrine/orm": "^2.6 || ^3", - "doctrine/persistence": "^2.0 || ^3 ", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^8.5|^9.5", - "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^3 || ^5", - "symfony/phpunit-bridge": "^6.3 || ^7", - "symfony/var-exporter": "^5.4 || ^6 || ^7", - "vimeo/psalm": "^4.30 || ^5.15" + "phpstan/phpstan": "^1.4 || ^2", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpstan/phpstan-strict-rules": "^1.1 || ^2", + "phpstan/phpstan-symfony": "^1.3 || ^2", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/phpunit-bridge": "^6.3 || ^7 || ^8", + "symfony/var-exporter": "^5.4 || ^6 || ^7 || ^8" }, "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\MigrationsBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Doctrine\\Bundle\\MigrationsBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -620,7 +520,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.1" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.7.0" }, "funding": [ { @@ -636,20 +536,20 @@ "type": "tidelift" } ], - "time": "2024-05-14T20:32:18+00:00" + "time": "2025-11-15T19:02:59+00:00" }, { "name": "doctrine/event-manager", - "version": "2.0.1", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf", "shasum": "" }, "require": { @@ -659,10 +559,10 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "doctrine/coding-standard": "^14", + "phpdocumentor/guides-cli": "^1.4", + "phpstan/phpstan": "^2.1.32", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -711,7 +611,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + "source": "https://github.com/doctrine/event-manager/tree/2.1.1" }, "funding": [ { @@ -727,37 +627,36 @@ "type": "tidelift" } ], - "time": "2024-05-22T20:47:39+00:00" + "time": "2026-01-29T07:11:08+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -802,7 +701,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, "funding": [ { @@ -818,34 +717,33 @@ "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.4" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^14", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -872,7 +770,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" }, "funding": [ { @@ -888,7 +786,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2026-01-05T06:47:08+00:00" }, { "name": "doctrine/lexer", @@ -969,47 +867,48 @@ }, { "name": "doctrine/migrations", - "version": "3.7.4", + "version": "3.9.7", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "954e0a314c2f0eb9fb418210445111747de254a6" + "reference": "96cb2a89b56c9efb0bac38e606dc0b0f13e650ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/954e0a314c2f0eb9fb418210445111747de254a6", - "reference": "954e0a314c2f0eb9fb418210445111747de254a6", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/96cb2a89b56c9efb0bac38e606dc0b0f13e650ec", + "reference": "96cb2a89b56c9efb0bac38e606dc0b0f13e650ec", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.5.1 || ^4", + "doctrine/dbal": "^3.6 || ^4", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2.0", "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.2 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.2 || ^7.0 || ^8.0" }, "conflict": { "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "doctrine/orm": "^2.13 || ^3", - "doctrine/persistence": "^2 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.4", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^10.3", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "fig/log-test": "^1", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1021,7 +920,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" + "Doctrine\\Migrations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1051,7 +950,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.7.4" + "source": "https://github.com/doctrine/migrations/tree/3.9.7" }, "funding": [ { @@ -1067,20 +966,20 @@ "type": "tidelift" } ], - "time": "2024-03-06T13:41:11+00:00" + "time": "2026-04-23T19:33:20+00:00" }, { "name": "doctrine/orm", - "version": "3.2.0", + "version": "3.6.7", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "37946d3a21ddf837c0d84f8156ee60a92102e332" + "reference": "bc217c0e19c3a9eadfa67697143b87c9ba01272c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/37946d3a21ddf837c0d84f8156ee60a92102e332", - "reference": "37946d3a21ddf837c0d84f8156ee60a92102e332", + "url": "https://api.github.com/repos/doctrine/orm/zipball/bc217c0e19c3a9eadfa67697143b87c9ba01272c", + "reference": "bc217c0e19c3a9eadfa67697143b87c9ba01272c", "shasum": "" }, "require": { @@ -1092,22 +991,22 @@ "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3 || ^2", "doctrine/lexer": "^3", - "doctrine/persistence": "^3.3.1", + "doctrine/persistence": "^3.3.1 || ^4", "ext-ctype": "*", "php": "^8.1", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.3.9 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.3.9 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^12.0", + "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", - "phpstan/phpstan": "1.11.1", - "phpunit/phpunit": "^10.4.0", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "2.1.23", + "phpstan/phpstan-deprecation-rules": "^2", + "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4 || ^6.2 || ^7.0", - "vimeo/psalm": "5.24.0" + "symfony/cache": "^5.4 || ^6.2 || ^7.0 || ^8.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1153,47 +1052,43 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.2.0" + "source": "https://github.com/doctrine/orm/tree/3.6.7" }, - "time": "2024-05-23T14:27:52+00:00" + "time": "2026-05-25T16:45:47+00:00" }, { "name": "doctrine/persistence", - "version": "3.3.2", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "477da35bd0255e032826f440b94b3e37f2d56f42" + "reference": "49ab73e0d3e2ac8d1f5ecda3dd8acd5503781e8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/477da35bd0255e032826f440b94b3e37f2d56f42", - "reference": "477da35bd0255e032826f440b94b3e37f2d56f42", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/49ab73e0d3e2ac8d1f5ecda3dd8acd5503781e8b", + "reference": "49ab73e0d3e2ac8d1f5ecda3dd8acd5503781e8b", "shasum": "" }, "require": { + "doctrine/deprecations": "^1", "doctrine/event-manager": "^1 || ^2", - "php": "^7.2 || ^8.0", + "php": "^8.1", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, - "conflict": { - "doctrine/common": "<2.10" - }, "require-dev": { - "composer/package-versions-deprecated": "^1.11", - "doctrine/coding-standard": "^11", - "doctrine/common": "^3.0", - "phpstan/phpstan": "1.9.4", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.3.0" + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.58 || ^12", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0 || ^8.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Persistence\\": "src/Persistence" + "Doctrine\\Persistence\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1237,7 +1132,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.3.2" + "source": "https://github.com/doctrine/persistence/tree/4.2.0" }, "funding": [ { @@ -1253,30 +1148,30 @@ "type": "tidelift" } ], - "time": "2024-03-12T14:54:36+00:00" + "time": "2026-04-26T12:12:52+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.4.0", + "version": "1.5.4", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc" + "reference": "9563949f5cd3bd12a17d12fb980528bc141c5806" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d1ac84aef745c69ea034929eb6d65a6908b675cc", - "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/9563949f5cd3bd12a17d12fb980528bc141c5806", + "reference": "9563949f5cd3bd12a17d12fb980528bc141c5806", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "doctrine/coding-standard": "^14", + "ergebnis/phpunit-slow-test-detector": "^2.20", + "phpstan/phpstan": "^2.1.31", + "phpunit/phpunit": "^10.5.58" }, "bin": [ "bin/sql-formatter" @@ -1306,22 +1201,22 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.4.0" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.4" }, - "time": "2024-05-08T08:12:09+00:00" + "time": "2026-02-08T16:21:46+00:00" }, { "name": "egulias/email-validator", - "version": "4.0.2", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", "shasum": "" }, "require": { @@ -1367,7 +1262,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.4" }, "funding": [ { @@ -1375,20 +1270,76 @@ "type": "github" } ], - "time": "2023-10-06T06:47:41+00:00" + "time": "2025-03-06T22:45:56+00:00" }, { - "name": "monolog/monolog", - "version": "3.6.0", + "name": "erusev/parsedown", + "version": "1.8.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" + "url": "https://github.com/erusev/parsedown.git", + "reference": "96baaad00f71ba04d76e45b4620f54d3beabd6f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/96baaad00f71ba04d76e45b4620f54d3beabd6f7", + "reference": "96baaad00f71ba04d76e45b4620f54d3beabd6f7", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5|^8.5|^9.6" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "support": { + "issues": "https://github.com/erusev/parsedown/issues", + "source": "https://github.com/erusev/parsedown/tree/1.8.0" + }, + "funding": [ + { + "url": "https://github.com/erusev", + "type": "github" + } + ], + "time": "2026-02-16T11:41:01+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", "shasum": "" }, "require": { @@ -1406,14 +1357,16 @@ "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", + "mongodb/mongodb": "^1.8 || ^2.0", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.5.17", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", "predis/predis": "^1.1 || ^2", - "ruflin/elastica": "^7", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -1464,7 +1417,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.6.0" + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" }, "funding": [ { @@ -1476,7 +1429,7 @@ "type": "tidelift" } ], - "time": "2024-04-12T21:02:21+00:00" + "time": "2026-01-02T08:56:05+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1533,16 +1486,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.4.1", + "version": "5.6.7", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" + "reference": "31a105931bc8ffa3a123383829772e832fd8d903" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/31a105931bc8ffa3a123383829772e832fd8d903", + "reference": "31a105931bc8ffa3a123383829772e832fd8d903", "shasum": "" }, "require": { @@ -1551,17 +1504,17 @@ "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7", - "webmozart/assert": "^1.9.1" + "phpstan/phpdoc-parser": "^1.7|^2.0", + "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { - "mockery/mockery": "~1.3.5", + "mockery/mockery": "~1.3.5 || ~1.6.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-webmozart-assert": "^1.2", "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^5.13" + "psalm/phar": "^5.26" }, "type": "library", "extra": { @@ -1591,29 +1544,29 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.7" }, - "time": "2024-05-21T05:55:05+00:00" + "time": "2026-03-18T20:47:46+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.2", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { "ext-tokenizer": "*", @@ -1649,22 +1602,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" }, - "time": "2024-02-23T11:10:43+00:00" + "time": "2025-11-21T15:09:14+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.0", + "version": "1.33.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", "shasum": "" }, "require": { @@ -1696,9 +1649,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0" }, - "time": "2024-05-06T12:04:23+00:00" + "time": "2024-10-13T11:25:22+00:00" }, { "name": "psr/cache", @@ -1958,16 +1911,16 @@ }, { "name": "psr/log", - "version": "3.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -2002,22 +1955,22 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "symfony/asset", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "dc7600afc7e6676b3401326ae9c9abfcee4b40c5" + "reference": "d2e2f014ccd6ec9fae8dbe6336a4164346a2a856" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/dc7600afc7e6676b3401326ae9c9abfcee4b40c5", - "reference": "dc7600afc7e6676b3401326ae9c9abfcee4b40c5", + "url": "https://api.github.com/repos/symfony/asset/zipball/d2e2f014ccd6ec9fae8dbe6336a4164346a2a856", + "reference": "d2e2f014ccd6ec9fae8dbe6336a4164346a2a856", "shasum": "" }, "require": { @@ -2027,9 +1980,9 @@ "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2057,7 +2010,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v7.0.7" + "source": "https://github.com/symfony/asset/tree/v7.4.8" }, "funding": [ { @@ -2068,46 +2021,53 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/asset-mapper", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/asset-mapper.git", - "reference": "0643f4849f10584974e7cd171b047ec9d031a14e" + "reference": "ae9f79bd91fffda34b2fdd6dbeae10732945e0bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/0643f4849f10584974e7cd171b047ec9d031a14e", - "reference": "0643f4849f10584974e7cd171b047ec9d031a14e", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/ae9f79bd91fffda34b2fdd6dbeae10732945e0bf", + "reference": "ae9f79bd91fffda34b2fdd6dbeae10732945e0bf", "shasum": "" }, "require": { "composer/semver": "^3.0", "php": ">=8.2", - "symfony/filesystem": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/framework-bundle": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4.13|^7.1.6|^8.0", "symfony/event-dispatcher-contracts": "^3.0", - "symfony/finder": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0" + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2135,7 +2095,7 @@ "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset-mapper/tree/v7.0.7" + "source": "https://github.com/symfony/asset-mapper/tree/v7.4.13" }, "funding": [ { @@ -2146,37 +2106,44 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/cache", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "48e3508338987d63b0114a00c208c4cbb76e5303" + "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/48e3508338987d63b0114a00c208c4cbb76e5303", - "reference": "48e3508338987d63b0114a00c208c4cbb76e5303", + "url": "https://api.github.com/repos/symfony/cache/zipball/4c09e18a92cce126cc0d1155825279fca8cd0673", + "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673", "shasum": "" }, "require": { "php": ">=8.2", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^2.5|^3", + "symfony/cache-contracts": "^3.6", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "conflict": { "doctrine/dbal": "<3.6", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1", "symfony/dependency-injection": "<6.4", "symfony/http-kernel": "<6.4", "symfony/var-dumper": "<6.4" @@ -2191,12 +2158,13 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2231,7 +2199,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.0.7" + "source": "https://github.com/symfony/cache/tree/v7.4.13" }, "funding": [ { @@ -2242,25 +2210,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-24T08:43:14+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "225e8a254166bd3442e370c6f50145465db63831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/225e8a254166bd3442e370c6f50145465db63831", + "reference": "225e8a254166bd3442e370c6f50145465db63831", "shasum": "" }, "require": { @@ -2269,12 +2241,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" } }, "autoload": { @@ -2307,7 +2279,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.7.0" }, "funding": [ { @@ -2318,25 +2290,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-05-05T15:33:14+00:00" }, { "name": "symfony/clock", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "2008671acb4a30b01c453de193cf9c80549ebda6" + "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/2008671acb4a30b01c453de193cf9c80549ebda6", - "reference": "2008671acb4a30b01c453de193cf9c80549ebda6", + "url": "https://api.github.com/repos/symfony/clock/zipball/674fa3b98e21531dd040e613479f5f6fa8f32111", + "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111", "shasum": "" }, "require": { @@ -2381,7 +2357,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.0.7" + "source": "https://github.com/symfony/clock/tree/v7.4.8" }, "funding": [ { @@ -2392,31 +2368,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/config", - "version": "v7.0.7", + "version": "v7.4.10", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "f66f908a975500aa4594258bf454dc66e3939eac" + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f66f908a975500aa4594258bf454dc66e3939eac", - "reference": "f66f908a975500aa4594258bf454dc66e3939eac", + "url": "https://api.github.com/repos/symfony/config/zipball/d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^6.4|^7.0", + "symfony/filesystem": "^7.1|^8.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -2424,11 +2404,11 @@ "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2456,7 +2436,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.0.7" + "source": "https://github.com/symfony/config/tree/v7.4.10" }, "funding": [ { @@ -2467,32 +2447,37 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-03T14:20:49+00:00" }, { "name": "symfony/console", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c981e0e9380ce9f146416bde3150c79197ce9986" + "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986", - "reference": "c981e0e9380ce9f146416bde3150c79197ce9986", + "url": "https://api.github.com/repos/symfony/console/zipball/85095d2573eaefaf35e40b9513a9bf09f72cd217", + "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^7.2|^8.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -2506,16 +2491,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2549,7 +2534,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.7" + "source": "https://github.com/symfony/console/tree/v7.4.13" }, "funding": [ { @@ -2560,42 +2545,43 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-24T08:56:14+00:00" }, { "name": "symfony/debug-bundle", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "4b013a2c886cfd0292d90a9a9cebfa29ec7b578c" + "reference": "3eb18c1e6cd16da2cea1f1b5162e442af4afee44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/4b013a2c886cfd0292d90a9a9cebfa29ec7b578c", - "reference": "4b013a2c886cfd0292d90a9a9cebfa29ec7b578c", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/3eb18c1e6cd16da2cea1f1b5162e442af4afee44", + "reference": "3eb18c1e6cd16da2cea1f1b5162e442af4afee44", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" - }, - "conflict": { - "symfony/config": "<6.4", - "symfony/dependency-injection": "<6.4" + "symfony/config": "^7.3|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/config": "^6.4|^7.0", - "symfony/web-profiler-bundle": "^6.4|^7.0" + "symfony/web-profiler-bundle": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -2623,7 +2609,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v7.0.7" + "source": "https://github.com/symfony/debug-bundle/tree/v7.4.8" }, "funding": [ { @@ -2634,33 +2620,37 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "4db1314337f4dd864113f88e08c9a7f98b1c1324" + "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4db1314337f4dd864113f88e08c9a7f98b1c1324", - "reference": "4db1314337f4dd864113f88e08c9a7f98b1c1324", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f299e20ce983be6c0744952533c6dfeaaa1448e2", + "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2", "shasum": "" }, "require": { "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.3", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -2673,9 +2663,9 @@ "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -2703,7 +2693,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.0.7" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.13" }, "funding": [ { @@ -2714,25 +2704,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-20T14:07:29+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/50f59d1f3ca46d41ac911f97a78626b6756af35b", + "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b", "shasum": "" }, "require": { @@ -2740,12 +2734,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" } }, "autoload": { @@ -2770,7 +2764,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.0" }, "funding": [ { @@ -2781,36 +2775,42 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-04-13T15:52:40+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v7.0.7", + "version": "v7.4.9", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "da605530d1a75162359d494efc00f767f7fcd68a" + "reference": "7a87c85853f3069e3657a823c62b02952de46b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/da605530d1a75162359d494efc00f767f7fcd68a", - "reference": "da605530d1a75162359d494efc00f767f7fcd68a", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7a87c85853f3069e3657a823c62b02952de46b0a", + "reference": "7a87c85853f3069e3657a823c62b02952de46b0a", "shasum": "" }, "require": { "doctrine/event-manager": "^2", - "doctrine/persistence": "^3.1", + "doctrine/persistence": "^3.1|^4", "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "doctrine/collections": "<1.8", "doctrine/dbal": "<3.6", "doctrine/lexer": "<1.1", "doctrine/orm": "<2.15", @@ -2824,31 +2824,32 @@ "symfony/property-info": "<6.4", "symfony/security-bundle": "<6.4", "symfony/security-core": "<6.4", - "symfony/validator": "<6.4" + "symfony/validator": "<7.4" }, "require-dev": { - "doctrine/collections": "^1.0|^2.0", - "doctrine/data-fixtures": "^1.1", + "doctrine/collections": "^1.8|^2.0", + "doctrine/data-fixtures": "^1.1|^2", "doctrine/dbal": "^3.6|^4", "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/doctrine-messenger": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4.6|^7.0.6", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/doctrine-messenger": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.2|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -2876,7 +2877,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.0.7" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.9" }, "funding": [ { @@ -2887,31 +2888,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-04-29T14:19:39+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v7.0.7", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "78ec63bf2437187ac70ca13a2db3f2a8e41b3493" + "reference": "a429cd95983eaea2371ea279bed3b8a93b9ecdd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/78ec63bf2437187ac70ca13a2db3f2a8e41b3493", - "reference": "78ec63bf2437187ac70ca13a2db3f2a8e41b3493", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/a429cd95983eaea2371ea279bed3b8a93b9ecdd3", + "reference": "a429cd95983eaea2371ea279bed3b8a93b9ecdd3", "shasum": "" }, "require": { "doctrine/dbal": "^3.6|^4", "php": ">=8.2", - "symfony/messenger": "^6.4|^7.0", + "symfony/messenger": "^7.2|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -2919,8 +2924,8 @@ }, "require-dev": { "doctrine/persistence": "^1.3|^2|^3", - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0" }, "type": "symfony-messenger-bridge", "autoload": { @@ -2948,7 +2953,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v7.0.7" + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.4.6" }, "funding": [ { @@ -2959,25 +2964,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-02-18T09:40:04+00:00" }, { "name": "symfony/dotenv", - "version": "v7.0.7", + "version": "v7.4.11", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "0fd573c141e1990848702d56329050efd5bf25cc" + "reference": "82e9b1355c68ef7b96397dbd34cc75a92eebae7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/0fd573c141e1990848702d56329050efd5bf25cc", - "reference": "0fd573c141e1990848702d56329050efd5bf25cc", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/82e9b1355c68ef7b96397dbd34cc75a92eebae7c", + "reference": "82e9b1355c68ef7b96397dbd34cc75a92eebae7c", "shasum": "" }, "require": { @@ -2988,8 +2997,8 @@ "symfony/process": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3022,7 +3031,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.0.7" + "source": "https://github.com/symfony/dotenv/tree/v7.4.11" }, "funding": [ { @@ -3033,40 +3042,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-11T13:02:51+00:00" }, { "name": "symfony/error-handler", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab" + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf97429887e40480c847bfeb6c3991e1e2c086ab", - "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -3097,7 +3113,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.0.7" + "source": "https://github.com/symfony/error-handler/tree/v7.4.8" }, "funding": [ { @@ -3108,25 +3124,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.7", + "version": "v7.4.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9" + "reference": "e4a2e29753c7801f7a8340e066cfa788f3bc8101" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9", - "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e4a2e29753c7801f7a8340e066cfa788f3bc8101", + "reference": "e4a2e29753c7801f7a8340e066cfa788f3bc8101", "shasum": "" }, "require": { @@ -3143,13 +3163,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3177,7 +3198,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.9" }, "funding": [ { @@ -3188,25 +3209,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-04-18T13:18:21+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/ccba7060602b7fed0b03c85bf025257f76d9ef32", + "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32", "shasum": "" }, "require": { @@ -3215,12 +3240,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" } }, "autoload": { @@ -3253,7 +3278,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.0" }, "funding": [ { @@ -3264,30 +3289,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-01-05T13:30:16+00:00" }, { "name": "symfony/expression-language", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "b8ec919a6d3d47fc4e7845c256d164413207bf73" + "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/b8ec919a6d3d47fc4e7845c256d164413207bf73", - "reference": "b8ec919a6d3d47fc4e7845c256d164413207bf73", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/87ff95687748f4af65e4d5a6e917d448ec52aa83", + "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -3316,7 +3346,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.0.7" + "source": "https://github.com/symfony/expression-language/tree/v7.4.8" }, "funding": [ { @@ -3327,32 +3357,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.7", + "version": "v7.4.11", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5" + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/cc168be6fbdcdf3401f50ae863ee3818ed4338f5", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50", "shasum": "" }, "require": { "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/process": "^6.4|^7.0" + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3380,7 +3416,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.7" + "source": "https://github.com/symfony/filesystem/tree/v7.4.11" }, "funding": [ { @@ -3391,32 +3427,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-11T16:38:44+00:00" }, { "name": "symfony/finder", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c" + "reference": "e0be088d22278583a82da281886e8c3592fbf149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c", + "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", + "reference": "e0be088d22278583a82da281886e8c3592fbf149", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3444,7 +3484,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.0.7" + "source": "https://github.com/symfony/finder/tree/v7.4.8" }, "funding": [ { @@ -3455,37 +3495,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/flex", - "version": "v2.4.5", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "b0a405f40614c9f584b489d54f91091817b0e26e" + "reference": "4a6d98eea3ebc7f68d82810cb682eedca2649e99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/b0a405f40614c9f584b489d54f91091817b0e26e", - "reference": "b0a405f40614c9f584b489d54f91091817b0e26e", + "url": "https://api.github.com/repos/symfony/flex/zipball/4a6d98eea3ebc7f68d82810cb682eedca2649e99", + "reference": "4a6d98eea3ebc7f68d82810cb682eedca2649e99", "shasum": "" }, "require": { "composer-plugin-api": "^2.1", - "php": ">=8.0" + "php": ">=8.1" + }, + "conflict": { + "composer/semver": "<1.7.2", + "symfony/dotenv": "<5.4" }, "require-dev": { "composer/composer": "^2.1", - "symfony/dotenv": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/phpunit-bridge": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" + "phpunit/phpunit": "^12.4", + "symfony/dotenv": "^6.4.41|^7.4.13|^8.0.13", + "symfony/filesystem": "^6.4|^7.4|^8.0", + "symfony/process": "^6.4|^7.4|^8.0" }, "type": "composer-plugin", "extra": { @@ -3509,7 +3557,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.5" + "source": "https://github.com/symfony/flex/tree/v2.11.0" }, "funding": [ { @@ -3520,35 +3568,40 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-03-02T08:16:47+00:00" + "time": "2026-05-29T17:25:22+00:00" }, { "name": "symfony/form", - "version": "v7.0.7", + "version": "v7.4.9", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "b4df6a399a2b03782a0163807239db342659f54f" + "reference": "b6c107af659106abec1771d9d7d22da528644d3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/b4df6a399a2b03782a0163807239db342659f54f", - "reference": "b4df6a399a2b03782a0163807239db342659f54f", + "url": "https://api.github.com/repos/symfony/form/zipball/b6c107af659106abec1771d9d7d22da528644d3a", + "reference": "b6c107af659106abec1771d9d7d22da528644d3a", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/options-resolver": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/options-resolver": "^7.3|^8.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -3558,26 +3611,28 @@ "symfony/error-handler": "<6.4", "symfony/framework-bundle": "<6.4", "symfony/http-kernel": "<6.4", + "symfony/intl": "<7.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<6.4" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4.12|^7.1.5|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3605,7 +3660,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.0.7" + "source": "https://github.com/symfony/form/tree/v7.4.9" }, "funding": [ { @@ -3616,114 +3671,126 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-04-29T14:39:19+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "5d9cee370509056b8b7a5009d7112d045d8f0a64" + "reference": "8be39c7bf9e6f58fe49c07927572a9df7c961c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/5d9cee370509056b8b7a5009d7112d045d8f0a64", - "reference": "5d9cee370509056b8b7a5009d7112d045d8f0a64", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/8be39c7bf9e6f58fe49c07927572a9df7c961c95", + "reference": "8be39c7bf9e6f58fe49c07927572a9df7c961c95", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/cache": "^6.4.12|^7.0|^8.0", + "symfony/config": "^7.4.4|^8.0.4", + "symfony/dependency-injection": "^7.4.4|^8.0.4", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/error-handler": "^7.3|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^7.1|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/routing": "^7.4|^8.0" }, "conflict": { "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/asset": "<6.4", "symfony/asset-mapper": "<6.4", "symfony/clock": "<6.4", "symfony/console": "<6.4", "symfony/dom-crawler": "<6.4", "symfony/dotenv": "<6.4", - "symfony/form": "<6.4", + "symfony/form": "<7.4", "symfony/http-client": "<6.4", "symfony/lock": "<6.4", "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4", - "symfony/mime": "<6.4", + "symfony/messenger": "<7.4", + "symfony/mime": "<6.4.37|>=7.0,<7.4.9|>=8.0,<8.0.9", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", + "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", "symfony/security-core": "<6.4", - "symfony/security-csrf": "<6.4", - "symfony/serializer": "<6.4", + "symfony/security-csrf": "<7.2", + "symfony/serializer": "<7.2.5", "symfony/stopwatch": "<6.4", - "symfony/translation": "<6.4", + "symfony/translation": "<7.3", "symfony/twig-bridge": "<6.4", "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", - "symfony/workflow": "<6.4" + "symfony/webhook": "<7.2", + "symfony/workflow": "<7.4" }, "require-dev": { "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "seld/jsonlint": "^1.10", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/notifier": "^6.4|^7.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/json-streamer": "^7.3|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^6.4.37|^7.4.9|^8.0.9", + "symfony/notifier": "^6.4|^7.0|^8.0", + "symfony/object-mapper": "^7.3|^8.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/scheduler": "^6.4.4|^7.0.4", - "symfony/security-bundle": "^6.4|^7.0", - "symfony/semaphore": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/scheduler": "^6.4.4|^7.0.4|^8.0", + "symfony/security-bundle": "^6.4|^7.0|^8.0", + "symfony/semaphore": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.2.5|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.3|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/webhook": "^7.2|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.3|^8.0", + "twig/twig": "^3.12" }, "type": "symfony-bundle", "autoload": { @@ -3751,7 +3818,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.0.7" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.13" }, "funding": [ { @@ -3762,34 +3829,42 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T18:04:28+00:00" }, { "name": "symfony/http-client", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "6ce3c4c899051b3d7326ea1a1dda3729e29ae6d7" + "reference": "e8a112b8415707265a7e614278136a9d92989a6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/6ce3c4c899051b3d7326ea1a1dda3729e29ae6d7", - "reference": "6ce3c4c899051b3d7326ea1a1dda3729e29ae6d7", + "url": "https://api.github.com/repos/symfony/http-client/zipball/e8a112b8415707265a7e614278136a9d92989a6a", + "reference": "e8a112b8415707265a7e614278136a9d92989a6a", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/http-client-contracts": "^3.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/polyfill-php83": "^1.29", "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "amphp/amp": "<2.5", + "amphp/socket": "<1.1", "php-http/discovery": "<1.15", "symfony/http-foundation": "<6.4" }, @@ -3800,19 +3875,20 @@ "symfony/http-client-implementation": "3.0" }, "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", "guzzlehttp/promises": "^1.4|^2.0", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/amphp-http-client-meta": "^1.0|^2.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3843,7 +3919,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.0.7" + "source": "https://github.com/symfony/http-client/tree/v7.4.13" }, "funding": [ { @@ -3854,25 +3930,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-24T09:57:54+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.5.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "20414d96f391677bf80078aa55baece78b82647d" + "reference": "4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", - "reference": "20414d96f391677bf80078aa55baece78b82647d", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d", + "reference": "4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d", "shasum": "" }, "require": { @@ -3880,12 +3960,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" } }, "autoload": { @@ -3921,7 +4001,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.0" }, "funding": [ { @@ -3932,45 +4012,50 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-03-06T13:17:50+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8" + "reference": "bc354f47c62301e990b7874fa662326368508e2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0194e064b8bdc29381462f790bab04e1cac8fdc8", - "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bc354f47c62301e990b7874fa662326368508e2c", + "reference": "bc354f47c62301e990b7874fa662326368508e2c", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" }, "conflict": { "doctrine/dbal": "<3.6", - "symfony/cache": "<6.4" + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3998,7 +4083,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.0.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.13" }, "funding": [ { @@ -4009,33 +4094,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-24T11:20:33+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25" + "reference": "9df847980c436451f4f51d1284491bb4356dd989" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", - "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9df847980c436451f4f51d1284491bb4356dd989", + "reference": "9df847980c436451f4f51d1284491bb4356dd989", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -4045,6 +4135,7 @@ "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", "symfony/form": "<6.4", "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", @@ -4055,35 +4146,35 @@ "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", "symfony/var-dumper": "<6.4", - "twig/twig": "<3.0.4" + "twig/twig": "<3.12" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4.1|^7.0.1|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" }, "type": "library", "autoload": { @@ -4111,7 +4202,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.0.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.13" }, "funding": [ { @@ -4122,34 +4213,41 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-29T12:20:25+00:00" + "time": "2026-05-27T08:31:43+00:00" }, { "name": "symfony/intl", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "dd12042707110995e2e7d80103f8d9928bea8621" + "reference": "7cfb7792d580dea833647420afd5f2f98df8457b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/dd12042707110995e2e7d80103f8d9928bea8621", - "reference": "dd12042707110995e2e7d80103f8d9928bea8621", + "url": "https://api.github.com/repos/symfony/intl/zipball/7cfb7792d580dea833647420afd5f2f98df8457b", + "reference": "7cfb7792d580dea833647420afd5f2f98df8457b", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/string": "<7.1" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4194,7 +4292,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.0.7" + "source": "https://github.com/symfony/intl/tree/v7.4.8" }, "funding": [ { @@ -4205,25 +4303,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-30T12:55:43+00:00" }, { "name": "symfony/mailer", - "version": "v7.0.7", + "version": "v7.4.12", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a" + "reference": "5cefb712a25f320579615ba9e1942abaeade7dff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", - "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", + "url": "https://api.github.com/repos/symfony/mailer/zipball/5cefb712a25f320579615ba9e1942abaeade7dff", + "reference": "5cefb712a25f320579615ba9e1942abaeade7dff", "shasum": "" }, "require": { @@ -4231,8 +4333,8 @@ "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4243,10 +4345,10 @@ "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4274,7 +4376,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.0.7" + "source": "https://github.com/symfony/mailer/tree/v7.4.12" }, "funding": [ { @@ -4285,54 +4387,62 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-20T07:20:23+00:00" }, { "name": "symfony/messenger", - "version": "v7.0.7", + "version": "v7.4.12", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "90c217478f85d5289aae597551e2a4251e4d08c3" + "reference": "906387986caecc10b2ad2e85f715d834e5133a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/90c217478f85d5289aae597551e2a4251e4d08c3", - "reference": "90c217478f85d5289aae597551e2a4251e4d08c3", + "url": "https://api.github.com/repos/symfony/messenger/zipball/906387986caecc10b2ad2e85f715d834e5133a04", + "reference": "906387986caecc10b2ad2e85f715d834e5133a04", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/clock": "^6.4|^7.0" + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<6.4", + "symfony/console": "<7.2", "symfony/event-dispatcher": "<6.4", "symfony/event-dispatcher-contracts": "<2.5", "symfony/framework-bundle": "<6.4", - "symfony/http-kernel": "<6.4", - "symfony/serializer": "<6.4" + "symfony/http-kernel": "<7.3", + "symfony/lock": "<7.4", + "symfony/serializer": "<6.4.32|>=7.3,<7.3.10|>=7.4,<7.4.4|>=8.0,<8.0.4" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/console": "^7.2|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^7.3|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.32|~7.3.10|^7.4.4|^8.0.4", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4360,7 +4470,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v7.0.7" + "source": "https://github.com/symfony/messenger/tree/v7.4.12" }, "funding": [ { @@ -4371,48 +4481,53 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-19T07:02:47+00:00" }, { "name": "symfony/mime", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0" + "reference": "a845722765c4f6b2ce88beaf4f4479975b186770" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/3adbf110c306546f6f00337f421d2edca0e8d3c0", - "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0", + "url": "https://api.github.com/repos/symfony/mime/zipball/a845722765c4f6b2ce88beaf4f4479975b186770", + "reference": "a845722765c4f6b2ce88beaf4f4479975b186770", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4" + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" }, "type": "library", "autoload": { @@ -4444,7 +4559,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.0.7" + "source": "https://github.com/symfony/mime/tree/v7.4.13" }, "funding": [ { @@ -4455,31 +4570,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T16:22:37+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.0.7", + "version": "v7.4.12", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "aaa40a0a6512976a6e07d5def7ce9476862ebd65" + "reference": "20bb2345ac7a9dd57724b6b7ada92c6d7d67b4b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/aaa40a0a6512976a6e07d5def7ce9476862ebd65", - "reference": "aaa40a0a6512976a6e07d5def7ce9476862ebd65", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/20bb2345ac7a9dd57724b6b7ada92c6d7d67b4b8", + "reference": "20bb2345ac7a9dd57724b6b7ada92c6d7d67b4b8", "shasum": "" }, "require": { "monolog/monolog": "^3", "php": ">=8.2", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4488,13 +4608,13 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mailer": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "symfony-bridge", "autoload": { @@ -4522,7 +4642,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.0.7" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.12" }, "funding": [ { @@ -4533,53 +4653,52 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-20T07:20:23+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.10.0", + "version": "v3.11.2", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" + "reference": "d87468010570b2ec766152184918ee8d267c7411" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", - "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/d87468010570b2ec766152184918ee8d267c7411", + "reference": "d87468010570b2ec766152184918ee8d267c7411", "shasum": "" }, "require": { + "composer-runtime-api": "^2.0", "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", - "php": ">=7.2.5", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" + "php": ">=8.1", + "symfony/config": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/monolog-bridge": "^6.4 || ^7.0", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.3 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "symfony/console": "^6.4 || ^7.0", + "symfony/phpunit-bridge": "^7.3.3", + "symfony/yaml": "^6.4 || ^7.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Bundle\\MonologBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4603,7 +4722,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.11.2" }, "funding": [ { @@ -4614,25 +4733,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-06T17:08:13+00:00" + "time": "2026-04-02T18:23:01+00:00" }, { "name": "symfony/notifier", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", - "reference": "1eeee1522fad108d7f094b1bf5453e5466e6f8fc" + "reference": "cc04bd417f84777bf09c14bd7dcb00010c9f1e52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/1eeee1522fad108d7f094b1bf5453e5466e6f8fc", - "reference": "1eeee1522fad108d7f094b1bf5453e5466e6f8fc", + "url": "https://api.github.com/repos/symfony/notifier/zipball/cc04bd417f84777bf09c14bd7dcb00010c9f1e52", + "reference": "cc04bd417f84777bf09c14bd7dcb00010c9f1e52", "shasum": "" }, "require": { @@ -4646,10 +4769,12 @@ "symfony/http-kernel": "<6.4" }, "require-dev": { + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/http-client": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0" + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4681,7 +4806,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/v7.0.7" + "source": "https://github.com/symfony/notifier/tree/v7.4.8" }, "funding": [ { @@ -4692,25 +4817,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "23cc173858776ad451e31f053b1c9f47840b2cfa" + "reference": "2888fcdc4dc2fd5f7c7397be78631e8af12e02b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/23cc173858776ad451e31f053b1c9f47840b2cfa", - "reference": "23cc173858776ad451e31f053b1c9f47840b2cfa", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/2888fcdc4dc2fd5f7c7397be78631e8af12e02b4", + "reference": "2888fcdc4dc2fd5f7c7397be78631e8af12e02b4", "shasum": "" }, "require": { @@ -4748,7 +4877,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.0.7" + "source": "https://github.com/symfony/options-resolver/tree/v7.4.8" }, "funding": [ { @@ -4759,25 +4888,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/password-hasher", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "5148b049248935f8a7b0a392aece2f22e9a1803d" + "reference": "18a7d92126c95962f7efbcc9e421ba710a366847" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/5148b049248935f8a7b0a392aece2f22e9a1803d", - "reference": "5148b049248935f8a7b0a392aece2f22e9a1803d", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/18a7d92126c95962f7efbcc9e421ba710a366847", + "reference": "18a7d92126c95962f7efbcc9e421ba710a366847", "shasum": "" }, "require": { @@ -4787,8 +4920,8 @@ "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4820,7 +4953,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.0.7" + "source": "https://github.com/symfony/password-hasher/tree/v7.4.8" }, "funding": [ { @@ -4831,29 +4964,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "e9247d281d694a5120554d9afaf54e070e88a603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -4861,8 +4998,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4898,7 +5035,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" }, "funding": [ { @@ -4909,29 +5046,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2026-05-26T05:58:03+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.29.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" + "reference": "445c90e341fccda10311019cf82ff73bb7343945" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", - "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/445c90e341fccda10311019cf82ff73bb7343945", + "reference": "445c90e341fccda10311019cf82ff73bb7343945", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance and support of other locales than \"en\"" @@ -4939,8 +5080,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4982,7 +5123,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.38.0" }, "funding": [ { @@ -4993,31 +5134,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:12:16+00:00" + "time": "2026-05-25T11:52:53+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.29.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" + "reference": "dc21118016c039a66235cf93d96b435ffb282412" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/dc21118016c039a66235cf93d96b435ffb282412", + "reference": "dc21118016c039a66235cf93d96b435ffb282412", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" @@ -5025,8 +5169,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5066,7 +5210,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.38.1" }, "funding": [ { @@ -5077,29 +5221,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2026-05-25T15:22:23+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -5107,8 +5255,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5147,7 +5295,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" }, "funding": [ { @@ -5158,29 +5306,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2026-05-25T13:48:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.38.2", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -5191,8 +5344,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5227,7 +5380,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" }, "funding": [ { @@ -5238,36 +5391,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2026-05-27T06:59:30+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.29.0", + "version": "v1.38.2", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "reference": "796a26abb75ce49f3a84433cd81bf1009d73d5f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/796a26abb75ce49f3a84433cd81bf1009d73d5f8", + "reference": "796a26abb75ce49f3a84433cd81bf1009d73d5f8", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5304,7 +5460,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.38.2" }, "funding": [ { @@ -5315,29 +5471,193 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2026-05-27T06:51:48+00:00" }, { - "name": "symfony/polyfill-uuid", - "version": "v1.29.0", + "name": "symfony/polyfill-php84", + "version": "v1.38.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", - "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", + "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-26T12:51:13+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.38.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", + "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.38.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-26T02:25:22+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.37.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/26dfec253c4cf3e51b541b52ddf7e42cb0908e94", + "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94", + "shasum": "" + }, + "require": { + "php": ">=7.2" }, "provide": { "ext-uuid": "*" @@ -5348,8 +5668,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5383,7 +5703,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.37.0" }, "funding": [ { @@ -5394,25 +5714,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/process", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0" + "reference": "f5804be144caceb570f6747519999636b664f24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0", + "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c", + "reference": "f5804be144caceb570f6747519999636b664f24c", "shasum": "" }, "require": { @@ -5444,7 +5768,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.0.7" + "source": "https://github.com/symfony/process/tree/v7.4.13" }, "funding": [ { @@ -5455,33 +5779,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/property-access", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "8661b861480d2807eb2789ff99d034c0c71ab955" + "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/8661b861480d2807eb2789ff99d034c0c71ab955", - "reference": "8661b861480d2807eb2789ff99d034c0c71ab955", + "url": "https://api.github.com/repos/symfony/property-access/zipball/b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", + "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0" + "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4|^8.0.4" }, "require-dev": { - "symfony/cache": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" }, "type": "library", "autoload": { @@ -5520,7 +5849,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.0.7" + "source": "https://github.com/symfony/property-access/tree/v7.4.8" }, "funding": [ { @@ -5531,43 +5860,50 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/property-info", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532" + "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/f0bdb46e19ab308527b324b7ec36161f6880a532", - "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532", + "url": "https://api.github.com/repos/symfony/property-info/zipball/ac5e82528b986c4f7cfccbf7764b5d2e824d6175", + "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/string": "^6.4|^7.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.4.7|^8.0.7" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/reflection-docblock": "<5.2|>=7", "phpdocumentor/type-resolver": "<1.5.1", + "symfony/cache": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/serializer": "<6.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^5.2", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5603,7 +5939,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.0.7" + "source": "https://github.com/symfony/property-info/tree/v7.4.8" }, "funding": [ { @@ -5614,25 +5950,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/routing", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b" + "reference": "3a162171bb008e5e0f15dce6581373a4c0e8390d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", - "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", + "url": "https://api.github.com/repos/symfony/routing/zipball/3a162171bb008e5e0f15dce6581373a4c0e8390d", + "reference": "3a162171bb008e5e0f15dce6581373a4c0e8390d", "shasum": "" }, "require": { @@ -5646,11 +5986,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5684,7 +6024,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.0.7" + "source": "https://github.com/symfony/routing/tree/v7.4.13" }, "funding": [ { @@ -5695,25 +6035,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-24T11:20:33+00:00" }, { "name": "symfony/runtime", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "e120730ef206b31bb5521b1a2389c058adbba9c7" + "reference": "1a24cf8aab3a9378117718b35525c4126ad3adec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/e120730ef206b31bb5521b1a2389c058adbba9c7", - "reference": "e120730ef206b31bb5521b1a2389c058adbba9c7", + "url": "https://api.github.com/repos/symfony/runtime/zipball/1a24cf8aab3a9378117718b35525c4126ad3adec", + "reference": "1a24cf8aab3a9378117718b35525c4126ad3adec", "shasum": "" }, "require": { @@ -5725,10 +6069,11 @@ }, "require-dev": { "composer/composer": "^2.6", - "symfony/console": "^6.4|^7.0", - "symfony/dotenv": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "composer-plugin", "extra": { @@ -5763,7 +6108,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.0.7" + "source": "https://github.com/symfony/runtime/tree/v7.4.13" }, "funding": [ { @@ -5774,41 +6119,46 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T18:04:28+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "8d11101574ce8e2147a04245f4b968911a43ffd5" + "reference": "0cbc6528aa583795ab44e43b4e92a09acf927c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/8d11101574ce8e2147a04245f4b968911a43ffd5", - "reference": "8d11101574ce8e2147a04245f4b968911a43ffd5", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/0cbc6528aa583795ab44e43b4e92a09acf927c6f", + "reference": "0cbc6528aa583795ab44e43b4e92a09acf927c6f", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.2", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/password-hasher": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4.11|^7.1.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -5822,31 +6172,27 @@ "symfony/validator": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", - "twig/twig": "^3.0.4", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1", - "web-token/jwt-signature-algorithm-eddsa": "^3.1", - "web-token/jwt-signature-algorithm-hmac": "^3.1", - "web-token/jwt-signature-algorithm-none": "^3.1", - "web-token/jwt-signature-algorithm-rsa": "^3.1" + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15", + "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "symfony-bundle", "autoload": { @@ -5874,7 +6220,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.0.7" + "source": "https://github.com/symfony/security-bundle/tree/v7.4.13" }, "funding": [ { @@ -5885,34 +6231,40 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/security-core", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "6af8ac3b4d9c41a0ce0a4e33d532ba2000b47348" + "reference": "25db686fcf2a3fe00e1cf6dcab1fcb7aac71ba9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/6af8ac3b4d9c41a0ce0a4e33d532ba2000b47348", - "reference": "6af8ac3b4d9c41a0ce0a4e33d532ba2000b47348", + "url": "https://api.github.com/repos/symfony/security-core/zipball/25db686fcf2a3fe00e1cf6dcab1fcb7aac71ba9b", + "reference": "25db686fcf2a3fe00e1cf6dcab1fcb7aac71ba9b", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher-contracts": "^2.5|^3", - "symfony/password-hasher": "^6.4|^7.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "symfony/dependency-injection": "<6.4", "symfony/event-dispatcher": "<6.4", "symfony/http-foundation": "<6.4", "symfony/ldap": "<6.4", @@ -5923,14 +6275,15 @@ "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/ldap": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/validator": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5958,7 +6311,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.0.7" + "source": "https://github.com/symfony/security-core/tree/v7.4.13" }, "funding": [ { @@ -5969,36 +6322,42 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "671d6736736555309991457dd877e7f6f3317d08" + "reference": "16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/671d6736736555309991457dd877e7f6f3317d08", - "reference": "671d6736736555309991457dd877e7f6f3317d08", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d", + "reference": "16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/security-core": "^6.4|^7.0" + "symfony/security-core": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-foundation": "^6.4|^7.0" + "psr/log": "^1|^2|^3", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6026,7 +6385,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.0.7" + "source": "https://github.com/symfony/security-csrf/tree/v7.4.8" }, "funding": [ { @@ -6037,55 +6396,60 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/security-http", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "836a338f51cd46d57e77fcba61c6f8c6111a3717" + "reference": "da3c28025a664e6a88e1af104a74457d99301161" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/836a338f51cd46d57e77fcba61c6f8c6111a3717", - "reference": "836a338f51cd46d57e77fcba61c6f8c6111a3717", + "url": "https://api.github.com/repos/symfony/security-http/zipball/da3c28025a664e6a88e1af104a74457d99301161", + "reference": "da3c28025a664e6a88e1af104a74457d99301161", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/security-core": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.3|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/clock": "<6.4", - "symfony/event-dispatcher": "<6.4", "symfony/http-client-contracts": "<3.0", "symfony/security-bundle": "<6.4", "symfony/security-csrf": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^3.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1" + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "library", "autoload": { @@ -6113,7 +6477,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.0.7" + "source": "https://github.com/symfony/security-http/tree/v7.4.13" }, "funding": [ { @@ -6124,63 +6488,72 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-19T13:26:52+00:00" + "time": "2026-05-25T06:06:12+00:00" }, { "name": "symfony/serializer", - "version": "v7.0.7", + "version": "v7.4.10", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "08f0c517acf4b12dfc0d3963cd12f7b8023aea31" + "reference": "268c5aa6c4bd675eddd89348e7ecac292a843ddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/08f0c517acf4b12dfc0d3963cd12f7b8023aea31", - "reference": "08f0c517acf4b12dfc0d3963cd12f7b8023aea31", + "url": "https://api.github.com/repos/symfony/serializer/zipball/268c5aa6c4bd675eddd89348e7ecac292a843ddd", + "reference": "268c5aa6c4bd675eddd89348e7ecac292a843ddd", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php84": "^1.30" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/dependency-injection": "<6.4", - "symfony/property-access": "<6.4", + "symfony/property-access": "<6.4.31|>=7.0,<7.4.2|>=8.0,<8.0.2", "symfony/property-info": "<6.4", + "symfony/type-info": "<7.2.5", "symfony/uid": "<6.4", "symfony/validator": "<6.4", "symfony/yaml": "<6.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^7.2|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4.31|^7.4.2|^8.0.2", + "symfony/property-info": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/type-info": "^7.2.5|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6208,7 +6581,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.0.7" + "source": "https://github.com/symfony/serializer/tree/v7.4.10" }, "funding": [ { @@ -6219,25 +6592,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-05-03T13:03:28+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a", + "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a", "shasum": "" }, "require": { @@ -6250,12 +6627,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" } }, "autoload": { @@ -6291,7 +6668,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.7.0" }, "funding": [ { @@ -6302,41 +6679,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-03-28T09:44:51+00:00" }, { "name": "symfony/stimulus-bundle", - "version": "v2.17.0", + "version": "v2.36.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "b828a32fe9f75500d26b563cc01874657162c413" + "reference": "377a3d1ec5834631a7db53bd275276ff3c5b49df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/b828a32fe9f75500d26b563cc01874657162c413", - "reference": "b828a32fe9f75500d26b563cc01874657162c413", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/377a3d1ec5834631a7db53bd275276ff3c5b49df", + "reference": "377a3d1ec5834631a7db53bd275276ff3c5b49df", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0|^8.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0|^8.0", "symfony/deprecation-contracts": "^2.0|^3.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0|^8.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0|^8.0", "twig/twig": "^2.15.3|^3.8" }, "require-dev": { - "symfony/asset-mapper": "^6.3|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.3|^7.0|^8.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0|^8.0", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0|^8.0", "zenstruck/browser": "^1.4" }, "type": "symfony-bundle", @@ -6360,7 +6741,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.17.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.36.0" }, "funding": [ { @@ -6371,25 +6752,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-21T10:23:35+00:00" + "time": "2026-05-06T04:31:36+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "41a7a24aa1dc82adf46a06bc292d1923acfe6b84" + "reference": "70a852d72fec4d51efb1f48dcd968efcaf5ccb89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/41a7a24aa1dc82adf46a06bc292d1923acfe6b84", - "reference": "41a7a24aa1dc82adf46a06bc292d1923acfe6b84", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/70a852d72fec4d51efb1f48dcd968efcaf5ccb89", + "reference": "70a852d72fec4d51efb1f48dcd968efcaf5ccb89", "shasum": "" }, "require": { @@ -6422,7 +6807,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.0.7" + "source": "https://github.com/symfony/stopwatch/tree/v7.4.8" }, "funding": [ { @@ -6433,31 +6818,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/string", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -6465,11 +6855,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6508,7 +6898,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.7" + "source": "https://github.com/symfony/string/tree/v7.4.13" }, "funding": [ { @@ -6519,33 +6909,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T15:23:29+00:00" }, { "name": "symfony/translation", - "version": "v7.0.7", + "version": "v7.4.10", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "1515e03afaa93e6419aba5d5c9d209159317100b" + "reference": "ada7578c30dd5feaa8259cff3e885069ea81ddde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/1515e03afaa93e6419aba5d5c9d209159317100b", - "reference": "1515e03afaa93e6419aba5d5c9d209159317100b", + "url": "https://api.github.com/repos/symfony/translation/zipball/ada7578c30dd5feaa8259cff3e885069ea81ddde", + "reference": "ada7578c30dd5feaa8259cff3e885069ea81ddde", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "symfony/translation-contracts": "^2.5.3|^3.3" }, "conflict": { + "nikic/php-parser": "<5.0", "symfony/config": "<6.4", "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", @@ -6559,19 +6955,19 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.18|^5.0", + "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6602,7 +6998,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.0.7" + "source": "https://github.com/symfony/translation/tree/v7.4.10" }, "funding": [ { @@ -6613,25 +7009,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-06T11:19:24+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "0ab302977a952b42fd51475c4ebac81f8da0a95d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/0ab302977a952b42fd51475c4ebac81f8da0a95d", + "reference": "0ab302977a952b42fd51475c4ebac81f8da0a95d", "shasum": "" }, "require": { @@ -6639,12 +7039,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.7-dev" } }, "autoload": { @@ -6680,7 +7080,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.7.0" }, "funding": [ { @@ -6691,40 +7091,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2026-01-05T13:30:16+00:00" }, { "name": "symfony/twig-bridge", - "version": "v7.0.7", + "version": "v7.4.12", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "214237f7b3b82eeb430e85ea415c4a2915c304f6" + "reference": "81663873d946531129c76c65e80b681ce99c0e89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/214237f7b3b82eeb430e85ea415c4a2915c304f6", - "reference": "214237f7b3b82eeb430e85ea415c4a2915c304f6", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/81663873d946531129c76c65e80b681ce99c0e89", + "reference": "81663873d946531129c76c65e80b681ce99c0e89", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/translation-contracts": "^2.5|^3", - "twig/twig": "^3.0.4" + "twig/twig": "^3.21" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/console": "<6.4", - "symfony/form": "<6.4", + "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4|>8.0,<8.0.4", "symfony/http-foundation": "<6.4", "symfony/http-kernel": "<6.4", - "symfony/mime": "<6.4", + "symfony/mime": "<6.4.37|>7,<7.4.9|>8.0,<8.0.9", "symfony/serializer": "<6.4", "symfony/translation": "<6.4", "symfony/workflow": "<6.4" @@ -6732,35 +7137,37 @@ "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^6.4|^7.0", - "symfony/asset-mapper": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4.32|~7.3.10|^7.4.4|^8.0.4", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.3|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4.37|^7.4.9|^8.0.9", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", - "twig/cssinliner-extra": "^2.12|^3", - "twig/inky-extra": "^2.12|^3", - "twig/markdown-extra": "^2.12|^3" + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/workflow": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/cssinliner-extra": "^3", + "twig/inky-extra": "^3", + "twig/markdown-extra": "^3" }, "type": "symfony-bridge", "autoload": { @@ -6788,7 +7195,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.0.7" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.12" }, "funding": [ { @@ -6799,52 +7206,58 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-04-29T17:13:54+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "4dd8a395b955045d031d9525a7149cfcee8d0b02" + "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/4dd8a395b955045d031d9525a7149cfcee8d0b02", - "reference": "4dd8a395b955045d031d9525a7149cfcee8d0b02", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", + "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/twig-bridge": "^7.3|^8.0", + "twig/twig": "^3.12" }, "conflict": { "symfony/framework-bundle": "<6.4", "symfony/translation": "<6.4" }, "require-dev": { - "symfony/asset": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/web-link": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -6872,7 +7285,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v7.0.7" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.8" }, "funding": [ { @@ -6883,25 +7296,112 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { - "name": "symfony/uid", - "version": "v7.0.7", + "name": "symfony/type-info", + "version": "v7.4.9", "source": { "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "4f3a5d181999e25918586c8369de09e7814e7be2" + "url": "https://github.com/symfony/type-info.git", + "reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/4f3a5d181999e25918586c8369de09e7814e7be2", - "reference": "4f3a5d181999e25918586c8369de09e7814e7be2", + "url": "https://api.github.com/repos/symfony/type-info/zipball/cafeedbf157b890e94ac5b83eaed85595106d5d6", + "reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.30" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.30|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v7.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-22T15:21:55+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "2676b524340abcfe4d6151ec698463cebafee439" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/2676b524340abcfe4d6151ec698463cebafee439", + "reference": "2676b524340abcfe4d6151ec698463cebafee439", "shasum": "" }, "require": { @@ -6909,7 +7409,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6946,7 +7446,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.0.7" + "source": "https://github.com/symfony/uid/tree/v7.4.9" }, "funding": [ { @@ -6957,59 +7457,66 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-04-30T15:19:22+00:00" }, { "name": "symfony/ux-turbo", - "version": "v2.17.0", + "version": "v2.36.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "7093e20d7ca599902a7d1bf4d831849fd78befdb" + "reference": "c16f0fdcc8eb22d80a02949447e561c145fa1bc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/7093e20d7ca599902a7d1bf4d831849fd78befdb", - "reference": "7093e20d7ca599902a7d1bf4d831849fd78befdb", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/c16f0fdcc8eb22d80a02949447e561c145fa1bc8", + "reference": "c16f0fdcc8eb22d80a02949447e561c145fa1bc8", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/stimulus-bundle": "^2.9.1" + "symfony/stimulus-bundle": "^2.9.1|^3.0" }, "conflict": { "symfony/flex": "<1.13" }, "require-dev": { - "doctrine/doctrine-bundle": "^2.4.3", - "doctrine/orm": "^2.8 | 3.0", - "phpstan/phpstan": "^1.10", - "symfony/debug-bundle": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/mercure-bundle": "^0.3.7", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/panther": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|6.3.*|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/security-core": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", - "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0", - "symfony/webpack-encore-bundle": "^2.1.1" + "dbrekelmans/bdi": "dev-main", + "doctrine/doctrine-bundle": "^2.4.3|^3.0|^4.0", + "doctrine/orm": "^2.8|^3.0", + "php-webdriver/webdriver": "^1.15", + "phpstan/phpstan": "^2.1.17", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/debug-bundle": "^5.4|^6.0|^7.0|^8.0", + "symfony/expression-language": "^5.4|^6.0|^7.0|^8.0", + "symfony/form": "^5.4|^6.0|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/mercure-bundle": "^0.3.7|^0.4.1", + "symfony/messenger": "^5.4|^6.0|^7.0|^8.0", + "symfony/panther": "^2.2", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0|^8.0", + "symfony/process": "^5.4|6.3.*|^7.0|^8.0", + "symfony/property-access": "^5.4|^6.0|^7.0|^8.0", + "symfony/security-core": "^5.4|^6.0|^7.0|^8.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/ux-twig-component": "^2.21|^3.0", + "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0|^8.0" }, "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -7042,7 +7549,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/v2.17.0" + "source": "https://github.com/symfony/ux-turbo/tree/v2.36.0" }, "funding": [ { @@ -7053,29 +7560,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-22T13:58:54+00:00" + "time": "2026-05-06T04:31:36+00:00" }, { "name": "symfony/validator", - "version": "v7.0.7", + "version": "v7.4.10", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "ab4e75b9d23ba70e78480aecbe4d8da15adf10eb" + "reference": "c76458623af9a3fe3b2e5b09b36453f334c2a361" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/ab4e75b9d23ba70e78480aecbe4d8da15adf10eb", - "reference": "ab4e75b9d23ba70e78480aecbe4d8da15adf10eb", + "url": "https://api.github.com/repos/symfony/validator/zipball/c76458623af9a3fe3b2e5b09b36453f334c2a361", + "reference": "c76458623af9a3fe3b2e5b09b36453f334c2a361", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php83": "^1.27", @@ -7090,25 +7602,29 @@ "symfony/intl": "<6.4", "symfony/property-info": "<6.4", "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/var-exporter": "<6.4.25|>=7.0,<7.3.3", "symfony/yaml": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/yaml": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/type-info": "^7.1.8", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7116,7 +7632,8 @@ "Symfony\\Component\\Validator\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7136,7 +7653,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.0.7" + "source": "https://github.com/symfony/validator/tree/v7.4.10" }, "funding": [ { @@ -7147,41 +7664,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-05-05T15:30:56+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924" + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d1627b66fd87c8b4d90cabe5671c29d575690924", - "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "symfony/console": "<6.4" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -7219,7 +7740,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.0.7" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" }, "funding": [ { @@ -7230,34 +7751,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-30T13:44:50+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.7", + "version": "v7.4.9", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078" + "reference": "22e03a49c95ef054a43601cd159b222bfab1c701" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/cdecc0022e40e90340ba1a59a3d5ccf069777078", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/22e03a49c95ef054a43601cd159b222bfab1c701", + "reference": "22e03a49c95ef054a43601cd159b222bfab1c701", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7295,7 +7821,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.7" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.9" }, "funding": [ { @@ -7306,25 +7832,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-04-18T13:18:21+00:00" }, { "name": "symfony/web-link", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "19312f38543e77b09f04f374368b73530bfb9482" + "reference": "0711009963009e7d6d59149327f3ad633ee3fe25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/19312f38543e77b09f04f374368b73530bfb9482", - "reference": "19312f38543e77b09f04f374368b73530bfb9482", + "url": "https://api.github.com/repos/symfony/web-link/zipball/0711009963009e7d6d59149327f3ad633ee3fe25", + "reference": "0711009963009e7d6d59149327f3ad633ee3fe25", "shasum": "" }, "require": { @@ -7338,7 +7868,7 @@ "psr/link-implementation": "1.0|2.0" }, "require-dev": { - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-kernel": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7378,7 +7908,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v7.0.7" + "source": "https://github.com/symfony/web-link/tree/v7.4.8" }, "funding": [ { @@ -7389,36 +7919,41 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" + "reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a7ec3b1156faf8815db7683ec7c1e7338e6f977c", + "reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -7449,7 +7984,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.7" + "source": "https://github.com/symfony/yaml/tree/v7.4.13" }, "funding": [ { @@ -7460,35 +7995,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2026-05-25T06:06:12+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.10.0", + "version": "v3.24.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "cdc6e23aeb7f4953c1039568c3439aab60c56454" + "reference": "6a621fcb1f28aa9ea7b34a99047ae0cdf5b834c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/cdc6e23aeb7f4953c1039568c3439aab60c56454", - "reference": "cdc6e23aeb7f4953c1039568c3439aab60c56454", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/6a621fcb1f28aa9ea7b34a99047ae0cdf5b834c9", + "reference": "6a621fcb1f28aa9ea7b34a99047ae0cdf5b834c9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/framework-bundle": "^5.4|^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.4|^7.0", - "twig/twig": "^3.0" + "php": ">=8.1.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0|^8.0", + "twig/twig": "^3.2|^4.0" }, "require-dev": { - "league/commonmark": "^1.0|^2.0", + "league/commonmark": "^2.7", "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^3.0", @@ -7527,7 +8066,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.10.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.24.0" }, "funding": [ { @@ -7539,30 +8078,31 @@ "type": "tidelift" } ], - "time": "2024-05-11T07:35:57+00:00" + "time": "2026-02-07T08:07:38+00:00" }, { "name": "twig/twig", - "version": "v3.10.3", + "version": "v3.27.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "67f29781ffafa520b0bbfbd8384674b42db04572" + "reference": "ae2071bffb38f04847fc0864d730c94b9cb8ab74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572", - "reference": "67f29781ffafa520b0bbfbd8384674b42db04572", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/ae2071bffb38f04847fc0864d730c94b9cb8ab74", + "reference": "ae2071bffb38f04847fc0864d730c94b9cb8ab74", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.22" + "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { + "php-cs-fixer/shim": "^3.0@stable", + "phpstan/phpstan": "^2.0@stable", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -7606,7 +8146,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.10.3" + "source": "https://github.com/twigphp/Twig/tree/v3.27.1" }, "funding": [ { @@ -7618,37 +8158,41 @@ "type": "tidelift" } ], - "time": "2024-05-16T10:04:27+00:00" + "time": "2026-05-30T17:09:26+00:00" }, { "name": "webmozart/assert", - "version": "1.11.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/2ccb7c2e821038c03a3e6e1700c570c158c55f70", + "reference": "2ccb7c2e821038c03a3e6e1700c570c158c55f70", "shasum": "" }, "require": { "ext-ctype": "*", - "php": "^7.2 || ^8.0" + "ext-date": "*", + "ext-filter": "*", + "php": "^8.2" }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" }, "type": "library", "extra": { + "psalm": { + "pluginClass": "Webmozart\\Assert\\PsalmPlugin" + }, "branch-alias": { - "dev-master": "1.10-dev" + "dev-master": "2.0-dev", + "dev-feature/2-0": "2.0-dev" } }, "autoload": { @@ -7664,6 +8208,10 @@ { "name": "Bernhard Schussek", "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com" } ], "description": "Assertions to validate method input/output with nice error messages.", @@ -7674,24 +8222,24 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/webmozarts/assert/tree/2.4.1" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2026-06-15T15:31:57+00:00" } ], "packages-dev": [ { "name": "masterminds/html5", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" + "reference": "fcf91eb64359852f00d921887b219479b4f21251" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", - "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", + "reference": "fcf91eb64359852f00d921887b219479b4f21251", "shasum": "" }, "require": { @@ -7743,22 +8291,22 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" + "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" }, - "time": "2024-03-31T07:05:07+00:00" + "time": "2025-07-25T09:04:22+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -7766,11 +8314,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -7796,7 +8345,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -7804,20 +8353,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nikic/php-parser", - "version": "v5.0.2", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -7828,7 +8377,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -7836,7 +8385,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -7860,9 +8409,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phar-io/manifest", @@ -7984,35 +8533,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "9.2.32", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -8021,7 +8570,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -8050,7 +8599,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" }, "funding": [ { @@ -8058,7 +8607,7 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2024-08-22T04:23:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -8303,45 +8852,45 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.19", + "version": "9.6.34", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" + "reference": "b36f02317466907a230d3aa1d34467041271ef4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b36f02317466907a230d3aa1d34467041271ef4a", + "reference": "b36f02317466907a230d3aa1d34467041271ef4a", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", + "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.10", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.8", + "sebastian/global-state": "^5.0.8", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", "sebastian/version": "^3.0.2" }, "suggest": { @@ -8386,7 +8935,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.34" }, "funding": [ { @@ -8397,12 +8946,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-04-05T04:35:58+00:00" + "time": "2026-01-27T05:45:00+00:00" }, { "name": "sebastian/cli-parser", @@ -8573,16 +9130,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "4.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e4df00b9b3571187db2831ae9aada2c6efbd715d", + "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d", "shasum": "" }, "require": { @@ -8635,15 +9192,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.10" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2026-01-24T09:22:56+00:00" }, { "name": "sebastian/complexity", @@ -8833,16 +9402,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c", + "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c", "shasum": "" }, "require": { @@ -8898,28 +9467,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2025-09-24T06:03:27+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "5.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6", + "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6", "shasum": "" }, "require": { @@ -8962,15 +9543,27 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2025-08-10T07:10:35+00:00" }, { "name": "sebastian/lines-of-code", @@ -9143,16 +9736,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", "shasum": "" }, "require": { @@ -9194,15 +9787,27 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2025-08-10T06:57:39+00:00" }, { "name": "sebastian/resource-operations", @@ -9369,27 +9974,28 @@ }, { "name": "symfony/browser-kit", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "0a48e67a7975c07d8cc0661fbbdddce56c58425e" + "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0a48e67a7975c07d8cc0661fbbdddce56c58425e", - "reference": "0a48e67a7975c07d8cc0661fbbdddce56c58425e", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/41850d8f8ddef9a9cd7314fa9f4902cf48885521", + "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/dom-crawler": "^6.4|^7.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/dom-crawler": "^6.4|^7.0|^8.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -9417,7 +10023,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.0.7" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.8" }, "funding": [ { @@ -9428,25 +10034,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/css-selector", - "version": "v7.0.7", + "version": "v7.4.9", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc" + "reference": "b75663ed96cf4756e28e3105476f220f92886cc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", - "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b75663ed96cf4756e28e3105476f220f92886cc4", + "reference": "b75663ed96cf4756e28e3105476f220f92886cc4", "shasum": "" }, "require": { @@ -9482,7 +10092,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.7" + "source": "https://github.com/symfony/css-selector/tree/v7.4.9" }, "funding": [ { @@ -9493,35 +10103,40 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-04-18T13:18:21+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.0.7", + "version": "v7.4.12", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "7cb4ae7166a8a36916be390dbb3819474fb06a29" + "reference": "b59b59122690976550fd142c23fab62c84738db6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/7cb4ae7166a8a36916be390dbb3819474fb06a29", - "reference": "7cb4ae7166a8a36916be390dbb3819474fb06a29", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b59b59122690976550fd142c23fab62c84738db6", + "reference": "b59b59122690976550fd142c23fab62c84738db6", "shasum": "" }, "require": { "masterminds/html5": "^2.6", "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -9549,7 +10164,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.0.7" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.12" }, "funding": [ { @@ -9560,40 +10175,45 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-20T07:20:23+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.59.1", + "version": "v1.67.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "b87b1b25c607a8a50832395bc751c784946a0350" + "reference": "6ce8b313845f16bcf385ee3cb31d8b24e30d5516" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/b87b1b25c607a8a50832395bc751c784946a0350", - "reference": "b87b1b25c607a8a50832395bc751c784946a0350", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/6ce8b313845f16bcf385ee3cb31d8b24e30d5516", + "reference": "6ce8b313845f16bcf385ee3cb31d8b24e30d5516", "shasum": "" }, "require": { + "composer-runtime-api": "^2.1", "doctrine/inflector": "^2.0", - "nikic/php-parser": "^4.18|^5.0", + "nikic/php-parser": "^5.0", "php": ">=8.1", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "conflict": { "doctrine/doctrine-bundle": "<2.10", @@ -9601,12 +10221,14 @@ }, "require-dev": { "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^2.5.0", + "doctrine/doctrine-bundle": "^2.10|^3.0", "doctrine/orm": "^2.15|^3", - "symfony/http-client": "^6.4|^7.0", - "symfony/phpunit-bridge": "^6.4.1|^7.0", - "symfony/security-core": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0", + "doctrine/persistence": "^3.1|^4.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4.1|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", @@ -9641,7 +10263,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.59.1" + "source": "https://github.com/symfony/maker-bundle/tree/v1.67.0" }, "funding": [ { @@ -9652,37 +10274,37 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-06T03:59:59+00:00" + "time": "2026-03-18T13:39:06+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.0.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "0a0b90ba08b9a03e09ad49f8d613bdf3eca3a7a9" + "reference": "140bbbe1cd1c21a084494ccddeee33f3c3381d7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/0a0b90ba08b9a03e09ad49f8d613bdf3eca3a7a9", - "reference": "0a0b90ba08b9a03e09ad49f8d613bdf3eca3a7a9", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/140bbbe1cd1c21a084494ccddeee33f3c3381d7d", + "reference": "140bbbe1cd1c21a084494ccddeee33f3c3381d7d", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" + "php": ">=8.1.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.4|^7.0", - "symfony/polyfill-php81": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4.3|^7.0.3|^8.0" }, "bin": [ "bin/simple-phpunit" @@ -9690,8 +10312,8 @@ "type": "symfony-bridge", "extra": { "thanks": { - "name": "phpunit/phpunit", - "url": "https://github.com/sebastianbergmann/phpunit" + "url": "https://github.com/sebastianbergmann/phpunit", + "name": "phpunit/phpunit" } }, "autoload": { @@ -9702,7 +10324,8 @@ "Symfony\\Bridge\\PhpUnit\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9721,8 +10344,11 @@ ], "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", + "keywords": [ + "testing" + ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.0.7" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.8" }, "funding": [ { @@ -9733,46 +10359,55 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.0.7", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "a9a722210b391d7f6d97f140a5f2f7eee604d81a" + "reference": "153076bb3f0690fff0e95e55cc06358b22f236a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a9a722210b391d7f6d97f140a5f2f7eee604d81a", - "reference": "a9a722210b391d7f6d97f140a5f2f7eee604d81a", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/153076bb3f0690fff0e95e55cc06358b22f236a5", + "reference": "153076bb3f0690fff0e95e55cc06358b22f236a5", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/twig-bundle": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "symfony/config": "^7.3|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15" }, "conflict": { "symfony/form": "<6.4", "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4" + "symfony/messenger": "<6.4", + "symfony/serializer": "<7.2", + "symfony/workflow": "<7.3" }, "require-dev": { - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "symfony-bundle", "autoload": { @@ -9803,7 +10438,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.0.7" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.13" }, "funding": [ { @@ -9814,25 +10449,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -9861,7 +10500,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, "funding": [ { @@ -9869,12 +10508,12 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { @@ -9882,6 +10521,6 @@ "ext-ctype": "*", "ext-iconv": "*" }, - "platform-dev": [], - "plugin-api-version": "2.6.0" + "platform-dev": {}, + "plugin-api-version": "2.9.0" } diff --git a/config/packages/csrf.yaml b/config/packages/csrf.yaml new file mode 100644 index 0000000..40d4040 --- /dev/null +++ b/config/packages/csrf.yaml @@ -0,0 +1,11 @@ +# Enable stateless CSRF protection for forms and logins/logouts +framework: + form: + csrf_protection: + token_id: submit + + csrf_protection: + stateless_token_ids: + - submit + - authenticate + - logout diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 75ec9e8..d72f5ad 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -1,29 +1,49 @@ doctrine: dbal: - url: '%env(resolve:DATABASE_URL)%' + connections: + default: + url: '%env(resolve:DATABASE_URL)%' + profiling_collect_backtrace: '%kernel.debug%' + use_savepoints: true + transfer: + url: '%env(default::XFER_DATABASE_URL)%' + profiling_collect_backtrace: '%kernel.debug%' + use_savepoints: true # IMPORTANT: You MUST configure your server version, # either here or in the DATABASE_URL env var (see .env file) #server_version: '16' - profiling_collect_backtrace: '%kernel.debug%' - use_savepoints: true orm: auto_generate_proxy_classes: true enable_lazy_ghost_objects: true - report_fields_where_declared: true - validate_xml_mapping: true - naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware - auto_mapping: true - mappings: - App: - type: attribute - is_bundle: false - dir: '%kernel.project_dir%/src/Entity' - prefix: 'App\Entity' - alias: App + # report_fields_where_declared: true + # validate_xml_mapping: true + # auto_mapping: true + default_entity_manager: default + entity_managers: + default: + connection: default + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + mappings: + App: + type: attribute + is_bundle: false + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App + transfer: + connection: transfer + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + mappings: + App: + type: attribute + is_bundle: false + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App controller_resolver: - auto_mapping: true + auto_mapping: false when@test: doctrine: @@ -50,3 +70,6 @@ when@prod: adapter: cache.app doctrine.system_cache_pool: adapter: cache.system + +parameters: + env(default_url): '' \ No newline at end of file diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 877eb25..5491098 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -1,5 +1,7 @@ # see https://symfony.com/doc/current/reference/configuration/framework.html +# config/packages/framework.yaml framework: + trusted_proxies: '%env(TRUSTED_PROXIES)%' secret: '%env(APP_SECRET)%' #csrf_protection: true diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index 3f795d9..6917a70 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -1,6 +1,11 @@ twig: file_name_pattern: '*.twig' +when@dev: + twig: + debug: true + cache: false + when@test: twig: strict_variables: true diff --git a/config/services.yaml b/config/services.yaml index 2d6a76f..ce0a377 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -22,3 +22,6 @@ services: # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones + App\Service\DatabaseTransferService: + arguments: + $projectDir: '%kernel.project_dir%' \ No newline at end of file diff --git a/docker/compose.mariadb.yml b/docker/compose.mariadb.yml index 069f651..30859a9 100644 --- a/docker/compose.mariadb.yml +++ b/docker/compose.mariadb.yml @@ -1,22 +1,34 @@ services: sermon-notes: - image: gitea.rkprather.com/ryan/sermon-notes:latest + image: gitea.rkprather.com/ryan/sermon-notes:2.0 container_name: sermon-notes hostname: sermon-notes restart: unless-stopped + env_file: .env + ports: - ${HTTP_PORT}:80 + volumes: - ${PWD}/.env:/var/www/html/.env + + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + depends_on: - db db: - image: mariadb + image: mariadb:12.3 container_name: db hostname: db restart: unless-stopped + env_file: .env + volumes: - ${PWD}/db_data:/var/lib/mysql diff --git a/docker/compose.mysql.yml b/docker/compose.mysql.yml index afed044..f0b54ab 100644 --- a/docker/compose.mysql.yml +++ b/docker/compose.mysql.yml @@ -1,22 +1,34 @@ services: sermon-notes: - image: gitea.rkprather.com/ryan/sermon-notes:latest + image: gitea.rkprather.com/ryan/sermon-notes:2.0 container_name: sermon-notes hostname: sermon-notes restart: unless-stopped + env_file: .env + ports: - ${HTTP_PORT}:80 + volumes: - ${PWD}/.env:/var/www/html/.env + + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + depends_on: - db db: - image: mysql + image: mysql:9.6 container_name: db hostname: db restart: unless-stopped + env_file: .env + volumes: - ${PWD}/db-data:/var/lib/mysql diff --git a/docker/compose.pgsql.yml b/docker/compose.pgsql.yml index 9b4b69b..1e84de8 100644 --- a/docker/compose.pgsql.yml +++ b/docker/compose.pgsql.yml @@ -1,14 +1,24 @@ services: sermon-notes: container_name: sermon-notes - image: gitea.rkprather.com/ryan/sermon-notes:latest + image: gitea.rkprather.com/ryan/sermon-notes:2.0 hostname: sermon-notes restart: unless-stopped + env_file: .env + ports: - ${HTTP_PORT}:80 + volumes: - ${PWD}/.env:/var/www/html/.env + + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + depends_on: - db @@ -17,7 +27,9 @@ services: container_name: db hostname: db restart: unless-stopped + env_file: .env + volumes: - ${PWD}/db-data:/var/lib/postgresql/data \ No newline at end of file diff --git a/docker/compose.shared-db.yml b/docker/compose.shared-db.yml index a9c88c2..c3a547b 100644 --- a/docker/compose.shared-db.yml +++ b/docker/compose.shared-db.yml @@ -1,11 +1,20 @@ services: sermon-notes: - image: gitea.rkprather.com/ryan/sermon-notes:latest + image: gitea.rkprather.com/ryan/sermon-notes:2.0 container_name: sermon-notes hostname: sermon-notes restart: unless-stopped + env_file: .env + ports: - ${HTTP_PORT}:80 + volumes: - ${PWD}/.env:/var/www/html/.env + + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" diff --git a/docker/compose.sqlite.yml b/docker/compose.sqlite.yml index bbcfb8a..c5db40c 100644 --- a/docker/compose.sqlite.yml +++ b/docker/compose.sqlite.yml @@ -1,12 +1,21 @@ services: sermon-notes: - image: gitea.rkprather.com/ryan/sermon-notes:latest + image: gitea.rkprather.com/ryan/sermon-notes:2.0 container_name: sermon-notes hostname: sermon-notes restart: unless-stopped + env_file: .env + ports: - ${HTTP_PORT}:80 + volumes: - ${PWD}/data:/data - ${PWD}/.env:/var/www/html/.env + + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" \ No newline at end of file diff --git a/importmap.php b/importmap.php index 83d407a..904566f 100644 --- a/importmap.php +++ b/importmap.php @@ -34,4 +34,25 @@ return [ 'datatables' => [ 'version' => '1.10.18', ], + 'ref' => [ + 'path' => './assets/js/reference.js', + ], + 'home' => [ + 'path' => './assets/js/home.js', + ], + 'note' => [ + 'path' => './assets/js/note.js', + ], + 'state' => [ + 'path' => './assets/js/state.js', + ], + 'series' => [ + 'path' => './assets/js/series.js', + ], + 'speaker' => [ + 'path' => './assets/js/speaker.js', + ], + 'template' => [ + 'path' => './assets/js/template.js', + ], ]; diff --git a/install.php b/install.php old mode 100755 new mode 100644 index d9d463c..ed4fc6b --- a/install.php +++ b/install.php @@ -1,28 +1,28 @@ -#!/usr/local/bin/php +#!/usr/bin/env php addSql('CREATE TABLE user (id BLOB NOT NULL --(DC2Type:uuid) - , email VARCHAR(180) NOT NULL, roles CLOB NOT NULL --(DC2Type:json) - , password VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); - $this->addSql('CREATE UNIQUE INDEX UNIQ_IDENTIFIER_EMAIL ON user (email)'); - $this->addSql('CREATE TABLE messenger_messages (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, body CLOB NOT NULL, headers CLOB NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at DATETIME NOT NULL --(DC2Type:datetime_immutable) - , available_at DATETIME NOT NULL --(DC2Type:datetime_immutable) - , delivered_at DATETIME DEFAULT NULL --(DC2Type:datetime_immutable) - )'); - $this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)'); - $this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)'); - $this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('DROP TABLE user'); - $this->addSql('DROP TABLE messenger_messages'); - } -} diff --git a/migrations/Version20240513011501.php b/migrations/Version20240513011501.php deleted file mode 100644 index dccc097..0000000 --- a/migrations/Version20240513011501.php +++ /dev/null @@ -1,62 +0,0 @@ -addSql('CREATE TABLE bible (id BLOB NOT NULL --(DC2Type:uuid) - , book VARCHAR(255) NOT NULL, chapter INTEGER NOT NULL, verse INTEGER NOT NULL, content CLOB DEFAULT NULL, book_index INTEGER NOT NULL, label VARCHAR(20) DEFAULT NULL, PRIMARY KEY(id))'); - $this->addSql('CREATE TABLE note (id BLOB NOT NULL --(DC2Type:uuid) - , speaker_id BLOB DEFAULT NULL --(DC2Type:uuid) - , series_id BLOB DEFAULT NULL --(DC2Type:uuid) - , user_id BLOB DEFAULT NULL --(DC2Type:uuid) - , title VARCHAR(255) NOT NULL, date DATE NOT NULL, passage VARCHAR(255) NOT NULL, refs CLOB DEFAULT NULL --(DC2Type:json) - , text CLOB DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_CFBDFA14D04A0F27 FOREIGN KEY (speaker_id) REFERENCES speaker (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_CFBDFA145278319C FOREIGN KEY (series_id) REFERENCES series (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_CFBDFA14A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('CREATE INDEX IDX_CFBDFA14D04A0F27 ON note (speaker_id)'); - $this->addSql('CREATE INDEX IDX_CFBDFA145278319C ON note (series_id)'); - $this->addSql('CREATE INDEX IDX_CFBDFA14A76ED395 ON note (user_id)'); - $this->addSql('CREATE TABLE reference (id BLOB NOT NULL --(DC2Type:uuid) - , type VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255) NOT NULL, ndx INTEGER NOT NULL, content CLOB DEFAULT NULL, PRIMARY KEY(id))'); - $this->addSql('CREATE TABLE series (id BLOB NOT NULL --(DC2Type:uuid) - , user_id BLOB DEFAULT NULL --(DC2Type:uuid) - , template_id BLOB DEFAULT NULL --(DC2Type:uuid) - , name VARCHAR(255) NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_3A10012DA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_3A10012D5DA0FB8 FOREIGN KEY (template_id) REFERENCES template (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('CREATE INDEX IDX_3A10012DA76ED395 ON series (user_id)'); - $this->addSql('CREATE INDEX IDX_3A10012D5DA0FB8 ON series (template_id)'); - $this->addSql('CREATE TABLE speaker (id BLOB NOT NULL --(DC2Type:uuid) - , user_id BLOB DEFAULT NULL --(DC2Type:uuid) - , name VARCHAR(255) NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_7B85DB61A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('CREATE INDEX IDX_7B85DB61A76ED395 ON speaker (user_id)'); - $this->addSql('CREATE TABLE template (id BLOB NOT NULL --(DC2Type:uuid) - , user_id BLOB DEFAULT NULL --(DC2Type:uuid) - , name VARCHAR(255) NOT NULL, content CLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_97601F83A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('CREATE INDEX IDX_97601F83A76ED395 ON template (user_id)'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('DROP TABLE bible'); - $this->addSql('DROP TABLE note'); - $this->addSql('DROP TABLE reference'); - $this->addSql('DROP TABLE series'); - $this->addSql('DROP TABLE speaker'); - $this->addSql('DROP TABLE template'); - } -} diff --git a/migrations/Version20240513161129.php b/migrations/Version20240513161129.php deleted file mode 100644 index 8e1df1d..0000000 --- a/migrations/Version20240513161129.php +++ /dev/null @@ -1,41 +0,0 @@ -addSql('CREATE TEMPORARY TABLE __temp__reference AS SELECT id, type, name, label, ndx, content FROM reference'); - $this->addSql('DROP TABLE reference'); - $this->addSql('CREATE TABLE reference (id BLOB NOT NULL --(DC2Type:uuid) - , type VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255) NOT NULL, ndx INTEGER DEFAULT NULL, content CLOB DEFAULT NULL, PRIMARY KEY(id))'); - $this->addSql('INSERT INTO reference (id, type, name, label, ndx, content) SELECT id, type, name, label, ndx, content FROM __temp__reference'); - $this->addSql('DROP TABLE __temp__reference'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('CREATE TEMPORARY TABLE __temp__reference AS SELECT id, type, name, label, ndx, content FROM reference'); - $this->addSql('DROP TABLE reference'); - $this->addSql('CREATE TABLE reference (id BLOB NOT NULL --(DC2Type:uuid) - , type VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, label VARCHAR(255) NOT NULL, ndx INTEGER NOT NULL, content CLOB DEFAULT NULL, PRIMARY KEY(id))'); - $this->addSql('INSERT INTO reference (id, type, name, label, ndx, content) SELECT id, type, name, label, ndx, content FROM __temp__reference'); - $this->addSql('DROP TABLE __temp__reference'); - } -} diff --git a/migrations/Version20240527010736.php b/migrations/Version20240527010736.php deleted file mode 100644 index e75befe..0000000 --- a/migrations/Version20240527010736.php +++ /dev/null @@ -1,43 +0,0 @@ -addSql('ALTER TABLE note ADD COLUMN recording VARCHAR(255) DEFAULT NULL'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('CREATE TEMPORARY TABLE __temp__note AS SELECT id, speaker_id, series_id, user_id, title, date, passage, refs, text FROM note'); - $this->addSql('DROP TABLE note'); - $this->addSql('CREATE TABLE note (id BLOB NOT NULL --(DC2Type:uuid) - , speaker_id BLOB DEFAULT NULL --(DC2Type:uuid) - , series_id BLOB DEFAULT NULL --(DC2Type:uuid) - , user_id BLOB DEFAULT NULL --(DC2Type:uuid) - , title VARCHAR(255) NOT NULL, date DATE NOT NULL, passage VARCHAR(255) NOT NULL, refs CLOB DEFAULT NULL --(DC2Type:json) - , text CLOB DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_CFBDFA14D04A0F27 FOREIGN KEY (speaker_id) REFERENCES speaker (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_CFBDFA145278319C FOREIGN KEY (series_id) REFERENCES series (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_CFBDFA14A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('INSERT INTO note (id, speaker_id, series_id, user_id, title, date, passage, refs, text) SELECT id, speaker_id, series_id, user_id, title, date, passage, refs, text FROM __temp__note'); - $this->addSql('DROP TABLE __temp__note'); - $this->addSql('CREATE INDEX IDX_CFBDFA14D04A0F27 ON note (speaker_id)'); - $this->addSql('CREATE INDEX IDX_CFBDFA145278319C ON note (series_id)'); - $this->addSql('CREATE INDEX IDX_CFBDFA14A76ED395 ON note (user_id)'); - } -} diff --git a/migrations/Version20240622233923.php b/migrations/Version20240622233923.php deleted file mode 100644 index 621e0e9..0000000 --- a/migrations/Version20240622233923.php +++ /dev/null @@ -1,38 +0,0 @@ -addSql('ALTER TABLE user ADD COLUMN meta_data CLOB DEFAULT NULL'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('CREATE TEMPORARY TABLE __temp__user AS SELECT id, email, roles, password, name FROM user'); - $this->addSql('DROP TABLE user'); - $this->addSql('CREATE TABLE user (id BLOB NOT NULL --(DC2Type:uuid) - , email VARCHAR(180) NOT NULL, roles CLOB NOT NULL --(DC2Type:json) - , password VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); - $this->addSql('INSERT INTO user (id, email, roles, password, name) SELECT id, email, roles, password, name FROM __temp__user'); - $this->addSql('DROP TABLE __temp__user'); - $this->addSql('CREATE UNIQUE INDEX UNIQ_IDENTIFIER_EMAIL ON user (email)'); - } -} diff --git a/migrations/Version20240717022017.php b/migrations/Version20240717022017.php deleted file mode 100644 index a989200..0000000 --- a/migrations/Version20240717022017.php +++ /dev/null @@ -1,43 +0,0 @@ -addSql('CREATE TABLE shared_note (id BLOB NOT NULL --(DC2Type:uuid) - , note_id BLOB NOT NULL --(DC2Type:uuid) - , owner_id BLOB NOT NULL --(DC2Type:uuid) - , shared_user_id BLOB NOT NULL --(DC2Type:uuid) - , PRIMARY KEY(id), CONSTRAINT FK_754B918C26ED0855 FOREIGN KEY (note_id) REFERENCES note (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('CREATE INDEX IDX_754B918C26ED0855 ON shared_note (note_id)'); - $this->addSql('CREATE TABLE shared_series (id BLOB NOT NULL --(DC2Type:uuid) - , series_id BLOB NOT NULL --(DC2Type:uuid) - , owner_id BLOB NOT NULL --(DC2Type:uuid) - , shared_user_id BLOB NOT NULL --(DC2Type:uuid) - , PRIMARY KEY(id), CONSTRAINT FK_59E803195278319C FOREIGN KEY (series_id) REFERENCES series (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('CREATE INDEX IDX_59E803195278319C ON shared_series (series_id)'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('DROP TABLE shared_note'); - $this->addSql('DROP TABLE shared_series'); - } -} diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..5fa389f --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,9 @@ + + Options -MultiViews + RewriteEngine On + + SetEnvIf X-Forwarded-Proto "https" HTTPS=on + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php [QSA,L] + \ No newline at end of file diff --git a/public/images/Notes-icon-192x192.png b/public/images/Notes-icon-192x192.png new file mode 100644 index 0000000..d74c319 Binary files /dev/null and b/public/images/Notes-icon-192x192.png differ diff --git a/public/images/Notes-icon-512x512.png b/public/images/Notes-icon-512x512.png new file mode 100644 index 0000000..0b683fe Binary files /dev/null and b/public/images/Notes-icon-512x512.png differ diff --git a/public/js/data.json b/public/js/data.json index 982c997..d093f4f 100644 --- a/public/js/data.json +++ b/public/js/data.json @@ -1372,7 +1372,9 @@ ], [ 24, - 25, + 25 + ], + [ 26 ], [ diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..e419be2 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "Sermon Notes", + "short_name": "Sermon Notes", + "description": "A personal note-taking app for sermons with reference material", + "start_url": "/", + "display": "standalone", + "orientation": "landscape", + "background_color": "#ffffff", + "theme_color": "#000000", + "icons": [ + { + "src": "/images/Notes-icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/images/Notes-icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "screenshots": [ + { + "src": "/images/Notes-icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "/images/Notes-icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "form_factor": "wide" + } + ] +} \ No newline at end of file diff --git a/public/sw.js b/public/sw.js new file mode 100644 index 0000000..b800de9 --- /dev/null +++ b/public/sw.js @@ -0,0 +1,56 @@ +// public/sw.js +const CACHE_NAME = 'app-cache-v1'; +const ASSETS_TO_CACHE = [ + '/', + '/manifest.json', + // Add paths to your main CSS and JS files here + // e.g., '/build/app.css', '/build/app.js' +]; + +// Install Event: Cache core static assets +self.addEventListener('install', event => { + event.waitUntil( + caches.open(CACHE_NAME) + .then(cache => { + return cache.addAll(ASSETS_TO_CACHE); + }) + ); + self.skipWaiting(); +}); + +// Activate Event: Clean up old caches if you change the CACHE_NAME version +self.addEventListener('activate', event => { + event.waitUntil( + caches.keys().then(cacheNames => { + return Promise.all( + cacheNames.map(cache => { + if (cache !== CACHE_NAME) { + return caches.delete(cache); + } + }) + ); + }) + ); + self.clients.claim(); +}); + +// Fetch Event: Network First, Fallback to Cache +self.addEventListener('fetch', event => { + // Only cache GET requests + if (event.request.method !== 'GET') return; + + event.respondWith( + fetch(event.request) + .then(networkResponse => { + // If the network request succeeds, clone it and put it in the cache + return caches.open(CACHE_NAME).then(cache => { + cache.put(event.request, networkResponse.clone()); + return networkResponse; + }); + }) + .catch(() => { + // If the network fails (offline), try to serve from cache + return caches.match(event.request); + }) + ); +}); \ No newline at end of file diff --git a/public/webfonts/fa-brands-400.eot b/public/webfonts/fa-brands-400.eot new file mode 100644 index 0000000..cba6c6c Binary files /dev/null and b/public/webfonts/fa-brands-400.eot differ diff --git a/public/webfonts/fa-brands-400.svg b/public/webfonts/fa-brands-400.svg new file mode 100644 index 0000000..b9881a4 --- /dev/null +++ b/public/webfonts/fa-brands-400.svg @@ -0,0 +1,3717 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/webfonts/fa-brands-400.ttf b/public/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000..8d75ded Binary files /dev/null and b/public/webfonts/fa-brands-400.ttf differ diff --git a/public/webfonts/fa-brands-400.woff b/public/webfonts/fa-brands-400.woff new file mode 100644 index 0000000..3375bef Binary files /dev/null and b/public/webfonts/fa-brands-400.woff differ diff --git a/public/webfonts/fa-brands-400.woff2 b/public/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000..402f81c Binary files /dev/null and b/public/webfonts/fa-brands-400.woff2 differ diff --git a/public/webfonts/fa-regular-400.eot b/public/webfonts/fa-regular-400.eot new file mode 100644 index 0000000..a4e5989 Binary files /dev/null and b/public/webfonts/fa-regular-400.eot differ diff --git a/public/webfonts/fa-regular-400.svg b/public/webfonts/fa-regular-400.svg new file mode 100644 index 0000000..463af27 --- /dev/null +++ b/public/webfonts/fa-regular-400.svg @@ -0,0 +1,801 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/webfonts/fa-regular-400.ttf b/public/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000..7157aaf Binary files /dev/null and b/public/webfonts/fa-regular-400.ttf differ diff --git a/public/webfonts/fa-regular-400.woff b/public/webfonts/fa-regular-400.woff new file mode 100644 index 0000000..ad077c6 Binary files /dev/null and b/public/webfonts/fa-regular-400.woff differ diff --git a/public/webfonts/fa-regular-400.woff2 b/public/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000..5632894 Binary files /dev/null and b/public/webfonts/fa-regular-400.woff2 differ diff --git a/public/webfonts/fa-solid-900.eot b/public/webfonts/fa-solid-900.eot new file mode 100644 index 0000000..e994171 Binary files /dev/null and b/public/webfonts/fa-solid-900.eot differ diff --git a/public/webfonts/fa-solid-900.svg b/public/webfonts/fa-solid-900.svg new file mode 100644 index 0000000..00296e9 --- /dev/null +++ b/public/webfonts/fa-solid-900.svg @@ -0,0 +1,5034 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/webfonts/fa-solid-900.ttf b/public/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..25abf38 Binary files /dev/null and b/public/webfonts/fa-solid-900.ttf differ diff --git a/public/webfonts/fa-solid-900.woff b/public/webfonts/fa-solid-900.woff new file mode 100644 index 0000000..23ee663 Binary files /dev/null and b/public/webfonts/fa-solid-900.woff differ diff --git a/public/webfonts/fa-solid-900.woff2 b/public/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..2217164 Binary files /dev/null and b/public/webfonts/fa-solid-900.woff2 differ diff --git a/setup.php b/setup.php old mode 100755 new mode 100644 index fda7bbe..95dd983 --- a/setup.php +++ b/setup.php @@ -1,4 +1,4 @@ -#!/usr/local/bin/php +#!/usr/bin/env php addOption('dry-run', null, InputOption::VALUE_NONE, 'No DB changes.'); + // No specific --debug flag needed, we will output verbose logs by default for now + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + $isDryRun = $input->getOption('dry-run'); + $noteRepository = $this->entityManager->getRepository(Note::class); + + $io->title("Starting Audio Matcher"); + + // 1. Fetch Notes + $qb = $noteRepository->createQueryBuilder('n') + ->leftJoin('n.user', 'u') + ->addSelect('u') + ->where('n.recording IS NULL OR n.recording = :empty') + ->andWhere('u.homeChurchRSS IS NOT NULL') + ->orderBy('n.date', 'DESC') // <--- Added Sort Here + ->setParameter('empty', ''); + //$query = $qb->getQuery(); + + //print ($query->getSql()); + + $notesMissingAudio = $qb->getQuery()->getResult(); + $count = count($notesMissingAudio); + $io->text("Found $count notes in database missing audio."); + + if ($count === 0) { + return Command::SUCCESS; + } + + // 2. Group by User + $notesByUser = []; + foreach ($notesMissingAudio as $note) { + $userId = (string) $note->getUser()->getId(); + $notesByUser[$userId]['user'] = $note->getUser(); + $notesByUser[$userId]['notes'][] = $note; + } + + // 3. Process Per User + foreach ($notesByUser as $userId => $data) { + $user = $data['user']; + $userNotes = $data['notes']; + $rssUrl = $user->getHomeChurchRSS(); + + $io->section("User: {$user->getEmail()} (Notes: " . count($userNotes) . ")"); + $io->text("Fetching RSS: $rssUrl"); + + try { + // Pass $io to helper for debug output + $rssItems = $this->fetchRssItems($rssUrl, $io); + + if (empty($rssItems)) { + $io->warning("RSS feed was empty or failed to parse."); + continue; + } + + $matchCount = 0; + + foreach ($userNotes as $note) { + if (!$note->getDate()) { + $io->text(" > Note ID {$note->getId()} skipped (No Date)"); + continue; + } + + $noteDateString = $note->getDate()->format('Y-m-d'); + $noteTitle = $note->getTitle(); + $io->text("---------------------------------------------------"); + $io->text("Checking Note: [$noteDateString] '$noteTitle'"); + + $bestMatch = null; + $highestConfidence = 0; + + foreach ($rssItems as $item) { + // DEBUG: Show Date Comparison + if ($item['date_string'] !== $noteDateString) { + // Uncomment the line below if you want to see EVERY failed date comparison (can be noisy) + // $io->text(" - REJECTED: Date mismatch (RSS: {$item['date_string']})"); + continue; + } + + // DEBUG: Show Score Calculation + $confidence = $this->calculateConfidence($note, $item); + $io->text(sprintf( + " - DATE MATCHED. Score: %d%%. RSS Title: '%s'", + $confidence, + $item['title'] + )); + + if ($confidence >= 80 && $confidence > $highestConfidence) { + $highestConfidence = $confidence; + $bestMatch = $item; + } + } + + if ($bestMatch) { + $matchCount++; + $io->success("Match Found! ($highestConfidence%)"); + if (!$isDryRun) { + $note->setRecording($bestMatch['url']); + } + } else { + $io->text(" > No match found for this note."); + } + } + + if (!$isDryRun) { + $this->entityManager->flush(); + } + + if ($matchCount > 0) { + $io->success("Found $matchCount matches"); + } + + } catch (\Exception $e) { + $io->error("Error: " . $e->getMessage()); + } + } + + return Command::SUCCESS; + } + + /** + * Recursively fetches RSS items if pagination links are present. + */ + private function fetchRssItems(string $startUrl, SymfonyStyle $io): array + { + $items = []; + $nextUrl = $startUrl; + $pageCount = 0; + $maxPages = 20; // Safety brake to prevent infinite loops + + do { + $pageCount++; + $io->text(" > Fetching Feed Page $pageCount: $nextUrl"); + + try { + $response = $this->httpClient->request('GET', $nextUrl); + $content = $response->getContent(); + + // Suppress warnings for malformed XML + $xml = @simplexml_load_string($content); + + if ($xml === false) { + $io->warning("XML Parsing Failed on page $pageCount"); + break; + } + } catch (\Exception $e) { + $io->warning("HTTP Request Failed on page $pageCount: " . $e->getMessage()); + break; + } + + // 1. Parse Items on this page + $pageItemsCount = 0; + foreach ($xml->channel->item as $item) { + $namespaces = $item->getNamespaces(true); + $speaker = ''; + + // Speaker Logic + if (isset($namespaces['itunes'])) { + $itunes = $item->children($namespaces['itunes']); + $speaker = (string) ($itunes->author ?? ''); + } + if (empty($speaker) && isset($namespaces['dc'])) { + $dc = $item->children($namespaces['dc']); + $speaker = (string) ($dc->creator ?? ''); + } + if (empty($speaker)) { + $speaker = (string) ($item->author ?? ''); + } + + // Date Parsing + $dateString = null; + if (isset($item->pubDate)) { + try { + $dt = new \DateTimeImmutable((string)$item->pubDate); + $dateString = $dt->format('Y-m-d'); + } catch (\Exception $e) { + // ignore bad date + } + } + + $items[] = [ + 'title' => (string) $item->title, + 'speaker' => $speaker, + 'url' => (string) ($item->enclosure['url'] ?? ''), + 'date_string' => $dateString, + ]; + $pageItemsCount++; + } + + $io->text(" Found $pageItemsCount items on this page."); + + // 2. Look for "Next Page" link (RFC 5005 / Atom) + $nextUrl = null; + + // Get namespaces on the element + $namespaces = $xml->channel->getNamespaces(true); + + if (isset($namespaces['atom'])) { + $atom = $xml->channel->children($namespaces['atom']); + foreach ($atom->link as $link) { + // We are looking for