diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index ea6f4a4a..4da0ceaa 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -12,7 +12,7 @@ LABEL maintainer="Yassine Doghri " COPY --from=composer:2 /usr/bin/composer /usr/bin/composer # Install server requirements -RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ +RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ && apt-get update \ && apt-get install --yes --no-install-recommends nodejs \ # gnupg to sign commits with gpg diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..1b773dc8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,68 @@ +.env + +.git/ +node_modules/ +vendor/ +build/ +docs/ +scripts/ +tests/ + +#------------------------- +# Temporary Files +#------------------------- +writable/cache/* +!writable/cache/index.html + +writable/logs/* +!writable/logs/index.html + +writable/session/* +!writable/session/index.html + +writable/temp/* +!writable/temp/index.html + +writable/uploads/* +!writable/uploads/index.html + +writable/debugbar/* +!writable/debugbar/index.html + +# public folder +public/* +!public/media +!public/.htaccess +!public/favicon.ico +!public/icon* +!public/castopod-banner* +!public/castopod-avatar* +!public/index.php +!public/robots.txt +!public/.well-known +!public/.well-known/GDPR.yml + +public/assets/* +!public/assets/index.html + +# public media folder +!public/media/podcasts +!public/media/persons +!public/media/site + +public/media/podcasts/* +!public/media/podcasts/index.html + +public/media/persons/* +!public/media/persons/index.html + +public/media/site/* +!public/media/site/index.html + +# Generated files +modules/Admin/Language/*/PersonsTaxonomy.php + +# Castopod bundle & packages +castopod/ +castopod-*.zip +castopod-*.tar.gz diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index cff4e85e..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "env": { - "browser": true, - "es2020": true - }, - "parser": "@typescript-eslint/parser", - "plugins": ["@typescript-eslint"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended" - ], - "parserOptions": { - "ecmaVersion": 11, - "sourceType": "module" - }, - "rules": {} -} diff --git a/.gitignore b/.gitignore index 539bf182..759dd2f9 100644 --- a/.gitignore +++ b/.gitignore @@ -67,7 +67,7 @@ writable/uploads/* !writable/uploads/index.html writable/debugbar/* -!writable/debugbar/.gitkeep +!writable/debugbar/index.html php_errors.log @@ -107,15 +107,15 @@ _modules/* .idea/ *.iml -# Netbeans -nbproject/ -build/ -nbbuild/ -dist/ -nbdist/ -nbactions.xml -nb-configuration.xml -.nb-gradle/ +# NetBeans +/nbproject/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/nbactions.xml +/nb-configuration.xml +/.nb-gradle/ # Sublime Text *.tmlanguage.cache @@ -128,6 +128,7 @@ nb-configuration.xml # Visual Studio Code .vscode/ +.history/ tmp/ /results/ @@ -174,15 +175,6 @@ public/media/site/* # Generated files modules/Admin/Language/*/PersonsTaxonomy.php -#------------------------- -# Docker volumes -#------------------------- - -mariadb -phpmyadmin -sessions -data - # Castopod bundle & packages castopod/ castopod-*.zip diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee3acd7e..b10a5b9b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: code.castopod.org:5050/adaures/castopod:ci +image: code.castopod.org:5050/adaures/castopod:ci-php8.1 stages: - prepare @@ -23,6 +23,10 @@ php-dependencies: expire_in: 30 mins paths: - vendor/ + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success js-dependencies: stage: prepare @@ -39,6 +43,10 @@ js-dependencies: expire_in: 30 mins paths: - node_modules/ + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success lint-commit-msg: stage: quality @@ -48,11 +56,10 @@ lint-commit-msg: - ./scripts/lint-commit-msg.sh dependencies: - js-dependencies - only: - - develop - - main - - beta - - alpha + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ lint-php: stage: quality @@ -65,16 +72,24 @@ lint-php: - vendor/bin/rector process --dry-run --ansi dependencies: - php-dependencies + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success lint-js: stage: quality script: - - pnpm run prettier + - pnpm run format - pnpm run typecheck - pnpm run lint - pnpm run lint:css dependencies: - js-dependencies + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success tests: stage: quality @@ -86,13 +101,17 @@ tests: MYSQL_USER: "castopod" MYSQL_PASSWORD: "castopod" script: - - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE" + - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE" --skip-ssl # run phpunit without code coverage # TODO: add code coverage - vendor/bin/phpunit --no-coverage dependencies: - php-dependencies + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success bundle: stage: bundle @@ -113,13 +132,12 @@ bundle: name: "castopod-${CI_COMMIT_REF_SLUG}_${CI_COMMIT_SHORT_SHA}" paths: - castopod - only: - variables: - - $CI_PROJECT_NAMESPACE == "adaures" - except: - - main - - beta - - alpha + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_BRANCH =~ /^(main|beta|alpha|next)$/ || $CI_COMMIT_TAG + when: never + - when: on_success release: stage: release @@ -143,38 +161,38 @@ release: artifacts: paths: - castopod - - CP_VERSION.env - only: - - main - - beta - - alpha + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - if: $CI_COMMIT_BRANCH =~ /^(main|alpha|beta|next)$/ website: stage: deploy trigger: adaures/castopod.org - only: - - main - - beta - - alpha + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ && $CI_COMMIT_TAG documentation: stage: deploy trigger: include: docs/.gitlab-ci.yml strategy: depend + rules: + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ + when: never + - when: on_success docker: stage: build trigger: include: docker/production/.gitlab-ci.yml strategy: depend - variables: - PARENT_PIPELINE_ID: $CI_PIPELINE_ID - only: - refs: - - develop - - main - - beta - - alpha - variables: - - $CI_PROJECT_NAMESPACE == "adaures" + rules: + - if: $CI_PROJECT_NAMESPACE != "adaures" + when: never + - if: $CI_COMMIT_BRANCH == "develop" + - if: $CI_COMMIT_MESSAGE =~ /^chore\(release\):/ && $CI_COMMIT_TAG diff --git a/.releaserc.json b/.releaserc.json index af98b785..049e4b2d 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -11,8 +11,67 @@ } ], "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", + [ + "@semantic-release/commit-analyzer", + { + "preset": "conventionalcommits", + "releaseRules": [ + { + "type": "docs", + "scope": "README", + "release": "patch" + }, + { + "type": "refactor", + "scope": "core-*", + "release": "minor" + }, + { + "type": "refactor", + "release": "patch" + } + ], + "parserOpts": { + "noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES", "BREAKING"] + } + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits", + "parserOpts": { + "noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES", "BREAKING"] + }, + "presetConfig": { + "types": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "chore", + "section": "Internal", + "hidden": false + }, + { + "type": "refactor", + "section": "Internal", + "hidden": false + }, + { + "type": "perf", + "section": "Internal", + "hidden": false + } + ] + } + } + ], "@semantic-release/changelog", [ "@semantic-release/exec", @@ -30,7 +89,8 @@ "package.json", "package-lock.json", "CHANGELOG.md" - ] + ], + "message": "chore(release): ${nextRelease.version}\n\n${nextRelease.notes}" } ], [ diff --git a/.rsync-filter b/.rsync-filter index 576403e0..6acbba79 100644 --- a/.rsync-filter +++ b/.rsync-filter @@ -1,7 +1,7 @@ # rsync filter rules to copy required files for Castopod's bundle -+ app/Resources/icons/*** -- app/Resources/** ++ resources/icons/*** ++ resources/ + app/*** + modules/*** + public/*** diff --git a/CHANGELOG.md b/CHANGELOG.md index c05874dd..f99eef1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,261 @@ +## [1.15.5](https://code.castopod.org/adaures/castopod/compare/v1.15.4...v1.15.5) (2026-02-24) + +### Bug Fixes + +- **docker:** add arch-specific supercronic and s6-overlay services + ([243ce3a](https://code.castopod.org/adaures/castopod/commit/243ce3a45c740352841bf67fe1ff63151f276eb9)), + closes [#580](https://code.castopod.org/adaures/castopod/issues/580) + +## [1.15.4](https://code.castopod.org/adaures/castopod/compare/v1.15.3...v1.15.4) (2026-02-19) + +### Bug Fixes + +- **emails:** display verification link in clear text for email clients only + displaying text + ([37c89df](https://code.castopod.org/adaures/castopod/commit/37c89df3424e4f67fb05c09094560df7edbd76d4)), + closes [#328](https://code.castopod.org/adaures/castopod/issues/328) + +## [1.15.3](https://code.castopod.org/adaures/castopod/compare/v1.15.2...v1.15.3) (2026-02-19) + +### Bug Fixes + +- **bundle:** include resources folder for icons during rsync + ([70ca0c7](https://code.castopod.org/adaures/castopod/commit/70ca0c7928cabb99a07de01cb4e12f5d81689bbe)), + closes [#588](https://code.castopod.org/adaures/castopod/issues/588) + +## [1.15.2](https://code.castopod.org/adaures/castopod/compare/v1.15.1...v1.15.2) (2026-02-18) + +### Bug Fixes + +- **player:** load icons locally instead of relying on vimejs picking them from + third party scripts + ([0961987](https://code.castopod.org/adaures/castopod/commit/096198727627b3dba9c5bd28f20e90cff680316b)), + closes [#551](https://code.castopod.org/adaures/castopod/issues/551) + +## [1.15.1](https://code.castopod.org/adaures/castopod/compare/v1.15.0...v1.15.1) (2026-02-17) + +### Bug Fixes + +- **docker:** create optimized builder with docker-container driver for arm64 + builds + ([89ae2b8](https://code.castopod.org/adaures/castopod/commit/89ae2b89fd20fa31851a31fe44f514294fbcd688)), + closes [#580](https://code.castopod.org/adaures/castopod/issues/580) + +## [1.15.0](https://code.castopod.org/adaures/castopod/compare/v1.14.1...v1.15.0) (2026-02-16) + +### Features + +- **docker:** replace all-in-one image with FrankenPHP and Caddy based image + + discard other images + ([14089f0](https://code.castopod.org/adaures/castopod/commit/14089f0542ccdf187bd64bea8ad2787b9e8c7d59)) + +## 1.14.1 (2026-01-31) + +- fix(i18n): set english as first item in supported locales in case locale + negotiation does not work + ([44fb904](https://code.castopod.org/adaures/castopod/commit/44fb904)) + +## 1.14.0 (2026-01-23) + +- feat: add Lithuanian and Czech languages + ([9582f2a](https://code.castopod.org/adaures/castopod/commit/9582f2a)) + +## 1.13.8 (2025-12-20) + +- chore: update CI4 to v4.6.4 + php and js packages to latest + ([133e308](https://code.castopod.org/adaures/castopod/commit/133e308)) +- fix(fediverse): match episode posts replies fields with comments in union + query ([d438190](https://code.castopod.org/adaures/castopod/commit/d438190)), + closes [#577](https://code.castopod.org/adaures/castopod/issues/577) + +## 1.13.7 (2025-11-03) + +- fix(rss): set person's avatar url to "federation" for width and height of + 400px ([a50b0f3](https://code.castopod.org/adaures/castopod/commit/a50b0f3)) + +## 1.13.6 (2025-11-03) + +- fix(fediverse): access to URI in 'object' instead of going down with '->id' in + delete case + ([41211a1](https://code.castopod.org/adaures/castopod/commit/41211a1)) +- build: update docker images' versions + docs to latest + ([07e3a9c](https://code.castopod.org/adaures/castopod/commit/07e3a9c)) + +## 1.13.5 (2025-08-25) + +- chore: add discourse social network + ([08a3779](https://code.castopod.org/adaures/castopod/commit/08a3779)) +- chore: fix rector issues with filters' methods return types + ([3d7969d](https://code.castopod.org/adaures/castopod/commit/3d7969d)) +- chore: update .releaserc to include more detailed release notes + ([5b4403e](https://code.castopod.org/adaures/castopod/commit/5b4403e)) +- chore: update CI to v4.6.3 + all php and js dependencies + ([842c4e4](https://code.castopod.org/adaures/castopod/commit/842c4e4)) +- fix(episodes): set dropdown menu for seasons / years to a maximum height with + auto scroll + ([f88abd2](https://code.castopod.org/adaures/castopod/commit/f88abd2)) +- fix(fediverse): add is_private field to posts to flag private posts and hide + them from public views + ([d5ef2ab](https://code.castopod.org/adaures/castopod/commit/d5ef2ab)) + +## [1.13.4](https://code.castopod.org/adaures/castopod/compare/v1.13.3...v1.13.4) (2025-02-24) + +### Bug Fixes + +- **platforms:** add podcast id when deleting platforms on save + ([019fbaf](https://code.castopod.org/adaures/castopod/commit/019fbaf74ddd7427c3b7dfaef0d2e4409aab0e7c)) +- return method instead of throwing a 404 when submitting a post + ([44ad651](https://code.castopod.org/adaures/castopod/commit/44ad65117635b6292b4653bca7e22acecb025146)), + closes [#550](https://code.castopod.org/adaures/castopod/issues/550) + +## [1.13.3](https://code.castopod.org/adaures/castopod/compare/v1.13.2...v1.13.3) (2025-01-08) + +### Bug Fixes + +- remove exit function from podcast:import command to allow for + episodes:compute-downloads to run + ([3359abf](https://code.castopod.org/adaures/castopod/commit/3359abf3fc7d6ddf9db2cacc3e25f7c6d99e33a6)) + +## [1.13.2](https://code.castopod.org/adaures/castopod/compare/v1.13.1...v1.13.2) (2024-12-28) + +### Bug Fixes + +- add downloads_count to episodes table, computed every hour + ([5182d5d](https://code.castopod.org/adaures/castopod/commit/5182d5d67aa3c6f7906d4603efcec4b48f048991)) + +## [1.13.1](https://code.castopod.org/adaures/castopod/compare/v1.13.0...v1.13.1) (2024-12-05) + +### Bug Fixes + +- **api:** cast integers when creating episode + ([7ca501d](https://code.castopod.org/adaures/castopod/commit/7ca501dd6f426a1d50ffb1ea759f1e2cc91c1d13)) + +# [1.13.0](https://code.castopod.org/adaures/castopod/compare/v1.12.11...v1.13.0) (2024-10-25) + +### Features + +- **api:** add Episode create and publish endpoints + ([75cf78e](https://code.castopod.org/adaures/castopod/commit/75cf78e972c52528dc38be050dcb1eb1f8e626fa)) +- **rss:** add option for 301 redirect to new feed url + ([3a7d26f](https://code.castopod.org/adaures/castopod/commit/3a7d26fdf9bfeffb9247f8efe06d9040ae2fe5ff)) + +## [1.12.11](https://code.castopod.org/adaures/castopod/compare/v1.12.10...v1.12.11) (2024-10-16) + +### Bug Fixes + +- allow passing json to app.proxyIPs config to set it + ([7d1460b](https://code.castopod.org/adaures/castopod/commit/7d1460b8e08beb447389c604995efd931c84fd72)) + +## [1.12.10](https://code.castopod.org/adaures/castopod/compare/v1.12.9...v1.12.10) (2024-10-03) + +### Bug Fixes + +- set user as www-data when running cron jobs in docker's supervisord config + ([be3b6db](https://code.castopod.org/adaures/castopod/commit/be3b6db207204e14c9ad5d4d84384b15e0dbfa84)) + +## [1.12.9](https://code.castopod.org/adaures/castopod/compare/v1.12.8...v1.12.9) (2024-08-16) + +### Bug Fixes + +- **fediverse:** add "processing" and "failed" statuses to better manage + broadcast load + ([cf9e072](https://code.castopod.org/adaures/castopod/commit/cf9e0724fcdb8d0194676880cc3b088b221f5a38)), + closes [#511](https://code.castopod.org/adaures/castopod/issues/511) + +## [1.12.8](https://code.castopod.org/adaures/castopod/compare/v1.12.7...v1.12.8) (2024-08-16) + +### Bug Fixes + +- **podcast-model:** always query podcast from database when clearing cache + ([995ca5b](https://code.castopod.org/adaures/castopod/commit/995ca5b197f8f917102a108dd07d1f81e99cc8e6)) + +## [1.12.7](https://code.castopod.org/adaures/castopod/compare/v1.12.6...v1.12.7) (2024-08-14) + +### Bug Fixes + +- **episode:** do not change slug when editing episode title + ([89bf73b](https://code.castopod.org/adaures/castopod/commit/89bf73b869c28c2fcffa3dcbc3660fac3b6bf988)), + closes [#513](https://code.castopod.org/adaures/castopod/issues/513) +- **preview:** delete episode preview cache after editing episode + ([6a2cdd0](https://code.castopod.org/adaures/castopod/commit/6a2cdd066ee13efc6489901bbdcbcc5fea35cd71)), + closes [#514](https://code.castopod.org/adaures/castopod/issues/514) + +## [1.12.6](https://code.castopod.org/adaures/castopod/compare/v1.12.5...v1.12.6) (2024-08-09) + +### Bug Fixes + +- **docker-image:** clear cache to account for new assets and data structure + changes + ([e41245d](https://code.castopod.org/adaures/castopod/commit/e41245d2e758bce2a404749398bef89998638561)), + closes [#510](https://code.castopod.org/adaures/castopod/issues/510) + +## [1.12.5](https://code.castopod.org/adaures/castopod/compare/v1.12.4...v1.12.5) (2024-07-30) + +### Bug Fixes + +- **rss:** add subscription id to cache name to prevent premium feeds from + overlapping + ([5310d86](https://code.castopod.org/adaures/castopod/commit/5310d8648af6d43b9090f8d9f8066f7b3a8f0aa7)) + +## [1.12.4](https://code.castopod.org/adaures/castopod/compare/v1.12.3...v1.12.4) (2024-07-30) + +### Bug Fixes + +- **icons:** set correct names for lock and lock-unlock icons in premium banner + ([94deaab](https://code.castopod.org/adaures/castopod/commit/94deaab3cd0912ff1a585bee174a096a84c68384)) +- **premium-podcasts:** update query to validate subscription + ([0e6d294](https://code.castopod.org/adaures/castopod/commit/0e6d2945f215453abbe7d9f90afd012d2507846b)) + +## [1.12.3](https://code.castopod.org/adaures/castopod/compare/v1.12.2...v1.12.3) (2024-07-04) + +### Bug Fixes + +- **audio-player:** set player icons to default instead of missing Castopod's + ([c89d298](https://code.castopod.org/adaures/castopod/commit/c89d29867e122fe7d4d5563f0ab1e9993e2ece16)) + +## [1.12.2](https://code.castopod.org/adaures/castopod/compare/v1.12.1...v1.12.2) (2024-07-03) + +### Bug Fixes + +- broken icon call in frontend default pages template + ([d8d2eb9](https://code.castopod.org/adaures/castopod/commit/d8d2eb92b741ecfc956b416db481f8c2dee84864)) + +## [1.12.1](https://code.castopod.org/adaures/castopod/compare/v1.12.0...v1.12.1) (2024-07-01) + +### Bug Fixes + +- set correct icons parameters in map and funding links views + ([b129813](https://code.castopod.org/adaures/castopod/commit/b129813ea5d38436563639b51ec9ed2882644228)), + closes [#500](https://code.castopod.org/adaures/castopod/issues/500) + +# [1.12.0](https://code.castopod.org/adaures/castopod/compare/v1.11.0...v1.12.0) (6/28/2024) + +### Bug Fixes + +- add missing php-icons config file to bundle + ([56612f0](https://code.castopod.org/adaures/castopod/commit/56612f0c762aa2d98e3c8c77fba88ffdf6f46a44)) +- **docs:** add base to og image using env variable + ([fe67659](https://code.castopod.org/adaures/castopod/commit/fe676590f23a33bdbe8905d234760923c029e350)) +- **import:** rewrite download_file helper to output curl response directly to + file + ([eb7ad2f](https://code.castopod.org/adaures/castopod/commit/eb7ad2f7e1c0137f222f47e47062887de42c4824)) +- include app/Resources/icons folder to bundle + ([3fd5efc](https://code.castopod.org/adaures/castopod/commit/3fd5efc7956977acc19e53182f25b12813964a7d)) +- **platforms:** add platforms service + reduce memory consumption when + rendering platform cards + ([fe73e9f](https://code.castopod.org/adaures/castopod/commit/fe73e9fae9ea5d5ce946680aec194308bb2e620c)) +- set owner email visibility when editing podcast + ([fc4f982](https://code.castopod.org/adaures/castopod/commit/fc4f9825568cd4384c5b3cfe972accd146548807)), + closes [#473](https://code.castopod.org/adaures/castopod/issues/473) + +### Features + +- set owner email to hidden by default in podcast create form + ([7a6d9df](https://code.castopod.org/adaures/castopod/commit/7a6d9df6db8a6184b8250ced0475f3e741dde7f4)) +- support podcast:txt tag with verify use case + ([57e459e](https://code.castopod.org/adaures/castopod/commit/57e459e187ed048430f4137172e22396cd02bf81)), + closes [#468](https://code.castopod.org/adaures/castopod/issues/468) + # [1.11.0](https://code.castopod.org/adaures/castopod/compare/v1.10.5...v1.11.0) (4/17/2024) ### Bug Fixes diff --git a/CONTRIBUTING-DEV.md b/CONTRIBUTING-DEV.md index df75bf50..66bfae37 100644 --- a/CONTRIBUTING-DEV.md +++ b/CONTRIBUTING-DEV.md @@ -146,12 +146,10 @@ To see your changes, go to: - `http://localhost:8080/` for the Castopod website - `http://localhost:8080/cp-admin` for the Castopod admin: - - email: **admin@castopod.local** - password: **castopod** - `http://localhost:8888/` for the phpmyadmin interface: - - username: **castopod** - password: **castopod** @@ -294,7 +292,6 @@ You do not wish to use the VSCode devcontainer? No problem! ``` 3. (optionnal) Populate the database with test data: - - Populate with fake podcast analytics: ```bash diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6557e02b..24af0bdb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -71,8 +71,8 @@ experience the problem? What would you expect to be the outcome? All these details will help people to fix any potential bugs. > [!NOTE] -> [Issue templates](https://docs.gitlab.com/ee/user/project/description_templates.html#using-the-templates) -> have been created for this project. You may use them to help you follow those +> [Issue templates](https://docs.gitlab.com/ee/user/project/description_templates.html#using-the-templates) have +> been created for this project. You may use them to help you follow those > guidelines. ## Feature requests diff --git a/README.md b/README.md index 49143e74..d6c165c9 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ Alternatively, you can follow us on social media platforms to get news about Castopod: - [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance) -- [Twitter](https://twitter.com/castopod) +- [Bluesky](https://bsky.app/profile/castopod.org) - [LinkedIn](https://linkedin.com/company/castopod) - [Facebook](https://www.facebook.com/castopod) diff --git a/app/Commands/EpisodesComputeDownloads.php b/app/Commands/EpisodesComputeDownloads.php new file mode 100644 index 00000000..1bdc7b2d --- /dev/null +++ b/app/Commands/EpisodesComputeDownloads.php @@ -0,0 +1,50 @@ +builder() + ->select('episodes.id as id, IFNULL(SUM(ape.hits),0) as downloads_count') + ->join('analytics_podcasts_by_episode ape', 'episodes.id=ape.episode_id', 'left') + ->groupBy('episodes.id'); + + $episodeModel2 = new EpisodeModel(); + $episodeModel2->builder() + ->setQueryAsData($query) + ->onConstraint('id') + ->updateBatch(); + } +} diff --git a/app/Common.php b/app/Common.php index 6f720768..89981c0d 100644 --- a/app/Common.php +++ b/app/Common.php @@ -37,7 +37,7 @@ if (! function_exists('view')) { $renderer = single_service('renderer', $path); $saveData = config('View') -->saveData; + ->saveData; if (array_key_exists('saveData', $options)) { $saveData = (bool) $options['saveData']; diff --git a/app/Config/App.php b/app/Config/App.php index 9dd39d53..9f95c964 100644 --- a/app/Config/App.php +++ b/app/Config/App.php @@ -123,17 +123,19 @@ class App extends BaseConfig * @var list */ public array $supportedLocales = [ - 'en', + 'en', // keep english language first in case locale negotiation does not work 'fr', - 'pl', - 'de', - 'pt-br', - 'nn-no', - 'es', - 'zh-hans', - 'ca', 'br', + 'ca', + 'cs', + 'de', + 'es', + 'lt', + 'nn-no', + 'pl', + 'pt-br', 'sr-latn', + 'zh-hans', ]; /** @@ -192,9 +194,9 @@ class App extends BaseConfig * '192.168.5.0/24' => 'X-Real-IP', * ] * - * @var array + * @var array|string */ - public array $proxyIPs = []; + public $proxyIPs = []; /** * -------------------------------------------------------------------------- @@ -249,4 +251,36 @@ class App extends BaseConfig public ?int $bandwidthLimit = null; public ?string $legalNoticeURL = null; + + /** + * AuthToken Config Constructor + */ + public function __construct() + { + parent::__construct(); + + if (is_string($this->proxyIPs)) { + $array = json_decode($this->proxyIPs, true); + if (is_array($array)) { + $this->proxyIPs = $array; + } + } + } + + /** + * Override parent initEnvValue() to allow for direct setting to array properties values from ENV + * + * In order to set array properties via ENV vars we need to set the property to a string value first. + * + * @param mixed $property + */ + protected function initEnvValue(&$property, string $name, string $prefix, string $shortPrefix): void + { + // if attempting to set property from ENV, first set to empty string + if ($name === 'proxyIPs' && $this->getEnvValue($name, $prefix, $shortPrefix) !== null) { + $property = ''; + } + + parent::initEnvValue($property, $name, $prefix, $shortPrefix); + } } diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index 45072e31..6d5bb530 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -16,8 +16,6 @@ use CodeIgniter\Config\AutoloadConfig; * * NOTE: If you use an identical key in $psr4 or $classmap, then * the values in this file will overwrite the framework's values. - * - * @immutable */ class Autoload extends AutoloadConfig { @@ -108,5 +106,5 @@ class Autoload extends AutoloadConfig * * @var list */ - public $helpers = ['auth', 'setting', 'icons']; + public $helpers = ['auth', 'setting']; } diff --git a/app/Config/Cache.php b/app/Config/Cache.php index 20bd2f27..c37f7c00 100644 --- a/app/Config/Cache.php +++ b/app/Config/Cache.php @@ -36,18 +36,6 @@ class Cache extends BaseConfig */ public string $backupHandler = 'dummy'; - /** - * -------------------------------------------------------------------------- - * Cache Directory Path - * -------------------------------------------------------------------------- - * - * The path to where cache files should be stored, if using a file-based - * system. - * - * @deprecated Use the driver-specific variant under $file - */ - public string $storePath = WRITEPATH . 'cache/'; - /** * -------------------------------------------------------------------------- * Key Prefix @@ -91,7 +79,7 @@ class Cache extends BaseConfig * Your file storage preferences can be specified below, if you are using * the File driver. * - * @var array + * @var array{storePath?: string, mode?: int} */ public array $file = [ 'storePath' => WRITEPATH . 'cache/', @@ -107,7 +95,7 @@ class Cache extends BaseConfig * * @see https://codeigniter.com/user_guide/libraries/caching.html#memcached * - * @var array + * @var array{host?: string, port?: int, weight?: int, raw?: bool} */ public array $memcached = [ 'host' => '127.0.0.1', @@ -123,7 +111,7 @@ class Cache extends BaseConfig * Your Redis server can be specified below, if you are using * the Redis or Predis drivers. * - * @var array + * @var array{host?: string, password?: string|null, port?: int, timeout?: int, database?: int} */ public array $redis = [ 'host' => '127.0.0.1', diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 90eac0e4..ea517aea 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -11,7 +11,7 @@ declare(strict_types=1); | | NOTE: this constant is updated upon release with Continuous Integration. */ -defined('CP_VERSION') || define('CP_VERSION', '1.11.0'); +defined('CP_VERSION') || define('CP_VERSION', '1.15.5'); /* | -------------------------------------------------------------------- @@ -91,18 +91,3 @@ defined('EXIT_USER_INPUT') || define('EXIT_USER_INPUT', 7); // invalid user inpu defined('EXIT_DATABASE') || define('EXIT_DATABASE', 8); // database error defined('EXIT__AUTO_MIN') || define('EXIT__AUTO_MIN', 9); // lowest automatically-assigned error code defined('EXIT__AUTO_MAX') || define('EXIT__AUTO_MAX', 125); // highest automatically-assigned error code - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_LOW instead. - */ -define('EVENT_PRIORITY_LOW', 200); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_NORMAL instead. - */ -define('EVENT_PRIORITY_NORMAL', 100); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_HIGH instead. - */ -define('EVENT_PRIORITY_HIGH', 10); diff --git a/app/Config/Cookie.php b/app/Config/Cookie.php index 26e5da56..bcbe5d7e 100644 --- a/app/Config/Cookie.php +++ b/app/Config/Cookie.php @@ -85,7 +85,7 @@ class Cookie extends BaseConfig * (empty string) means default SameSite attribute set by browsers (`Lax`) * will be set on cookies. If set to `None`, `$secure` must also be set. * - * @phpstan-var 'None'|'Lax'|'Strict'|'' + * @var ''|'Lax'|'None'|'Strict' */ public string $samesite = 'Lax'; diff --git a/app/Config/Database.php b/app/Config/Database.php index fce9d053..77144234 100644 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -45,6 +45,7 @@ class Database extends Config 'failover' => [], 'port' => 3306, 'numberNative' => false, + 'foundRows' => false, 'dateFormat' => [ 'date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i:s', @@ -78,6 +79,7 @@ class Database extends Config 'port' => 3306, 'foreignKeys' => true, 'busyTimeout' => 1000, + 'synchronous' => null, 'dateFormat' => [ 'date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i:s', diff --git a/app/Config/DocTypes.php b/app/Config/DocTypes.php index 3d04aaa5..62ad9e07 100644 --- a/app/Config/DocTypes.php +++ b/app/Config/DocTypes.php @@ -4,9 +4,6 @@ declare(strict_types=1); namespace Config; -/** - * @immutable - */ class DocTypes { /** diff --git a/app/Config/Events.php b/app/Config/Events.php index 8da203d0..ac4ed255 100644 --- a/app/Config/Events.php +++ b/app/Config/Events.php @@ -50,11 +50,12 @@ Events::on('pre_system', static function (): void { */ if (CI_DEBUG && ! is_cli()) { Events::on('DBQuery', Database::class . '::collect'); - Services::toolbar()->respond(); + service('toolbar') + ->respond(); // Hot Reload route - for framework use on the hot reloader. if (ENVIRONMENT === 'development') { - Services::routes()->get('__hot-reload', static function (): void { + service('routes')->get('__hot-reload', static function (): void { (new HotReloader())->run(); }); } diff --git a/app/Config/Exceptions.php b/app/Config/Exceptions.php index afd1576a..4744a7f2 100644 --- a/app/Config/Exceptions.php +++ b/app/Config/Exceptions.php @@ -62,12 +62,10 @@ class Exceptions extends BaseConfig /** * -------------------------------------------------------------------------- - * LOG DEPRECATIONS INSTEAD OF THROWING? + * WHETHER TO THROW AN EXCEPTION ON DEPRECATED ERRORS * -------------------------------------------------------------------------- - * By default, CodeIgniter converts deprecations into exceptions. Also, - * starting in PHP 8.1 will cause a lot of deprecated usage warnings. - * Use this option to temporarily cease the warnings and instead log those. - * This option also works for user deprecations. + * If set to `true`, DEPRECATED errors are only logged and no exceptions are + * thrown. This option also works for user deprecations. */ public bool $logDeprecations = true; diff --git a/app/Config/Feature.php b/app/Config/Feature.php index 1e257ac4..76787f2d 100644 --- a/app/Config/Feature.php +++ b/app/Config/Feature.php @@ -12,9 +12,9 @@ use CodeIgniter\Config\BaseConfig; class Feature extends BaseConfig { /** - * Use improved new auto routing instead of the default legacy version. + * Use improved new auto routing instead of the legacy version. */ - public bool $autoRoutesImproved = false; + public bool $autoRoutesImproved = true; /** * Use filter execution order in 4.4 or before. @@ -28,4 +28,12 @@ class Feature extends BaseConfig * If false, `limit(0)` returns no records. (the behavior of 3.1.9 or later in version 3.x.) */ public bool $limitZeroAsAll = true; + + /** + * Use strict location negotiation. + * + * By default, the locale is selected based on a loose comparison of the language code (ISO 639-1) + * Enabling strict comparison will also consider the region code (ISO 3166-1 alpha-2). + */ + public bool $strictLocaleNegotiation = false; } diff --git a/app/Config/Filters.php b/app/Config/Filters.php index 7e65d296..2d64bc02 100644 --- a/app/Config/Filters.php +++ b/app/Config/Filters.php @@ -67,13 +67,20 @@ class Filters extends BaseConfig /** * List of filter aliases that are always applied before and after every request. * - * @var array>>>>|array> + * @var array{ + * before: array|string}>|list, + * after: array|string}>|list + * } */ public array $globals = [ 'before' => [ // 'honeypot', 'csrf' => [ - 'except' => ['@[a-zA-Z0-9\_]{1,32}/inbox'], + 'except' => [ + '@[a-zA-Z0-9\_]{1,32}/inbox', + 'api/rest/v1/episodes', + 'api/rest/v1/episodes/[0-9]+/publish', + ], ], // 'invalidchars', ], diff --git a/app/Config/Format.php b/app/Config/Format.php index 2b72fc0e..355d341f 100644 --- a/app/Config/Format.php +++ b/app/Config/Format.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Config; use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Format\FormatterInterface; use CodeIgniter\Format\JSONFormatter; use CodeIgniter\Format\XMLFormatter; @@ -64,16 +63,4 @@ class Format extends BaseConfig 'application/xml' => 0, 'text/xml' => 0, ]; - - //-------------------------------------------------------------------- - - /** - * A Factory method to return the appropriate formatter for the given mime type. - * - * @deprecated This is an alias of `\CodeIgniter\Format\Format::getFormatter`. Use that instead. - */ - public function getFormatter(string $mime): FormatterInterface - { - return Services::format()->getFormatter($mime); - } } diff --git a/app/Config/Generators.php b/app/Config/Generators.php index 172b4081..76b82d6b 100644 --- a/app/Config/Generators.php +++ b/app/Config/Generators.php @@ -25,7 +25,7 @@ class Generators extends BaseConfig * * YOU HAVE BEEN WARNED! * - * @var array + * @var array|string> */ public array $views = [ 'make:cell' => [ diff --git a/app/Config/Images.php b/app/Config/Images.php index 7d3ca529..6e872a0b 100644 --- a/app/Config/Images.php +++ b/app/Config/Images.php @@ -130,7 +130,7 @@ class Images extends BaseConfig ], ]; - public string $avatarDefaultPath = 'castopod-avatar.jpg'; + public string $avatarDefaultPath = 'assets/images/castopod-avatar.jpg'; public string $avatarDefaultMimeType = 'image/jpg'; @@ -139,31 +139,31 @@ class Images extends BaseConfig */ public array $podcastBannerDefaultPaths = [ 'default' => [ - 'path' => 'castopod-banner-pine.jpg', + 'path' => 'assets/images/castopod-banner-pine.jpg', 'mimetype' => 'image/jpeg', ], 'pine' => [ - 'path' => 'castopod-banner-pine.jpg', + 'path' => 'assets/images/castopod-banner-pine.jpg', 'mimetype' => 'image/jpeg', ], 'crimson' => [ - 'path' => 'castopod-banner-crimson.jpg', + 'path' => 'assets/images/castopod-banner-crimson.jpg', 'mimetype' => 'image/jpeg', ], 'amber' => [ - 'path' => 'castopod-banner-amber.jpg', + 'path' => 'assets/images/castopod-banner-amber.jpg', 'mimetype' => 'image/jpeg', ], 'lake' => [ - 'path' => 'castopod-banner-lake.jpg', + 'path' => 'assets/images/castopod-banner-lake.jpg', 'mimetype' => 'image/jpeg', ], 'jacaranda' => [ - 'path' => 'castopod-banner-jacaranda.jpg', + 'path' => 'assets/images/castopod-banner-jacaranda.jpg', 'mimetype' => 'image/jpeg', ], 'onyx' => [ - 'path' => 'castopod-banner-onyx.jpg', + 'path' => 'assets/images/castopod-banner-onyx.jpg', 'mimetype' => 'image/jpeg', ], ]; diff --git a/app/Config/Kint.php b/app/Config/Kint.php index f89cafbd..813a68a0 100644 --- a/app/Config/Kint.php +++ b/app/Config/Kint.php @@ -5,13 +5,11 @@ declare(strict_types=1); namespace Config; use Kint\Parser\ConstructablePluginInterface; -use Kint\Renderer\AbstractRenderer; use Kint\Renderer\Rich\TabPluginInterface; use Kint\Renderer\Rich\ValuePluginInterface; /** * -------------------------------------------------------------------------- - * Kint * -------------------------------------------------------------------------- * * We use Kint's `RichRenderer` and `CLIRenderer`. This area contains options @@ -48,8 +46,6 @@ class Kint public bool $richFolder = false; - public int $richSort = AbstractRenderer::SORT_FULL; - /** * @var array>|null */ diff --git a/app/Config/Logger.php b/app/Config/Logger.php index 2770468f..ab949f98 100644 --- a/app/Config/Logger.php +++ b/app/Config/Logger.php @@ -6,6 +6,7 @@ namespace Config; use CodeIgniter\Config\BaseConfig; use CodeIgniter\Log\Handlers\FileHandler; +use CodeIgniter\Log\Handlers\HandlerInterface; class Logger extends BaseConfig { @@ -75,7 +76,7 @@ class Logger extends BaseConfig * Handlers are executed in the order defined in this array, starting with * the handler on top and continuing down. * - * @var array|string>> + * @var array, array|string>> */ public array $handlers = [ /* diff --git a/app/Config/Mimes.php b/app/Config/Mimes.php index 7e4785b6..fedb0532 100644 --- a/app/Config/Mimes.php +++ b/app/Config/Mimes.php @@ -5,8 +5,6 @@ declare(strict_types=1); namespace Config; /** - * Mimes - * * This file contains an array of mime types. It is used by the Upload class to help identify allowed file types. * * When more than one variation for an extension exist (like jpg, jpeg, etc) the most common one should be first in the @@ -14,8 +12,6 @@ namespace Config; * * When working with mime types, please make sure you have the ´fileinfo´ extension enabled to reliably detect the * media types. - * - * @immutable */ class Mimes { @@ -283,7 +279,13 @@ class Mimes 'srt' => ['application/x-subrip', 'text/srt', 'text/plain', 'application/octet-stream'], 'vtt' => ['text/vtt', 'text/plain'], 'ico' => ['image/x-icon', 'image/x-ico', 'image/vnd.microsoft.icon'], - 'stl' => ['application/sla', 'application/vnd.ms-pki.stl', 'application/x-navistyle'], + 'stl' => [ + 'application/sla', + 'application/vnd.ms-pki.stl', + 'application/x-navistyle', + 'model/stl', + 'application/octet-stream', + ], ]; /** diff --git a/app/Config/Modules.php b/app/Config/Modules.php index bfceb1f3..0c5bfb04 100644 --- a/app/Config/Modules.php +++ b/app/Config/Modules.php @@ -11,8 +11,6 @@ use CodeIgniter\Modules\Modules as BaseModules; * * NOTE: This class is required prior to Autoloader instantiation, * and does not extend BaseConfig. - * - * @immutable */ class Modules extends BaseModules { diff --git a/app/Config/Optimize.php b/app/Config/Optimize.php index 3aa3411c..93bbaf39 100644 --- a/app/Config/Optimize.php +++ b/app/Config/Optimize.php @@ -9,8 +9,6 @@ namespace Config; * * NOTE: This class does not extend BaseConfig for performance reasons. * So you cannot replace the property values with Environment Variables. - * - * @immutable */ class Optimize { diff --git a/app/Config/Paths.php b/app/Config/Paths.php index df8ad878..ea44afbb 100644 --- a/app/Config/Paths.php +++ b/app/Config/Paths.php @@ -5,14 +5,15 @@ declare(strict_types=1); namespace Config; /** - * Paths - * * Holds the paths that are used by the system to locate the main directories, app, system, etc. * * Modifying these allows you to restructure your application, share a system folder between multiple applications, and * more. * * All paths are relative to the project's root folder. + * + * NOTE: This class is required prior to Autoloader instantiation, + * and does not extend BaseConfig. */ class Paths @@ -72,7 +73,7 @@ class Paths * This variable must contain the name of the directory that * contains the view files used by your application. By * default this is in `app/Views`. This value - * is used when no value is provided to `Services::renderer()`. + * is used when no value is provided to `service('renderer')`. */ public string $viewDirectory = __DIR__ . '/../Views'; } diff --git a/app/Config/Routes.php b/app/Config/Routes.php index f3871562..316156cf 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -4,14 +4,7 @@ declare(strict_types=1); use CodeIgniter\Router\RouteCollection; -/** - * @var RouteCollection $routes - * - * -------------------------------------------------------------------- - * Placeholder definitions - * -------------------------------------------------------------------- - */ - +/** @var RouteCollection $routes */ $routes->addPlaceholder('podcastHandle', '[a-zA-Z0-9\_]{1,32}'); $routes->addPlaceholder('slug', '[a-zA-Z0-9\-]{1,128}'); $routes->addPlaceholder('base64', '[A-Za-z0-9\.\_]+\-{0,2}'); diff --git a/app/Config/Routing.php b/app/Config/Routing.php index b7210e8f..acb39371 100644 --- a/app/Config/Routing.php +++ b/app/Config/Routing.php @@ -136,7 +136,7 @@ class Routing extends BaseRouting * * If you enable this, $translateURIDashes is ignored. * - * Default: false + * Default: true */ - public bool $translateUriToCamelCase = false; + public bool $translateUriToCamelCase = true; } diff --git a/app/Config/Security.php b/app/Config/Security.php index 39d915c3..704c6efb 100644 --- a/app/Config/Security.php +++ b/app/Config/Security.php @@ -83,23 +83,4 @@ class Security extends BaseConfig * @see https://codeigniter4.github.io/userguide/libraries/security.html#redirection-on-failure */ public bool $redirect = (ENVIRONMENT === 'production'); - - /** - * -------------------------------------------------------------------------- - * CSRF SameSite - * -------------------------------------------------------------------------- - * - * Setting for CSRF SameSite cookie token. - * - * Allowed values are: None - Lax - Strict - ''. - * - * Defaults to `Lax` as recommended in this link: - * - * @see https://portswigger.net/web-security/csrf/samesite-cookies - * - * @var string - * - * @deprecated `Config\Cookie` $samesite property is used. - */ - public $samesite = 'Lax'; } diff --git a/app/Config/Services.php b/app/Config/Services.php index b12e40a8..c8d4755d 100644 --- a/app/Config/Services.php +++ b/app/Config/Services.php @@ -8,9 +8,11 @@ use App\Libraries\Breadcrumb; use App\Libraries\Negotiate; use App\Libraries\Router; use CodeIgniter\Config\BaseService; +use CodeIgniter\HTTP\Negotiate as CodeIgniterHTTPNegotiate; use CodeIgniter\HTTP\Request; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\Router\RouteCollectionInterface; +use CodeIgniter\Router\Router as CodeIgniterRouter; /** * Services Configuration file. @@ -32,7 +34,7 @@ class Services extends BaseService ?RouteCollectionInterface $routes = null, ?Request $request = null, bool $getShared = true - ): Router { + ): CodeIgniterRouter { if ($getShared) { return static::getSharedInstance('router', $routes, $request); } @@ -47,8 +49,10 @@ class Services extends BaseService * The Negotiate class provides the content negotiation features for working the request to determine correct * language, encoding, charset, and more. */ - public static function negotiator(?RequestInterface $request = null, bool $getShared = true): Negotiate - { + public static function negotiator( + ?RequestInterface $request = null, + bool $getShared = true + ): CodeIgniterHTTPNegotiate { if ($getShared) { return static::getSharedInstance('negotiator', $request); } diff --git a/app/Config/Tasks.php b/app/Config/Tasks.php index 06dd531c..084dbade 100644 --- a/app/Config/Tasks.php +++ b/app/Config/Tasks.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Config; -use CodeIgniter\Config\BaseConfig; +use CodeIgniter\Tasks\Config\Tasks as BaseTasks; use CodeIgniter\Tasks\Scheduler; -class Tasks extends BaseConfig +class Tasks extends BaseTasks { /** * -------------------------------------------------------------------------- @@ -17,7 +17,7 @@ class Tasks extends BaseConfig * If true, will log the time it takes for each task to run. * Requires the settings table to have been created previously. */ - public bool $logPerformance = false; + public bool $logPerformance = true; /** * -------------------------------------------------------------------------- @@ -51,5 +51,9 @@ class Tasks extends BaseConfig $schedule->command('podcast:import') ->everyMinute() ->named('podcast-import'); + + $schedule->command('episodes:compute-downloads') + ->everyHour() + ->named('episodes:compute-downloads'); } } diff --git a/app/Config/Vite.php b/app/Config/Vite.php new file mode 100644 index 00000000..c0d42da4 --- /dev/null +++ b/app/Config/Vite.php @@ -0,0 +1,27 @@ +,exclude?:list,assets:list}> + */ + public array $routesAssets = []; +} diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index 635f7fc8..ce2a1d3f 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -49,19 +49,21 @@ abstract class BaseController extends Controller */ // protected $session; - /** - * Constructor. - */ public function initController( RequestInterface $request, ResponseInterface $response, LoggerInterface $logger ): void { + // Load here all helpers you want to be available in your controllers that extend BaseController. + // Caution: Do not put the this below the parent::initController() call below. $this->helpers = [...$this->helpers, 'svg', 'components', 'misc', 'seo', 'premium_podcasts']; - // Do Not Edit This Line + // Caution: Do not edit this line. parent::initController($request, $response, $logger); + // Preload any models, libraries, etc, here. + // $this->session = service('session'); + Theme::setTheme('app'); } } diff --git a/app/Controllers/EpisodeAudioController.php b/app/Controllers/EpisodeAudioController.php index 613abb92..2f234769 100644 --- a/app/Controllers/EpisodeAudioController.php +++ b/app/Controllers/EpisodeAudioController.php @@ -21,7 +21,6 @@ use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\URI; -use Config\Services; use Modules\Analytics\Config\Analytics; use Modules\PremiumPodcasts\Entities\Subscription; use Modules\PremiumPodcasts\Models\SubscriptionModel; @@ -50,9 +49,6 @@ class EpisodeAudioController extends Controller protected Analytics $analyticsConfig; - /** - * Constructor. - */ public function initController( RequestInterface $request, ResponseInterface $response, @@ -133,7 +129,7 @@ class EpisodeAudioController extends Controller } } - $session = Services::session(); + $session = service('session'); $serviceName = ''; if ($this->request->getGet('_from')) { diff --git a/app/Controllers/EpisodeController.php b/app/Controllers/EpisodeController.php index 335d96d8..498f2c2c 100644 --- a/app/Controllers/EpisodeController.php +++ b/app/Controllers/EpisodeController.php @@ -21,7 +21,6 @@ use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\Response; use CodeIgniter\HTTP\ResponseInterface; use Config\Embed; -use Config\Services; use Modules\Analytics\AnalyticsTrait; use Modules\Fediverse\Objects\OrderedCollectionObject; use Modules\Fediverse\Objects\OrderedCollectionPage; @@ -293,7 +292,7 @@ class EpisodeController extends BaseController $this->registerPodcastWebpageHit($this->episode->podcast_id); } - $session = Services::session(); + $session = service('session'); if (service('superglobals')->server('HTTP_REFERER') !== null) { $session->set('embed_domain', parse_url(service('superglobals')->server('HTTP_REFERER'), PHP_URL_HOST)); diff --git a/app/Controllers/FeedController.php b/app/Controllers/FeedController.php index 058c3b6f..11b54ddd 100644 --- a/app/Controllers/FeedController.php +++ b/app/Controllers/FeedController.php @@ -33,14 +33,25 @@ class FeedController extends Controller public function index(string $podcastHandle): ResponseInterface { - helper(['rss', 'premium_podcasts', 'misc']); - $podcast = (new PodcastModel())->where('handle', $podcastHandle) ->first(); if (! $podcast instanceof Podcast) { throw PageNotFoundException::forPageNotFound(); } + // 301 redirect to new feed? + $redirectToNewFeed = service('settings') + ->get('Podcast.redirect_to_new_feed', 'podcast:' . $podcast->id); + + if ($redirectToNewFeed && $podcast->new_feed_url !== null && filter_var( + $podcast->new_feed_url, + FILTER_VALIDATE_URL + ) && $podcast->new_feed_url !== current_url()) { + return redirect()->to($podcast->new_feed_url, 301); + } + + helper(['rss', 'premium_podcasts', 'misc']); + $service = null; try { $service = UserAgentsRSS::find(service('superglobals')->server('HTTP_USER_AGENT')); @@ -66,7 +77,7 @@ class FeedController extends Controller "podcast#{$podcast->id}", 'feed', $service ? $serviceSlug : null, - $subscription instanceof Subscription ? 'unlocked' : null, + $subscription instanceof Subscription ? "subscription#{$subscription->id}" : null, ]), ); diff --git a/app/Controllers/MapController.php b/app/Controllers/MapController.php index 4dc51cc5..07aed490 100644 --- a/app/Controllers/MapController.php +++ b/app/Controllers/MapController.php @@ -45,7 +45,7 @@ class MapController extends BaseController if (! ($found = cache($cacheName))) { $episodes = (new EpisodeModel()) ->where('`published_at` <= UTC_TIMESTAMP()', null, false) - ->where('location_geo is not', null) + ->where('location_geo is not') ->findAll(); $found = []; foreach ($episodes as $episode) { diff --git a/app/Controllers/PostController.php b/app/Controllers/PostController.php index 6a8b24f2..55456189 100644 --- a/app/Controllers/PostController.php +++ b/app/Controllers/PostController.php @@ -52,16 +52,28 @@ class PostController extends FediversePostController $this->podcast = $podcast; $this->actor = $this->podcast->actor; - if ( - count($params) > 1 && - ($post = (new PostModel())->getPostById($params[1])) instanceof CastopodPost - ) { - $this->post = $post; - + if (count($params) <= 1) { unset($params[0]); - unset($params[1]); + + return $this->{$method}(...$params); } + if ( + ! ($post = (new PostModel())->getPostById($params[1])) instanceof CastopodPost + ) { + throw PageNotFoundException::forPageNotFound(); + } + + $this->post = $post; + + // show 404 if post is private + if ($this->post->is_private && ! can_user_interact()) { + throw PageNotFoundException::forPageNotFound(); + } + + unset($params[0]); + unset($params[1]); + return $this->{$method}(...$params); } @@ -72,10 +84,6 @@ class PostController extends FediversePostController $this->registerPodcastWebpageHit($this->podcast->id); } - if (! $this->post instanceof CastopodPost) { - throw PageNotFoundException::forPageNotFound(); - } - $cacheName = implode( '_', array_filter([ @@ -180,6 +188,7 @@ class PostController extends FediversePostController 'actor_id' => interact_as_actor_id(), 'in_reply_to_id' => $this->post->id, 'message' => $validData['message'], + 'is_private' => $this->post->is_private, 'published_at' => Time::now(), 'created_by' => user_id(), ]); diff --git a/app/Database/Migrations/2024-05-29-100000_add_episode_download_count.php b/app/Database/Migrations/2024-05-29-100000_add_episode_download_count.php new file mode 100644 index 00000000..ec6a9023 --- /dev/null +++ b/app/Database/Migrations/2024-05-29-100000_add_episode_download_count.php @@ -0,0 +1,29 @@ + [ + 'type' => 'INT', + 'unsigned' => true, + 'default' => 0, + 'after' => 'is_published_on_hubs', + ], + ]; + + $this->forge->addColumn('episodes', $fields); + } + + public function down(): void + { + $this->forge->dropColumn('episodes', 'downloads_count'); + } +} diff --git a/app/Entities/Actor.php b/app/Entities/Actor.php index 020fd14e..4a174adb 100644 --- a/app/Entities/Actor.php +++ b/app/Entities/Actor.php @@ -12,7 +12,6 @@ namespace App\Entities; use App\Models\PodcastModel; use Modules\Fediverse\Entities\Actor as FediverseActor; -use RuntimeException; /** * @property Podcast|null $podcast @@ -31,10 +30,6 @@ class Actor extends FediverseActor public function getPodcast(): ?Podcast { - if ($this->id === null) { - throw new RuntimeException('Podcast id must be set before getting associated podcast.'); - } - if (! $this->podcast instanceof Podcast) { $this->podcast = (new PodcastModel())->getPodcastByActorId($this->id); } diff --git a/app/Entities/Category.php b/app/Entities/Category.php index 847b0425..464fedb8 100644 --- a/app/Entities/Category.php +++ b/app/Entities/Category.php @@ -15,7 +15,7 @@ use CodeIgniter\Entity\Entity; /** * @property int $id - * @property int $parent_id + * @property int|null $parent_id * @property Category|null $parent * @property string $code * @property string $apple_category diff --git a/app/Entities/Clip/BaseClip.php b/app/Entities/Clip/BaseClip.php index d8eab7bc..5279dc4b 100644 --- a/app/Entities/Clip/BaseClip.php +++ b/app/Entities/Clip/BaseClip.php @@ -36,7 +36,7 @@ use Modules\Media\Models\MediaModel; * @property string $type * @property int|null $media_id * @property Video|Audio|null $media - * @property array|null $metadata + * @property array|null $metadata * @property string $status * @property string $logs * @property User $user @@ -136,7 +136,7 @@ class BaseClip extends Entity $media = new Audio([ 'file_key' => $fileKey, 'language_code' => $this->getPodcast() -->language_code, + ->language_code, 'uploaded_by' => $this->attributes['updated_by'], 'updated_by' => $this->attributes['updated_by'], ]); diff --git a/app/Entities/Clip/VideoClip.php b/app/Entities/Clip/VideoClip.php index e1eef2e4..810f3d58 100644 --- a/app/Entities/Clip/VideoClip.php +++ b/app/Entities/Clip/VideoClip.php @@ -15,7 +15,7 @@ use Modules\Media\Entities\Video; use Modules\Media\Models\MediaModel; /** - * @property array $theme + * @property array{name:string,preview:string} $theme * @property string $format */ class VideoClip extends BaseClip @@ -73,7 +73,7 @@ class VideoClip extends BaseClip $video = new Video([ 'file_key' => $fileKey, 'language_code' => $this->getPodcast() -->language_code, + ->language_code, 'uploaded_by' => $this->attributes['created_by'], 'updated_by' => $this->attributes['created_by'], ]); diff --git a/app/Entities/Credit.php b/app/Entities/Credit.php index 6c283e8c..67be1cf9 100644 --- a/app/Entities/Credit.php +++ b/app/Entities/Credit.php @@ -55,10 +55,6 @@ class Credit extends Entity public function getPerson(): ?Person { - if ($this->person_id === null) { - throw new RuntimeException('Credit must have person_id before getting person.'); - } - if (! $this->person instanceof Person) { $this->person = (new PersonModel())->getPersonById($this->person_id); } @@ -68,10 +64,6 @@ class Credit extends Entity public function getPodcast(): ?Podcast { - if ($this->podcast_id === null) { - throw new RuntimeException('Credit must have podcast_id before getting podcast.'); - } - if (! $this->podcast instanceof Podcast) { $this->podcast = (new PodcastModel())->getPodcastById($this->podcast_id); } @@ -94,10 +86,6 @@ class Credit extends Entity public function getGroupLabel(): string { - if ($this->person_group === null) { - return ''; - } - /** @var string */ return lang("PersonsTaxonomy.persons.{$this->person_group}.label"); } diff --git a/app/Entities/Episode.php b/app/Entities/Episode.php index 44651d07..7c29e3ff 100644 --- a/app/Entities/Episode.php +++ b/app/Entities/Episode.php @@ -35,7 +35,6 @@ use Modules\Media\Entities\Chapters; use Modules\Media\Entities\Image; use Modules\Media\Entities\Transcript; use Modules\Media\Models\MediaModel; -use RuntimeException; use SimpleXMLElement; /** @@ -66,19 +65,19 @@ use SimpleXMLElement; * @property string|null $chapters_remote_url * @property string|null $parental_advisory * @property int $number - * @property int $season_number + * @property int|null $season_number * @property string $type * @property bool $is_blocked * @property Location|null $location * @property string|null $location_name * @property string|null $location_geo * @property string|null $location_osm - * @property array|null $custom_rss + * @property array|null $custom_rss * @property string $custom_rss_string * @property bool $is_published_on_hubs + * @property int $downloads_count * @property int $posts_count * @property int $comments_count - * @property int $downloads * @property EpisodeComment[]|null $comments * @property bool $is_premium * @property int $created_by @@ -116,8 +115,6 @@ class Episode extends Entity protected ?Chapters $chapters = null; - protected int $downloads = 0; - /** * @var Person[]|null */ @@ -178,6 +175,7 @@ class Episode extends Entity 'location_osm' => '?string', 'custom_rss' => '?json-array', 'is_published_on_hubs' => 'boolean', + 'downloads_count' => 'integer', 'posts_count' => 'integer', 'comments_count' => 'integer', 'is_premium' => 'boolean', @@ -201,7 +199,7 @@ class Episode extends Entity $cover = new Image([ 'file_key' => 'podcasts/' . $this->getPodcast()->handle . '/' . $this->attributes['slug'] . '.' . $file->getExtension(), 'sizes' => config('Images') -->podcastCoverSizes, + ->podcastCoverSizes, 'uploaded_by' => $this->attributes['updated_by'], 'updated_by' => $this->attributes['updated_by'], ]); @@ -284,7 +282,7 @@ class Episode extends Entity $transcript = new Transcript([ 'file_key' => 'podcasts/' . $this->getPodcast()->handle . '/' . $this->attributes['slug'] . '-transcript.' . $file->getExtension(), 'language_code' => $this->getPodcast() -->language_code, + ->language_code, 'uploaded_by' => $this->attributes['updated_by'], 'updated_by' => $this->attributes['updated_by'], ]); @@ -321,7 +319,7 @@ class Episode extends Entity $chapters = new Chapters([ 'file_key' => 'podcasts/' . $this->getPodcast()->handle . '/' . $this->attributes['slug'] . '-chapters' . '.' . $file->getExtension(), 'language_code' => $this->getPodcast() -->language_code, + ->language_code, 'uploaded_by' => $this->attributes['updated_by'], 'updated_by' => $this->attributes['updated_by'], ]); @@ -347,10 +345,10 @@ class Episode extends Entity $audioURL = url_to( 'episode-audio', $this->getPodcast() -->handle, + ->handle, $this->slug, $this->getAudio() -->file_extension + ->file_extension ); // Wrap episode url with OP3 if episode is public and OP3 is enabled on this podcast @@ -407,10 +405,6 @@ class Episode extends Entity */ public function getPersons(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting persons.'); - } - if ($this->persons === null) { $this->persons = (new PersonModel())->getEpisodePersons($this->podcast_id, $this->id); } @@ -425,10 +419,6 @@ class Episode extends Entity */ public function getSoundbites(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting soundbites.'); - } - if ($this->soundbites === null) { $this->soundbites = (new ClipModel())->getEpisodeSoundbites($this->getPodcast()->id, $this->id); } @@ -441,10 +431,6 @@ class Episode extends Entity */ public function getPosts(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting posts.'); - } - if ($this->posts === null) { $this->posts = (new PostModel())->getEpisodePosts($this->id); } @@ -457,10 +443,6 @@ class Episode extends Entity */ public function getComments(): array { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting comments.'); - } - if ($this->comments === null) { $this->comments = (new EpisodeCommentModel())->getEpisodeComments($this->id); } @@ -535,7 +517,7 @@ class Episode extends Entity if ($this->getPodcast()->episode_description_footer_html) { $descriptionHtml .= "
{$this->getPodcast() -->episode_description_footer_html}
"; + ->episode_description_footer_html}"; } return $descriptionHtml; @@ -713,10 +695,6 @@ class Episode extends Entity */ public function getClipCount(): int|string { - if ($this->id === null) { - throw new RuntimeException('Episode must be created before getting number of video clips.'); - } - return (new ClipModel())->getClipCount($this->podcast_id, $this->id); } } diff --git a/app/Entities/EpisodeComment.php b/app/Entities/EpisodeComment.php index 5b10d133..a0a1502a 100644 --- a/app/Entities/EpisodeComment.php +++ b/app/Entities/EpisodeComment.php @@ -24,7 +24,7 @@ use RuntimeException; * @property Episode|null $episode * @property int $actor_id * @property Actor|null $actor - * @property string $in_reply_to_id + * @property string|null $in_reply_to_id * @property EpisodeComment|null $reply_to_comment * @property string $message * @property string $message_html @@ -75,10 +75,6 @@ class EpisodeComment extends UuidEntity public function getEpisode(): ?Episode { - if ($this->episode_id === null) { - throw new RuntimeException('Comment must have an episode_id before getting episode.'); - } - if (! $this->episode instanceof Episode) { $this->episode = (new EpisodeModel())->getEpisodeById($this->episode_id); } @@ -91,10 +87,6 @@ class EpisodeComment extends UuidEntity */ public function getActor(): ?Actor { - if ($this->actor_id === null) { - throw new RuntimeException('Comment must have an actor_id before getting actor.'); - } - if (! $this->actor instanceof Actor) { $this->actor = model(ActorModel::class, false) ->getActorById($this->actor_id); @@ -108,9 +100,6 @@ class EpisodeComment extends UuidEntity */ public function getReplies(): array { - if ($this->id === null) { - throw new RuntimeException('Comment must be created before getting replies.'); - } if ($this->replies === null) { $this->replies = (new EpisodeCommentModel())->getCommentReplies($this->id); diff --git a/app/Entities/Location.php b/app/Entities/Location.php index 90b326d6..81c33718 100644 --- a/app/Entities/Location.php +++ b/app/Entities/Location.php @@ -11,7 +11,6 @@ declare(strict_types=1); namespace App\Entities; use CodeIgniter\Entity\Entity; -use Config\Services; /** * @property string $url @@ -85,7 +84,7 @@ class Location extends Entity */ public function fetchOsmLocation(): static { - $client = Services::curlrequest(); + $client = service('curlrequest'); $response = $client->request( 'GET', diff --git a/app/Entities/Person.php b/app/Entities/Person.php index 961f5603..0fff18cf 100644 --- a/app/Entities/Person.php +++ b/app/Entities/Person.php @@ -23,7 +23,7 @@ use RuntimeException; * @property string $full_name * @property string $unique_name * @property string|null $information_url - * @property int $avatar_id + * @property int|null $avatar_id * @property ?Image $avatar * @property int $created_by * @property int $updated_by @@ -72,7 +72,7 @@ class Person extends Entity $avatar = new Image([ 'file_key' => 'persons/' . $this->attributes['unique_name'] . '.' . $file->getExtension(), 'sizes' => config('Images') -->personAvatarSizes, + ->personAvatarSizes, 'uploaded_by' => $this->attributes['updated_by'], 'updated_by' => $this->attributes['updated_by'], ]); diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index db74d409..c8b1568c 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -56,7 +56,7 @@ use RuntimeException; * @property string $language_code * @property int $category_id * @property Category|null $category - * @property int[] $other_categories_ids + * @property int[]|null $other_categories_ids * @property Category[] $other_categories * @property string|null $parental_advisory * @property string|null $publisher @@ -78,7 +78,7 @@ use RuntimeException; * @property string|null $location_geo * @property string|null $location_osm * @property string|null $payment_pointer - * @property array|null $custom_rss + * @property array|null $custom_rss * @property bool $is_op3_enabled * @property string $op3_url * @property string $custom_rss_string @@ -125,7 +125,7 @@ class Podcast extends Entity protected ?array $other_categories = null; /** - * @var string[]|null + * @var int[]|null */ protected ?array $other_categories_ids = null; @@ -255,7 +255,7 @@ class Podcast extends Entity $cover = new Image([ 'file_key' => 'podcasts/' . $this->attributes['handle'] . '/cover.' . $file->getExtension(), 'sizes' => config('Images') -->podcastCoverSizes, + ->podcastCoverSizes, 'uploaded_by' => $this->attributes['updated_by'], 'updated_by' => $this->attributes['updated_by'], ]); @@ -298,7 +298,7 @@ class Podcast extends Entity $banner = new Image([ 'file_key' => 'podcasts/' . $this->attributes['handle'] . '/banner.' . $file->getExtension(), 'sizes' => config('Images') -->podcastBannerSizes, + ->podcastBannerSizes, 'uploaded_by' => $this->attributes['updated_by'], 'updated_by' => $this->attributes['updated_by'], ]); @@ -340,10 +340,6 @@ class Podcast extends Entity */ public function getEpisodes(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting episodes.'); - } - if ($this->episodes === null) { $this->episodes = (new EpisodeModel())->getPodcastEpisodes($this->id, $this->type); } @@ -356,10 +352,6 @@ class Podcast extends Entity */ public function getEpisodesCount(): int|string { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting number of episodes.'); - } - return (new EpisodeModel())->getPodcastEpisodesCount($this->id); } @@ -370,10 +362,6 @@ class Podcast extends Entity */ public function getPersons(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting persons.'); - } - if ($this->persons === null) { $this->persons = (new PersonModel())->getPodcastPersons($this->id); } @@ -386,10 +374,6 @@ class Podcast extends Entity */ public function getCategory(): ?Category { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting category.'); - } - if (! $this->category instanceof Category) { $this->category = (new CategoryModel())->getCategoryById($this->category_id); } @@ -404,10 +388,6 @@ class Podcast extends Entity */ public function getSubscriptions(): array { - if ($this->id === null) { - throw new RuntimeException('Podcasts must be created before getting subscriptions.'); - } - if ($this->subscriptions === null) { $this->subscriptions = (new SubscriptionModel())->getPodcastSubscriptions($this->id); } @@ -422,10 +402,6 @@ class Podcast extends Entity */ public function getContributors(): array { - if ($this->id === null) { - throw new RuntimeException('Podcasts must be created before getting contributors.'); - } - if ($this->contributors === null) { $this->contributors = (new UserModel())->getPodcastContributors($this->id); } @@ -523,10 +499,6 @@ class Podcast extends Entity */ public function getPodcastingPlatforms(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting podcasting platform links.'); - } - if ($this->podcasting_platforms === null) { $this->podcasting_platforms = (new PlatformModel())->getPlatforms($this->id, 'podcasting'); } @@ -541,10 +513,6 @@ class Podcast extends Entity */ public function getSocialPlatforms(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting social platform links.'); - } - if ($this->social_platforms === null) { $this->social_platforms = (new PlatformModel())->getPlatforms($this->id, 'social'); } @@ -559,9 +527,6 @@ class Podcast extends Entity */ public function getFundingPlatforms(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting funding platform links.'); - } if ($this->funding_platforms === null) { $this->funding_platforms = (new PlatformModel())->getPlatforms($this->id, 'funding'); @@ -575,10 +540,6 @@ class Podcast extends Entity */ public function getOtherCategories(): array { - if ($this->id === null) { - throw new RuntimeException('Podcast must be created before getting other categories.'); - } - if ($this->other_categories === null) { $this->other_categories = (new CategoryModel())->getPodcastCategories($this->id); } diff --git a/app/Entities/Post.php b/app/Entities/Post.php index 7cc46d1a..1f3c8168 100644 --- a/app/Entities/Post.php +++ b/app/Entities/Post.php @@ -34,6 +34,7 @@ class Post extends FediversePost 'episode_id' => '?integer', 'message' => 'string', 'message_html' => 'string', + 'is_private' => 'boolean', 'favourites_count' => 'integer', 'reblogs_count' => 'integer', 'replies_count' => 'integer', diff --git a/app/Filters/AllowCorsFilter.php b/app/Filters/AllowCorsFilter.php index 96d6409b..ca64b7ca 100644 --- a/app/Filters/AllowCorsFilter.php +++ b/app/Filters/AllowCorsFilter.php @@ -12,22 +12,24 @@ class AllowCorsFilter implements FilterInterface { /** * @param string[]|null $arguments + * @return RequestInterface|ResponseInterface|string|null */ - public function before(RequestInterface $request, $arguments = null): void + public function before(RequestInterface $request, $arguments = null) { - // Do something here + return null; } /** * @param string[]|null $arguments + * @return ResponseInterface|void */ - public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { if (! $response->hasHeader('Cache-Control')) { $response->setHeader('Cache-Control', 'public, max-age=86400'); } - $response->setHeader('Access-Control-Allow-Origin', '*') // for allowing any domain, insecure + return $response->setHeader('Access-Control-Allow-Origin', '*') // for allowing any domain, insecure ->setHeader('Access-Control-Allow-Headers', '*') // for allowing any headers, insecure ->setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS') // allows GET and OPTIONS methods only ->setHeader('Access-Control-Max-Age', '86400'); diff --git a/app/Helpers/breadcrumb_helper.php b/app/Helpers/breadcrumb_helper.php index c600d2b3..223af819 100644 --- a/app/Helpers/breadcrumb_helper.php +++ b/app/Helpers/breadcrumb_helper.php @@ -8,8 +8,6 @@ declare(strict_types=1); * @link https://castopod.org/ */ -use Config\Services; - if (! function_exists('render_breadcrumb')) { /** * Renders the breadcrumb navigation through the Breadcrumb service @@ -19,7 +17,7 @@ if (! function_exists('render_breadcrumb')) { */ function render_breadcrumb(string $class = null): string { - $breadcrumb = Services::breadcrumb(); + $breadcrumb = service('breadcrumb'); return $breadcrumb->render($class); } } @@ -30,7 +28,7 @@ if (! function_exists('replace_breadcrumb_params')) { */ function replace_breadcrumb_params(array $newParams): void { - $breadcrumb = Services::breadcrumb(); + $breadcrumb = service('breadcrumb'); $breadcrumb->replaceParams(esc($newParams)); } } diff --git a/app/Helpers/components_helper.php b/app/Helpers/components_helper.php index d3db3ac8..81265862 100644 --- a/app/Helpers/components_helper.php +++ b/app/Helpers/components_helper.php @@ -158,20 +158,20 @@ if (! function_exists('publication_button')) { $label = lang('Episode.publish'); $route = route_to('episode-publish', $podcastId, $episodeId); $variant = 'primary'; - $iconLeft = 'upload-cloud-fill'; // @icon('upload-cloud-fill') + $iconLeft = 'upload-cloud-fill'; // @icon("upload-cloud-fill") break; case 'with_podcast': case 'scheduled': $label = lang('Episode.publish_edit'); $route = route_to('episode-publish_edit', $podcastId, $episodeId); $variant = 'warning'; - $iconLeft = 'upload-cloud-fill'; // @icon('upload-cloud-fill') + $iconLeft = 'upload-cloud-fill'; // @icon("upload-cloud-fill") break; case 'published': $label = lang('Episode.unpublish'); $route = route_to('episode-unpublish', $podcastId, $episodeId); $variant = 'danger'; - $iconLeft = 'cloud-off-fill'; // @icon('cloud-off-fill') + $iconLeft = 'cloud-off-fill'; // @icon("cloud-off-fill") break; default: $label = ''; @@ -381,15 +381,15 @@ if (! function_exists('audio_player')) { id="castopod-vm-player" theme="light" language="{$language}" - icons="castopod-icons" class="{$class} relative z-0" + icons="castopod-vm-player-icons" style="--vm-player-box-shadow:0; --vm-player-theme: hsl(var(--color-accent-base)); --vm-control-focus-color: hsl(var(--color-accent-contrast)); --vm-control-spacing: 4px; --vm-menu-item-focus-bg: hsl(var(--color-background-highlight));" > - + diff --git a/app/Helpers/misc_helper.php b/app/Helpers/misc_helper.php index b26fab00..a64807cd 100644 --- a/app/Helpers/misc_helper.php +++ b/app/Helpers/misc_helper.php @@ -210,7 +210,7 @@ if (! function_exists('get_podcast_banner')) { )->podcastBannerDefaultPaths['default']; $sizes = config('Images') -->podcastBannerSizes; + ->podcastBannerSizes; $sizeConfig = $sizes[$size]; helper('filesystem'); @@ -231,7 +231,7 @@ if (! function_exists('get_podcast_banner_mimetype')) { { if (! $podcast->banner instanceof Image) { $sizes = config('Images') -->podcastBannerSizes; + ->podcastBannerSizes; $sizeConfig = $sizes[$size]; helper('filesystem'); @@ -252,10 +252,10 @@ if (! function_exists('get_avatar_url')) { { if (! $person->avatar instanceof Image) { $defaultAvatarPath = config('Images') -->avatarDefaultPath; + ->avatarDefaultPath; $sizes = config('Images') -->personAvatarSizes; + ->personAvatarSizes; $sizeConfig = $sizes[$size]; diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 90f9ee71..24c9f39d 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -138,9 +138,7 @@ if (! function_exists('get_rss_feed')) { $podcastingPlatformElement->addAttribute('id', $podcastingPlatform->account_id); } - if ($podcastingPlatform->link_url !== null) { - $podcastingPlatformElement->addAttribute('url', $podcastingPlatform->link_url); - } + $podcastingPlatformElement->addAttribute('url', $podcastingPlatform->link_url); } $castopodSocialElement = $channel->addChild('social', null, $podcastNamespace); @@ -170,9 +168,7 @@ if (! function_exists('get_rss_feed')) { $socialElement->addAttribute('accountId', esc($socialPlatform->account_id)); } - if ($socialPlatform->link_url !== null) { - $socialElement->addAttribute('accountUrl', esc($socialPlatform->link_url)); - } + $socialElement->addAttribute('accountUrl', esc($socialPlatform->link_url)); if ($socialPlatform->slug === 'mastodon') { $socialSignUpelement = $socialElement->addChild('socialSignUp', null, $podcastNamespace); @@ -221,16 +217,14 @@ if (! function_exists('get_rss_feed')) { $podcastNamespace, ); $fundingPlatformElement->addAttribute('platform', $fundingPlatform->slug); - if ($fundingPlatform->link_url !== null) { - $fundingPlatformElement->addAttribute('url', $fundingPlatform->link_url); - } + $fundingPlatformElement->addAttribute('url', $fundingPlatform->link_url); } foreach ($podcast->persons as $person) { foreach ($person->roles as $role) { $personElement = $channel->addChild('person', $person->full_name, $podcastNamespace); - $personElement->addAttribute('img', get_avatar_url($person, 'medium')); + $personElement->addAttribute('img', get_avatar_url($person, 'federation')); if ($person->information_url !== null) { $personElement->addAttribute('href', $person->information_url); @@ -435,7 +429,7 @@ if (! function_exists('get_rss_feed')) { esc(lang("PersonsTaxonomy.persons.{$role->group}.label", [], 'en')), ); - $personElement->addAttribute('img', get_avatar_url($person, 'medium')); + $personElement->addAttribute('img', get_avatar_url($person, 'federation')); if ($person->information_url !== null) { $personElement->addAttribute('href', $person->information_url); @@ -503,7 +497,7 @@ if (! function_exists('rss_to_array')) { } $textcontent = trim((string) $rssNode); - if (strlen($textcontent) > 0) { + if ($textcontent !== '') { $arrayNode['content'] = $textcontent; } @@ -537,8 +531,7 @@ if (! function_exists('array_to_rss')) { ); if (array_key_exists('attributes', $childArrayNode)) { foreach ( - $childArrayNode['attributes'] - as $attributeKey => $attributeValue + $childArrayNode['attributes'] as $attributeKey => $attributeValue ) { $childXmlNode->addAttribute($attributeKey, $attributeValue); } diff --git a/app/Helpers/seo_helper.php b/app/Helpers/seo_helper.php index e18e659a..d8af9834 100644 --- a/app/Helpers/seo_helper.php +++ b/app/Helpers/seo_helper.php @@ -30,22 +30,25 @@ if (! function_exists('get_podcast_metatags')) { $category .= $podcast->category->apple_category; $schema = new Schema( - new Thing('PodcastSeries', [ - 'name' => $podcast->title, - 'headline' => $podcast->title, - 'url' => current_url(), - 'sameAs' => $podcast->link, - 'identifier' => $podcast->guid, - 'image' => $podcast->cover->feed_url, - 'description' => $podcast->description, - 'webFeed' => $podcast->feed_url, - 'accessMode' => 'auditory', - 'author' => $podcast->owner_name, - 'creator' => $podcast->owner_name, - 'publisher' => $podcast->publisher, - 'inLanguage' => $podcast->language_code, - 'genre' => $category, - ]) + new Thing( + props: [ + 'name' => $podcast->title, + 'headline' => $podcast->title, + 'url' => current_url(), + 'sameAs' => $podcast->link, + 'identifier' => $podcast->guid, + 'image' => $podcast->cover->feed_url, + 'description' => $podcast->description, + 'webFeed' => $podcast->feed_url, + 'accessMode' => 'auditory', + 'author' => $podcast->owner_name, + 'creator' => $podcast->owner_name, + 'publisher' => $podcast->publisher, + 'inLanguage' => $podcast->language_code, + 'genre' => $category, + ], + type: 'PodcastSeries' + ) ); $metatags = new MetaTags(); @@ -79,22 +82,31 @@ if (! function_exists('get_episode_metatags')) { function get_episode_metatags(Episode $episode): string { $schema = new Schema( - new Thing('PodcastEpisode', [ - 'url' => url_to('episode', esc($episode->podcast->handle), $episode->slug), - 'name' => $episode->title, - 'image' => $episode->cover->feed_url, - 'description' => $episode->description, - 'datePublished' => $episode->published_at->format(DATE_ISO8601), - 'timeRequired' => iso8601_duration($episode->audio->duration), - 'duration' => iso8601_duration($episode->audio->duration), - 'associatedMedia' => new Thing('MediaObject', [ - 'contentUrl' => $episode->audio_url, - ]), - 'partOfSeries' => new Thing('PodcastSeries', [ - 'name' => $episode->podcast->title, - 'url' => $episode->podcast->link, - ]), - ]) + new Thing( + props: [ + 'url' => url_to('episode', esc($episode->podcast->handle), $episode->slug), + 'name' => $episode->title, + 'image' => $episode->cover->feed_url, + 'description' => $episode->description, + 'datePublished' => $episode->published_at->format(DATE_ISO8601), + 'timeRequired' => iso8601_duration($episode->audio->duration), + 'duration' => iso8601_duration($episode->audio->duration), + 'associatedMedia' => new Thing( + props: [ + 'contentUrl' => $episode->audio_url, + ], + type: 'MediaObject' + ), + 'partOfSeries' => new Thing( + props: [ + 'name' => $episode->podcast->title, + 'url' => $episode->podcast->link, + ], + type: 'PodcastSeries' + ), + ], + type: 'PodcastEpisode' + ) ); $metatags = new MetaTags(); @@ -140,32 +152,50 @@ if (! function_exists('get_episode_metatags')) { if (! function_exists('get_post_metatags')) { function get_post_metatags(Post $post): string { - $socialMediaPosting = new Thing('SocialMediaPosting', [ - '@id' => url_to('post', esc($post->actor->username), $post->id), - 'datePublished' => $post->published_at->format(DATE_ISO8601), - 'author' => new Thing('Person', [ - 'name' => $post->actor->display_name, - 'url' => $post->actor->uri, - ]), - 'text' => $post->message, - ]); + $socialMediaPosting = new Thing( + props: [ + '@id' => url_to('post', esc($post->actor->username), $post->id), + 'datePublished' => $post->published_at->format(DATE_ISO8601), + 'author' => new Thing( + props: [ + 'name' => $post->actor->display_name, + 'url' => $post->actor->uri, + ], + type: 'Person' + ), + 'text' => $post->message, + ], + type: 'SocialMediaPosting' + ); if ($post->episode_id !== null) { - $socialMediaPosting->__set('sharedContent', new Thing('Audio', [ - 'headline' => $post->episode->title, - 'url' => $post->episode->link, - 'author' => new Thing('Person', [ - 'name' => $post->episode->podcast->owner_name, - ]), - ])); + $socialMediaPosting->__set('sharedContent', new Thing( + props: [ + 'headline' => $post->episode->title, + 'url' => $post->episode->link, + 'author' => new Thing( + props: [ + 'name' => $post->episode->podcast->owner_name, + ], + type: 'Person' + ), + ], + type: 'Audio' + )); } elseif ($post->preview_card instanceof PreviewCard) { - $socialMediaPosting->__set('sharedContent', new Thing('WebPage', [ - 'headline' => $post->preview_card->title, - 'url' => $post->preview_card->url, - 'author' => new Thing('Person', [ - 'name' => $post->preview_card->author_name, - ]), - ])); + $socialMediaPosting->__set('sharedContent', new Thing( + props: [ + 'headline' => $post->preview_card->title, + 'url' => $post->preview_card->url, + 'author' => new Thing( + props: [ + 'name' => $post->preview_card->author_name, + ], + type: 'Person' + ), + ], + type: 'WebPage' + )); } $schema = new Schema($socialMediaPosting); @@ -192,21 +222,27 @@ if (! function_exists('get_post_metatags')) { if (! function_exists('get_episode_comment_metatags')) { function get_episode_comment_metatags(EpisodeComment $episodeComment): string { - $schema = new Schema(new Thing('SocialMediaPosting', [ - '@id' => url_to( - 'episode-comment', - esc($episodeComment->actor->username), - $episodeComment->episode->slug, - $episodeComment->id - ), - 'datePublished' => $episodeComment->created_at->format(DATE_ISO8601), - 'author' => new Thing('Person', [ - 'name' => $episodeComment->actor->display_name, - 'url' => $episodeComment->actor->uri, - ]), - 'text' => $episodeComment->message, - 'upvoteCount' => $episodeComment->likes_count, - ])); + $schema = new Schema(new Thing( + props: [ + '@id' => url_to( + 'episode-comment', + esc($episodeComment->actor->username), + $episodeComment->episode->slug, + $episodeComment->id + ), + 'datePublished' => $episodeComment->created_at->format(DATE_ISO8601), + 'author' => new Thing( + props: [ + 'name' => $episodeComment->actor->display_name, + 'url' => $episodeComment->actor->uri, + ], + type: 'Person' + ), + 'text' => $episodeComment->message, + 'upvoteCount' => $episodeComment->likes_count, + ], + type: 'SocialMediaPosting' + )); $metatags = new MetaTags(); $metatags diff --git a/app/Language/.rsync-filter b/app/Language/.rsync-filter index b802a93d..38526af5 100644 --- a/app/Language/.rsync-filter +++ b/app/Language/.rsync-filter @@ -1,12 +1,14 @@ -+ en/*** -+ fr/*** -+ pl/*** -+ de/*** -+ pt-br/*** -+ nn-no/*** -+ es/*** -+ zh-hans/*** -+ ca/*** + br/*** ++ ca/*** ++ cs/*** ++ de/*** ++ en/*** ++ es/*** ++ fr/*** ++ lt/*** ++ nn-no/*** ++ pl/*** ++ pt-br/*** + sr-latn/*** ++ zh-hans/*** - ** diff --git a/app/Language/cs/Comment.php b/app/Language/cs/Comment.php new file mode 100644 index 00000000..30e337c4 --- /dev/null +++ b/app/Language/cs/Comment.php @@ -0,0 +1,34 @@ + "Komentář {actorDisplayName} k {episodeTitle}", + 'back_to_comments' => 'Zpět na komentáře', + 'form' => [ + 'episode_message_placeholder' => 'Napište komentář…', + 'reply_to_placeholder' => 'Odpovědět @{actorUsername}', + 'submit' => 'Odeslat', + 'submit_reply' => 'Odpovědět', + ], + 'likes' => '{numberOfLikes, plural, + one {# se líbí} + other {# se líbí} + }', + 'replies' => '{numberOfReplies, plural, + one {# odpověď} + other {# odpovědi} + }', + 'like' => 'Líbí se mi', + 'reply' => 'Odpovědět', + 'view_replies' => 'Zobrazit odpovědi ({numberOfReplies})', + 'block_actor' => 'Blokovat uživatele @{actorUsername}', + 'block_domain' => 'Blokovat doménu @{actorDomain}', + 'delete' => 'Odstranit komentář', +]; diff --git a/app/Language/cs/Common.php b/app/Language/cs/Common.php new file mode 100644 index 00000000..774798b7 --- /dev/null +++ b/app/Language/cs/Common.php @@ -0,0 +1,30 @@ + 'Ano', + 'no' => 'Ne', + 'cancel' => 'Zrušit', + 'optional' => 'Volitelné', + 'close' => 'Zavřít', + 'home' => 'Domů', + 'explicit' => 'Explicitní', + 'powered_by' => 'Běží na {castopod}', + 'go_back' => 'Jít zpět', + 'play_episode_button' => [ + 'play' => 'Přehrát', + 'playing' => 'Přehrávání', + ], + 'read_more' => 'Číst více', + 'read_less' => 'Číst méně', + 'see_more' => 'Zobraz více', + 'see_less' => 'Zobrazit méně', + 'legal_notice' => 'Právní ustanovení', +]; diff --git a/app/Language/cs/Episode.php b/app/Language/cs/Episode.php new file mode 100644 index 00000000..0688c582 --- /dev/null +++ b/app/Language/cs/Episode.php @@ -0,0 +1,50 @@ + 'Série: {{seasonNumber}}', + 'season_abbr' => 'S{seasonNumber}', + 'number' => 'Epizoda {episodeNumber}', + 'number_abbr' => 'Ep. {episodeNumber}', + 'season_episode' => 'Série {seasonNumber} epizoda {episodeNumber}', + 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', + 'persons' => '{personsCount, plural, + one {# osoba} + other {# osoby} + }', + 'persons_list' => 'Osoby', + 'back_to_episodes' => 'Zpět na epizody {podcast}', + 'comments' => 'Komentáře', + 'activity' => 'Aktivita', + 'chapters' => 'Kapitoly', + 'transcript' => 'Přepis', + 'description' => 'Popis epizody', + 'number_of_comments' => '{numberOfComments, plural, + one {# komentář} + other {# komentáře} + }', + 'all_podcast_episodes' => 'Všechny epizody podcastu', + 'back_to_podcast' => 'Přejít zpět na podcast', + 'preview' => [ + 'title' => 'Náhled', + 'not_published' => 'Nezveřejněno', + 'text' => '{publication_status, select, + published {Tato epizoda ještě není publikována.} + scheduled {Tato epizoda je naplánována na {publication_date}} + with_podcast {Tato epizoda bude zveřejněna současně s podcastem.} + other {Tato epizoda ještě není publikována.} + }', + 'publish' => 'Publikovat', + 'publish_edit' => 'Editovat publikaci', + ], + 'no_chapters' => 'Pro tuto epizodu nejsou k dispozici žádné kapitoly.', + 'download_transcript' => 'Stáhnout přepis ({extension})', + 'no_transcript' => 'Pro tuto epizodu není k dispozici žádný přepis.', +]; diff --git a/app/Language/cs/Fediverse.php b/app/Language/cs/Fediverse.php new file mode 100644 index 00000000..22e42e08 --- /dev/null +++ b/app/Language/cs/Fediverse.php @@ -0,0 +1,37 @@ + 'Vaše handle', + 'your_handle_hint' => 'Zadejte @username@doména, ze které chcete působit.', + 'follow' => [ + 'label' => 'Sledovat', + 'title' => 'Sledovat {actorDisplayName}', + 'subtitle' => 'Budete sledovat:', + 'accountNotFound' => 'Účet nebyl nalezen.', + 'remoteFollowNotAllowed' => 'Zdá se, že server účtu neumožňuje vzdálené sledování…', + 'submit' => 'Pokračovat a sledovat', + ], + 'favourite' => [ + 'title' => "Oblíbený příspěvek {actorDisplayName}", + 'subtitle' => 'Oblíbíte si:', + 'submit' => 'Pokračovat a oblíbit', + ], + 'reblog' => [ + 'title' => "Sdílet {actorDisplayName}příspěvek", + 'subtitle' => 'Budete sdílet:', + 'submit' => 'Pokračovat ke sdílení', + ], + 'reply' => [ + 'title' => "Odpovědět na příspěvek {actorDisplayName}", + 'subtitle' => 'Chystáte se odpovědět:', + 'submit' => 'Pokračovat k odpovědi', + ], +]; diff --git a/app/Language/cs/Home.php b/app/Language/cs/Home.php new file mode 100644 index 00000000..184e132d --- /dev/null +++ b/app/Language/cs/Home.php @@ -0,0 +1,20 @@ + 'Všechny podcasty', + 'sort_by' => 'Seřadit podle', + 'sort_options' => [ + 'activity' => 'Poslední aktivita', + 'created_desc' => 'Od nejnovějších', + 'created_asc' => 'Od nejstarších', + ], + 'no_podcast' => 'Nebyly nalezeny žádné podcasty', +]; diff --git a/app/Language/cs/Page.php b/app/Language/cs/Page.php new file mode 100644 index 00000000..0cd1fef4 --- /dev/null +++ b/app/Language/cs/Page.php @@ -0,0 +1,17 @@ + 'Zpátky domů', + 'map' => [ + 'title' => 'Mapa', + 'description' => 'Objevte epizody podcastu na {siteName} , které jsou umístěny na mapě! Cestujte přes mapu a poslouchejte epizody, které hovoří o konkrétních místech.', + ], +]; diff --git a/app/Language/cs/Podcast.php b/app/Language/cs/Podcast.php new file mode 100644 index 00000000..607b9339 --- /dev/null +++ b/app/Language/cs/Podcast.php @@ -0,0 +1,55 @@ + 'RSS Podcast kanál', + 'season' => 'Série: {seasonNumber}', + 'list_of_episodes_year' => '{year} epizody ({episodeCount})', + 'list_of_episodes_season' => + 'Epizody ({episodeCount}) série {seasonNumber}', + 'no_episode' => 'Nebyla nalezena žádná epizoda', + 'follow' => 'Sledovat', + 'followTitle' => 'Sledujte {actorDisplayName} na fediverse!', + 'followers' => '{numberOfFollowers, plural, + one {# sledující} + other {# sledující} + }', + 'posts' => '{numberOfPosts, plural, + one {# příspěvek} + other {# příspěvky} + }', + 'links' => 'Odkazy', + 'activity' => 'Aktivita', + 'episodes' => 'Epizody', + 'episodes_title' => 'Epizody {podcastTitle}', + 'about' => 'Informace', + 'stats' => [ + 'title' => 'Statistiky', + 'number_of_seasons' => '{0, plural, + one {# série} + other {# série} + }', + 'number_of_episodes' => '{0, plural, + one {# epizoda} + other {# epizody} + }', + 'first_published_at' => 'První epizoda zveřejněna na {0, date, medium}', + ], + 'sponsor' => 'Sponzorovat', + 'funding_links' => 'Odkazy na financování pro {podcastTitle}', + 'find_on' => 'Najít {podcastTitle} na', + 'listen_on' => 'Poslouchat na', + 'persons' => '{personsCount, plural, + one {# osoba} + other {# osoby} + }', + 'persons_list' => 'Osoby', + 'castopod_website' => 'Castopod (webová stránka)', +]; diff --git a/app/Language/cs/Post.php b/app/Language/cs/Post.php new file mode 100644 index 00000000..02ebcc28 --- /dev/null +++ b/app/Language/cs/Post.php @@ -0,0 +1,40 @@ + "Příspěvek {actorDisplayName}", + 'back_to_actor_posts' => 'Zpět na příspěvky {actor}', + 'actor_shared' => '{actor} sdílen(a)', + 'reply_to' => 'Odpovědět @{actorUsername}', + 'form' => [ + 'message_placeholder' => 'Napsat zprávu…', + 'episode_message_placeholder' => 'Napsat zprávu pro epizodu…', + 'episode_url_placeholder' => 'URL epizody', + 'reply_to_placeholder' => 'Odpovědět @{actorUsername}', + 'submit' => 'Odeslat', + 'submit_reply' => 'Odpovědět', + ], + 'favourites' => '{numberOfFavourites, plural, + one {# oblíbil} + other {# oblíbili} + }', + 'reblogs' => '{numberOfReblogs, plural, + one {# sdílení} + other {# sdílení} + }', + 'replies' => '{numberOfReplies, plural, + one {# odpověď} + other {# odpovědi} + }', + 'expand' => 'Rozbalit příspěvek', + 'block_actor' => 'Blokovat uživatele @{actorUsername}', + 'block_domain' => 'Blokovat doménu @{actorDomain}', + 'delete' => 'Smazat příspěvek', +]; diff --git a/app/Language/de/Episode.php b/app/Language/de/Episode.php index dba15335..26a9cae9 100644 --- a/app/Language/de/Episode.php +++ b/app/Language/de/Episode.php @@ -24,7 +24,7 @@ return [ 'comments' => 'Kommentare', 'activity' => 'Aktivitäten', 'chapters' => 'Kapitel', - 'transcript' => 'Transcript', + 'transcript' => 'Protokoll', 'description' => 'Beschreibung der Episode', 'number_of_comments' => '{numberOfComments, plural, one {# Kommentar} @@ -45,6 +45,6 @@ return [ 'publish_edit' => 'Veröffentlichung bearbeiten', ], 'no_chapters' => 'Für diese Episode sind keine Kapitel verfügbar.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'download_transcript' => 'Protokoll herunterladen ({extension})', + 'no_transcript' => 'Für diese Episode ist kein Protokoll verfügbar.', ]; diff --git a/app/Language/en/Post.php b/app/Language/en/Post.php index 58d1cf80..df54cef8 100644 --- a/app/Language/en/Post.php +++ b/app/Language/en/Post.php @@ -37,4 +37,7 @@ return [ 'block_actor' => 'Block user @{actorUsername}', 'block_domain' => 'Block domain @{actorDomain}', 'delete' => 'Delete post', + 'is_public' => 'Post is public', + 'is_private' => 'Post is private', + 'cannot_reblog' => 'This private post cannot be shared.', ]; diff --git a/app/Language/ja/Episode.php b/app/Language/ja/Episode.php index 40b21d39..de5efb07 100644 --- a/app/Language/ja/Episode.php +++ b/app/Language/ja/Episode.php @@ -23,7 +23,7 @@ return [ 'comments' => 'コメント', 'activity' => 'アクティビティ', 'chapters' => '章', - 'transcript' => 'Transcript', + 'transcript' => '文字起こし', 'description' => 'エピソードの詳細', 'number_of_comments' => '{numberOfComments, plural, one {# comment} @@ -43,7 +43,7 @@ return [ 'publish' => '公開する', 'publish_edit' => '出版物を編集', ], - 'no_chapters' => 'No chapters are available for this episode.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'no_chapters' => 'このエピソードにはチャプターがありません。', + 'download_transcript' => '文字起こしをダウンロード ({extension})', + 'no_transcript' => 'このエピソードには文字起こしがありません。', ]; diff --git a/app/Language/ja/Fediverse.php b/app/Language/ja/Fediverse.php index c86f8313..2287ba97 100644 --- a/app/Language/ja/Fediverse.php +++ b/app/Language/ja/Fediverse.php @@ -10,28 +10,28 @@ declare(strict_types=1); return [ 'your_handle' => 'あなたのユーザー ID', - 'your_handle_hint' => 'Enter the @username@domain you want to act from.', + 'your_handle_hint' => 'フォームに「@username@domain」の形式で入力してください', 'follow' => [ 'label' => 'フォロー', 'title' => '{actorDisplayName} をフォロー', - 'subtitle' => 'You are going to follow:', + 'subtitle' => 'フォロー中:', 'accountNotFound' => 'アカウントが見つかりませんでした', 'remoteFollowNotAllowed' => 'このアカウントサーバーはリモートフォローを許可しておりません', 'submit' => 'フォローする', ], 'favourite' => [ 'title' => "お気に入りの {actorDisplayName}の投稿", - 'subtitle' => 'You are going to favourite:', + 'subtitle' => 'お気に入りに登録中:', 'submit' => 'お気に入り登録する', ], 'reblog' => [ - 'title' => "Share {actorDisplayName}'s post", - 'subtitle' => 'You are going to share:', + 'title' => "{actorDisplayName} の投稿を共有する", + 'subtitle' => '共有中:', 'submit' => '共有する', ], 'reply' => [ - 'title' => "Reply to {actorDisplayName}'s post", - 'subtitle' => 'You are going to reply to:', + 'title' => "{actorDisplayName} の投稿に返信する", + 'subtitle' => '返信中:', 'submit' => '返信する', ], ]; diff --git a/app/Language/ja/Podcast.php b/app/Language/ja/Podcast.php index 43d67e5d..ed805970 100644 --- a/app/Language/ja/Podcast.php +++ b/app/Language/ja/Podcast.php @@ -38,16 +38,16 @@ return [ one {# episode} other {# episodes} }', - 'first_published_at' => 'First episode published on {0, date, medium}', + 'first_published_at' => '初回は{0, date, medium} に投稿されました。', ], - 'sponsor' => 'Sponsor', - 'funding_links' => 'Funding links for {podcastTitle}', - 'find_on' => 'Find {podcastTitle} on', - 'listen_on' => 'Listen on', + 'sponsor' => 'スポンサー', + 'funding_links' => '{podcastTitle} のリンクを探す', + 'find_on' => '{podcastTitle} を検索', + 'listen_on' => '視聴中', 'persons' => '{personsCount, plural, one {# person} other {# persons} }', - 'persons_list' => 'Persons', - 'castopod_website' => 'Castopod (website)', + 'persons_list' => '人数', + 'castopod_website' => 'Castopod (公式ページ)', ]; diff --git a/app/Language/ja/Post.php b/app/Language/ja/Post.php index 1ad1c14c..d931e31e 100644 --- a/app/Language/ja/Post.php +++ b/app/Language/ja/Post.php @@ -9,15 +9,15 @@ declare(strict_types=1); */ return [ - 'title' => "{actorDisplayName}'s post", - 'back_to_actor_posts' => 'Back to {actor} posts', - 'actor_shared' => '{actor} shared', - 'reply_to' => 'Reply to @{actorUsername}', + 'title' => "{actorDisplayName} の投稿", + 'back_to_actor_posts' => '{actor} の投稿一覧に戻る', + 'actor_shared' => '{actor} が共有しました', + 'reply_to' => '@{actorUsername} に返信する', 'form' => [ - 'message_placeholder' => 'Write a message…', - 'episode_message_placeholder' => 'Write a message for the episode…', - 'episode_url_placeholder' => 'Episode URL', - 'reply_to_placeholder' => 'Reply to @{actorUsername}', + 'message_placeholder' => 'ここにコメントを入力..', + 'episode_message_placeholder' => 'エピソードへのコメントを入力...', + 'episode_url_placeholder' => 'エピソードのURL', + 'reply_to_placeholder' => '@{actorUsername} に返信する', 'submit' => '送信', 'submit_reply' => '返信する', ], @@ -33,8 +33,8 @@ return [ one {# reply} other {# replies} }', - 'expand' => 'Expand post', - 'block_actor' => 'Block user @{actorUsername}', - 'block_domain' => 'Block domain @{actorDomain}', + 'expand' => '投稿を開く', + 'block_actor' => '@{actorUsername} をブロック', + 'block_domain' => '@{actorDomain} の投稿をブロックする', 'delete' => '投稿を削除', ]; diff --git a/app/Language/lt/Comment.php b/app/Language/lt/Comment.php new file mode 100644 index 00000000..30bc6cfa --- /dev/null +++ b/app/Language/lt/Comment.php @@ -0,0 +1,36 @@ + "{actorDisplayName} pakomentavo „{episodeTitle}“", + 'back_to_comments' => 'Grįžti į komentarus', + 'form' => [ + 'episode_message_placeholder' => 'Parašyti komentarą…', + 'reply_to_placeholder' => 'Atsakyti @{actorUsername}', + 'submit' => 'Siųsti', + 'submit_reply' => 'Atsakyti', + ], + 'likes' => '{numberOfLikes, plural, + one {# patiktukas} + few {# patiktukai} + other {# patiktukų} + }', + 'replies' => '{numberOfReplies, plural, + one {# atsakymas} + few {# atsakymai} + other {# atsakymų} + }', + 'like' => 'Patinka', + 'reply' => 'Atsakyti', + 'view_replies' => 'Rodyti atsakymus ({numberOfReplies})', + 'block_actor' => 'Blokuoti naudotoją @{actorUsername}', + 'block_domain' => 'Blokuoti domeną @{actorDomain}', + 'delete' => 'Šalinti komentarą', +]; diff --git a/app/Language/lt/Common.php b/app/Language/lt/Common.php new file mode 100644 index 00000000..e1201ef1 --- /dev/null +++ b/app/Language/lt/Common.php @@ -0,0 +1,30 @@ + 'Taip', + 'no' => 'Ne', + 'cancel' => 'Atsisakyti', + 'optional' => 'Neprivaloma', + 'close' => 'Užverti', + 'home' => 'Pradžia', + 'explicit' => 'Atviras', + 'powered_by' => 'Veikia {castopod} pagrindu', + 'go_back' => 'Grįžti', + 'play_episode_button' => [ + 'play' => 'Leisti', + 'playing' => 'Leidžiama', + ], + 'read_more' => 'Išsamiau', + 'read_less' => 'Glausčiau', + 'see_more' => 'Išsamiau', + 'see_less' => 'Glausčiau', + 'legal_notice' => 'Teisinė informacija', +]; diff --git a/app/Language/lt/Episode.php b/app/Language/lt/Episode.php new file mode 100644 index 00000000..21f32e5e --- /dev/null +++ b/app/Language/lt/Episode.php @@ -0,0 +1,52 @@ + '{seasonNumber} sezonas', + 'season_abbr' => 'S{seasonNumber}', + 'number' => '{episodeNumber} epizodas', + 'number_abbr' => '{episodeNumber} ep.', + 'season_episode' => '{seasonNumber} sezono {episodeNumber} epizodas', + 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', + 'persons' => '{personsCount, plural, + one {# asmuo} + few {# asmenys} + other {# asmenų} + }', + 'persons_list' => 'Asmenys', + 'back_to_episodes' => 'Grįžti į „{podcast}“ epizodų sąrašą', + 'comments' => 'Komentarai', + 'activity' => 'Veikla', + 'chapters' => 'Skyreliai', + 'transcript' => 'Nuorašas', + 'description' => 'Epizodo aprašymas', + 'number_of_comments' => '{numberOfComments, plural, + one {# komentaras} + few {# komentarai} + other {# komentarų} + }', + 'all_podcast_episodes' => 'Visi tinklalaidės epizodai', + 'back_to_podcast' => 'Grįžti į tinklalaidę', + 'preview' => [ + 'title' => 'Peržiūrėti', + 'not_published' => 'Nepaskelbtas', + 'text' => '{publication_status, select, + published {Šis epizodas dar nepaskelbtas.} + scheduled {Šį epizodą planuojama paskelbti {publication_date}.} + with_podcast {Šį epizodą planuojama paskelbti kartu su tinklalaide.} + other {Šis epizodas dar nepaskelbtas.} + }', + 'publish' => 'Paskelbti', + 'publish_edit' => 'Taisyti paskelbimą', + ], + 'no_chapters' => 'Šis epizodas neišskaidytas skyreliais.', + 'download_transcript' => 'Parsisiųsti nuorašą ({extension})', + 'no_transcript' => 'Šio epizodo nuorašas nepateiktas.', +]; diff --git a/app/Language/lt/Fediverse.php b/app/Language/lt/Fediverse.php new file mode 100644 index 00000000..54c27673 --- /dev/null +++ b/app/Language/lt/Fediverse.php @@ -0,0 +1,37 @@ + 'Jūsų paskyros vardas', + 'your_handle_hint' => 'Įrašykite naudotinos paskyros vardą @naudotojas@domenas formatu.', + 'follow' => [ + 'label' => 'Sekti', + 'title' => 'Sekti {actorDisplayName}', + 'subtitle' => 'Ketinate sekti:', + 'accountNotFound' => 'Paskyra nerasta.', + 'remoteFollowNotAllowed' => 'Panašu, jog paskyros serveris neleidžia nuotolinių sekimo užklausų…', + 'submit' => 'Inicijuoti sekimą', + ], + 'favourite' => [ + 'title' => "Pamėgti {actorDisplayName} įrašą", + 'subtitle' => 'Ketinate pamėgti:', + 'submit' => 'Inicijuoti pamėgimą', + ], + 'reblog' => [ + 'title' => "Pasidalinti {actorDisplayName} įrašu", + 'subtitle' => 'Ketinate pasidalinti:', + 'submit' => 'Inicijuoti pasidalijimą', + ], + 'reply' => [ + 'title' => "Atsakyti į {actorDisplayName} įrašą", + 'subtitle' => 'Ketinate atsakyti į:', + 'submit' => 'Inicijuoti atsakymą', + ], +]; diff --git a/app/Language/lt/Home.php b/app/Language/lt/Home.php new file mode 100644 index 00000000..8e5d3439 --- /dev/null +++ b/app/Language/lt/Home.php @@ -0,0 +1,20 @@ + 'Visos tinklalaidės', + 'sort_by' => 'Rikiuoti pagal', + 'sort_options' => [ + 'activity' => 'Paskiausia veikla', + 'created_desc' => 'Prad', + 'created_asc' => 'Pirma seniausi', + ], + 'no_podcast' => 'Tinklalaidė nerasta', +]; diff --git a/app/Language/lt/Page.php b/app/Language/lt/Page.php new file mode 100644 index 00000000..9a643e68 --- /dev/null +++ b/app/Language/lt/Page.php @@ -0,0 +1,17 @@ + 'Grįžti į pradžią', + 'map' => [ + 'title' => 'Žemėlapis', + 'description' => 'Atraskite „{siteName}“ paskelbtus tinklalaidžių epizodus žemėlapyje! Keliaukite po žemėlapį ir klausykitės epizodų, kuriuose kalbama apie konkrečias vietoves.', + ], +]; diff --git a/app/Language/lt/Podcast.php b/app/Language/lt/Podcast.php new file mode 100644 index 00000000..bd37957b --- /dev/null +++ b/app/Language/lt/Podcast.php @@ -0,0 +1,60 @@ + 'Tinklalaidės RSS sklaidos kanalas', + 'season' => '{seasonNumber} sezonas', + 'list_of_episodes_year' => '{year} metų epizodai ({episodeCount})', + 'list_of_episodes_season' => + '{seasonNumber} sezono epizodai ({episodeCount})', + 'no_episode' => 'Epizodų nerasta!', + 'follow' => 'Sekti', + 'followTitle' => 'Sekti {actorDisplayName} Fedivisatoje!', + 'followers' => '{numberOfFollowers, plural, + one {# sekėjas} + few {# sekėjai} + other {# sekėjų} + }', + 'posts' => '{numberOfPosts, plural, + one {# įrašas} + few {# įrašai} + other {# įrašų} + }', + 'links' => 'Nuorodos', + 'activity' => 'Veikla', + 'episodes' => 'Epizodai', + 'episodes_title' => '„{podcastTitle}“ epizodai', + 'about' => 'Apie', + 'stats' => [ + 'title' => 'Statistika', + 'number_of_seasons' => '{0, plural, + one {# sezonas} + few {# sezonai} + other {# sezonų} + }', + 'number_of_episodes' => '{0, plural, + one {# epizodas} + few {# epizodai} + other {# epizodų} + }', + 'first_published_at' => 'Pirmasis epizodas paskelbtas {0, date, medium}', + ], + 'sponsor' => 'Paremti', + 'funding_links' => '„{podcastTitle}“ rėmimo nuorodos', + 'find_on' => 'Raskite „{podcastTitle}“', + 'listen_on' => 'Klausykitės', + 'persons' => '{personsCount, plural, + one {# asmuo} + few {# asmenys} + other {# asmenų} + }', + 'persons_list' => 'Asmenys', + 'castopod_website' => 'Castopod (svetainė)', +]; diff --git a/app/Language/lt/Post.php b/app/Language/lt/Post.php new file mode 100644 index 00000000..68197945 --- /dev/null +++ b/app/Language/lt/Post.php @@ -0,0 +1,43 @@ + "{actorDisplayName} įrašas", + 'back_to_actor_posts' => 'Grįžti į {actor} įrašus', + 'actor_shared' => '{actor} pasidalijo', + 'reply_to' => 'Atsakyti @{actorUsername}', + 'form' => [ + 'message_placeholder' => 'Parašykite žinutę…', + 'episode_message_placeholder' => 'Parašykite žinutę šiam epizodui…', + 'episode_url_placeholder' => 'Epizodo URL adresas', + 'reply_to_placeholder' => 'Atsakyti @{actorUsername}', + 'submit' => 'Siųsti', + 'submit_reply' => 'Atsakyti', + ], + 'favourites' => '{numberOfFavourites, plural, + one {# pamėgimas} + few {# pamėgimai} + other {# pamėgimų} + }', + 'reblogs' => '{numberOfReblogs, plural, + one {# pasidalijimas} + few {# pasidalijimai} + other {# pasidalijimų} + }', + 'replies' => '{numberOfReplies, plural, + one {# atsakymas} + few {# atsakymai} + other {# atsakymų} + }', + 'expand' => 'Išskleisti įrašą', + 'block_actor' => 'Blokuoti naudotoją @{actorUsername}', + 'block_domain' => 'Blokuoti domeną @{actorDomain}', + 'delete' => 'Šalinti įrašą', +]; diff --git a/app/Language/nl/Episode.php b/app/Language/nl/Episode.php index 4acd9a29..7a7fe02b 100644 --- a/app/Language/nl/Episode.php +++ b/app/Language/nl/Episode.php @@ -24,7 +24,7 @@ return [ 'comments' => 'Reacties', 'activity' => 'Activiteiten', 'chapters' => 'Hoofdstukken', - 'transcript' => 'Transcript', + 'transcript' => 'Transcriptie', 'description' => 'Omschrijving aflevering', 'number_of_comments' => '{numberOfComments, plural, one {# reactie} @@ -45,6 +45,6 @@ return [ 'publish_edit' => 'Publicatie bewerken', ], 'no_chapters' => 'Voor deze aflevering zijn geen hoofdstukken beschikbaar.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'download_transcript' => 'Transcriptie downloaden ({extension})', + 'no_transcript' => 'Geen transcript beschikbaar voor deze aflevering.', ]; diff --git a/app/Language/nn-no/Episode.php b/app/Language/nn-no/Episode.php index c2bd60a3..8a1072c3 100644 --- a/app/Language/nn-no/Episode.php +++ b/app/Language/nn-no/Episode.php @@ -24,7 +24,7 @@ return [ 'comments' => 'Kommentarar', 'activity' => 'Aktivitet', 'chapters' => 'Kapittel', - 'transcript' => 'Transcript', + 'transcript' => 'Avskrift', 'description' => 'Skildring av episoden', 'number_of_comments' => '{numberOfComments, plural, one {# kommentar} @@ -45,6 +45,6 @@ return [ 'publish_edit' => 'Rediger publiseringa', ], 'no_chapters' => 'Det finst ingen kapittel for denne episoden.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'download_transcript' => 'Last ned underteksten ({extension})', + 'no_transcript' => 'Det finst inga teksting for denne episoden.', ]; diff --git a/app/Language/pl/Comment.php b/app/Language/pl/Comment.php index 8f4282f2..762d4112 100644 --- a/app/Language/pl/Comment.php +++ b/app/Language/pl/Comment.php @@ -31,5 +31,5 @@ return [ 'view_replies' => 'Zobacz odpowiedzi ({numberOfReplies})', 'block_actor' => 'Zablokuj użytkownika @{actorUsername}', 'block_domain' => 'Zablokuj domenę @{actorDomain}', - 'delete' => 'usuń komentarz', + 'delete' => 'Usuń komentarz', ]; diff --git a/app/Language/pl/Common.php b/app/Language/pl/Common.php index 5009c01f..888a0159 100644 --- a/app/Language/pl/Common.php +++ b/app/Language/pl/Common.php @@ -14,15 +14,15 @@ return [ 'cancel' => 'Anuluj', 'optional' => 'Opcjonalnie', 'close' => 'Zamknij', - 'home' => 'Początek', - 'explicit' => 'Zawiera treści dla dorosłych', + 'home' => 'Strona główna', + 'explicit' => 'Wulgarne', 'powered_by' => 'Wspierane przez {castopod}', 'go_back' => 'Wróć', 'play_episode_button' => [ 'play' => 'Odtwórz', 'playing' => 'Odtwarzanie', ], - 'read_more' => 'czytaj więcej', + 'read_more' => 'Czytaj więcej', 'read_less' => 'Czytaj mniej', 'see_more' => 'Zobacz więcej', 'see_less' => 'Zobacz mniej', diff --git a/app/Language/pl/Episode.php b/app/Language/pl/Episode.php index 3c744879..7e3b14c4 100644 --- a/app/Language/pl/Episode.php +++ b/app/Language/pl/Episode.php @@ -14,7 +14,7 @@ return [ 'number' => 'Odcinek {episodeNumber}', 'number_abbr' => 'Odc. {episodeNumber}', 'season_episode' => 'Sezon {seasonNumber} odcinek {episodeNumber}', - 'season_episode_abbr' => 'S{seasonNumber}:O{episodeNumber}', + 'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}', 'persons' => '{personsCount, plural, one {# osoba} few {# osoby} @@ -24,8 +24,8 @@ return [ 'back_to_episodes' => 'Wróć do odcinków {podcast}', 'comments' => 'Komentarze', 'activity' => 'Aktywność', - 'chapters' => 'Chapters', - 'transcript' => 'Transcript', + 'chapters' => 'Rozdziały', + 'transcript' => 'Transkrypcja', 'description' => 'Opis odcinka', 'number_of_comments' => '{numberOfComments, plural, one {# komentarz} @@ -33,7 +33,7 @@ return [ other {# komentarzy} }', 'all_podcast_episodes' => 'Wszystkie odcinki podcastu', - 'back_to_podcast' => 'Wróć do podkastu', + 'back_to_podcast' => 'Wróć do podcastu', 'preview' => [ 'title' => 'Podgląd', 'not_published' => 'Nieopublikowany', @@ -46,7 +46,7 @@ return [ 'publish' => 'Opublikuj', 'publish_edit' => 'Edytuj publikację', ], - 'no_chapters' => 'No chapters are available for this episode.', - 'download_transcript' => 'Download transcript ({extension})', - 'no_transcript' => 'No transcript available for this episode.', + 'no_chapters' => 'Brak dostępnych rozdziałów dla tego odcinka.', + 'download_transcript' => 'Pobierz transkrypcję ({extension})', + 'no_transcript' => 'Brak transkrypcji dla tego odcinka.', ]; diff --git a/app/Language/pl/Fediverse.php b/app/Language/pl/Fediverse.php index 93923303..ccd410fc 100644 --- a/app/Language/pl/Fediverse.php +++ b/app/Language/pl/Fediverse.php @@ -10,28 +10,28 @@ declare(strict_types=1); return [ 'your_handle' => 'Twój uchwyt', - 'your_handle_hint' => 'Wpisz @nazwęużytkownika@domenę, z których chcesz działać.', + 'your_handle_hint' => 'Wpisz @nazważytkownika@domena, z której chcesz działać.', 'follow' => [ 'label' => 'Obserwuj', 'title' => 'Obserwuj {actorDisplayName}', 'subtitle' => 'Zamierzasz obserwować:', 'accountNotFound' => 'Nie można znaleźć konta.', - 'remoteFollowNotAllowed' => 'Wygląda na to, że serwer kont nie pozwala na śledzenie zdalnie…', + 'remoteFollowNotAllowed' => 'Wygląda na to, że serwer kont nie pozwala na zdalne śledzenie…', 'submit' => 'Przejdź do obserwowania', ], 'favourite' => [ 'title' => "Dodaj do ulubionych wpis {actorDisplayName}", 'subtitle' => 'Zamierzasz dodać do ulubionych:', - 'submit' => 'Przejdź do dodania do ulubionych', + 'submit' => 'Dodaj do ulubionych', ], 'reblog' => [ 'title' => "Udostępnij wpis {actorDisplayName}", 'subtitle' => 'Zamierzasz udostępnić:', - 'submit' => 'Przejdź do udostępnienia', + 'submit' => 'Udostępnij', ], 'reply' => [ - 'title' => "Odpowiedź do wpisu {actorDisplayName}", + 'title' => "Odpowiedz do wpisu {actorDisplayName}", 'subtitle' => 'Zamierzasz odpisać na:', - 'submit' => 'Przejdź do odpowiedzi', + 'submit' => 'Odpowiedz', ], ]; diff --git a/app/Language/pl/Page.php b/app/Language/pl/Page.php index 4e24bdfa..7e30ecc1 100644 --- a/app/Language/pl/Page.php +++ b/app/Language/pl/Page.php @@ -9,9 +9,9 @@ declare(strict_types=1); */ return [ - 'back_to_home' => 'Wróć do początku', + 'back_to_home' => 'Wróć do strony głównej', 'map' => [ 'title' => 'Mapa', - 'description' => 'Odkryj odcinki podcastów w witrynie {siteName} umieszczone na mapie! Podróżuj po mapie i słuchaj odcinków, które opowiadają o konkretnych lokalizacjach.', + 'description' => 'Odkryj odcinki podcastów w witrynie {siteName}, które są umieszczone na mapie! Podróżuj po mapie i słuchaj odcinków, które opowiadają o konkretnych lokalizacjach.', ], ]; diff --git a/app/Language/pl/Podcast.php b/app/Language/pl/Podcast.php index dfaed970..dbc95ff5 100644 --- a/app/Language/pl/Podcast.php +++ b/app/Language/pl/Podcast.php @@ -16,7 +16,7 @@ return [ 'Sezon {seasonNumber} odcinki ({episodeCount})', 'no_episode' => 'Nie znaleziono odcinków!', 'follow' => 'Obserwuj', - 'followTitle' => 'Obserwuj {actorDisplayName} na fediverse!', + 'followTitle' => 'Obserwuj {actorDisplayName} na fediwersum!', 'followers' => '{numberOfFollowers, plural, one {# polubienie} few {# polubienia} @@ -27,7 +27,7 @@ return [ few {# osoby} other {# osób} }', - 'links' => 'Links', + 'links' => 'Linki', 'activity' => 'Wpisy', 'episodes' => 'Odcinki', 'episodes_title' => 'Odcinki {podcastTitle}', @@ -56,5 +56,5 @@ return [ other {# osób} }', 'persons_list' => 'Osoby', - 'castopod_website' => 'Castopod (website)', + 'castopod_website' => 'Castopod (strona)', ]; diff --git a/app/Libraries/Router.php b/app/Libraries/Router.php index 1f3abc55..7063f630 100644 --- a/app/Libraries/Router.php +++ b/app/Libraries/Router.php @@ -18,7 +18,6 @@ use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\Router\Exceptions\RedirectException; use CodeIgniter\Router\Exceptions\RouterException; use CodeIgniter\Router\Router as CodeIgniterRouter; -use Config\Services; class Router extends CodeIgniterRouter { @@ -43,7 +42,7 @@ class Router extends CodeIgniterRouter // Loop through the route array looking for wildcards foreach ($routes as $routeKey => $handler) { - $routeKey = $routeKey === '/' ? $routeKey : ltrim($routeKey, '/ '); + $routeKey = $routeKey === '/' ? $routeKey : ltrim((string) $routeKey, '/ '); $matchedKey = $routeKey; @@ -115,8 +114,8 @@ class Router extends CodeIgniterRouter array_key_exists('alternate-content', $this->matchedRouteOptions) && is_array($this->matchedRouteOptions['alternate-content']) ) { - $request = Services::request(); - $negotiate = Services::negotiator(); + $request = service('request'); + $negotiate = service('negotiator'); // Accept header is mandatory if ($request->header('Accept') === null) { diff --git a/app/Libraries/SimpleRSSElement.php b/app/Libraries/SimpleRSSElement.php index 1dd2e431..827e58dd 100644 --- a/app/Libraries/SimpleRSSElement.php +++ b/app/Libraries/SimpleRSSElement.php @@ -57,10 +57,6 @@ class SimpleRSSElement extends SimpleXMLElement return $newChild; } - if (is_array($value)) { - return $newChild; - } - $node->appendChild($no->createTextNode($value)); return $newChild; diff --git a/app/Libraries/ViewComponents/Config/Services.php b/app/Libraries/ViewComponents/Config/Services.php index bb9c1d21..b7a1c74d 100644 --- a/app/Libraries/ViewComponents/Config/Services.php +++ b/app/Libraries/ViewComponents/Config/Services.php @@ -22,6 +22,7 @@ class Services extends BaseService public static function components(bool $getShared = true): ComponentRenderer { if ($getShared) { + /** @phpstan-ignore return.type */ return self::getSharedInstance('components'); } diff --git a/app/Libraries/Vite/Config/Services.php b/app/Libraries/Vite/Config/Services.php deleted file mode 100644 index cd5adfde..00000000 --- a/app/Libraries/Vite/Config/Services.php +++ /dev/null @@ -1,30 +0,0 @@ -|null - */ - protected ?array $manifestData = null; - - /** - * @var array|null - */ - protected ?array $manifestCSSData = null; - - public function asset(string $path, string $type): string - { - if (config('Vite')->environment !== 'production') { - return $this->loadDev($path, $type); - } - - return $this->loadProd($path, $type); - } - - private function loadDev(string $path, string $type): string - { - return $this->getHtmlTag(config('Vite') ->baseUrl . config('Vite')->assetsRoot . "/{$path}", $type); - } - - private function loadProd(string $path, string $type): string - { - if ($this->manifestData === null) { - $cacheName = 'vite-manifest'; - if (! ($cachedManifest = cache($cacheName))) { - $manifestPath = config('Vite') - ->assetsRoot . '/' . config('Vite') - ->manifestFile; - try { - if (($manifestContents = file_get_contents($manifestPath)) !== false) { - $cachedManifest = json_decode($manifestContents, true); - cache() - ->save($cacheName, $cachedManifest, DECADE); - } - } catch (ErrorException) { - // ERROR when retrieving the manifest file - die("Could not load manifest: {$manifestPath} file not found!"); - } - } - - $this->manifestData = $cachedManifest; - } - - $html = ''; - if (array_key_exists($path, $this->manifestData)) { - $manifestElement = $this->manifestData[$path]; - - // import css dependencies if any - if (array_key_exists('css', $manifestElement)) { - foreach ($manifestElement['css'] as $cssFile) { - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $cssFile, 'css'); - } - } - - // import dependencies first for faster js loading - if (array_key_exists('imports', $manifestElement)) { - foreach ($manifestElement['imports'] as $importPath) { - if (array_key_exists($importPath, $this->manifestData)) { - // import css dependencies if any - if (array_key_exists('css', $this->manifestData[$importPath])) { - foreach ($this->manifestData[$importPath]['css'] as $cssFile) { - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $cssFile, - 'css' - ); - } - } - - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $this->manifestData[$importPath]['file'], - 'js' - ); - } - } - } - - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $manifestElement['file'], $type); - } - - return $html; - } - - private function getHtmlTag(string $assetUrl, string $type): string - { - return match ($type) { - 'css' => << - HTML - , - 'js' => << - HTML - , - default => '', - }; - } -} diff --git a/app/Models/ClipModel.php b/app/Models/ClipModel.php index 16acbcfc..64583296 100644 --- a/app/Models/ClipModel.php +++ b/app/Models/ClipModel.php @@ -122,7 +122,6 @@ class ClipModel extends Model $found[$key] = new VideoClip($videoClip->toArray()); } - // @phpstan-ignore-next-line return $found; } @@ -162,15 +161,11 @@ class ClipModel extends Model return (int) $result[0]['id']; } - public function deleteVideoClip(int $podcastId, int $episodeId, int $clipId): BaseResult | bool + public function deleteVideoClip(int $clipId): BaseResult | bool { $this->clearVideoClipCache($clipId); - return $this->delete([ - 'podcast_id' => $podcastId, - 'episode_id' => $episodeId, - 'id' => $clipId, - ]); + return $this->delete($clipId); } public function getClipCount(int $podcastId, int $episodeId): int @@ -240,11 +235,7 @@ class ClipModel extends Model { $this->clearSoundbiteCache($podcastId, $episodeId, $clipId); - return $this->delete([ - 'podcast_id' => $podcastId, - 'episode_id' => $episodeId, - 'id' => $clipId, - ]); + return $this->delete($clipId); } public function clearSoundbiteCache(int $podcastId, int $episodeId, int $clipId): void diff --git a/app/Models/EpisodeCommentModel.php b/app/Models/EpisodeCommentModel.php index c999830b..88202c43 100644 --- a/app/Models/EpisodeCommentModel.php +++ b/app/Models/EpisodeCommentModel.php @@ -201,7 +201,7 @@ class EpisodeCommentModel extends UuidModel { // TODO: merge with replies from posts linked to episode linked $episodeCommentsBuilder = $this->builder(); - $episodeComments = $episodeCommentsBuilder->select('*, 0 as is_from_post') + $episodeComments = $episodeCommentsBuilder->select('*, 0 as is_private, 0 as is_from_post') ->where([ 'episode_id' => $episodeId, 'in_reply_to_id' => null, @@ -211,7 +211,7 @@ class EpisodeCommentModel extends UuidModel $postModel = new PostModel(); $episodePostsRepliesBuilder = $postModel->builder(); $episodePostsReplies = $episodePostsRepliesBuilder->select( - 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, 1 as is_from_post' + 'id, uri, episode_id, actor_id, in_reply_to_id, message, message_html, favourites_count as likes_count, replies_count, published_at as created_at, created_by, is_private, 1 as is_from_post' ) ->whereIn('in_reply_to_id', static function (BaseBuilder $builder) use (&$episodeId): BaseBuilder { return $builder->select('id') @@ -221,16 +221,20 @@ class EpisodeCommentModel extends UuidModel 'in_reply_to_id' => null, ]); }) - ->where('`created_at` <= UTC_TIMESTAMP()', null, false) - ->getCompiledSelect(); + ->where('`created_at` <= UTC_TIMESTAMP()', null, false); + + // do not get private replies if public + if (! can_user_interact()) { + $episodePostsRepliesBuilder->where('is_private', false); + } + + $episodePostsReplies = $episodePostsRepliesBuilder->getCompiledSelect(); /** @var BaseResult $allEpisodeComments */ $allEpisodeComments = $this->db->query( $episodeComments . ' UNION ' . $episodePostsReplies . ' ORDER BY created_at ASC' ); - // FIXME:? - // @phpstan-ignore-next-line return $this->convertUuidFieldsToStrings( $allEpisodeComments->getCustomResultObject($this->tempReturnType), $this->tempReturnType diff --git a/app/Models/EpisodeModel.php b/app/Models/EpisodeModel.php index 0a644cdc..238a6d15 100644 --- a/app/Models/EpisodeModel.php +++ b/app/Models/EpisodeModel.php @@ -89,6 +89,7 @@ class EpisodeModel extends UuidModel 'location_osm', 'custom_rss', 'is_published_on_hubs', + 'downloads_count', 'posts_count', 'comments_count', 'is_premium', @@ -197,7 +198,7 @@ class EpisodeModel extends UuidModel public function getEpisodeByPreviewId(string $previewId): ?Episode { - $cacheName = "podcast_episode#preview-{$previewId}"; + $cacheName = "podcast_episode-preview#{$previewId}"; if (! ($found = cache($cacheName))) { $builder = $this->where([ 'preview_id' => $this->uuid->fromString($previewId) @@ -370,15 +371,15 @@ class EpisodeModel extends UuidModel { $episodeCommentsCount = (new EpisodeCommentModel())->builder() ->select('episode_id, COUNT(*) as `comments_count`') - ->where('in_reply_to_id', null) + ->where('in_reply_to_id') ->groupBy('episode_id') ->getCompiledSelect(); $episodePostsRepliesCount = (new PostModel())->builder() ->select('fediverse_posts.episode_id as episode_id, COUNT(*) as `comments_count`') ->join('fediverse_posts as fp', 'fediverse_posts.id = fp.in_reply_to_id') - ->where('fediverse_posts.in_reply_to_id', null) - ->where('fediverse_posts.episode_id IS NOT', null) + ->where('fediverse_posts.in_reply_to_id') + ->where('fediverse_posts.episode_id IS NOT') ->groupBy('fediverse_posts.episode_id') ->getCompiledSelect(); @@ -401,7 +402,7 @@ class EpisodeModel extends UuidModel $episodePostsCount = $this->builder() ->select('episodes.id, COUNT(*) as `posts_count`') ->join('fediverse_posts', 'episodes.id = fediverse_posts.episode_id') - ->where('in_reply_to_id', null) + ->where('in_reply_to_id') ->groupBy('episodes.id') ->get() ->getResultArray(); @@ -441,7 +442,7 @@ class EpisodeModel extends UuidModel cache() ->deleteMatching("podcast-{$episode->podcast->handle}*"); cache() - ->delete("podcast_episode#{$episode->id}"); + ->deleteMatching('podcast_episode*'); cache() ->deleteMatching("page_podcast#{$episode->podcast_id}*"); cache() diff --git a/app/Models/PersonModel.php b/app/Models/PersonModel.php index c997c8e8..14fc249e 100644 --- a/app/Models/PersonModel.php +++ b/app/Models/PersonModel.php @@ -145,7 +145,7 @@ class PersonModel extends Model $this->select('`id`, `full_name`') ->orderBy('`full_name`', 'ASC') ->findAll(), - static function (array $result, $person): array { + static function (array $result, Person $person): array { $result[$person->id] = $person->full_name; return $result; }, diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index 79f24e02..f53fd567 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -186,7 +186,7 @@ class PodcastModel extends Model '`' . $prefix . 'fediverse_posts`.`published_at` <= UTC_TIMESTAMP()', null, false - )->orWhere('fediverse_posts.published_at', null) + )->orWhere('fediverse_posts.published_at') ->groupEnd() ->groupBy('podcasts.actor_id') ->orderBy('max_published_at', 'DESC'); @@ -335,7 +335,7 @@ class PodcastModel extends Model */ public function clearCache(array $data): array { - $podcast = (new self())->getPodcastById((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); + $podcast = (new self())->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); // delete cache for users' podcasts cache() @@ -427,7 +427,7 @@ class PodcastModel extends Model */ protected function setActorAvatar(array $data): array { - $podcast = (new self())->getPodcastById((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); + $podcast = (new self())->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); if ($podcast instanceof Podcast) { $podcastActor = (new ActorModel())->find($podcast->actor_id); @@ -452,7 +452,7 @@ class PodcastModel extends Model */ protected function updatePodcastActor(array $data): array { - $podcast = (new self())->getPodcastById((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); + $podcast = (new self())->find((int) (is_array($data['id']) ? $data['id'][0] : $data['id'])); if ($podcast instanceof Podcast) { $actorModel = new ActorModel(); diff --git a/app/Models/PostModel.php b/app/Models/PostModel.php index 25a834a7..88f41003 100644 --- a/app/Models/PostModel.php +++ b/app/Models/PostModel.php @@ -32,6 +32,7 @@ class PostModel extends FediversePostModel 'episode_id', 'message', 'message_html', + 'is_private', 'favourites_count', 'reblogs_count', 'replies_count', @@ -49,7 +50,7 @@ class PostModel extends FediversePostModel return $this->where([ 'episode_id' => $episodeId, ]) - ->where('in_reply_to_id', null) + ->where('in_reply_to_id') ->where('`published_at` <= UTC_TIMESTAMP()', null, false) ->orderBy('published_at', 'DESC') ->findAll(); diff --git a/app/Resources/icons/funding/_index.php b/app/Resources/icons/funding/_index.php deleted file mode 100644 index e4e34444..00000000 --- a/app/Resources/icons/funding/_index.php +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/app/Resources/images/castopod-logo.svg b/app/Resources/images/castopod-logo.svg deleted file mode 100644 index 039deb74..00000000 --- a/app/Resources/images/castopod-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/Resources/images/castopod-mascot_confused.svg b/app/Resources/images/castopod-mascot_confused.svg deleted file mode 100644 index ab32c445..00000000 --- a/app/Resources/images/castopod-mascot_confused.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/Resources/js/admin.ts b/app/Resources/js/admin.ts deleted file mode 100644 index c4fe7dea..00000000 --- a/app/Resources/js/admin.ts +++ /dev/null @@ -1,40 +0,0 @@ -import "@github/markdown-toolbar-element"; -import "@github/relative-time-element"; -import "./modules/audio-clipper"; -import ClientTimezone from "./modules/ClientTimezone"; -import Clipboard from "./modules/Clipboard"; -import DateTimePicker from "./modules/DateTimePicker"; -import Dropdown from "./modules/Dropdown"; -import HotKeys from "./modules/HotKeys"; -import "./modules/markdown-preview"; -import "./modules/markdown-write-preview"; -import MultiSelect from "./modules/MultiSelect"; -import "./modules/permalink-edit"; -import "./modules/play-soundbite"; -import PublishMessageWarning from "./modules/PublishMessageWarning"; -import Select from "./modules/Select"; -import SidebarToggler from "./modules/SidebarToggler"; -import Slugify from "./modules/Slugify"; -import ThemePicker from "./modules/ThemePicker"; -import Time from "./modules/Time"; -import Tooltip from "./modules/Tooltip"; -import ValidateFileSize from "./modules/ValidateFileSize"; -import "./modules/video-clip-previewer"; -import VideoClipBuilder from "./modules/VideoClipBuilder"; -import "./modules/xml-editor"; - -Dropdown(); -Tooltip(); -Select(); -MultiSelect(); -Slugify(); -SidebarToggler(); -ClientTimezone(); -DateTimePicker(); -Time(); -Clipboard(); -ThemePicker(); -PublishMessageWarning(); -HotKeys(); -ValidateFileSize(); -VideoClipBuilder(); diff --git a/app/Resources/js/app.ts b/app/Resources/js/app.ts deleted file mode 100644 index 7b944f47..00000000 --- a/app/Resources/js/app.ts +++ /dev/null @@ -1,5 +0,0 @@ -import Dropdown from "./modules/Dropdown"; -import Tooltip from "./modules/Tooltip"; - -Dropdown(); -Tooltip(); diff --git a/app/Resources/js/charts.ts b/app/Resources/js/charts.ts deleted file mode 100644 index 97b2c4d9..00000000 --- a/app/Resources/js/charts.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawCharts from "./modules/Charts"; - -DrawCharts(); diff --git a/app/Resources/js/install.ts b/app/Resources/js/install.ts deleted file mode 100644 index e3bb9d53..00000000 --- a/app/Resources/js/install.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Tooltip from "./modules/Tooltip"; - -Tooltip(); diff --git a/app/Resources/js/map.ts b/app/Resources/js/map.ts deleted file mode 100644 index 195a97d0..00000000 --- a/app/Resources/js/map.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawEpisodesMaps from "./modules/EpisodesMap"; - -DrawEpisodesMaps(); diff --git a/app/Resources/js/podcast.ts b/app/Resources/js/podcast.ts deleted file mode 100644 index 1d53a99f..00000000 --- a/app/Resources/js/podcast.ts +++ /dev/null @@ -1,10 +0,0 @@ -import "@github/relative-time-element"; -import SidebarToggler from "./modules/SidebarToggler"; -import Time from "./modules/Time"; -import Toggler from "./modules/Toggler"; -import Tooltip from "./modules/Tooltip"; - -Time(); -Toggler(); -Tooltip(); -SidebarToggler(); diff --git a/app/Resources/styles/index.css b/app/Resources/styles/index.css deleted file mode 100644 index b894e7a3..00000000 --- a/app/Resources/styles/index.css +++ /dev/null @@ -1,15 +0,0 @@ -@import url("./tailwind.css"); -@import url("./custom.css"); -@import url("./fonts.css"); -@import url("./colors.css"); -@import url("./breadcrumb.css"); -@import url("./dropdown.css"); -@import url("./choices.css"); -@import url("./radioBtn.css"); -@import url("./colorRadioBtn.css"); -@import url("./switch.css"); -@import url("./radioToggler.css"); -@import url("./formInputTabs.css"); -@import url("./stickyHeader.css"); -@import url("./readMore.css"); -@import url("./seeMore.css"); diff --git a/app/Views/Components/Alert.php b/app/Views/Components/Alert.php index f328e6c8..1bf21fbf 100644 --- a/app/Views/Components/Alert.php +++ b/app/Views/Components/Alert.php @@ -22,19 +22,19 @@ class Alert extends Component $variants = [ 'success' => [ 'class' => 'text-pine-900 bg-pine-100 border-pine-300', - 'glyph' => 'check-fill', // @icon('check-fill') + 'glyph' => 'check-fill', // @icon("check-fill") ], 'danger' => [ 'class' => 'text-red-900 bg-red-100 border-red-300', - 'glyph' => 'close-fill', // @icon('close-fill') + 'glyph' => 'close-fill', // @icon("close-fill") ], 'warning' => [ 'class' => 'text-yellow-900 bg-yellow-100 border-yellow-300', - 'glyph' => 'alert-fill', // @icon('alert-fill') + 'glyph' => 'alert-fill', // @icon("alert-fill") ], 'default' => [ 'class' => 'text-blue-900 bg-blue-100 border-blue-300', - 'glyph' => 'error-warning-fill', // @icon('error-warning-fill') + 'glyph' => 'error-warning-fill', // @icon("error-warning-fill") ], ]; diff --git a/app/Views/Components/DashboardCard.php b/app/Views/Components/DashboardCard.php index 6510fe4b..69ab183f 100644 --- a/app/Views/Components/DashboardCard.php +++ b/app/Views/Components/DashboardCard.php @@ -23,12 +23,12 @@ class DashboardCard extends Component public function render(): string { - $glyph = icon($this->glyph, [ + $glyph = (string) icon($this->glyph, [ 'class' => 'flex-shrink-0 bg-base rounded-full w-8 h-8 p-2 text-accent-base', ]); if ($this->href !== null && $this->href !== '') { - $chevronRight = icon('arrow-right-s-fill'); + $chevronRight = (string) icon('arrow-right-s-fill'); $viewLang = lang('Common.view'); return << diff --git a/app/Views/Components/Forms/MarkdownEditor.php b/app/Views/Components/Forms/MarkdownEditor.php index 5c6bda64..c004ef2d 100644 --- a/app/Views/Components/Forms/MarkdownEditor.php +++ b/app/Views/Components/Forms/MarkdownEditor.php @@ -24,7 +24,7 @@ class MarkdownEditor extends FormComponent $this->attributes['rows'] = 6; $textarea = form_textarea($this->attributes, old($this->name, $this->value)); - $markdownIcon = icon( + $markdownIcon = (string) icon( 'markdown-fill', [ 'class' => 'mr-1 text-lg opacity-40', @@ -41,41 +41,41 @@ class MarkdownEditor extends FormComponent [ 'name' => 'header', 'tag' => 'md-header', - 'icon' => icon('heading'), + 'icon' => (string) icon('heading'), ], [ 'name' => 'bold', 'tag' => 'md-bold', - 'icon' => icon('bold'), + 'icon' => (string) icon('bold'), ], [ 'name' => 'italic', 'tag' => 'md-italic', - 'icon' => icon('italic'), + 'icon' => (string) icon('italic'), ], ], [ [ 'name' => 'unordered-list', 'tag' => 'md-unordered-list', - 'icon' => icon('list-unordered'), + 'icon' => (string) icon('list-unordered'), ], [ 'name' => 'ordered-list', 'tag' => 'md-ordered-list ', - 'icon' => icon('list-ordered-2'), + 'icon' => (string) icon('list-ordered-2'), ], ], [ [ 'name' => 'link', 'tag' => 'md-link', - 'icon' => icon('link'), + 'icon' => (string) icon('link'), ], [ 'name' => 'image', 'tag' => 'md-image', - 'icon' => icon('image-add-fill'), + 'icon' => (string) icon('image-add-fill'), ], ], ]; diff --git a/app/Views/Components/IconButton.php b/app/Views/Components/IconButton.php index b2c9f263..ebc2d5f8 100644 --- a/app/Views/Components/IconButton.php +++ b/app/Views/Components/IconButton.php @@ -26,7 +26,7 @@ class IconButton extends Button parent::__construct($allAttributes); - $this->slot = icon($this->glyph, [ + $this->slot = (string) icon($this->glyph, [ 'class' => $glyphSize[$this->size], ]); } diff --git a/app/Views/errors/cli/error_exception.php b/app/Views/errors/cli/error_exception.php index 1ce53a52..7a7247fc 100644 --- a/app/Views/errors/cli/error_exception.php +++ b/app/Views/errors/cli/error_exception.php @@ -54,7 +54,7 @@ if (defined('SHOW_DEBUG_BACKTRACE') && SHOW_DEBUG_BACKTRACE) { $args = implode(', ', array_map(static fn ($value) => match (true) { is_object($value) => 'Object(' . $value::class . ')', - is_array($value) => count($value) ? '[...]' : '[]', + is_array($value) => $value !== [] ? '[...]' : '[]', $value === null => 'null', // return the lowercased version default => var_export($value, true), }, array_values($error['args'] ?? []))); diff --git a/app/Views/errors/html/debug.css b/app/Views/errors/html/debug.css index a17243d0..79f365db 100644 --- a/app/Views/errors/html/debug.css +++ b/app/Views/errors/html/debug.css @@ -3,7 +3,7 @@ --main-text-color: #555; --dark-text-color: #222; --light-text-color: #c7c7c7; - --brand-primary-color: #e06e3f; + --brand-primary-color: #dc4814; --light-bg-color: #ededee; --dark-bg-color: #404040; } @@ -11,8 +11,9 @@ body { height: 100%; background: var(--main-bg-color); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, - sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; color: var(--main-text-color); font-weight: 300; margin: 0; @@ -77,10 +78,13 @@ p.lead { } .environment { - background: var(--dark-bg-color); - color: var(--light-text-color); + background: var(--brand-primary-color); + color: var(--main-bg-color); text-align: center; - padding: 0.2rem; + padding: calc(4px + 0.2083vw); + width: 100%; + top: 0; + position: fixed; } .source { diff --git a/app/Views/errors/html/debug.js b/app/Views/errors/html/debug.js index 3428750f..65254785 100644 --- a/app/Views/errors/html/debug.js +++ b/app/Views/errors/html/debug.js @@ -5,6 +5,7 @@ var tabLinks = []; var contentDivs = []; +// eslint-disable-next-line @typescript-eslint/no-unused-vars function init() { // Grab the tab links and content divs from the page var tabListItems = document.getElementById("tabs").childNodes; @@ -85,6 +86,7 @@ function getHash(url) { //-------------------------------------------------------------------- +// eslint-disable-next-line @typescript-eslint/no-unused-vars function toggle(elem) { elem = document.getElementById(elem); diff --git a/app/Views/errors/html/error_400.php b/app/Views/errors/html/error_400.php new file mode 100644 index 00000000..ae25b5c0 --- /dev/null +++ b/app/Views/errors/html/error_400.php @@ -0,0 +1,29 @@ + + + + + + + + + <?= lang('Errors.pageNotFound') ?> + ' /> + asset('styles/index.css') ?> + + + + +

400

+ +

+ + + + + +

+ + + + diff --git a/app/Views/errors/html/error_403.php b/app/Views/errors/html/error_403.php index 0a8d31b4..ac9b6deb 100644 --- a/app/Views/errors/html/error_403.php +++ b/app/Views/errors/html/error_403.php @@ -8,7 +8,7 @@ 403 Forbidden ' /> - asset('styles/index.css', 'css') ?> + asset('styles/index.css') ?> @@ -28,7 +27,7 @@ $errorId = uniqid('error', true);
- Displayed at — + Displayed at — PHP: — CodeIgniter: -- Environment: @@ -228,7 +227,7 @@ while ($prevException = $last->getPrevious()) {
- + @@ -346,7 +345,7 @@ while ($prevException = $last->getPrevious()) { setStatusCode(http_response_code()); ?>
diff --git a/app/Views/errors/html/production.php b/app/Views/errors/html/production.php index fb7b11ec..df50ec0f 100644 --- a/app/Views/errors/html/production.php +++ b/app/Views/errors/html/production.php @@ -9,9 +9,9 @@ <?= lang('Errors.whoops') ?> ' /> - asset('styles/index.css', 'css') ?> + asset('styles/index.css') ?> loggedIn()): ?> - asset('js/error.ts', 'js') ?> + asset('js/error.ts') ?> diff --git a/captainhook.json b/captainhook.json index 84a7fd69..f874e4ef 100644 --- a/captainhook.json +++ b/captainhook.json @@ -23,7 +23,7 @@ "conditions": [] }, { - "action": "composer analyse", + "action": "composer phpstan", "options": [], "conditions": [] }, diff --git a/commitlint.config.cjs b/commitlint.config.cjs index 723fa61f..5073c20d 100644 --- a/commitlint.config.cjs +++ b/commitlint.config.cjs @@ -1,3 +1 @@ -/* eslint-disable */ - module.exports = { extends: ["@commitlint/config-conventional"] }; diff --git a/composer.json b/composer.json index b00fe83f..c4eebd5d 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "adaures/castopod", - "version": "1.11.0", + "version": "1.15.5", "type": "project", "description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.", "homepage": "https://castopod.org", @@ -9,41 +9,43 @@ "php": "^8.1", "adaures/ipcat-php": "^v1.0.0", "adaures/podcast-persons-taxonomy": "^v1.0.1", - "aws/aws-sdk-php": "^3.305.4", + "aws/aws-sdk-php": "^3.369.36", "chrisjean/php-ico": "^1.0.4", - "cocur/slugify": "^v4.5.1", - "codeigniter4/framework": "v4.5.1", + "cocur/slugify": "^v4.7.1", + "codeigniter4/framework": "4.6.5", "codeigniter4/settings": "v2.2.0", - "codeigniter4/shield": "v1.0.3", + "codeigniter4/shield": "^1.2.0", "codeigniter4/tasks": "dev-develop", - "geoip2/geoip2": "v3.0.0", - "james-heinrich/getid3": "^2.0.0-beta5", - "league/commonmark": "^2.4.2", + "geoip2/geoip2": "3.3.0", + "james-heinrich/getid3": "^2.0.0-beta6", + "league/commonmark": "^2.8.0", "league/html-to-markdown": "5.1.1", - "melbahja/seo": "^v2.1.1", - "michalsn/codeigniter4-uuid": "v1.1.0", - "mpratt/embera": "^2.0.38", + "melbahja/seo": "3.0.2", + "michalsn/codeigniter4-uuid": "1.3.1", + "mpratt/embera": "^2.0.42", "opawg/user-agents-v2-php": "dev-main", - "phpseclib/phpseclib": "~2.0.47", - "vlucas/phpdotenv": "v5.6.0", + "phpseclib/phpseclib": "~2.0.51", + "vlucas/phpdotenv": "^5.6.3", "whichbrowser/parser": "^v2.1.8", - "yassinedoghri/codeigniter-icons": "dev-develop", + "yassinedoghri/codeigniter-vite": "^2.1", + "yassinedoghri/php-icons": "^1.3.0", "yassinedoghri/podcast-feed": "dev-main" }, "require-dev": { - "captainhook/captainhook": "^5.23.0", - "codeigniter/phpstan-codeigniter": "v1.4.3", - "mikey179/vfsstream": "^v1.6.11", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.67", - "phpunit/phpunit": "^10.5.20", - "rector/rector": "^1.0.4", - "symplify/coding-standard": "^12.1.4", - "symplify/easy-coding-standard": "^12.1.14" + "captainhook/captainhook": "^5.28.3", + "codeigniter/phpstan-codeigniter": "^1.5.4", + "mikey179/vfsstream": "v1.6.12", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.39", + "phpunit/phpunit": "^10.5.63", + "rector/rector": "^2.3.6", + "symplify/coding-standard": "^13.0.0", + "symplify/easy-coding-standard": "^13.0.4" }, "autoload": { "psr-4": { - "App\\": "app/" + "App\\": "app/", + "Config\\": "app/Config/" }, "exclude-from-classmap": [ "**/Database/Migrations/**" @@ -57,7 +59,7 @@ "scripts": { "dev": "php spark serve", "test": "vendor/bin/phpunit --no-coverage", - "analyse": "vendor/bin/phpstan analyse --ansi", + "phpstan": "vendor/bin/phpstan analyse --ansi", "rector": "vendor/bin/rector process --dry-run --ansi --memory-limit=2G", "rector:fix": "vendor/bin/rector process --ansi --memory-limit=2G", "style": "vendor/bin/ecs check --ansi", diff --git a/composer.lock b/composer.lock index 6615e830..6755eaf1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b0b783684ed8d36e636fac3632c78c27", + "content-hash": "ae175922494cbac88f4477946a143ae8", "packages": [ { "name": "adaures/ipcat-php", @@ -24,7 +24,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["GPL-3.0-only"], + "license": [ + "GPL-3.0-only" + ], "authors": [ { "name": "Benjamin Bellamy", @@ -56,7 +58,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Benjamin Bellamy", @@ -75,16 +79,16 @@ }, { "name": "adhocore/cli", - "version": "v1.7.1", + "version": "v1.9.4", "source": { "type": "git", "url": "https://github.com/adhocore/php-cli.git", - "reference": "3fde60a838912e71c82ed0f48048685dc32dbc77" + "reference": "474dc3d7ab139796be98b104d891476e3916b6f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/adhocore/php-cli/zipball/3fde60a838912e71c82ed0f48048685dc32dbc77", - "reference": "3fde60a838912e71c82ed0f48048685dc32dbc77", + "url": "https://api.github.com/repos/adhocore/php-cli/zipball/474dc3d7ab139796be98b104d891476e3916b6f4", + "reference": "474dc3d7ab139796be98b104d891476e3916b6f4", "shasum": "" }, "require": { @@ -95,12 +99,17 @@ }, "type": "library", "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { "Ahc\\Cli\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jitendra Adhikari", @@ -127,7 +136,7 @@ ], "support": { "issues": "https://github.com/adhocore/php-cli/issues", - "source": "https://github.com/adhocore/php-cli/tree/v1.7.1" + "source": "https://github.com/adhocore/php-cli/tree/v1.9.4" }, "funding": [ { @@ -139,20 +148,20 @@ "type": "github" } ], - "time": "2024-03-28T08:30:12+00:00" + "time": "2025-05-11T13:23:54+00:00" }, { "name": "aws/aws-crt-php", - "version": "v1.2.5", + "version": "v1.2.7", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "0ea1f04ec5aa9f049f97e012d1ed63b76834a31b" + "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/0ea1f04ec5aa9f049f97e012d1ed63b76834a31b", - "reference": "0ea1f04ec5aa9f049f97e012d1ed63b76834a31b", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/d71d9906c7bb63a28295447ba12e74723bd3730e", + "reference": "d71d9906c7bb63a28295447ba12e74723bd3730e", "shasum": "" }, "require": { @@ -167,10 +176,14 @@ }, "type": "library", "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "AWS SDK Common Runtime Team", @@ -179,25 +192,30 @@ ], "description": "AWS Common Runtime for PHP", "homepage": "https://github.com/awslabs/aws-crt-php", - "keywords": ["amazon", "aws", "crt", "sdk"], + "keywords": [ + "amazon", + "aws", + "crt", + "sdk" + ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.5" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.7" }, - "time": "2024-04-19T21:30:56+00:00" + "time": "2024-10-18T22:15:13+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.305.4", + "version": "3.369.36", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "fc26a2ebf720e0b75a353d7e8fe206796671e00b" + "reference": "2a69e7df5e03be9e08f9f73fb6a8cc9dd63b59c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/fc26a2ebf720e0b75a353d7e8fe206796671e00b", - "reference": "fc26a2ebf720e0b75a353d7e8fe206796671e00b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2a69e7df5e03be9e08f9f73fb6a8cc9dd63b59c0", + "reference": "2a69e7df5e03be9e08f9f73fb6a8cc9dd63b59c0", "shasum": "" }, "require": { @@ -205,37 +223,36 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0" + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/promises": "^2.0", + "guzzlehttp/psr7": "^2.4.5", + "mtdowling/jmespath.php": "^2.8.0", + "php": ">=8.1", + "psr/http-message": "^1.0 || ^2.0", + "symfony/filesystem": "^v5.4.45 || ^v6.4.3 || ^v7.1.0 || ^v8.0.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", - "composer/composer": "^1.10.22", + "composer/composer": "^2.7.8", "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", - "ext-pcntl": "*", "ext-sockets": "*", - "nette/neon": "^2.3", - "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" + "phpunit/phpunit": "^9.6", + "psr/cache": "^2.0 || ^3.0", + "psr/simple-cache": "^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", + "yoast/phpunit-polyfills": "^2.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", "doctrine/cache": "To use the DoctrineCacheAdapter", "ext-curl": "To send requests using cURL", "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-pcntl": "To use client-side monitoring", "ext-sockets": "To use client-side monitoring" }, "type": "library", @@ -245,13 +262,20 @@ } }, "autoload": { - "files": ["src/functions.php"], + "files": [ + "src/functions.php" + ], "psr-4": { "Aws\\": "src/" - } + }, + "exclude-from-classmap": [ + "src/data/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Amazon Web Services", @@ -271,33 +295,33 @@ "sdk" ], "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.305.4" + "source": "https://github.com/aws/aws-sdk-php/tree/3.369.36" }, - "time": "2024-04-26T18:06:31+00:00" + "time": "2026-02-17T19:45:01+00:00" }, { "name": "brick/math", - "version": "0.12.1", + "version": "0.14.8", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.2" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" }, "type": "library", "autoload": { @@ -306,7 +330,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Arbitrary-precision arithmetic library", "keywords": [ "Arbitrary-precision", @@ -325,7 +351,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" + "source": "https://github.com/brick/math/tree/0.14.8" }, "funding": [ { @@ -333,7 +359,7 @@ "type": "github" } ], - "time": "2023-11-29T23:19:16+00:00" + "time": "2026-02-10T14:33:43+00:00" }, { "name": "chrisjean/php-ico", @@ -355,10 +381,14 @@ }, "type": "library", "autoload": { - "classmap": ["class-php-ico.php"] + "classmap": [ + "class-php-ico.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["GPL-2.0+"], + "license": [ + "GPL-2.0+" + ], "authors": [ { "name": "Chris Jean", @@ -368,7 +398,10 @@ ], "description": "An easy-to-use library to generate valid ICO files.", "homepage": "https://github.com/chrisbliss18/php-ico", - "keywords": ["favicon", "ico"], + "keywords": [ + "favicon", + "ico" + ], "support": { "issues": "https://github.com/chrisbliss18/php-ico/issues", "source": "https://github.com/chrisbliss18/php-ico" @@ -377,21 +410,21 @@ }, { "name": "cocur/slugify", - "version": "v4.5.1", + "version": "v4.7.1", "source": { "type": "git", "url": "https://github.com/cocur/slugify.git", - "reference": "7c6e088228b9f082050876ae8b0cd287b117b840" + "reference": "a860dab2b9f5f37775fc6414d4f049434848165f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cocur/slugify/zipball/7c6e088228b9f082050876ae8b0cd287b117b840", - "reference": "7c6e088228b9f082050876ae8b0cd287b117b840", + "url": "https://api.github.com/repos/cocur/slugify/zipball/a860dab2b9f5f37775fc6414d4f049434848165f", + "reference": "a860dab2b9f5f37775fc6414d4f049434848165f", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "symfony/config": "<3.4 || >=4,<4.3", @@ -424,7 +457,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Florian Eckerstorfer", @@ -437,43 +472,46 @@ } ], "description": "Converts a string into a slug.", - "keywords": ["slug", "slugify"], + "keywords": [ + "slug", + "slugify" + ], "support": { "issues": "https://github.com/cocur/slugify/issues", - "source": "https://github.com/cocur/slugify/tree/v4.5.1" + "source": "https://github.com/cocur/slugify/tree/v4.7.1" }, - "time": "2023-09-17T07:26:20+00:00" + "time": "2025-11-27T18:57:36+00:00" }, { "name": "codeigniter4/framework", - "version": "v4.5.1", + "version": "v4.6.5", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "9b2cd730db29d14ac6e760fb15c4bcac15184ec4" + "reference": "116e0919590a412c09d2b9e4f6b8addda18224d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/9b2cd730db29d14ac6e760fb15c4bcac15184ec4", - "reference": "9b2cd730db29d14ac6e760fb15c4bcac15184ec4", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/116e0919590a412c09d2b9e4f6b8addda18224d8", + "reference": "116e0919590a412c09d2b9e4f6b8addda18224d8", "shasum": "" }, "require": { "ext-intl": "*", "ext-mbstring": "*", - "laminas/laminas-escaper": "^2.13", + "laminas/laminas-escaper": "^2.17", "php": "^8.1", "psr/log": "^3.0" }, "require-dev": { "codeigniter/coding-standard": "^1.7", - "fakerphp/faker": "^1.9", + "fakerphp/faker": "^1.24", "friendsofphp/php-cs-fixer": "^3.47.1", - "kint-php/kint": "^5.0.4", - "mikey179/vfsstream": "^1.6", + "kint-php/kint": "^6.1", + "mikey179/vfsstream": "^1.6.12", "nexusphp/cs-config": "^3.6", - "phpunit/phpunit": "^10.5.16", - "predis/predis": "^1.1 || ^2.0" + "phpunit/phpunit": "^10.5.16 || ^11.2", + "predis/predis": "^3.0" }, "suggest": { "ext-curl": "If you use CURLRequest class", @@ -501,10 +539,14 @@ "psr-4": { "CodeIgniter\\": "system/" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "The CodeIgniter framework v4", "homepage": "https://codeigniter.com", "support": { @@ -512,7 +554,73 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2024-04-14T04:18:29+00:00" + "time": "2026-02-01T17:59:34+00:00" + }, + { + "name": "codeigniter4/queue", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/codeigniter4/queue.git", + "reference": "b44386ad29f0a2124e59582ef5ba170788b926ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/codeigniter4/queue/zipball/b44386ad29f0a2124e59582ef5ba170788b926ed", + "reference": "b44386ad29f0a2124e59582ef5ba170788b926ed", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "require-dev": { + "codeigniter4/devkit": "^1.3", + "codeigniter4/framework": "^4.3", + "php-amqplib/php-amqplib": "^3.7", + "phpstan/phpstan-strict-rules": "^2.0", + "predis/predis": "^2.0" + }, + "suggest": { + "ext-redis": "If you want to use RedisHandler", + "php-amqplib/php-amqplib": "If you want to use RabbitMQHandler", + "predis/predis": "If you want to use PredisHandler" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "CodeIgniter\\Queue\\": "src" + }, + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "michalsn", + "homepage": "https://github.com/michalsn", + "role": "Developer" + } + ], + "description": "Queues for CodeIgniter 4 framework", + "homepage": "https://github.com/codeigniter4/queue", + "keywords": [ + "codeigniter", + "codeigniter4", + "database", + "predis", + "queue", + "redis" + ], + "support": { + "issues": "https://github.com/codeigniter4/queue/issues", + "source": "https://github.com/codeigniter4/queue/tree/develop" + }, + "time": "2026-02-15T08:22:24+00:00" }, { "name": "codeigniter4/settings", @@ -541,10 +649,14 @@ "psr-4": { "CodeIgniter\\Settings\\": "src" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Lonnie Ezell", @@ -554,7 +666,11 @@ ], "description": "Settings library for CodeIgniter 4", "homepage": "https://github.com/codeigniter4/settings", - "keywords": ["Settings", "codeigniter", "codeigniter4"], + "keywords": [ + "Settings", + "codeigniter", + "codeigniter4" + ], "support": { "issues": "https://github.com/codeigniter4/settings/issues", "source": "https://github.com/codeigniter4/settings/tree/v2.2.0" @@ -563,35 +679,33 @@ }, { "name": "codeigniter4/shield", - "version": "v1.0.3", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/codeigniter4/shield.git", - "reference": "3fbac7a3da41ebaac7d51708244f68df596409f0" + "reference": "2d1b2177a914dcd490f54a6706792eacabd9e3e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/shield/zipball/3fbac7a3da41ebaac7d51708244f68df596409f0", - "reference": "3fbac7a3da41ebaac7d51708244f68df596409f0", + "url": "https://api.github.com/repos/codeigniter4/shield/zipball/2d1b2177a914dcd490f54a6706792eacabd9e3e8", + "reference": "2d1b2177a914dcd490f54a6706792eacabd9e3e8", "shasum": "" }, "require": { "codeigniter4/settings": "^2.1", - "php": "^7.4.3 || ^8.0" + "php": "^8.1" }, "provide": { "codeigniter4/authentication-implementation": "1.0" }, "require-dev": { "codeigniter/phpstan-codeigniter": "^1.3", - "codeigniter4/devkit": "^1.0", + "codeigniter4/devkit": "^1.3", "codeigniter4/framework": ">=4.3.5 <4.5.0 || ^4.5.1", "firebase/php-jwt": "^6.4", "mikey179/vfsstream": "^1.6.7", "mockery/mockery": "^1.0", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan-strict-rules": "^1.5", - "rector/rector": "1.0.4" + "phpstan/phpstan-strict-rules": "^2.0" }, "suggest": { "ext-curl": "Required to use the password validation rule via PwnedValidator class.", @@ -602,10 +716,14 @@ "psr-4": { "CodeIgniter\\Shield\\": "src" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Lonnie Ezell", @@ -628,7 +746,7 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/shield" }, - "time": "2024-04-14T08:57:57+00:00" + "time": "2025-07-14T10:26:03+00:00" }, { "name": "codeigniter4/tasks", @@ -636,23 +754,23 @@ "source": { "type": "git", "url": "https://github.com/codeigniter4/tasks.git", - "reference": "7cfd0918765854b68861f9470eff3d8b9e4e537d" + "reference": "8d0c0f83d48dd1ac322d30a4c51ff309ab5368e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/7cfd0918765854b68861f9470eff3d8b9e4e537d", - "reference": "7cfd0918765854b68861f9470eff3d8b9e4e537d", + "url": "https://api.github.com/repos/codeigniter4/tasks/zipball/8d0c0f83d48dd1ac322d30a4c51ff309ab5368e0", + "reference": "8d0c0f83d48dd1ac322d30a4c51ff309ab5368e0", "shasum": "" }, "require": { + "codeigniter4/queue": "dev-develop", "codeigniter4/settings": "^2.0", "ext-json": "*", - "php": "^7.4 || ^8.0" + "php": "^8.2" }, "require-dev": { - "codeigniter4/devkit": "^1.0", - "codeigniter4/framework": "^4.1", - "rector/rector": "1.0.4" + "codeigniter4/devkit": "^1.3", + "codeigniter4/framework": "^4.3" }, "default-branch": true, "type": "library", @@ -660,7 +778,9 @@ "psr-4": { "CodeIgniter\\Tasks\\": "src" }, - "exclude-from-classmap": ["**/Database/Migrations/**"] + "exclude-from-classmap": [ + "**/Database/Migrations/**" + ] }, "autoload-dev": { "psr-4": { @@ -668,14 +788,18 @@ } }, "scripts": { - "post-update-cmd": ["bash admin/setup.sh"], + "post-update-cmd": [ + "bash admin/setup.sh" + ], "analyze": [ "Composer\\Config::disableProcessTimeout", "phpstan analyze", "psalm", "rector process --dry-run" ], - "sa": ["@analyze"], + "sa": [ + "@analyze" + ], "ci": [ "Composer\\Config::disableProcessTimeout", "@cs", @@ -684,18 +808,34 @@ "@analyze", "@test" ], - "cs": ["php-cs-fixer fix --ansi --verbose --dry-run --diff"], - "cs-fix": ["php-cs-fixer fix --ansi --verbose --diff"], - "style": ["@cs-fix"], - "deduplicate": ["phpcpd src/ tests/"], - "inspect": ["deptrac analyze --cache-file=build/deptrac.cache"], + "cs": [ + "php-cs-fixer fix --ansi --verbose --dry-run --diff" + ], + "cs-fix": [ + "php-cs-fixer fix --ansi --verbose --diff" + ], + "style": [ + "@cs-fix" + ], + "deduplicate": [ + "phpcpd src/ tests/" + ], + "inspect": [ + "deptrac analyze --cache-file=build/deptrac.cache" + ], "mutate": [ "infection --threads=2 --skip-initial-tests --coverage=build/phpunit" ], - "retool": ["retool"], - "test": ["phpunit"] + "retool": [ + "retool" + ], + "test": [ + "phpunit" + ] }, - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Lonnie Ezell", @@ -705,25 +845,30 @@ ], "description": "Task Scheduler for CodeIgniter 4", "homepage": "https://github.com/codeigniter4/tasks", - "keywords": ["codeigniter", "codeigniter4", "cron", "task scheduling"], + "keywords": [ + "codeigniter", + "codeigniter4", + "cron", + "task scheduling" + ], "support": { "source": "https://github.com/codeigniter4/tasks/tree/develop", "issues": "https://github.com/codeigniter4/tasks/issues" }, - "time": "2024-04-06T08:58:00+00:00" + "time": "2026-02-15T08:22:03+00:00" }, { "name": "composer/ca-bundle", - "version": "1.5.0", + "version": "1.5.10", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "0c5ccfcfea312b5c5a190a21ac5cef93f74baf99" + "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/0c5ccfcfea312b5c5a190a21ac5cef93f74baf99", - "reference": "0c5ccfcfea312b5c5a190a21ac5cef93f74baf99", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/961a5e4056dd2e4a2eedcac7576075947c28bf63", + "reference": "961a5e4056dd2e4a2eedcac7576075947c28bf63", "shasum": "" }, "require": { @@ -733,8 +878,8 @@ }, "require-dev": { "phpstan/phpstan": "^1.10", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", + "phpunit/phpunit": "^8 || ^9", + "psr/log": "^1.0 || ^2.0 || ^3.0", "symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", @@ -749,7 +894,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jordi Boggiano", @@ -758,11 +905,17 @@ } ], "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": ["cabundle", "cacert", "certificate", "ssl", "tls"], + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.0" + "source": "https://github.com/composer/ca-bundle/tree/1.5.10" }, "funding": [ { @@ -772,26 +925,22 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-03-15T14:00:32+00:00" + "time": "2025-12-08T15:06:51+00:00" }, { "name": "dflydev/dot-access-data", - "version": "v3.0.2", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", "shasum": "" }, "require": { @@ -816,7 +965,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Dragonfly Development Inc.", @@ -841,38 +992,43 @@ ], "description": "Given a deep data structure, access data by dot notation.", "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": ["access", "data", "dot", "notation"], + "keywords": [ + "access", + "data", + "dot", + "notation" + ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" }, - "time": "2022-10-27T11:44:00+00:00" + "time": "2024-07-08T12:26:09+00:00" }, { "name": "geoip2/geoip2", - "version": "v3.0.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/maxmind/GeoIP2-php.git", - "reference": "1a802ce9356cdd1c6b681c030fd9563750e11e6a" + "reference": "49fceddd694295e76e970a32848e03bb19e56b42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/1a802ce9356cdd1c6b681c030fd9563750e11e6a", - "reference": "1a802ce9356cdd1c6b681c030fd9563750e11e6a", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/49fceddd694295e76e970a32848e03bb19e56b42", + "reference": "49fceddd694295e76e970a32848e03bb19e56b42", "shasum": "" }, "require": { "ext-json": "*", - "maxmind-db/reader": "^1.11.1", - "maxmind/web-service-common": "~0.8", + "maxmind-db/reader": "^1.13.0", + "maxmind/web-service-common": "~0.11", "php": ">=8.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", "phpunit/phpunit": "^10.0", - "squizlabs/php_codesniffer": "3.*" + "squizlabs/php_codesniffer": "4.*" }, "type": "library", "autoload": { @@ -881,7 +1037,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Gregory J. Oschwald", @@ -891,33 +1049,39 @@ ], "description": "MaxMind GeoIP2 PHP API", "homepage": "https://github.com/maxmind/GeoIP2-php", - "keywords": ["IP", "geoip", "geoip2", "geolocation", "maxmind"], + "keywords": [ + "IP", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], "support": { "issues": "https://github.com/maxmind/GeoIP2-php/issues", - "source": "https://github.com/maxmind/GeoIP2-php/tree/v3.0.0" + "source": "https://github.com/maxmind/GeoIP2-php/tree/v3.3.0" }, - "time": "2023-12-04T17:16:34+00:00" + "time": "2025-11-20T18:50:15+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.2", + "version": "v1.1.4", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", - "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2" + "phpoption/phpoption": "^1.9.5" }, "require-dev": { - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, "type": "library", "autoload": { @@ -926,7 +1090,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -944,7 +1110,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" }, "funding": [ { @@ -956,26 +1122,26 @@ "type": "tidelift" } ], - "time": "2023-11-12T22:16:48+00:00" + "time": "2025-12-27T19:43:20+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -986,9 +1152,9 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1004,13 +1170,17 @@ } }, "autoload": { - "files": ["src/functions_include.php"], + "files": [ + "src/functions_include.php" + ], "psr-4": { "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1062,7 +1232,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -1078,20 +1248,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:35:24+00:00" + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.2", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -1099,7 +1269,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { @@ -1114,7 +1284,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1138,10 +1310,12 @@ } ], "description": "Guzzle promises library", - "keywords": ["promise"], + "keywords": [ + "promise" + ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -1157,20 +1331,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:19:20+00:00" + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -1185,8 +1359,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1204,7 +1378,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1255,7 +1431,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -1271,7 +1447,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2025-08-23T21:21:41+00:00" }, { "name": "james-heinrich/getid3", @@ -1323,7 +1499,11 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["GPL-1.0-or-later", "LGPL-3.0-only", "MPL-2.0"], + "license": [ + "GPL-1.0-or-later", + "LGPL-3.0-only", + "MPL-2.0" + ], "authors": [ { "name": "James Heinrich", @@ -1340,7 +1520,14 @@ ], "description": "Extract and write useful information to/from popular multimedia file formats", "homepage": "https://www.getid3.org/", - "keywords": ["audio", "codecs", "id3", "metadata", "tags", "video"], + "keywords": [ + "audio", + "codecs", + "id3", + "metadata", + "tags", + "video" + ], "support": { "issues": "https://github.com/JamesHeinrich/getID3/issues", "source": "https://github.com/JamesHeinrich/getID3/tree/v2.0.0-beta6" @@ -1349,33 +1536,32 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.13.0", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" + "reference": "06f211dfffff18d91844c1f55250d5d13c007e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/06f211dfffff18d91844c1f55250d5d13c007e18", + "reference": "06f211dfffff18d91844c1f55250d5d13c007e18", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.0", - "laminas/laminas-coding-standard": "~2.5.0", - "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.7", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.9" + "infection/infection": "^0.31.0", + "laminas/laminas-coding-standard": "~3.1.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "type": "library", "autoload": { @@ -1384,10 +1570,15 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", "homepage": "https://laminas.dev", - "keywords": ["escaper", "laminas"], + "keywords": [ + "escaper", + "laminas" + ], "support": { "chat": "https://laminas.dev/chat", "docs": "https://docs.laminas.dev/laminas-escaper/", @@ -1402,20 +1593,20 @@ "type": "community_bridge" } ], - "time": "2023-10-10T08:35:13+00:00" + "time": "2025-10-14T18:31:13+00:00" }, { "name": "league/commonmark", - "version": "2.4.2", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", - "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", "shasum": "" }, "require": { @@ -1428,8 +1619,8 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.3", - "commonmark/commonmark.js": "0.30.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", "erusev/parsedown": "^1.0", @@ -1440,10 +1631,11 @@ "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 || ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -1451,7 +1643,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -1460,7 +1652,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Colin O'Dell", @@ -1506,7 +1700,7 @@ "type": "tidelift" } ], - "time": "2024-02-02T11:59:32+00:00" + "time": "2025-11-26T21:48:24+00:00" }, { "name": "league/config", @@ -1546,7 +1740,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Colin O'Dell", @@ -1615,7 +1811,9 @@ "unleashedtech/php-coding-standard": "^2.7 || ^3.0", "vimeo/psalm": "^4.22 || ^5.0" }, - "bin": ["bin/html-to-markdown"], + "bin": [ + "bin/html-to-markdown" + ], "type": "library", "extra": { "branch-alias": { @@ -1628,7 +1826,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Colin O'Dell", @@ -1645,7 +1845,10 @@ ], "description": "An HTML-to-markdown conversion helper for PHP", "homepage": "https://github.com/thephpleague/html-to-markdown", - "keywords": ["html", "markdown"], + "keywords": [ + "html", + "markdown" + ], "support": { "issues": "https://github.com/thephpleague/html-to-markdown/issues", "source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1" @@ -1672,36 +1875,35 @@ }, { "name": "maxmind-db/reader", - "version": "v1.11.1", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", - "reference": "1e66f73ffcf25e17c7a910a1317e9720a95497c7" + "reference": "2194f58d0f024ce923e685cdf92af3daf9951908" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/1e66f73ffcf25e17c7a910a1317e9720a95497c7", - "reference": "1e66f73ffcf25e17c7a910a1317e9720a95497c7", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/2194f58d0f024ce923e685cdf92af3daf9951908", + "reference": "2194f58d0f024ce923e685cdf92af3daf9951908", "shasum": "" }, "require": { "php": ">=7.2" }, "conflict": { - "ext-maxminddb": "<1.11.1,>=2.0.0" + "ext-maxminddb": "<1.11.1 || >=2.0.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "3.*", - "php-coveralls/php-coveralls": "^2.1", "phpstan/phpstan": "*", - "phpunit/phpcov": ">=6.0.0", "phpunit/phpunit": ">=8.0.0,<10.0.0", - "squizlabs/php_codesniffer": "3.*" + "squizlabs/php_codesniffer": "4.*" }, "suggest": { "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", - "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" + "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups", + "maxmind-db/reader-ext": "C extension for significantly faster IP lookups (install via PIE: pie install maxmind-db/reader-ext)" }, "type": "library", "autoload": { @@ -1710,7 +1912,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Gregory J. Oschwald", @@ -1720,38 +1924,44 @@ ], "description": "MaxMind DB Reader API", "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php", - "keywords": ["database", "geoip", "geoip2", "geolocation", "maxmind"], + "keywords": [ + "database", + "geoip", + "geoip2", + "geolocation", + "maxmind" + ], "support": { "issues": "https://github.com/maxmind/MaxMind-DB-Reader-php/issues", - "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.11.1" + "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.13.1" }, - "time": "2023-12-02T00:09:23+00:00" + "time": "2025-11-21T22:24:26+00:00" }, { "name": "maxmind/web-service-common", - "version": "v0.9.0", + "version": "v0.11.1", "source": { "type": "git", "url": "https://github.com/maxmind/web-service-common-php.git", - "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53" + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/4dc5a3e8df38aea4ca3b1096cee3a038094e9b53", - "reference": "4dc5a3e8df38aea4ca3b1096cee3a038094e9b53", + "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/c309236b5a5555b96cf560089ec3cead12d845d2", + "reference": "c309236b5a5555b96cf560089ec3cead12d845d2", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0.3", "ext-curl": "*", "ext-json": "*", - "php": ">=7.2" + "php": ">=8.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "3.*", "phpstan/phpstan": "*", - "phpunit/phpunit": "^8.0 || ^9.0", - "squizlabs/php_codesniffer": "3.*" + "phpunit/phpunit": "^10.0", + "squizlabs/php_codesniffer": "4.*" }, "type": "library", "autoload": { @@ -1761,7 +1971,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Gregory Oschwald", @@ -1772,32 +1984,32 @@ "homepage": "https://github.com/maxmind/web-service-common-php", "support": { "issues": "https://github.com/maxmind/web-service-common-php/issues", - "source": "https://github.com/maxmind/web-service-common-php/tree/v0.9.0" + "source": "https://github.com/maxmind/web-service-common-php/tree/v0.11.1" }, - "time": "2022-03-28T17:43:20+00:00" + "time": "2026-01-13T17:56:03+00:00" }, { "name": "melbahja/seo", - "version": "v2.1.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/melbahja/seo.git", - "reference": "22b0b3273bf9c8867cadf018e4daa3e426525929" + "reference": "e8d36b2c46e1b05af957c90beea19090f64d5bf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/melbahja/seo/zipball/22b0b3273bf9c8867cadf018e4daa3e426525929", - "reference": "22b0b3273bf9c8867cadf018e4daa3e426525929", + "url": "https://api.github.com/repos/melbahja/seo/zipball/e8d36b2c46e1b05af957c90beea19090f64d5bf9", + "reference": "e8d36b2c46e1b05af957c90beea19090f64d5bf9", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-xml": "*", - "php": ">=7.2" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "autoload": { @@ -1806,7 +2018,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Mohamed ELbahja", @@ -1815,40 +2029,46 @@ "role": "Developer" } ], - "description": "Simple PHP library to help developers 🍻 do better on-page SEO optimization", + "description": "SEO library for PHP is a simple PHP library to help developers 🍻 do better on-page SEO optimizations.", "keywords": [ - "PHP7", + "images sitemaps", + "index sitemaps", "meta tags", + "news sitemaps", "open graph", + "php8", + "rich results", "schema.org", "search engine optimization", "seo", "sitemap index", "sitemap.xml", "sitemaps", - "twitter tags" + "twitter tags", + "video sitemaps" ], "support": { "issues": "https://github.com/melbahja/seo/issues", - "source": "https://github.com/melbahja/seo/tree/v2.1.1" + "source": "https://github.com/melbahja/seo/tree/v3.0.2" }, - "time": "2022-09-11T11:16:07+00:00" + "time": "2026-02-08T12:48:54+00:00" }, { "name": "michalsn/codeigniter4-uuid", - "version": "v1.1.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/michalsn/codeigniter4-uuid.git", - "reference": "051cf47a36eece304f166a63e3ffcdae0ca186d4" + "reference": "31457ec91f54e3c981762d9f06e87e417869c380" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/michalsn/codeigniter4-uuid/zipball/051cf47a36eece304f166a63e3ffcdae0ca186d4", - "reference": "051cf47a36eece304f166a63e3ffcdae0ca186d4", + "url": "https://api.github.com/repos/michalsn/codeigniter4-uuid/zipball/31457ec91f54e3c981762d9f06e87e417869c380", + "reference": "31457ec91f54e3c981762d9f06e87e417869c380", "shasum": "" }, "require": { + "ext-ctype": "*", "php": ">=8.1", "ramsey/uuid": "^4.7" }, @@ -1863,7 +2083,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "michalsn", @@ -1873,25 +2095,30 @@ ], "description": "UUID package for CodeIgniter 4 with support for Model and Entity.", "homepage": "https://github.com/michalsn/codeigniter4-uuid", - "keywords": ["codeigniter4", "entity", "model", "uuid"], + "keywords": [ + "codeigniter4", + "entity", + "model", + "uuid" + ], "support": { "issues": "https://github.com/michalsn/codeigniter4-uuid/issues", - "source": "https://github.com/michalsn/codeigniter4-uuid/tree/v1.1.0" + "source": "https://github.com/michalsn/codeigniter4-uuid/tree/v1.3.1" }, - "time": "2024-04-22T14:12:58+00:00" + "time": "2025-10-16T10:20:23+00:00" }, { "name": "mpratt/embera", - "version": "2.0.38", + "version": "2.0.42", "source": { "type": "git", "url": "https://github.com/mpratt/Embera.git", - "reference": "25d6b9385e27cad9618bdde8355226247d39671d" + "reference": "afa728339c6f078c803c9277a5054ca241b3c469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mpratt/Embera/zipball/25d6b9385e27cad9618bdde8355226247d39671d", - "reference": "25d6b9385e27cad9618bdde8355226247d39671d", + "url": "https://api.github.com/repos/mpratt/Embera/zipball/afa728339c6f078c803c9277a5054ca241b3c469", + "reference": "afa728339c6f078c803c9277a5054ca241b3c469", "shasum": "" }, "require": { @@ -1900,7 +2127,8 @@ }, "require-dev": { "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.0||^10.0", + "symfony/yaml": "^2.1" }, "suggest": { "ext-curl": "Fetch data using curl instead of using file_get_contents" @@ -1912,7 +2140,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Michael Pratt", @@ -1938,7 +2168,7 @@ ], "support": { "issues": "https://github.com/mpratt/Embera/issues", - "source": "https://github.com/mpratt/Embera/tree/2.0.38" + "source": "https://github.com/mpratt/Embera/tree/2.0.42" }, "funding": [ { @@ -1946,20 +2176,20 @@ "type": "paypal" } ], - "time": "2024-04-13T04:35:29+00:00" + "time": "2025-01-04T06:07:59+00:00" }, { "name": "mtdowling/jmespath.php", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc", "shasum": "" }, "require": { @@ -1970,21 +2200,27 @@ "composer/xdebug-handler": "^3.0.3", "phpunit/phpunit": "^8.5.33" }, - "bin": ["bin/jp.php"], + "bin": [ + "bin/jp.php" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "files": ["src/JmesPath.php"], + "files": [ + "src/JmesPath.php" + ], "psr-4": { "JmesPath\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Graham Campbell", @@ -1998,47 +2234,59 @@ } ], "description": "Declaratively specify how to extract elements from a JSON document", - "keywords": ["json", "jsonpath"], + "keywords": [ + "json", + "jsonpath" + ], "support": { "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" + "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" }, - "time": "2023-08-25T10:54:48+00:00" + "time": "2024-09-04T18:46:31+00:00" }, { "name": "nette/schema", - "version": "v1.2.5", + "version": "v1.3.4", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "url": "https://api.github.com/repos/nette/schema/zipball/086497a2f34b82fede9b5a41cc8e131d087cd8f7", + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": "7.1 - 8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.5" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "nette/tester": "^2.6", + "phpstan/phpstan": "^2.0@stable", + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { - "classmap": ["src/"] + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], "authors": [ { "name": "David Grudl", @@ -2051,38 +2299,44 @@ ], "description": "📐 Nette Schema: validating data structures against a given Schema.", "homepage": "https://nette.org", - "keywords": ["config", "nette"], + "keywords": [ + "config", + "nette" + ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.5" + "source": "https://github.com/nette/schema/tree/v1.3.4" }, - "time": "2023-10-05T20:37:59+00:00" + "time": "2026-02-08T02:54:00+00:00" }, { "name": "nette/utils", - "version": "v3.2.10", + "version": "v4.1.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2" + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/a4175c62652f2300c8017fb7e640f9ccb11648d2", - "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", "shasum": "" }, "require": { - "php": ">=7.2 <8.4" + "php": "8.2 - 8.5" }, "conflict": { - "nette/di": "<3.0.6" + "nette/finder": "<3", + "nette/schema": "<1.2.2" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" + "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.5", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.9" }, "suggest": { "ext-gd": "to use Image", @@ -2090,20 +2344,28 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "4.1-dev" } }, "autoload": { - "classmap": ["src/"] + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause", "GPL-2.0-only", "GPL-3.0-only"], + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], "authors": [ { "name": "David Grudl", @@ -2134,58 +2396,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v3.2.10" + "source": "https://github.com/nette/utils/tree/v4.1.3" }, - "time": "2023-07-30T15:38:18+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.19.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.1" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": ["bin/php-parse"], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": ["parser", "php"], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" - }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2026-02-13T03:05:33+00:00" }, { "name": "opawg/user-agents-v2-php", @@ -2209,7 +2422,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Benjamin Bellamy", @@ -2227,16 +2442,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.2", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", "shasum": "" }, "require": { @@ -2244,13 +2459,13 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" }, "type": "library", "extra": { "bamarni-bin": { "bin-links": true, - "forward-command": true + "forward-command": false }, "branch-alias": { "dev-master": "1.9-dev" @@ -2262,7 +2477,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["Apache-2.0"], + "license": [ + "Apache-2.0" + ], "authors": [ { "name": "Johannes M. Schmitt", @@ -2276,10 +2493,15 @@ } ], "description": "Option Type for PHP", - "keywords": ["language", "option", "php", "type"], + "keywords": [ + "language", + "option", + "php", + "type" + ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" }, "funding": [ { @@ -2291,20 +2513,20 @@ "type": "tidelift" } ], - "time": "2023-11-12T21:59:55+00:00" + "time": "2025-12-27T19:41:33+00:00" }, { "name": "phpseclib/phpseclib", - "version": "2.0.47", + "version": "2.0.51", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "b7d7d90ee7df7f33a664b4aea32d50a305d35adb" + "reference": "ed661e7cdaeb8c419e609e2f3203551a13c2ed48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/b7d7d90ee7df7f33a664b4aea32d50a305d35adb", - "reference": "b7d7d90ee7df7f33a664b4aea32d50a305d35adb", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/ed661e7cdaeb8c419e609e2f3203551a13c2ed48", + "reference": "ed661e7cdaeb8c419e609e2f3203551a13c2ed48", "shasum": "" }, "require": { @@ -2324,13 +2546,17 @@ }, "type": "library", "autoload": { - "files": ["phpseclib/bootstrap.php"], + "files": [ + "phpseclib/bootstrap.php" + ], "psr-4": { "phpseclib\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jim Wigginton", @@ -2381,7 +2607,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/2.0.47" + "source": "https://github.com/phpseclib/phpseclib/tree/2.0.51" }, "funding": [ { @@ -2397,7 +2623,7 @@ "type": "tidelift" } ], - "time": "2024-02-26T04:55:38+00:00" + "time": "2026-01-27T09:11:52+00:00" }, { "name": "psr/cache", @@ -2428,7 +2654,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2436,7 +2664,11 @@ } ], "description": "Common interface for caching libraries", - "keywords": ["cache", "psr", "psr-6"], + "keywords": [ + "cache", + "psr", + "psr-6" + ], "support": { "source": "https://github.com/php-fig/cache/tree/3.0.0" }, @@ -2471,7 +2703,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2479,7 +2713,11 @@ } ], "description": "Standard interfaces for event handling.", - "keywords": ["events", "psr", "psr-14"], + "keywords": [ + "events", + "psr", + "psr-14" + ], "support": { "issues": "https://github.com/php-fig/event-dispatcher/issues", "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" @@ -2516,7 +2754,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2525,7 +2765,12 @@ ], "description": "Common interface for HTTP clients", "homepage": "https://github.com/php-fig/http-client", - "keywords": ["http", "http-client", "psr", "psr-18"], + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], "support": { "source": "https://github.com/php-fig/http-client" }, @@ -2533,20 +2778,20 @@ }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -2561,14 +2806,16 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -2580,9 +2827,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", @@ -2613,7 +2860,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2637,16 +2886,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": { @@ -2664,7 +2913,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -2673,11 +2924,15 @@ ], "description": "Common interface for logging libraries", "homepage": "https://github.com/php-fig/log", - "keywords": ["log", "psr", "psr-3"], + "keywords": [ + "log", + "psr", + "psr-3" + ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "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": "ralouphie/getallheaders", @@ -2702,10 +2957,14 @@ }, "type": "library", "autoload": { - "files": ["src/getallheaders.php"] + "files": [ + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Ralph Khattar", @@ -2721,16 +2980,16 @@ }, { "name": "ramsey/collection", - "version": "2.0.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { @@ -2738,25 +2997,22 @@ }, "require-dev": { "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { @@ -2773,7 +3029,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Ben Ramsey", @@ -2782,40 +3040,36 @@ } ], "description": "A PHP library for representing and manipulating collections.", - "keywords": ["array", "collection", "hash", "map", "queue", "set"], + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { "name": "ramsey/uuid", - "version": "4.7.6", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + "reference": "8429c78ca35a09f27565311b98101e2826affde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -2823,26 +3077,23 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "captainhook/captainhook": "^5.10", + "captainhook/captainhook": "^5.25", "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -2858,43 +3109,41 @@ } }, "autoload": { - "files": ["src/functions.php"], + "files": [ + "src/functions.php" + ], "psr-4": { "Ramsey\\Uuid\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": ["guid", "identifier", "uuid"], + "keywords": [ + "guid", + "identifier", + "uuid" + ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/ramsey/uuid/tree/4.9.2" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2025-12-14T04:43:48+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -2902,19 +3151,23 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-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.6-dev" } }, "autoload": { - "files": ["function.php"] + "files": [ + "function.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -2928,7 +3181,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.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -2944,24 +3197,94 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "name": "symfony/filesystem", + "version": "v7.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "url": "https://github.com/symfony/filesystem.git", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.4.0" + }, + "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": "2025-11-27T13:27:24+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -2972,18 +3295,22 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Gert de Pagter", @@ -2996,9 +3323,14 @@ ], "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", - "keywords": ["compatibility", "ctype", "polyfill", "portable"], + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -3009,29 +3341,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": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "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/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -3042,18 +3379,22 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -3066,9 +3407,15 @@ ], "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", - "keywords": ["compatibility", "mbstring", "polyfill", "portable", "shim"], + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -3079,46 +3426,56 @@ "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": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { - "php": ">=7.1" + "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": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, - "classmap": ["Resources/stubs"] + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Ion Bazan", @@ -3135,9 +3492,14 @@ ], "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", - "keywords": ["compatibility", "polyfill", "portable", "shim"], + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -3148,35 +3510,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": "2025-01-02T08:10:11+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.6.0", + "version": "v5.6.3", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + "reference": "955e7815d677a3eaa7075231212f2110983adecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.2", + "graham-campbell/result-type": "^1.1.4", "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", @@ -3190,7 +3556,7 @@ "extra": { "bamarni-bin": { "bin-links": true, - "forward-command": true + "forward-command": false }, "branch-alias": { "dev-master": "5.6-dev" @@ -3202,7 +3568,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Graham Campbell", @@ -3216,10 +3584,14 @@ } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": ["dotenv", "env", "environment"], + "keywords": [ + "dotenv", + "env", + "environment" + ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" }, "funding": [ { @@ -3231,7 +3603,7 @@ "type": "tidelift" } ], - "time": "2023-11-12T22:43:29+00:00" + "time": "2025-12-27T19:49:13+00:00" }, { "name": "whichbrowser/parser", @@ -3266,11 +3638,15 @@ "type": "library", "autoload": { "psr-4": { - "WhichBrowser\\": ["src/"] + "WhichBrowser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Niels Leenheer", @@ -3280,7 +3656,12 @@ ], "description": "Useragent sniffing library for PHP", "homepage": "http://whichbrowser.net", - "keywords": ["browser", "sniffing", "ua", "useragent"], + "keywords": [ + "browser", + "sniffing", + "ua", + "useragent" + ], "support": { "issues": "https://github.com/WhichBrowser/Parser-PHP/issues", "source": "https://github.com/WhichBrowser/Parser-PHP/tree/v2.1.8" @@ -3288,95 +3669,108 @@ "time": "2024-04-17T12:47:41+00:00" }, { - "name": "yassinedoghri/codeigniter-icons", - "version": "dev-develop", + "name": "yassinedoghri/codeigniter-vite", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/yassinedoghri/codeigniter-icons.git", - "reference": "76526f22734df74651e784de6633962a05dcbd97" + "url": "https://github.com/yassinedoghri/codeigniter-vite.git", + "reference": "95c1dd30b716e3204ce981aa564202b299f9c8a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yassinedoghri/codeigniter-icons/zipball/76526f22734df74651e784de6633962a05dcbd97", - "reference": "76526f22734df74651e784de6633962a05dcbd97", + "url": "https://api.github.com/repos/yassinedoghri/codeigniter-vite/zipball/95c1dd30b716e3204ce981aa564202b299f9c8a5", + "reference": "95c1dd30b716e3204ce981aa564202b299f9c8a5", "shasum": "" }, "require": { - "php": ">=8.1", - "yassinedoghri/php-icons": "dev-develop" - }, - "require-dev": { - "codeigniter/phpstan-codeigniter": "^v1.4.3", - "codeigniter4/devkit": "^v1.2.2", - "codeigniter4/framework": "^4.3.5", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.66", - "rector/rector": "^1.0.4", - "symplify/coding-standard": "^12.1.4", - "symplify/easy-coding-standard": "^12.1.14" - }, - "default-branch": true, - "type": "library", - "autoload": { - "psr-4": { - "CodeIgniterIcons\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], - "authors": [ - { - "name": "Yassine Doghri", - "email": "yassine@doghri.fr", - "homepage": "https://yassinedoghri.com", - "role": "Maintainer" - } - ], - "description": "A CodeIgniter4 library with convenient helper functions to render svg icons using yassinedoghri/php-icons.", - "keywords": ["codeigniter", "codeigniter4", "iconify", "icons"], - "support": { - "issues": "https://github.com/yassinedoghri/codeigniter-icons/issues", - "source": "https://github.com/yassinedoghri/codeigniter-icons/tree/develop" - }, - "time": "2024-04-09T22:06:07+00:00" - }, - { - "name": "yassinedoghri/php-icons", - "version": "dev-develop", - "source": { - "type": "git", - "url": "https://github.com/yassinedoghri/php-icons.git", - "reference": "976acbd9564f5ba13b11f4086c59b007a9374a4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/yassinedoghri/php-icons/zipball/976acbd9564f5ba13b11f4086c59b007a9374a4e", - "reference": "976acbd9564f5ba13b11f4086c59b007a9374a4e", - "shasum": "" - }, - "require": { - "adhocore/cli": "^v1.7.1", - "composer-runtime-api": "^2.2", - "nikic/php-parser": "^v4.0", "php": ">=8.1" }, "require-dev": { - "kint-php/kint": "^5.1.1", - "phpstan/phpstan": "^1.10.67", - "rector/rector": "^1.0.4", - "symplify/coding-standard": "^12.1.4", - "symplify/easy-coding-standard": "^12.1.14" + "codeigniter/phpstan-codeigniter": "^1.5.4", + "codeigniter4/framework": "^v4.6.0", + "pestphp/pest": "^3.8.4", + "pestphp/pest-plugin-type-coverage": "^3.6.1", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "rector/rector": "^2.1.4", + "symplify/coding-standard": "^12.4.3", + "symplify/easy-coding-standard": "^12.5.24" }, - "default-branch": true, - "bin": ["bin/php-icons"], "type": "library", "autoload": { + "psr-4": { + "CodeIgniterVite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yassine Doghri", + "homepage": "https://yassinedoghri.com/" + } + ], + "description": "An opinionated Vite integration for CodeIgniter4 projects.", + "keywords": [ + "codeigniter", + "codeigniter4", + "iconify", + "icons", + "php-icons" + ], + "support": { + "issues": "https://github.com/yassinedoghri/codeigniter-vite/issues", + "source": "https://github.com/yassinedoghri/codeigniter-vite/tree/v2.1.0" + }, + "time": "2025-09-09T18:36:45+00:00" + }, + { + "name": "yassinedoghri/php-icons", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/yassinedoghri/php-icons.git", + "reference": "ae5d7727431f6891a0660d2b20818795fae40b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yassinedoghri/php-icons/zipball/ae5d7727431f6891a0660d2b20818795fae40b41", + "reference": "ae5d7727431f6891a0660d2b20818795fae40b41", + "shasum": "" + }, + "require": { + "adhocore/cli": "^v1.9.3", + "composer-runtime-api": "^2.2", + "php": ">=8.1" + }, + "require-dev": { + "kint-php/kint": "^6.0.1", + "pestphp/pest": "^3.7.4", + "pestphp/pest-plugin-type-coverage": "^3.4.0", + "phpstan/phpstan": "^2.1.10", + "rector/rector": "^2.0.10", + "symplify/coding-standard": "^12.2.3", + "symplify/easy-coding-standard": "^12.5.9" + }, + "bin": [ + "bin/php-icons" + ], + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Console/helpers.php" + ], "psr-4": { "PHPIcons\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Yassine Doghri", @@ -3388,9 +3782,9 @@ "description": "A PHP library based on iconify's API to download and render svg icons from popular open source icon sets.", "support": { "issues": "https://github.com/yassinedoghri/php-icons/issues", - "source": "https://github.com/yassinedoghri/php-icons/tree/develop" + "source": "https://github.com/yassinedoghri/php-icons/tree/v1.3.0" }, - "time": "2024-04-26T15:47:20+00:00" + "time": "2025-03-23T16:46:25+00:00" }, { "name": "yassinedoghri/podcast-feed", @@ -3398,12 +3792,12 @@ "source": { "type": "git", "url": "https://github.com/yassinedoghri/podcast-feed.git", - "reference": "f34156e62c9eef8bd5561f8a585d99501e235505" + "reference": "d617e204fe85e0b7bd12b9d382cae4064af280c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yassinedoghri/podcast-feed/zipball/f34156e62c9eef8bd5561f8a585d99501e235505", - "reference": "f34156e62c9eef8bd5561f8a585d99501e235505", + "url": "https://api.github.com/repos/yassinedoghri/podcast-feed/zipball/d617e204fe85e0b7bd12b9d382cae4064af280c8", + "reference": "d617e204fe85e0b7bd12b9d382cae4064af280c8", "shasum": "" }, "require": { @@ -3425,7 +3819,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["AGPL-3.0-or-later"], + "license": [ + "AGPL-3.0-or-later" + ], "authors": [ { "name": "Yassine Doghri", @@ -3445,16 +3841,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.23.0", + "version": "5.28.3", "source": { "type": "git", - "url": "https://github.com/captainhookphp/captainhook.git", - "reference": "08d90e4d98db123ab58826be8e891d7d36c14f2a" + "url": "https://github.com/captainhook-git/captainhook.git", + "reference": "5d35b249f3843ef36ead119f4347e649278ad6d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/08d90e4d98db123ab58826be8e891d7d36c14f2a", - "reference": "08d90e4d98db123ab58826be8e891d7d36c14f2a", + "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/5d35b249f3843ef36ead119f4347e649278ad6d8", + "reference": "5d35b249f3843ef36ead119f4347e649278ad6d8", "shasum": "" }, "require": { @@ -3465,10 +3861,10 @@ "php": ">=8.0", "sebastianfeldmann/camino": "^0.9.2", "sebastianfeldmann/cli": "^3.3", - "sebastianfeldmann/git": "^3.10", - "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + "sebastianfeldmann/git": "^3.16.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0" }, "replace": { "sebastianfeldmann/captainhook": "*" @@ -3477,14 +3873,16 @@ "composer/composer": "~1 || ^2.0", "mikey179/vfsstream": "~1" }, - "bin": ["bin/captainhook"], + "bin": [ + "bin/captainhook" + ], "type": "library", "extra": { - "branch-alias": { - "dev-main": "6.0.x-dev" - }, "captainhook": { "config": "captainhook.json" + }, + "branch-alias": { + "dev-main": "6.0.x-dev" } }, "autoload": { @@ -3493,7 +3891,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -3501,7 +3901,7 @@ } ], "description": "PHP git hook manager", - "homepage": "http://php.captainhook.info/", + "homepage": "https://php.captainhook.info/", "keywords": [ "commit-msg", "git", @@ -3512,8 +3912,8 @@ "prepare-commit-msg" ], "support": { - "issues": "https://github.com/captainhookphp/captainhook/issues", - "source": "https://github.com/captainhookphp/captainhook/tree/5.23.0" + "issues": "https://github.com/captainhook-git/captainhook/issues", + "source": "https://github.com/captainhook-git/captainhook/tree/5.28.3" }, "funding": [ { @@ -3521,20 +3921,20 @@ "type": "github" } ], - "time": "2024-04-12T10:39:21+00:00" + "time": "2026-02-16T14:08:58+00:00" }, { "name": "captainhook/secrets", - "version": "0.9.5", + "version": "0.9.7", "source": { "type": "git", - "url": "https://github.com/captainhookphp/secrets.git", - "reference": "8aa90d5b9b7892abd11b9da2fc172a7b32b90cbe" + "url": "https://github.com/captainhook-git/secrets.git", + "reference": "d62c97f75f81ac98e22f1c282482bd35fa82f631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/secrets/zipball/8aa90d5b9b7892abd11b9da2fc172a7b32b90cbe", - "reference": "8aa90d5b9b7892abd11b9da2fc172a7b32b90cbe", + "url": "https://api.github.com/repos/captainhook-git/secrets/zipball/d62c97f75f81ac98e22f1c282482bd35fa82f631", + "reference": "d62c97f75f81ac98e22f1c282482bd35fa82f631", "shasum": "" }, "require": { @@ -3548,7 +3948,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -3566,8 +3968,8 @@ "tokens" ], "support": { - "issues": "https://github.com/captainhookphp/secrets/issues", - "source": "https://github.com/captainhookphp/secrets/tree/0.9.5" + "issues": "https://github.com/captainhook-git/secrets/issues", + "source": "https://github.com/captainhook-git/secrets/tree/0.9.7" }, "funding": [ { @@ -3575,47 +3977,111 @@ "type": "github" } ], - "time": "2023-11-30T18:10:18+00:00" + "time": "2025-04-08T07:10:48+00:00" }, { - "name": "codeigniter/phpstan-codeigniter", - "version": "v1.4.3", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/CodeIgniter/phpstan-codeigniter.git", - "reference": "bff4a7cfe251bb288223e95d6f588e956dfc0a93" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/bff4a7cfe251bb288223e95d6f588e956dfc0a93", - "reference": "bff4a7cfe251bb288223e95d6f588e956dfc0a93", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\NDJson\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" + }, + { + "name": "codeigniter/phpstan-codeigniter", + "version": "v1.5.4", + "source": { + "type": "git", + "url": "https://github.com/CodeIgniter/phpstan-codeigniter.git", + "reference": "e959fb0841c29a01870aa6570f3095f42e1057ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CodeIgniter/phpstan-codeigniter/zipball/e959fb0841c29a01870aa6570f3095f42e1057ad", + "reference": "e959fb0841c29a01870aa6570f3095f42e1057ad", "shasum": "" }, "require": { - "codeigniter4/framework": "^4.4", "php": "^8.1", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^2.0" }, "conflict": { "codeigniter/framework": "*" }, "require-dev": { "codeigniter/coding-standard": "^1.7", - "codeigniter4/shield": "^1.0@beta", - "friendsofphp/php-cs-fixer": "^3.20", - "nexusphp/cs-config": "^3.12", - "php-parallel-lint/php-parallel-lint": "^1.3", + "codeigniter4/framework": "^4.5", + "codeigniter4/shield": "^1.0", + "friendsofphp/php-cs-fixer": "^3.49", + "nexusphp/cs-config": "^3.21", "phpstan/extension-installer": "^1.3", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "^10.2", - "rector/rector": "^0.18.2" + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^10.5 || ^11.4" }, "type": "phpstan-extension", "extra": { "phpstan": { - "includes": ["extension.neon"] + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -3624,7 +4090,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "John Paul E. Balandan, CPA", @@ -3645,32 +4113,40 @@ "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/CodeIgniter/phpstan-codeigniter" }, - "time": "2023-12-21T03:39:48+00:00" + "time": "2025-06-24T17:28:48+00:00" }, { "name": "composer/pcre", - "version": "3.1.3", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, "branch-alias": { "dev-main": "3.x-dev" } @@ -3681,7 +4157,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Jordi Boggiano", @@ -3690,10 +4168,15 @@ } ], "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": ["PCRE", "preg", "regex", "regular expression"], + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.3" + "source": "https://github.com/composer/pcre/tree/3.3.2" }, "funding": [ { @@ -3709,28 +4192,28 @@ "type": "tidelift" } ], - "time": "2024-03-19T10:26:25+00:00" + "time": "2024-11-12T16:29:46+00:00" }, { "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": { @@ -3744,7 +4227,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nils Adermann", @@ -3763,11 +4248,16 @@ } ], "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": ["semantic", "semver", "validation", "versioning"], + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], "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": [ { @@ -3777,26 +4267,22 @@ { "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" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "composer/xdebug-handler", - "version": "3.0.4", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255", - "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { @@ -3816,7 +4302,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "John Stevenson", @@ -3824,11 +4312,14 @@ } ], "description": "Restarts a process without Xdebug.", - "keywords": ["Xdebug", "performance"], + "keywords": [ + "Xdebug", + "performance" + ], "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.4" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -3844,68 +4335,191 @@ "type": "tidelift" } ], - "time": "2024-03-26T18:29:49+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.54.0", + "name": "evenement/evenement", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08" + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2aecbc8640d7906c38777b3dcab6f4ca79004d08", - "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { - "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", - "ext-filter": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.28", - "symfony/polyfill-php80": "^1.28", - "symfony/polyfill-php81": "^1.28", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + "php": ">=7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", - "infection/infection": "^0.27.11", - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.1", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.7", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", - "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2025-08-14T07:29:31+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.94.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d1a3634e29916367b885250e1fc4dfd5ffe3b091", + "reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091", + "shasum": "" + }, + "require": { + "clue/ndjson-react": "^1.3", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.5", + "ext-filter": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.3", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.6", + "react/event-loop": "^1.5", + "react/socket": "^1.16", + "react/stream": "^1.4", + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0 || ^8.0", + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.33", + "symfony/polyfill-php80": "^1.33", + "symfony/polyfill-php81": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3.1 || ^2.7.1", + "infection/infection": "^0.32.3", + "justinrainbow/json-schema": "^6.6.4", + "keradus/cli-executor": "^2.3", + "mikey179/vfsstream": "^1.6.12", + "php-coveralls/php-coveralls": "^2.9.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.7", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.7", + "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.51", + "symfony/polyfill-php85": "^1.33", + "symfony/var-dumper": "^5.4.48 || ^6.4.32 || ^7.4.4 || ^8.0.4", + "symfony/yaml": "^5.4.45 || ^6.4.30 || ^7.4.1 || ^8.0.1" }, "suggest": { "ext-dom": "For handling output formats in XML", "ext-mbstring": "For handling non-UTF8 characters." }, - "bin": ["php-cs-fixer"], + "bin": [ + "php-cs-fixer" + ], "type": "application", "autoload": { "psr-4": { "PhpCsFixer\\": "src/" - } + }, + "exclude-from-classmap": [ + "src/**/Internal/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -3925,7 +4539,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.54.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.1" }, "funding": [ { @@ -3933,27 +4547,28 @@ "type": "github" } ], - "time": "2024-04-17T08:12:13+00:00" + "time": "2026-02-18T12:24:42+00:00" }, { "name": "mikey179/vfsstream", - "version": "v1.6.11", + "version": "v1.6.12", "source": { "type": "git", "url": "https://github.com/bovigo/vfsStream.git", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f" + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^4.5|^5.0" + "phpunit/phpunit": "^7.5||^8.5||^9.6", + "yoast/phpunit-polyfills": "^2.0" }, "type": "library", "extra": { @@ -3967,7 +4582,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Frank Kleine", @@ -3982,20 +4599,20 @@ "source": "https://github.com/bovigo/vfsStream/tree/master", "wiki": "https://github.com/bovigo/vfsStream/wiki" }, - "time": "2022-02-23T02:02:42+00:00" + "time": "2024-08-29T18:43:31+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": { @@ -4003,27 +4620,38 @@ }, "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", "autoload": { - "files": ["src/DeepCopy/deep_copy.php"], + "files": [ + "src/DeepCopy/deep_copy.php" + ], "psr-4": { "DeepCopy\\": "src/DeepCopy/" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Create deep copies (clones) of your objects", - "keywords": ["clone", "copy", "duplicate", "object", "object graph"], + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], "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": [ { @@ -4031,7 +4659,65 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phar-io/manifest", @@ -4062,10 +4748,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Arne Blankerts", @@ -4115,10 +4805,14 @@ }, "type": "library", "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Arne Blankerts", @@ -4145,22 +4839,22 @@ }, { "name": "phpstan/extension-installer", - "version": "1.3.1", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" + "reference": "85e90b3942d06b2326fba0403ec24fe912372936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/85e90b3942d06b2326fba0403ec24fe912372936", + "reference": "85e90b3942d06b2326fba0403ec24fe912372936", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.9.0" + "phpstan/phpstan": "^1.9.0 || ^2.0" }, "require-dev": { "composer/composer": "^2.0", @@ -4177,43 +4871,54 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Composer plugin for automatic installation of PHPStan extensions", + "keywords": [ + "dev", + "static analysis" + ], "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" + "source": "https://github.com/phpstan/extension-installer/tree/1.4.3" }, - "time": "2023-05-24T08:59:17+00:00" + "time": "2024-09-04T20:21:43+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.67", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493" - }, + "version": "2.1.39", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493", - "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", + "reference": "c6f73a2af4cbcd99c931d0fb8f08548cc0fa8224", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" }, - "bin": ["phpstan", "phpstan.phar"], + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", "autoload": { - "files": ["bootstrap.php"] + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "PHPStan - PHP Static Analysis Tool", - "keywords": ["dev", "static analysis"], + "keywords": [ + "dev", + "static analysis" + ], "support": { "docs": "https://phpstan.org/user-guide/getting-started", "forum": "https://github.com/phpstan/phpstan/discussions", @@ -4231,36 +4936,36 @@ "type": "github" } ], - "time": "2024-04-16T07:22:02+00:00" + "time": "2026-02-11T14:48:56+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.14", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "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": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { "phpunit/phpunit": "^10.1" @@ -4272,14 +4977,18 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4289,11 +4998,15 @@ ], "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": ["coverage", "testing", "xunit"], + "keywords": [ + "coverage", + "testing", + "xunit" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -4301,7 +5014,7 @@ "type": "github" } ], - "time": "2024-03-12T15:33:41+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4330,10 +5043,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4343,7 +5060,10 @@ ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": ["filesystem", "iterator"], + "keywords": [ + "filesystem", + "iterator" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", @@ -4388,10 +5108,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4401,7 +5125,9 @@ ], "description": "Invoke callables with a timeout", "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": ["process"], + "keywords": [ + "process" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" @@ -4441,10 +5167,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4454,7 +5184,9 @@ ], "description": "Simple template engine.", "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": ["template"], + "keywords": [ + "template" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", @@ -4495,10 +5227,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4508,7 +5244,9 @@ ], "description": "Utility class for timing", "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": ["timer"], + "keywords": [ + "timer" + ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" @@ -4523,16 +5261,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.20", + "version": "10.5.63", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3" + "reference": "33198268dad71e926626b618f3ec3966661e4d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33198268dad71e926626b618f3ec3966661e4d90", + "reference": "33198268dad71e926626b618f3ec3966661e4d90", "shasum": "" }, "require": { @@ -4542,31 +5280,33 @@ "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": ">=8.1", - "phpunit/php-code-coverage": "^10.1.5", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.1", - "sebastian/global-state": "^6.0.1", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.5", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.4", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.1", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" }, - "bin": ["phpunit"], + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { @@ -4574,11 +5314,17 @@ } }, "autoload": { - "files": ["src/Framework/Assert/Functions.php"], - "classmap": ["src/"] + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4588,11 +5334,15 @@ ], "description": "The PHP Unit Testing framework.", "homepage": "https://phpunit.de/", - "keywords": ["phpunit", "testing", "xunit"], + "keywords": [ + "phpunit", + "testing", + "xunit" + ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.63" }, "funding": [ { @@ -4603,12 +5353,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-24T06:32:35+00:00" + "time": "2026-01-27T05:48:37+00:00" }, { "name": "psr/container", @@ -4639,7 +5397,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "PHP-FIG", @@ -4662,22 +5422,548 @@ "time": "2021-11-05T16:47:00+00:00" }, { - "name": "rector/rector", - "version": "1.0.4", + "name": "react/cache", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/rectorphp/rector.git", - "reference": "6e04d0eb087aef707fa0c5686d33d6ff61f4a555" + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/6e04d0eb087aef707fa0c5686d33d6ff61f4a555", - "reference": "6e04d0eb087aef707fa0c5686d33d6ff61f4a555", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.57" + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.7", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/970f0e71945556422ee4570ccbabaedc3cf04ad3", + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.7" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-12-23T15:25:20+00:00" + }, + { + "name": "react/dns", + "version": "v1.14.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.14.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-11-18T19:34:28+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-11-17T20:46:25+00:00" + }, + { + "name": "react/promise", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.12.28 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-08-19T18:57:03+00:00" + }, + { + "name": "react/socket", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.13", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3.3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.17.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-11-19T20:47:34+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, + { + "name": "rector/rector", + "version": "2.3.6", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b", + "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.1.38" }, "conflict": { "rector/rector-doctrine": "*", @@ -4688,18 +5974,30 @@ "suggest": { "ext-dom": "To manipulate phpunit.xml via the custom-rule command" }, - "bin": ["bin/rector"], + "bin": [ + "bin/rector" + ], "type": "library", "autoload": { - "files": ["bootstrap.php"] + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", - "keywords": ["automation", "dev", "migration", "refactoring"], + "homepage": "https://getrector.com/", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.0.4" + "source": "https://github.com/rectorphp/rector/tree/2.3.6" }, "funding": [ { @@ -4707,7 +6005,7 @@ "type": "github" } ], - "time": "2024-04-05T09:01:07+00:00" + "time": "2026-02-06T14:25:06+00:00" }, { "name": "sebastian/cli-parser", @@ -4736,10 +6034,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4789,10 +6091,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4841,10 +6147,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4867,16 +6177,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d", + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d", "shasum": "" }, "require": { @@ -4887,7 +6197,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -4896,10 +6206,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -4920,19 +6234,35 @@ ], "description": "Provides the functionality to compare PHP values for equality", "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": ["comparator", "compare", "equality"], + "keywords": [ + "comparator", + "compare", + "equality" + ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5" }, "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": "2023-08-14T13:18:12+00:00" + "time": "2026-01-24T09:25:16+00:00" }, { "name": "sebastian/complexity", @@ -4962,10 +6292,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5016,10 +6350,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5032,7 +6370,12 @@ ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": ["diff", "udiff", "unidiff", "unified diff"], + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", @@ -5076,10 +6419,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5088,7 +6435,11 @@ ], "description": "Provides functionality to handle HHVM/PHP environments", "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": ["Xdebug", "environment", "hhvm"], + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", @@ -5104,16 +6455,16 @@ }, { "name": "sebastian/exporter", - "version": "5.1.2", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + "reference": "0735b90f4da94969541dac1da743446e276defa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6", + "reference": "0735b90f4da94969541dac1da743446e276defa6", "shasum": "" }, "require": { @@ -5122,7 +6473,7 @@ "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -5131,10 +6482,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5159,19 +6514,34 @@ ], "description": "Provides the functionality to export PHP variables for visualization", "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": ["export", "exporter"], + "keywords": [ + "export", + "exporter" + ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4" }, "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-02T07:17:12+00:00" + "time": "2025-09-24T06:09:11+00:00" }, { "name": "sebastian/global-state", @@ -5203,10 +6573,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5215,7 +6589,9 @@ ], "description": "Snapshotting of global state", "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": ["global state"], + "keywords": [ + "global state" + ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", @@ -5257,10 +6633,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5312,10 +6692,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5363,10 +6747,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5389,23 +6777,23 @@ }, { "name": "sebastian/recursion-context", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -5414,10 +6802,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5436,15 +6828,28 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" }, "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-03T07:05:40+00:00" + "time": "2025-08-10T07:50:56+00:00" }, { "name": "sebastian/type", @@ -5473,10 +6878,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5522,10 +6931,14 @@ } }, "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Sebastian Bergmann", @@ -5576,7 +6989,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -5585,7 +7000,10 @@ ], "description": "Path management the OO way", "homepage": "https://github.com/sebastianfeldmann/camino", - "keywords": ["file system", "path"], + "keywords": [ + "file system", + "path" + ], "support": { "issues": "https://github.com/sebastianfeldmann/camino/issues", "source": "https://github.com/sebastianfeldmann/camino/tree/0.9.5" @@ -5600,16 +7018,16 @@ }, { "name": "sebastianfeldmann/cli", - "version": "3.4.1", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/cli.git", - "reference": "8a932e99e9455981fb32fa6c085492462fe8f8cf" + "reference": "6fa122afd528dae7d7ec988a604aa6c600f5d9b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/cli/zipball/8a932e99e9455981fb32fa6c085492462fe8f8cf", - "reference": "8a932e99e9455981fb32fa6c085492462fe8f8cf", + "url": "https://api.github.com/repos/sebastianfeldmann/cli/zipball/6fa122afd528dae7d7ec988a604aa6c600f5d9b5", + "reference": "6fa122afd528dae7d7ec988a604aa6c600f5d9b5", "shasum": "" }, "require": { @@ -5630,7 +7048,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -5639,10 +7059,12 @@ ], "description": "PHP cli helper classes", "homepage": "https://github.com/sebastianfeldmann/cli", - "keywords": ["cli"], + "keywords": [ + "cli" + ], "support": { "issues": "https://github.com/sebastianfeldmann/cli/issues", - "source": "https://github.com/sebastianfeldmann/cli/tree/3.4.1" + "source": "https://github.com/sebastianfeldmann/cli/tree/3.4.2" }, "funding": [ { @@ -5650,20 +7072,20 @@ "type": "github" } ], - "time": "2021-12-20T14:59:49+00:00" + "time": "2024-11-26T10:19:01+00:00" }, { "name": "sebastianfeldmann/git", - "version": "3.11.0", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/sebastianfeldmann/git.git", - "reference": "5cb1ea94f65c7420419abe8f12c45cc7eb094790" + "reference": "40a5cc043f0957228767f639e370ec92590e940f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/5cb1ea94f65c7420419abe8f12c45cc7eb094790", - "reference": "5cb1ea94f65c7420419abe8f12c45cc7eb094790", + "url": "https://api.github.com/repos/sebastianfeldmann/git/zipball/40a5cc043f0957228767f639e370ec92590e940f", + "reference": "40a5cc043f0957228767f639e370ec92590e940f", "shasum": "" }, "require": { @@ -5688,7 +7110,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Sebastian Feldmann", @@ -5697,10 +7121,12 @@ ], "description": "PHP git wrapper", "homepage": "https://github.com/sebastianfeldmann/git", - "keywords": ["git"], + "keywords": [ + "git" + ], "support": { "issues": "https://github.com/sebastianfeldmann/git/issues", - "source": "https://github.com/sebastianfeldmann/git/tree/3.11.0" + "source": "https://github.com/sebastianfeldmann/git/tree/3.16.0" }, "funding": [ { @@ -5708,27 +7134,28 @@ "type": "github" } ], - "time": "2024-01-23T09:11:14+00:00" + "time": "2026-01-26T20:59:18+00:00" }, { "name": "symfony/console", - "version": "v7.0.6", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", - "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894", + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894", "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", @@ -5742,26 +7169,30 @@ }, "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": { "psr-4": { "Symfony\\Component\\Console\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -5774,9 +7205,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "keywords": ["cli", "command-line", "console", "terminal"], + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.6" + "source": "https://github.com/symfony/console/tree/v7.4.4" }, "funding": [ { @@ -5787,25 +7223,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-01T11:04:53+00:00" + "time": "2026-01-13T11:36:38+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" + "reference": "dc2c0eba1af673e736bb851d747d266108aea746" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746", "shasum": "" }, "require": { @@ -5822,23 +7262,28 @@ }, "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": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -5852,7 +7297,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.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.4" }, "funding": [ { @@ -5863,25 +7308,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-23T15:02:46+00:00" + "time": "2026-01-05T11:45:34+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.2", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "4e64b49bf370ade88e567de29465762e316e4224" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", - "reference": "4e64b49bf370ade88e567de29465762e316e4224", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -5890,12 +7339,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-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.6-dev" } }, "autoload": { @@ -5904,7 +7353,9 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -5926,7 +7377,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -5942,96 +7393,41 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v7.0.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "408105dff4c104454100730bdfd1a9cdd993f04d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/408105dff4c104454100730bdfd1a9cdd993f04d", - "reference": "408105dff4c104454100730bdfd1a9cdd993f04d", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": ["/Tests/"] - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.6" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-03-21T19:37:36+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/finder", - "version": "v7.0.0", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6045,7 +7441,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.0" + "source": "https://github.com/symfony/finder/tree/v7.4.5" }, "funding": [ { @@ -6056,25 +7452,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-10-31T17:59:56+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.0.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f" + "reference": "b38026df55197f9e39a44f3215788edf83187b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b38026df55197f9e39a44f3215788edf83187b80", + "reference": "b38026df55197f9e39a44f3215788edf83187b80", "shasum": "" }, "require": { @@ -6086,10 +7486,14 @@ "psr-4": { "Symfony\\Component\\OptionsResolver\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6102,9 +7506,13 @@ ], "description": "Provides an improved replacement for the array_replace PHP function", "homepage": "https://symfony.com", - "keywords": ["config", "configuration", "options"], + "keywords": [ + "config", + "configuration", + "options" + ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.4.0" }, "funding": [ { @@ -6115,29 +7523,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": "2023-08-08T10:20:21+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "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/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -6145,18 +7557,22 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6178,7 +7594,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.33.0" }, "funding": [ { @@ -6189,29 +7605,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": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "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/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -6219,19 +7639,25 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "classmap": ["Resources/stubs"] + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6253,7 +7679,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.33.0" }, "funding": [ { @@ -6264,46 +7690,56 @@ "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": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.29.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "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": { - "files": ["bootstrap.php"], + "files": [ + "bootstrap.php" + ], "psr-4": { "Symfony\\Polyfill\\Php81\\": "" }, - "classmap": ["Resources/stubs"] + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6316,9 +7752,14 @@ ], "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", - "keywords": ["compatibility", "polyfill", "portable", "shim"], + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" }, "funding": [ { @@ -6329,25 +7770,109 @@ "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": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/process", - "version": "v7.0.4", + "name": "symfony/polyfill-php84", + "version": "v1.33.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0e7727191c3b71ebec6d529fa0e50a01ca5679e9", - "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "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\\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.33.0" + }, + "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": "2025-06-24T13:30:11+00:00" + }, + { + "name": "symfony/process", + "version": "v7.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "608476f4604102976d687c483ac63a79ba18cc97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", + "reference": "608476f4604102976d687c483ac63a79ba18cc97", "shasum": "" }, "require": { @@ -6358,10 +7883,14 @@ "psr-4": { "Symfony\\Component\\Process\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6375,7 +7904,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.0.4" + "source": "https://github.com/symfony/process/tree/v7.4.5" }, "funding": [ { @@ -6386,52 +7915,61 @@ "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-02-22T20:27:20+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.2", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", - "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^1.1|^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-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.6-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" }, - "exclude-from-classmap": ["/Test/"] + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6453,7 +7991,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -6464,25 +8002,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-12-19T21:51:00+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.0.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112" + "reference": "8a24af0a2e8a872fb745047180649b8418303084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/983900d6fddf2b0cbaacacbbad07610854bd8112", - "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", + "reference": "8a24af0a2e8a872fb745047180649b8418303084", "shasum": "" }, "require": { @@ -6494,10 +8036,14 @@ "psr-4": { "Symfony\\Component\\Stopwatch\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Fabien Potencier", @@ -6511,7 +8057,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.0.3" + "source": "https://github.com/symfony/stopwatch/tree/v7.4.0" }, "funding": [ { @@ -6522,31 +8068,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-01-23T15:02:46+00:00" + "time": "2025-08-04T07:05:15+00:00" }, { "name": "symfony/string", - "version": "v7.0.4", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", - "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", + "url": "https://api.github.com/repos/symfony/string/zipball/1c4b10461bf2ec27537b5f36105337262f5f5d6f", + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f", "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" }, @@ -6554,22 +8105,28 @@ "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": { - "files": ["Resources/functions.php"], + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\String\\": "" }, - "exclude-from-classmap": ["/Tests/"] + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "authors": [ { "name": "Nicolas Grekas", @@ -6582,9 +8139,16 @@ ], "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", - "keywords": ["grapheme", "i18n", "string", "unicode", "utf-8", "utf8"], + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.4" + "source": "https://github.com/symfony/string/tree/v7.4.4" }, "funding": [ { @@ -6595,44 +8159,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-02-01T13:17:36+00:00" + "time": "2026-01-12T10:54:30+00:00" }, { "name": "symplify/coding-standard", - "version": "12.1.4", + "version": "13.0.0", "source": { "type": "git", "url": "https://github.com/symplify/coding-standard.git", - "reference": "1a591e18c64e7367b243729a43a70c2e92025468" + "reference": "bd7c36af1e96eecd08cfcc0a772a19767aa02300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symplify/coding-standard/zipball/1a591e18c64e7367b243729a43a70c2e92025468", - "reference": "1a591e18c64e7367b243729a43a70c2e92025468", + "url": "https://api.github.com/repos/symplify/coding-standard/zipball/bd7c36af1e96eecd08cfcc0a772a19767aa02300", + "reference": "bd7c36af1e96eecd08cfcc0a772a19767aa02300", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^3.49", - "nette/utils": "^3.2", - "php": ">=8.2", - "symplify/rule-doc-generator-contracts": "^11.1" + "friendsofphp/php-cs-fixer": "^3.89", + "nette/utils": "^4.0", + "php": ">=8.2" }, "require-dev": { - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.10.58", - "phpunit/phpunit": "^10.5", - "rector/rector": "^1.0", - "squizlabs/php_codesniffer": "^3.8.1", - "symplify/easy-coding-standard": "^12.1", - "symplify/phpstan-extensions": "^11.4", - "symplify/rule-doc-generator": "^12.0", - "tomasvotruba/class-leak": "^0.2", - "tracy/tracy": "^2.10" + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^11.5|^12.0", + "rector/jack": "^0.2", + "rector/rector": "^2.2", + "squizlabs/php_codesniffer": "^4.0", + "symplify/easy-coding-standard": "^12.6", + "symplify/phpstan-extensions": "^12.0", + "tomasvotruba/class-leak": "^2.0", + "tracy/tracy": "^2.11" }, "type": "library", "autoload": { @@ -6641,11 +8208,13 @@ } }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Set of Symplify rules for PHP_CodeSniffer and PHP CS Fixer.", "support": { "issues": "https://github.com/symplify/coding-standard/issues", - "source": "https://github.com/symplify/coding-standard/tree/12.1.4" + "source": "https://github.com/symplify/coding-standard/tree/13.0.0" }, "funding": [ { @@ -6657,42 +8226,56 @@ "type": "github" } ], - "time": "2024-02-23T13:07:31+00:00" + "time": "2025-10-30T21:46:47+00:00" }, { "name": "symplify/easy-coding-standard", - "version": "12.1.14", + "version": "13.0.4", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5" + "reference": "5c7e7a07e5d6a98b9dd2e6fc0a9155efb7c166c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/e3c4a241ee36704f7cf920d5931f39693e64afd5", - "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5c7e7a07e5d6a98b9dd2e6fc0a9155efb7c166c8", + "reference": "5c7e7a07e5d6a98b9dd2e6fc0a9155efb7c166c8", "shasum": "" }, "require": { "php": ">=7.2" }, "conflict": { - "friendsofphp/php-cs-fixer": "<3.46", - "phpcsstandards/php_codesniffer": "<3.8", + "friendsofphp/php-cs-fixer": "<3.92.4", + "phpcsstandards/php_codesniffer": "<4.0.1", "symplify/coding-standard": "<12.1" }, - "bin": ["bin/ecs"], + "suggest": { + "ext-dom": "Needed to support checkstyle output format in class CheckstyleOutputFormatter" + }, + "bin": [ + "bin/ecs" + ], "type": "library", "autoload": { - "files": ["bootstrap.php"] + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], + "license": [ + "MIT" + ], "description": "Use Coding Standard with 0-knowledge of PHP-CS-Fixer and PHP_CodeSniffer", - "keywords": ["Code style", "automation", "fixer", "static analysis"], + "keywords": [ + "Code style", + "automation", + "fixer", + "static analysis" + ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.14" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/13.0.4" }, "funding": [ { @@ -6704,77 +8287,20 @@ "type": "github" } ], - "time": "2024-02-23T13:10:40+00:00" - }, - { - "name": "symplify/rule-doc-generator-contracts", - "version": "11.2.0", - "source": { - "type": "git", - "url": "https://github.com/symplify/rule-doc-generator-contracts.git", - "reference": "479cfcfd46047f80624aba931d9789e50475b5c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symplify/rule-doc-generator-contracts/zipball/479cfcfd46047f80624aba931d9789e50475b5c6", - "reference": "479cfcfd46047f80624aba931d9789e50475b5c6", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/extension-installer": "^1.2", - "rector/rector": "^0.15.10", - "symplify/easy-ci": "^11.1", - "symplify/easy-coding-standard": "^11.1", - "symplify/easy-testing": "^11.1", - "symplify/phpstan-extensions": "^11.1", - "symplify/phpstan-rules": "11.2.3.72", - "tomasvotruba/unused-public": "^0.0.34" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symplify\\RuleDocGenerator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": ["MIT"], - "description": "Contracts for production code of RuleDocGenerator", - "support": { - "source": "https://github.com/symplify/rule-doc-generator-contracts/tree/11.2.0" - }, - "funding": [ - { - "url": "https://www.paypal.me/rectorphp", - "type": "custom" - }, - { - "url": "https://github.com/tomasvotruba", - "type": "github" - } - ], - "time": "2024-03-18T22:02:54+00:00" + "time": "2026-01-05T09:10:04+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": { @@ -6785,10 +8311,14 @@ }, "type": "library", "autoload": { - "classmap": ["src/"] + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", - "license": ["BSD-3-Clause"], + "license": [ + "BSD-3-Clause" + ], "authors": [ { "name": "Arne Blankerts", @@ -6799,7 +8329,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": [ { @@ -6807,7 +8337,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], @@ -6815,7 +8345,6 @@ "stability-flags": { "codeigniter4/tasks": 20, "opawg/user-agents-v2-php": 20, - "yassinedoghri/codeigniter-icons": 20, "yassinedoghri/podcast-feed": 20 }, "prefer-stable": true, @@ -6823,6 +8352,6 @@ "platform": { "php": "^8.1" }, - "platform-dev": [], - "plugin-api-version": "2.6.0" + "platform-dev": {}, + "plugin-api-version": "2.9.0" } diff --git a/docker/ci/Dockerfile b/docker/ci/Dockerfile index a5a71bf9..1e98f266 100644 --- a/docker/ci/Dockerfile +++ b/docker/ci/Dockerfile @@ -4,7 +4,7 @@ # ⚠️ NOT optimized for production # should be used only for continuous integration #--------------------------------------------------- -FROM php:8.1-fpm-alpine3.19 +FROM php:8.1-fpm-alpine3.22 LABEL maintainer="Yassine Doghri " diff --git a/docker/production/.gitlab-ci.yml b/docker/production/.gitlab-ci.yml index 95e2a633..6256cc13 100644 --- a/docker/production/.gitlab-ci.yml +++ b/docker/production/.gitlab-ci.yml @@ -4,85 +4,109 @@ stages: docker-build-rolling: stage: build image: - name: docker.io/docker:23.0.3-dind + name: docker.io/docker:29.2-dind services: - - docker:23.0.3-dind + - docker:29.2-dind variables: TAG: $CI_COMMIT_BRANCH DOCKER_BUILDKIT: 1 DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" - script: + before_script: + # ensure the Docker config directory exists - mkdir -p /root/.docker + # copy credentials to authenticate against registry - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json - - docker context create tls-environment - - docker buildx create --use tls-environment - - docker buildx build --push --platform=linux/amd64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/web-server/Dockerfile --tag=${DOCKER_IMAGE_WEB_SERVER}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/app/Dockerfile --tag=${DOCKER_IMAGE_APP}:${TAG} . - needs: - - pipeline: $PARENT_PIPELINE_ID - job: bundle - only: - refs: - - develop -docker-build-main-release: + - docker context create tls-environment + + # Create and use builder with optimized settings + - docker buildx create + --name fast-multiplatform + --driver docker-container + --driver-opt network=host + --driver-opt image=moby/buildkit:v0.27.1 + --use + tls-environment + + # initialize and boot fast-multiplatform builder + # configure BuildKit features that aren't enabled by default + - docker buildx inspect --bootstrap + script: + - docker buildx build + --target production + --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY + --platform linux/amd64 + --file docker/production/Dockerfile + --push + --tag ${DOCKER_IMAGE_CASTOPOD}:${TAG} + . + rules: + - if: $CI_COMMIT_BRANCH == 'develop' + +docker-build-release: stage: build image: - name: docker.io/docker:23.0.3-dind + name: docker.io/docker:29.2-dind services: - - docker:23.0.3-dind + - docker:29.2-dind variables: DOCKER_BUILDKIT: 1 DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" - script: + before_script: + # ensure the Docker config directory exists - mkdir -p /root/.docker + # copy credentials to authenticate against registry - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json - - export CP_VERSION=$(cat CP_VERSION.env) - - docker context create tls-environment - - docker buildx create --use tls-environment - - docker buildx build --push --platform=linux/amd64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:latest . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/web-server/Dockerfile --tag=${DOCKER_IMAGE_WEB_SERVER}:${CP_VERSION} --tag=${DOCKER_IMAGE_WEB_SERVER}:latest . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/app/Dockerfile --tag=${DOCKER_IMAGE_APP}:${CP_VERSION} --tag=${DOCKER_IMAGE_APP}:latest . - # when --platform=linux/amd64,linux/arm64: amd64 image takes too long to be pushed as it needs to wait for arm64 to be built - # --> build and push amd64 image to be pushed first, then overwrite manifest after building arm64 - - docker buildx build --push --platform=linux/amd64,linux/arm64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:latest . - needs: - - pipeline: $PARENT_PIPELINE_ID - job: release - only: - refs: - - main -docker-build-alpha-beta-release: - stage: build - image: - name: docker.io/docker:23.0.3-dind - services: - - docker:23.0.3-dind - variables: - TAG: $CI_COMMIT_BRANCH - DOCKER_BUILDKIT: 1 - DOCKER_HOST: tcp://docker:2376 - DOCKER_TLS_CERTDIR: "/certs" - script: - - mkdir -p /root/.docker - - cp ${DOCKER_HUB_CONFIG} /root/.docker/config.json - - export CP_VERSION=$(cat CP_VERSION.env) + ## Prepare Docker image tags from git tag + ## -------------------------------------- + # extract full SemVer from git tag (remove leading "v") + - export IMAGE_TAG_VERSION=$(echo "$CI_COMMIT_TAG" | sed 's/^v//') + # extract channel (prerelease like "alpha", "beta", "next"; "latest" for stable) + - export IMAGE_TAG_CHANNEL=$(echo "$IMAGE_TAG_VERSION" | sed 's/^[^-]*-\([^.]*\)\..*/\1/; t; s/.*/latest/') + # extract major version number (first SemVer component) + - export IMAGE_TAG_MAJOR=$(echo "$IMAGE_TAG_VERSION" | sed 's/\..*//') + # construct major-channel tag ("X" for stable, "X-channel" for prerelease) + - export IMAGE_TAG_MAJOR_CHANNEL=$([ "$IMAGE_TAG_CHANNEL" = "latest" ] && echo "$IMAGE_TAG_MAJOR" || echo "${IMAGE_TAG_MAJOR}-${IMAGE_TAG_CHANNEL}") + - docker context create tls-environment - - docker buildx create --use tls-environment - - docker buildx build --push --platform=linux/amd64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/web-server/Dockerfile --tag=${DOCKER_IMAGE_WEB_SERVER}:${CP_VERSION} --tag=${DOCKER_IMAGE_WEB_SERVER}:${TAG} . - - docker buildx build --push --platform=linux/amd64 --file=docker/production/app/Dockerfile --tag=${DOCKER_IMAGE_APP}:${CP_VERSION} --tag=${DOCKER_IMAGE_APP}:${TAG} . + + # Create and use builder with optimized settings + - docker buildx create + --name fast-multiplatform + --driver docker-container + --driver-opt network=host + --driver-opt image=moby/buildkit:v0.27.1 + --use + tls-environment + + # initialize and boot fast-multiplatform builder + # configure BuildKit features that aren't enabled by default + - docker buildx inspect --bootstrap + script: + - docker buildx build + --target production + --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY + --platform linux/amd64 + --file docker/production/Dockerfile + --push + --tag ${DOCKER_IMAGE_CASTOPOD}:${IMAGE_TAG_VERSION} + --tag ${DOCKER_IMAGE_CASTOPOD}:${IMAGE_TAG_CHANNEL} + --tag ${DOCKER_IMAGE_CASTOPOD}:${IMAGE_TAG_MAJOR_CHANNEL} + . # when --platform=linux/amd64,linux/arm64: amd64 image takes too long to be pushed as it needs to wait for arm64 to be built - # --> build and push amd64 image to be pushed first, then overwrite manifest after building arm64 - - docker buildx build --push --platform=linux/amd64,linux/arm64 --file=docker/production/castopod/Dockerfile --tag=${DOCKER_IMAGE_CASTOPOD}:${CP_VERSION} --tag=${DOCKER_IMAGE_CASTOPOD}:${TAG} . - needs: - - pipeline: $PARENT_PIPELINE_ID - job: release - only: - refs: - - alpha - - beta + # --> build and push amd64 image first, then overwrite manifest after building arm64 + - docker buildx build + --target production + --secret id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY + --platform linux/amd64,linux/arm64 + --file docker/production/Dockerfile + --push + --tag ${DOCKER_IMAGE_CASTOPOD}:${IMAGE_TAG_VERSION} + --tag ${DOCKER_IMAGE_CASTOPOD}:${IMAGE_TAG_CHANNEL} + --tag ${DOCKER_IMAGE_CASTOPOD}:${IMAGE_TAG_MAJOR_CHANNEL} + . + rules: + - if: $CI_COMMIT_TAG diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile new file mode 100644 index 00000000..dc719c71 --- /dev/null +++ b/docker/production/Dockerfile @@ -0,0 +1,154 @@ +#################################################### +# Castopod's Production Dockerfile +#################################################### +# An optimized Dockerfile for production using +# multi-stage builds: +# 1. BUNDLE castopod +# 2. BUILD the FrankenPHP/debian based prod image +#--------------------------------------------------- + +ARG PHP_VERSION="8.4" + +#################################################### +# BUNDLE STAGE +# ------------------------------------------------- +# Bundle castopod for production using +# a PHP / Alpine image +#--------------------------------------------------- +FROM php:${PHP_VERSION}-alpine3.23 AS bundle + +LABEL maintainer="Yassine Doghri " + +COPY . /castopod-src +WORKDIR /castopod-src + +COPY --from=composer:2.9 /usr/bin/composer /usr/local/bin/composer + +RUN \ + # download GeoLite2-City archive and extract it to writable/uploads + --mount=type=secret,id=maxmind-licence-key,env=MAXMIND_LICENCE_KEY \ + wget -c "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=$MAXMIND_LICENCE_KEY&suffix=tar.gz" -O - | tar -xz -C ./writable/uploads/ \ + # rename extracted archives' folders + && mv ./writable/uploads/GeoLite2-City* ./writable/uploads/GeoLite2-City + +RUN \ + # install composer globally + curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ + # install node and pnpm + && apk add --no-cache \ + nodejs \ + pnpm \ + git \ + rsync \ + # install production dependencies only using the --no-dev option + && composer install --no-dev --prefer-dist --no-ansi --no-interaction --no-progress --ignore-platform-reqs \ + # install js dependencies based on lockfile + && pnpm install --frozen-lockfile \ + # build all production static assets (css, js, images, icons, fonts, etc.) + && pnpm run build \ + # create castopod folder bundle: uses .rsync-filter (-F) file to copy only needed files + && rsync -aF . /castopod + + +#################################################### +# BUILD STAGE +# ------------------------------------------------- +# Define production image based on FrankenPHP / +# Debian with services managed by s6-overlay +#--------------------------------------------------- +FROM serversideup/php:${PHP_VERSION}-frankenphp-trixie AS production + +LABEL maintainer="Yassine Doghri " + +USER root + +ARG TARGETARCH + +# Latest releases available at https://github.com/aptible/supercronic/releases +# add supercronic to handle cron jobs +RUN if [ "$TARGETARCH" = "amd64" ]; then \ + SUPERCRONIC_URL="https://github.com/aptible/supercronic/releases/download/v0.2.43/supercronic-linux-amd64"; \ + SUPERCRONIC_SHA1SUM="f97b92132b61a8f827c3faf67106dc0e4467ccf2"; \ + SUPERCRONIC="supercronic-linux-amd64"; \ + elif [ "$TARGETARCH" = "arm64" ]; then \ + SUPERCRONIC_URL="https://github.com/aptible/supercronic/releases/download/v0.2.43/supercronic-linux-arm64"; \ + SUPERCRONIC_SHA1SUM="5c6266786c2813d6f8a99965d84452faae42b483"; \ + SUPERCRONIC="supercronic-linux-arm64"; \ + else \ + echo "Unsupported TARGETARCH: $TARGETARCH"; exit 1; \ + fi && \ + curl -fsSLO "$SUPERCRONIC_URL" \ + && echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \ + && chmod +x "$SUPERCRONIC" \ + && mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \ + && ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic + +ARG S6_OVERLAY_VERSION=3.2.2.0 + +# add s6-overlay process manager +ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp +RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz + +# add Arch-specific tarball +RUN if [ "$TARGETARCH" = "amd64" ]; then \ + S6_ARCH="x86_64"; \ + elif [ "$TARGETARCH" = "arm64" ]; then \ + S6_ARCH="aarch64"; \ + else \ + echo "Unsupported TARGETARCH: $TARGETARCH"; exit 1; \ + fi && \ + curl -fsSL -o /tmp/s6-overlay-${S6_ARCH}.tar.xz \ + "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_ARCH}.tar.xz" && \ + tar -C / -Jxpf /tmp/s6-overlay-${S6_ARCH}.tar.xz && \ + rm /tmp/s6-overlay-${S6_ARCH}.tar.xz + +# copy s6-overlay services +COPY --chown=www-data:www-data docker/production/s6-rc.d /etc/s6-overlay/s6-rc.d + +# make prepare-environment executable for bootstrapping the Castopod environment +RUN chmod +x /etc/s6-overlay/s6-rc.d/bootstrap/prepare-environment.sh + +RUN \ + apt-get update \ + && apt-get install -y \ + ffmpeg \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libpng-dev \ + libwebp-dev \ + libicu-dev \ + && install-php-extensions \ + intl \ + mysqli \ + exif \ + gd \ + # As of PHP 7.4 we don't need to add --with-png + && docker-php-ext-configure gd --with-webp --with-jpeg --with-freetype + +# copy castopod bundle from bundle stage +COPY --from=bundle --chown=www-data:www-data /castopod /app + +RUN \ + chmod -R 550 /app/ \ + && chmod -R 770 /app/public/media/ \ + && chmod -R 770 /app/writable/ \ + && chmod 750 /app/ + +ARG \ + PHP_MEMORY_LIMIT=512M \ + PHP_MAX_EXECUTION_TIME=300 \ + PHP_UPLOAD_MAX_FILE_SIZE=512M \ + PHP_POST_MAX_SIZE=512M \ + PHP_OPCACHE_ENABLE=1 + +ENV \ + PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT} \ + PHP_MAX_EXECUTION_TIME=${PHP_MAX_EXECUTION_TIME} \ + PHP_UPLOAD_MAX_FILE_SIZE=${PHP_UPLOAD_MAX_FILE_SIZE} \ + PHP_POST_MAX_SIZE=${PHP_POST_MAX_SIZE} \ + PHP_OPCACHE_ENABLE=${PHP_OPCACHE_ENABLE} + +USER www-data + +ENTRYPOINT ["docker-php-serversideup-entrypoint"] +CMD ["/init"] diff --git a/docker/production/app/Dockerfile b/docker/production/app/Dockerfile deleted file mode 100644 index 2c58c761..00000000 --- a/docker/production/app/Dockerfile +++ /dev/null @@ -1,44 +0,0 @@ -FROM docker.io/golang:1.20-bookworm AS CRON_BUILDER - -ARG SUPERCRONIC_VERSION=v0.2.25 - -RUN apt-get update && \ - apt-get install -y git && \ - git clone https://github.com/aptible/supercronic.git && \ - cd supercronic && \ - git checkout $SUPERCRONIC_VERSION && \ - go build && \ - mv supercronic /usr/local/bin - - -FROM docker.io/php:8.1-fpm - -COPY --from=CRON_BUILDER /usr/local/bin/supercronic /usr/local/bin/supercronic - -COPY docker/production/common/prepare_environment.sh /prepare_environment.sh -COPY docker/production/app/entrypoint.sh /entrypoint.sh -COPY docker/production/common/uploads.template.ini /uploads.template.ini -COPY docker/production/common/crontab.txt /crontab.txt -COPY docker/production/app/supervisord.conf /etc/supervisor/conf.d/supervisord.conf -COPY castopod /var/www/castopod - - -RUN apt-get update && \ - apt-get install -y supervisor ffmpeg curl gettext-base libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev libpcre2-8-0 libicu-dev && \ - rm -rf /var/lib/apt/lists/* && \ - pecl install -o -f redis && \ - rm -rf /tmp/pear && \ - docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \ - docker-php-ext-install mysqli gd intl exif && \ - docker-php-ext-enable mysqli gd intl exif redis && \ - chmod +x /entrypoint.sh && \ - chmod -R 750 /var/www/castopod && \ - chown -R root:www-data /var/www/castopod && \ - chown -R www-data:www-data /var/www/castopod/writable /var/www/castopod/public/media - -WORKDIR /var/www/castopod -VOLUME /var/www/castopod/public/media -EXPOSE 9000 - -ENTRYPOINT [ "sh", "-c" ] -CMD [ "/entrypoint.sh" ] diff --git a/docker/production/app/entrypoint.sh b/docker/production/app/entrypoint.sh deleted file mode 100644 index 0c8dc79d..00000000 --- a/docker/production/app/entrypoint.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -ENV_FILE_LOCATION=/var/www/castopod/.env - -# Fix ownership and permissions of castopod folders -chmod -R 750 /var/www/castopod -chown -R root:www-data /var/www/castopod -chown -R www-data:www-data /var/www/castopod/writable /var/www/castopod/public/media - -. /prepare_environment.sh - -supervisord diff --git a/docker/production/app/supervisord.conf b/docker/production/app/supervisord.conf deleted file mode 100644 index 20148886..00000000 --- a/docker/production/app/supervisord.conf +++ /dev/null @@ -1,20 +0,0 @@ -[supervisord] -nodaemon=true - -[program:supercronic] -command=supercronic /crontab.txt -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 - -[program:fpm] -command=/usr/local/sbin/php-fpm -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 diff --git a/docker/production/castopod/Dockerfile b/docker/production/castopod/Dockerfile deleted file mode 100644 index 77700f5e..00000000 --- a/docker/production/castopod/Dockerfile +++ /dev/null @@ -1,57 +0,0 @@ -FROM docker.io/golang:1.21-bookworm AS CRON_BUILDER - -ARG SUPERCRONIC_VERSION=v0.2.26 - -RUN apt-get update && \ - apt-get install -y git && \ - git clone https://github.com/aptible/supercronic.git && \ - cd supercronic && \ - git checkout $SUPERCRONIC_VERSION && \ - go build && \ - mv supercronic /usr/local/bin - - -FROM docker.io/php:8.2-cli - -ARG UNIT_VERSION=1.31.1 - -COPY --from=CRON_BUILDER /usr/local/bin/supercronic /usr/local/bin/supercronic - -COPY docker/production/common/prepare_environment.sh /prepare_environment.sh -COPY docker/production/castopod/entrypoint.sh /entrypoint.sh -COPY castopod /var/www/castopod -COPY docker/production/castopod/config.template.json /config.template.json -COPY docker/production/common/uploads.template.ini /uploads.template.ini -COPY docker/production/common/crontab.txt /crontab.txt -COPY docker/production/castopod/supervisord.conf /etc/supervisor/conf.d/supervisord.conf - -RUN apt-get update && \ - apt-get install -y supervisor ffmpeg curl gettext-base libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev libpcre2-dev libicu-dev git && \ - rm -rf /var/lib/apt/lists/* && \ - git clone https://github.com/nginx/unit.git && \ - cd unit && \ - git checkout $UNIT_VERSION && \ - ./configure --user=www-data --group=www-data && \ - ./configure php && \ - make && \ - make install && \ - cd .. && \ - rm -rf unit && \ - pecl install -o -f redis && \ - rm -rf /tmp/pear && \ - docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp --with-xpm && \ - docker-php-ext-install mysqli gd intl exif && \ - docker-php-ext-enable mysqli gd intl exif redis && \ - ln -s /dev/stdout /var/log/unit.log && \ - mkdir -p /usr/local/var/lib/unit /usr/local/var/run/unit /usr/local/var/log/unit && \ - chmod 544 /entrypoint.sh && \ - chmod -R 750 /var/www/castopod && \ - chown -R root:www-data /var/www/castopod && \ - chown -R www-data:www-data /var/www/castopod/writable /var/www/castopod/public/media - -WORKDIR /var/www/castopod -VOLUME /var/www/castopod/public/media -EXPOSE 8000 - -ENTRYPOINT [ "sh", "-c" ] -CMD [ "/entrypoint.sh" ] diff --git a/docker/production/castopod/config.template.json b/docker/production/castopod/config.template.json deleted file mode 100644 index e165e1fc..00000000 --- a/docker/production/castopod/config.template.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "listeners": { - "*:8000": { - "pass": "routes" - } - }, - "routes": [ - { - "match": { - "uri": "~^.+\\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map)$" - }, - "action": { - "share": "/var/www/castopod/public$uri", - "response_headers": { - "X-Content-Type-Options": "nosniff", - "Access-Control-Allow-Origin": "*", - "Cache-Control": "max-age=604800" - }, - "fallback": { - "pass": "applications/castopod" - } - } - }, - { - "action": { - "share": "/var/www/castopod/public$uri", - "response_headers": { - "X-Frame-Options": "sameorigin", - "X-Content-Type-Options": "nosniff", - "Access-Control-Allow-Origin": "*" - }, - "fallback": { - "pass": "applications/castopod" - } - } - } - ], - "applications": { - "castopod": { - "type": "php", - "root": "/var/www/castopod/public/", - "script": "index.php" - } - }, - "access_log": { - "path": "/dev/stdout" - }, - "settings": { - "http": { - "body_read_timeout": $CP_TIMEOUT, - "max_body_size": $CP_MAX_BODY_SIZE_BYTES, - "static": { - "mime_types": { - "text/vtt": [".vtt"], - "text/srt": [".srt"] - } - } - } - } -} diff --git a/docker/production/castopod/entrypoint.sh b/docker/production/castopod/entrypoint.sh deleted file mode 100644 index 51516b14..00000000 --- a/docker/production/castopod/entrypoint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -ENV_FILE_LOCATION=/var/www/castopod/.env - -. /prepare_environment.sh -cat /config.template.json | envsubst '$CP_MAX_BODY_SIZE_BYTES$CP_TIMEOUT' > /usr/local/var/lib/unit/conf.json - -supervisord diff --git a/docker/production/castopod/supervisord.conf b/docker/production/castopod/supervisord.conf deleted file mode 100644 index fe2939be..00000000 --- a/docker/production/castopod/supervisord.conf +++ /dev/null @@ -1,19 +0,0 @@ -[supervisord] -nodaemon=true - -[program:supercronic] -command=supercronic /crontab.txt -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 - -[program:unit] -command=unitd --no-daemon -autostart=true -autorestart=unexpected -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile_maxbytes=0 diff --git a/docker/production/common/crontab.txt b/docker/production/common/crontab.txt deleted file mode 100644 index 51409d9f..00000000 --- a/docker/production/common/crontab.txt +++ /dev/null @@ -1 +0,0 @@ -* * * * * /usr/local/bin/php /var/www/castopod/spark tasks:run >> /dev/null 2>&1 diff --git a/docker/production/common/uploads.template.ini b/docker/production/common/uploads.template.ini deleted file mode 100644 index 52ac70fc..00000000 --- a/docker/production/common/uploads.template.ini +++ /dev/null @@ -1,6 +0,0 @@ -file_uploads = On -memory_limit = $CP_PHP_MEMORY_LIMIT -upload_max_filesize = $CP_MAX_BODY_SIZE -post_max_size = $CP_MAX_BODY_SIZE -max_execution_time = $CP_TIMEOUT -max_input_time = $CP_TIMEOUT diff --git a/docker/production/s6-rc.d/bootstrap/dependencies.d/frankenphp b/docker/production/s6-rc.d/bootstrap/dependencies.d/frankenphp new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/common/prepare_environment.sh b/docker/production/s6-rc.d/bootstrap/prepare-environment.sh similarity index 76% rename from docker/production/common/prepare_environment.sh rename to docker/production/s6-rc.d/bootstrap/prepare-environment.sh index 64f7efbd..bb5a9a36 100644 --- a/docker/production/common/prepare_environment.sh +++ b/docker/production/s6-rc.d/bootstrap/prepare-environment.sh @@ -1,4 +1,6 @@ -#!/bin/sh +#!/command/with-contenv sh + +ENV_FILE_LOCATION=/app/.env log_error() { printf "\033[0;31mERROR:\033[0m $1\n" @@ -9,6 +11,13 @@ log_warning() { printf "\033[0;33mWARNING:\033[0m $1\n" } +log_info() { + printf "\033[0;34mINFO:\033[0m $1\n" +} + +# Remove .env file if exists to recreate it. +rm -f $ENV_FILE_LOCATION + if [ -z "${CP_BASEURL}" ] then log_error "CP_BASEURL must be set" @@ -16,19 +25,19 @@ fi if [ -z "${CP_MEDIA_BASEURL}" ] then - echo "CP_MEDIA_BASEURL is empty, using CP_BASEURL by default" + log_info "CP_MEDIA_BASEURL is empty, using CP_BASEURL by default" CP_MEDIA_BASEURL=$CP_BASEURL fi if [ -z "${CP_ADMIN_GATEWAY}" ] then - echo "CP_ADMIN_GATEWAY is empty, using default" + log_info "CP_ADMIN_GATEWAY is empty, using default \"cp-admin\"" CP_ADMIN_GATEWAY="cp-admin" fi if [ -z "${CP_AUTH_GATEWAY}" ] then - echo "CP_AUTH_GATEWAY is empty, using default" + log_info "CP_AUTH_GATEWAY is empty, using default \"cp-auth\"" CP_AUTH_GATEWAY="cp-auth" fi @@ -39,13 +48,13 @@ fi if [ -z "${CP_DATABASE_HOSTNAME}" ] then - log_warning "CP_DATABASE_HOSTNAME is empty, using default" + log_warning "CP_DATABASE_HOSTNAME is empty, using default \"mariadb\"" CP_DATABASE_HOSTNAME="mariadb" fi if [ -z "${CP_DATABASE_PREFIX}" ] then - echo "CP_DATABASE_PREFIX is empty, using default" + log_info "CP_DATABASE_PREFIX is empty, using default \"cp_\"" CP_DATABASE_PREFIX="cp_" fi @@ -84,29 +93,28 @@ fi if [ ! -z "${CP_REDIS_HOST}" ] then - echo "Using redis cache handler" + log_info "Using redis cache handler" CP_CACHE_HANDLER="redis" if [ -z "${CP_REDIS_PASSWORD}" ] then - echo "CP_REDIS_PASSWORD is empty, using default" - CP_REDIS_PASSWORD="null" + log_error "You must set CP_REDIS_PASSWORD when using redis as a cache handler." else CP_REDIS_PASSWORD="\"${CP_REDIS_PASSWORD}\"" fi if [ -z "${CP_REDIS_PORT}" ] then - echo "CP_REDIS_PORT is empty, using default" + log_info "CP_REDIS_PORT is empty, using default port \"6379\"" CP_REDIS_PORT="6379" fi if [ -z "${CP_REDIS_DATABASE}" ] then - echo "CP_REDIS_DATABASE is empty, using default" + log_info "CP_REDIS_DATABASE is empty, using default \"0\"" CP_REDIS_DATABASE="0" fi else - echo "Using file cache handler" + log_info "Using file cache handler" CP_CACHE_HANDLER="file" fi @@ -134,28 +142,6 @@ then fi fi -if [ -z "${CP_PHP_MEMORY_LIMIT}" ] -then - export CP_PHP_MEMORY_LIMIT="512M" -fi - -if [ -z "${CP_MAX_BODY_SIZE}" ] -then - export CP_MAX_BODY_SIZE="512M" -fi - -CP_MAX_BODY_SIZE_BYTES=$(numfmt --from=iec "$CP_MAX_BODY_SIZE") -if [ $? -ne 0 ] -then - log_error "Failed to parse CP_MAX_BODY_SIZE ($CP_MAX_BODY_SIZE) as human readable number" -fi -export CP_MAX_BODY_SIZE_BYTES=$CP_MAX_BODY_SIZE_BYTES - -if [ -z "${CP_TIMEOUT}" ] -then - export CP_TIMEOUT=900 -fi - cat << EOF > $ENV_FILE_LOCATION app.baseURL="${CP_BASEURL}" media.baseURL="${CP_MEDIA_BASEURL}" @@ -238,20 +224,17 @@ if [ ! -z "${CP_EMAIL_SMTP_HOST}" ] then if [ -z "${CP_EMAIL_SMTP_USERNAME}" ] then - echo "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_USERNAME must be set" - exit 1 + log_error "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_USERNAME must be set" fi if [ -z "${CP_EMAIL_SMTP_PASSWORD}" ] then - echo "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_PASSWORD must be set" - exit 1 + log_error "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_SMTP_PASSWORD must be set" fi if [ -z "${CP_EMAIL_FROM}" ] then - echo "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_FROM must be set" - exit 1 + log_error "When CP_EMAIL_SMTP_HOST is provided, CP_EMAIL_FROM must be set" fi cat << EOF >> $ENV_FILE_LOCATION @@ -273,8 +256,7 @@ EOF then if [ "${CP_EMAIL_SMTP_CRYPTO}" != "ssl" ] && [ "${CP_EMAIL_SMTP_CRYPTO}" != "tls" ] then - echo "CP_EMAIL_SMTP_CRYPTO must be ssl or tls" - exit 1 + log_error "CP_EMAIL_SMTP_CRYPTO must be ssl or tls" fi cat << EOF >> $ENV_FILE_LOCATION email.SMTPCrypto=${CP_EMAIL_SMTP_CRYPTO} @@ -282,11 +264,14 @@ EOF fi fi -echo "Using config:" +log_info "Using config:" cat $ENV_FILE_LOCATION -#Run database migrations after 10 seconds (to wait for the database to be started) -(sleep 10 && php spark castopod:database-update) & +# prevent .env from being writable +chmod -w $ENV_FILE_LOCATION -#Apply php configuration -cat /uploads.template.ini | envsubst '$CP_MAX_BODY_SIZE$CP_MAX_BODY_SIZE_BYTES$CP_TIMEOUT$CP_PHP_MEMORY_LIMIT' > /usr/local/etc/php/conf.d/uploads.ini +#Run database migrations +/usr/local/bin/php /var/www/html/spark castopod:database-update + +# clear cache to account for new assets and any change in data structure +/usr/local/bin/php /var/www/html/spark cache:clear diff --git a/docker/production/s6-rc.d/bootstrap/type b/docker/production/s6-rc.d/bootstrap/type new file mode 100644 index 00000000..bdd22a18 --- /dev/null +++ b/docker/production/s6-rc.d/bootstrap/type @@ -0,0 +1 @@ +oneshot diff --git a/docker/production/s6-rc.d/bootstrap/up b/docker/production/s6-rc.d/bootstrap/up new file mode 100644 index 00000000..4abab1a4 --- /dev/null +++ b/docker/production/s6-rc.d/bootstrap/up @@ -0,0 +1,2 @@ +#!/command/with-contenv sh +/etc/s6-overlay/s6-rc.d/bootstrap/prepare-environment.sh diff --git a/docker/production/s6-rc.d/frankenphp/dependencies.d/base b/docker/production/s6-rc.d/frankenphp/dependencies.d/base new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/frankenphp/run b/docker/production/s6-rc.d/frankenphp/run new file mode 100644 index 00000000..1193fcc3 --- /dev/null +++ b/docker/production/s6-rc.d/frankenphp/run @@ -0,0 +1,2 @@ +#!/command/with-contenv sh +frankenphp run --config /etc/frankenphp/Caddyfile --adapter caddyfile diff --git a/docker/production/s6-rc.d/frankenphp/type b/docker/production/s6-rc.d/frankenphp/type new file mode 100644 index 00000000..5883cff0 --- /dev/null +++ b/docker/production/s6-rc.d/frankenphp/type @@ -0,0 +1 @@ +longrun diff --git a/docker/production/s6-rc.d/supercronic/crontab b/docker/production/s6-rc.d/supercronic/crontab new file mode 100644 index 00000000..8382f92f --- /dev/null +++ b/docker/production/s6-rc.d/supercronic/crontab @@ -0,0 +1 @@ +* * * * * /usr/local/bin/php /var/www/html/spark tasks:run >> /dev/null 2>&1 diff --git a/docker/production/s6-rc.d/supercronic/dependencies.d/frankenphp b/docker/production/s6-rc.d/supercronic/dependencies.d/frankenphp new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/supercronic/run b/docker/production/s6-rc.d/supercronic/run new file mode 100644 index 00000000..73b9b0cf --- /dev/null +++ b/docker/production/s6-rc.d/supercronic/run @@ -0,0 +1,2 @@ +#!/command/with-contenv sh +supercronic /etc/s6-overlay/s6-rc.d/supercronic/crontab diff --git a/docker/production/s6-rc.d/supercronic/type b/docker/production/s6-rc.d/supercronic/type new file mode 100644 index 00000000..5883cff0 --- /dev/null +++ b/docker/production/s6-rc.d/supercronic/type @@ -0,0 +1 @@ +longrun diff --git a/docker/production/s6-rc.d/user/contents.d/bootstrap b/docker/production/s6-rc.d/user/contents.d/bootstrap new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/user/contents.d/frankenphp b/docker/production/s6-rc.d/user/contents.d/frankenphp new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/s6-rc.d/user/contents.d/supercronic b/docker/production/s6-rc.d/user/contents.d/supercronic new file mode 100644 index 00000000..e69de29b diff --git a/docker/production/web-server/Dockerfile b/docker/production/web-server/Dockerfile deleted file mode 100644 index c3ce4328..00000000 --- a/docker/production/web-server/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM docker.io/nginx:1.25 - -COPY docker/production/web-server/entrypoint.sh /entrypoint.sh -COPY docker/production/web-server/nginx.template.conf /nginx.template.conf -COPY castopod/public /var/www/html - -RUN chmod +x /entrypoint.sh && \ - apt-get update && \ - apt-get install -y curl gettext-base && \ - rm -rf /var/lib/apt/lists/* && \ - usermod -aG www-data nginx - -HEALTHCHECK --interval=30s --timeout=3s CMD curl --fail http://localhost || exit 1 -VOLUME /var/www/html/media -EXPOSE 80 -WORKDIR /var/www/html - -CMD ["/entrypoint.sh"] diff --git a/docker/production/web-server/entrypoint.sh b/docker/production/web-server/entrypoint.sh deleted file mode 100644 index 5f623781..00000000 --- a/docker/production/web-server/entrypoint.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if [ -z "${CP_APP_HOSTNAME}" ] -then - echo "CP_APP_HOSTNAME is empty, using default" - export CP_APP_HOSTNAME="app" -fi - -if [ -z "${CP_MAX_BODY_SIZE}" ] -then - export CP_MAX_BODY_SIZE=512M -fi - -if [ -z "${CP_TIMEOUT}" ] -then - export CP_TIMEOUT=900 -fi - -cat /nginx.template.conf | envsubst '$CP_APP_HOSTNAME$CP_MAX_BODY_SIZE$CP_TIMEOUT' > /etc/nginx/nginx.conf - -nginx -g "daemon off;" diff --git a/docker/production/web-server/nginx.template.conf b/docker/production/web-server/nginx.template.conf deleted file mode 100644 index bb7b91ec..00000000 --- a/docker/production/web-server/nginx.template.conf +++ /dev/null @@ -1,80 +0,0 @@ -worker_processes auto; - -error_log /var/log/nginx/error.log warn; -pid /var/run/nginx.pid; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - types { - text/vtt vtt; - text/srt srt; - } - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /var/log/nginx/access.log main; - - sendfile on; - - keepalive_timeout 65; - - set_real_ip_from 10.0.0.0/8; - set_real_ip_from 172.16.0.0/12; - set_real_ip_from 192.168.0.0/16; - real_ip_header X-Real-IP; - - upstream php-handler { - server $CP_APP_HOSTNAME:9000; - } - - server { - listen 80; - - root /var/www/html; - - server_tokens off; - add_header X-Frame-Options sameorigin always; - add_header Permissions-Policy interest-cohort=(); - add_header X-Content-Type-Options nosniff; - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"; - client_max_body_size $CP_MAX_BODY_SIZE; - client_body_timeout ${CP_TIMEOUT}s; - - fastcgi_buffers 64 4K; - - gzip on; - gzip_vary on; - gzip_comp_level 4; - gzip_min_length 256; - gzip_types application/atom+xml application/javascript application/rss+xml image/bmp image/svg+xml image/x-icon text/css text/plain text/html; - - try_files $uri $uri/ /index.php?$args; - index index.php index.html; - - location ~ \.php$ { - include fastcgi_params; - fastcgi_intercept_errors on; - fastcgi_index index.php; - fastcgi_param SERVER_NAME $host; - fastcgi_pass php-handler; - fastcgi_param SCRIPT_FILENAME /var/www/castopod/public/$fastcgi_script_name; - try_files $uri =404; - fastcgi_read_timeout 3600; - fastcgi_send_timeout 3600; - } - - location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map)$ { - add_header Access-Control-Allow-Origin "*"; - expires max; - access_log off; - } - - } -} diff --git a/docs/.gitlab-ci.yml b/docs/.gitlab-ci.yml index 6a26b8f7..d0f1bde5 100644 --- a/docs/.gitlab-ci.yml +++ b/docs/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: node:20 +image: node:22 stages: - build @@ -6,8 +6,9 @@ stages: .documentation-setup: before_script: + - npm install --global corepack@latest - corepack enable - - corepack prepare pnpm@latest-9 --activate + - corepack prepare pnpm@latest-10 --activate - pnpm config set store-dir .pnpm-store - cd docs - chmod +x ./scripts/i18n-filter.sh @@ -27,11 +28,10 @@ build: stage: build script: - pnpm run build - except: - - develop - - main - - beta - - alpha + rules: + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ + when: never + - when: on_success build-production: extends: .documentation-setup @@ -45,11 +45,8 @@ build-production: paths: - docs/dist/$CI_COMMIT_REF_SLUG expire_in: 30 mins - only: - - develop - - main - - beta - - alpha + rules: + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ deploy: stage: deploy @@ -75,8 +72,5 @@ deploy: script: - rsync -avzuh -e "ssh -p $SSH_PORT" $SOURCE_FOLDER $USER@$HOST:$TEMP_DIRECTORY --progress - ssh $USER@$HOST -p $SSH_PORT "rsync -rtv $TEMP_DIRECTORY $DIRECTORY" - only: - - develop - - main - - beta - - alpha + rules: + - if: $CI_COMMIT_BRANCH =~ /^(develop|main|alpha|beta|next)$/ diff --git a/docs/README.md b/docs/README.md index 1b015bf2..34351f25 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,9 +6,6 @@ pnpm create astro@latest -- --template starlight ``` -[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/starlight/tree/main/examples/basics) -[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/starlight/tree/main/examples/basics) - > 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! ## 🚀 Project Structure @@ -16,15 +13,14 @@ pnpm create astro@latest -- --template starlight Inside of your Astro + Starlight project, you'll see the following folders and files: -``` +```sh . ├── public/ ├── src/ │ ├── assets/ │ ├── content/ -│ │ ├── docs/ -│ │ └── config.ts -│ └── env.d.ts +│ │ └── docs/ +│ └── content.config.ts ├── astro.config.mjs ├── package.json └── tsconfig.json @@ -42,14 +38,14 @@ Static assets, like favicons, can be placed in the `public/` directory. All commands are run from the root of the project, from a terminal: -| Command | Action | -| :------------------------ | :----------------------------------------------- | -| `npm install` | Installs dependencies | -| `npm run dev` | Starts local dev server at `localhost:4321` | -| `npm run build` | Build your production site to `./dist/` | -| `npm run preview` | Preview your build locally, before deploying | -| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | -| `npm run astro -- --help` | Get help using the Astro CLI | +| Command | Action | +| :--------------------- | :----------------------------------------------- | +| `pnpm install` | Installs dependencies | +| `pnpm dev` | Starts local dev server at `localhost:4321` | +| `pnpm build` | Build your production site to `./dist/` | +| `pnpm preview` | Preview your build locally, before deploying | +| `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` | +| `pnpm astro -- --help` | Get help using the Astro CLI | ## 👀 Want to learn more? diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index b481bd2f..12243d1b 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -1,13 +1,15 @@ +// @ts-check import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; -import tailwind from "@astrojs/tailwind"; - const site = "https://docs.castopod.org/"; const base = process.env.BASE ?? "/docs"; // https://astro.build/config export default defineConfig({ + server: { + host: true, + }, site, base, integrations: [ @@ -16,8 +18,7 @@ export default defineConfig({ description: "Check out the Castopod documentation! Install your own free & open-source podcast host, help make it better by contributing, or simply learn more about Castopod!", components: { - Header: "./src/components/Header.astro", - MobileMenuFooter: "./src/components/MobileMenuFooter.astro", + ThemeSelect: "./src/components/ThemeSelect.astro", }, logo: { src: "./src/assets/castopod-logo-inline.svg", @@ -28,7 +29,7 @@ export default defineConfig({ "@fontsource/inter/400.css", "@fontsource/inter/600.css", "@fontsource/rubik/700.css", - "./src/styles/tailwind.css", + "./src/styles/custom.css", ], head: [ { @@ -81,6 +82,33 @@ export default defineConfig({ }, }, ], + social: [ + { + icon: "discord", + label: "Discord", + href: "https://castopod.org/chat", + }, + { + icon: "blueSky", + label: "Bluesky", + href: "https://bsky.app/profile/castopod.org", + }, + { + icon: "mastodon", + label: "Mastodon", + href: "https://podlibre.social/@Castopod", + }, + { + icon: "gitlab", + label: "Source code", + href: "https://code.castopod.org/adaures/castopod", + }, + { + icon: "github", + label: "Github", + href: "https://github.com/ad-aures/castopod", + }, + ], defaultLocale: "en", locales: { en: { @@ -115,16 +143,9 @@ export default defineConfig({ lang: "zh-Hans", }, }, - social: { - discord: "https://castopod.org/chat", - "x.com": "https://twitter.com/castopod", - mastodon: "https://podlibre.social/@Castopod", - gitlab: "https://code.castopod.org/adaures/castopod", - github: "https://github.com/ad-aures/castopod", - }, sidebar: [ { - label: "Instroduction", + label: "Introduction", link: "/", translations: { fr: "Installer", @@ -181,16 +202,114 @@ export default defineConfig({ "nn-no": "Autentisering", }, }, + { + label: "Create your first podcast", + link: "/getting-started/create-podcast/", + translations: {}, + }, + { + label: "Create your first episode", + link: "/getting-started/create-episode/", + translations: {}, + }, + ], + }, + { + label: "User guide", + translations: {}, + items: [ + { + label: "Introduction", + link: "/user-guide/", + }, + { + label: "Manage your instance", + translations: {}, + items: [ + { + label: "Introduction", + link: "/user-guide/instance/", + }, + { + label: "Add a podcast", + link: "/user-guide/instance/podcast", + translations: {}, + }, + { + label: "Persons", + link: "/user-guide/instance/persons", + translations: {}, + }, + + { + label: "Fediverse", + link: "/user-guide/instance/fediverse", + translations: {}, + }, + { + label: "Users", + link: "/user-guide/instance/users", + translations: {}, + }, + { + label: "Pages", + link: "/user-guide/instance/pages", + translations: {}, + }, + { + label: "Settings", + link: "/user-guide/instance/settings", + translations: {}, + }, + ], + }, + { + label: "Manage your podcasts", + translations: {}, + items: [ + { + label: "Introduction", + link: "/user-guide/podcast/", + }, + { + label: "Podcast dashboard", + link: "/user-guide/podcast/dashboard", + translations: {}, + }, + { + label: "Episodes", + link: "/user-guide/podcast/episodes", + translations: {}, + }, + + { + label: "Analytics", + link: "/user-guide/podcast/analytics", + translations: {}, + }, + { + label: "Broadcasting", + link: "/user-guide/podcast/broadcast", + translations: {}, + }, + { + label: "Contributors", + link: "/user-guide/podcast/contributors", + translations: {}, + }, + ], + }, + { + label: "Website overview", + link: "/user-guide/website/", + translations: {}, + }, ], }, ], editLink: { - baseUrl: - "https://code.castopod.org/adaures/castopod/-/edit/develop/docs/", + baseUrl: "https://code.castopod.org/adaures/castopod/-/edit/main/docs/", }, }), - tailwind({ - applyBaseStyles: false, - }), ], }); diff --git a/docs/package.json b/docs/package.json index c995429a..5edaeb8c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,28 +1,20 @@ { - "name": "civil-chasm", + "name": "castopod-docs", "type": "module", "version": "0.0.1", "scripts": { "dev": "astro dev", "start": "astro dev", - "build": "astro check && astro build", + "build": "astro build", "preview": "astro preview", "astro": "astro", "prepare": "astro telemetry disable" }, "dependencies": { - "@astrojs/check": "^0.7.0", - "@astrojs/starlight": "^0.22.4", - "@astrojs/starlight-tailwind": "^2.0.2", - "@astrojs/tailwind": "^5.1.0", - "@fontsource/inter": "^5.0.18", - "@fontsource/rubik": "^5.0.20", - "astro": "^4.8.6", - "autoprefixer": "^10.4.19", - "cssnano": "^7.0.1", - "postcss-preset-env": "^9.5.13", - "sharp": "^0.33.4", - "tailwindcss": "^3.4.3", - "typescript": "^5.4.5" + "@astrojs/starlight": "^0.37.6", + "@fontsource/inter": "^5.2.8", + "@fontsource/rubik": "^5.2.8", + "astro": "^5.17.1", + "sharp": "^0.34.5" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 2f88765a..fc96242c 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -7,705 +7,132 @@ settings: importers: .: dependencies: - "@astrojs/check": - specifier: ^0.7.0 - version: 0.7.0(typescript@5.4.5) "@astrojs/starlight": - specifier: ^0.22.4 - version: 0.22.4(astro@4.8.6(typescript@5.4.5)) - "@astrojs/starlight-tailwind": - specifier: ^2.0.2 - version: 2.0.2(@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3) - "@astrojs/tailwind": - specifier: ^5.1.0 - version: 5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3) + specifier: ^0.37.6 + version: 0.37.6(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) "@fontsource/inter": - specifier: ^5.0.18 - version: 5.0.18 + specifier: ^5.2.8 + version: 5.2.8 "@fontsource/rubik": - specifier: ^5.0.20 - version: 5.0.20 + specifier: ^5.2.8 + version: 5.2.8 astro: - specifier: ^4.8.6 - version: 4.8.6(typescript@5.4.5) - autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.33) - cssnano: - specifier: ^7.0.1 - version: 7.0.1(postcss@8.4.33) - postcss-preset-env: - specifier: ^9.5.13 - version: 9.5.13(postcss@8.4.33) + specifier: ^5.17.1 + version: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) sharp: - specifier: ^0.33.4 - version: 0.33.4 - tailwindcss: - specifier: ^3.4.3 - version: 3.4.3 - typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^0.34.5 + version: 0.34.5 packages: - "@alloc/quick-lru@5.2.0": + "@astrojs/compiler@2.13.1": resolution: { - integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==, + integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==, } - engines: { node: ">=10" } - "@ampproject/remapping@2.2.1": + "@astrojs/internal-helpers@0.7.2": resolution: { - integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==, + integrity: sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==, } - engines: { node: ">=6.0.0" } - "@astrojs/check@0.7.0": + "@astrojs/internal-helpers@0.7.5": resolution: { - integrity: sha512-UTqwOeKNu9IYZmJXEeWnQuTdSd/pX58Hl4TUARsMlT97SVDL//kLBE4T/ctxRz6J573N87oE5ddtW/uOOnQTug==, + integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==, } - hasBin: true + + "@astrojs/markdown-remark@6.3.10": + resolution: + { + integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==, + } + + "@astrojs/markdown-remark@6.3.6": + resolution: + { + integrity: sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==, + } + + "@astrojs/mdx@4.3.4": + resolution: + { + integrity: sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw==, + } + engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } peerDependencies: - typescript: ^5.0.0 + astro: ^5.0.0 - "@astrojs/compiler@2.8.0": + "@astrojs/prism@3.3.0": resolution: { - integrity: sha512-yrpD1WRGqsJwANaDIdtHo+YVjvIOFAjC83lu5qENIgrafwZcJgSXDuwVMXOgok4tFzpeKLsFQ6c3FoUdloLWBQ==, + integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==, + } + engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } + + "@astrojs/sitemap@3.5.1": + resolution: + { + integrity: sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg==, } - "@astrojs/internal-helpers@0.4.0": + "@astrojs/starlight@0.37.6": resolution: { - integrity: sha512-6B13lz5n6BrbTqCTwhXjJXuR1sqiX/H6rTxzlXx+lN1NnV4jgnq/KJldCQaUWJzPL5SiWahQyinxAbxQtwgPHA==, - } - - "@astrojs/language-server@2.10.0": - resolution: - { - integrity: sha512-crHXpqYfA5qWioiuZnZFpTsNItgBlF1f0S9MzDYS7/pfCALkHNJ7K3w9U/j0uMKymsT4hC7BfMaX0DYlfdSzHg==, - } - hasBin: true - peerDependencies: - prettier: ^3.0.0 - prettier-plugin-astro: ">=0.11.0" - peerDependenciesMeta: - prettier: - optional: true - prettier-plugin-astro: - optional: true - - "@astrojs/markdown-remark@5.1.0": - resolution: - { - integrity: sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ==, - } - - "@astrojs/mdx@2.3.1": - resolution: - { - integrity: sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ==, - } - engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 } - peerDependencies: - astro: ^4.0.0 - - "@astrojs/prism@3.1.0": - resolution: - { - integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==, - } - engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 } - - "@astrojs/sitemap@3.0.5": - resolution: - { - integrity: sha512-60eLzNjMza3ABypiQPUC6ElOSZNZeY5CwSwgJ03hfeonl+Db9x12CCzBFdTw7A5Mq+O54xEZVUrR0tB+yWgX8w==, - } - - "@astrojs/starlight-tailwind@2.0.2": - resolution: - { - integrity: sha512-XJccwk6VLeQZuGQwoiLZLNAPCn2fQobtl10Ra2c2yDLjdYEActcqy0eidZbouAwGlbS9I0iJogeGjHQJ2Casjg==, + integrity: sha512-wQrKwH431q+8FsLBnNQeG+R36TMtEGxTQ2AuiVpcx9APcazvL3n7wVW8mMmYyxX0POjTnxlcWPkdMGR3Yj1L+w==, } peerDependencies: - "@astrojs/starlight": ">=0.9.0" - "@astrojs/tailwind": ^5.0.0 - tailwindcss: ^3.3.3 + astro: ^5.5.0 - "@astrojs/starlight@0.22.4": + "@astrojs/telemetry@3.3.0": resolution: { - integrity: sha512-AgiVEVv2ZkGHkoJcjY0azXG2K7892i+z4FpKtasnESTciomO91I/X9vAfKfHxmTxdVP5BGPxBFVi0Bp2X4Lxvg==, + integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==, } - peerDependencies: - astro: ^4.2.7 + engines: { node: 18.20.8 || ^20.3.0 || >=22.0.0 } - "@astrojs/tailwind@5.1.0": + "@babel/helper-string-parser@7.27.1": resolution: { - integrity: sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==, - } - peerDependencies: - astro: ^3.0.0 || ^4.0.0 - tailwindcss: ^3.0.24 - - "@astrojs/telemetry@3.1.0": - resolution: - { - integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==, - } - engines: { node: ^18.17.1 || ^20.3.0 || >=21.0.0 } - - "@babel/code-frame@7.24.2": - resolution: - { - integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==, + integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, } engines: { node: ">=6.9.0" } - "@babel/compat-data@7.24.4": + "@babel/helper-validator-identifier@7.28.5": resolution: { - integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==, + integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, } engines: { node: ">=6.9.0" } - "@babel/core@7.24.5": + "@babel/parser@7.29.0": resolution: { - integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==, - } - engines: { node: ">=6.9.0" } - - "@babel/generator@7.24.5": - resolution: - { - integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-annotate-as-pure@7.22.5": - resolution: - { - integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-compilation-targets@7.23.6": - resolution: - { - integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-environment-visitor@7.22.20": - resolution: - { - integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-function-name@7.23.0": - resolution: - { - integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-hoist-variables@7.22.5": - resolution: - { - integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-imports@7.22.15": - resolution: - { - integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-imports@7.24.3": - resolution: - { - integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-transforms@7.24.5": - resolution: - { - integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-plugin-utils@7.22.5": - resolution: - { - integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-simple-access@7.24.5": - resolution: - { - integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-split-export-declaration@7.24.5": - resolution: - { - integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-string-parser@7.24.1": - resolution: - { - integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-identifier@7.24.5": - resolution: - { - integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-option@7.23.5": - resolution: - { - integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helpers@7.24.5": - resolution: - { - integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==, - } - engines: { node: ">=6.9.0" } - - "@babel/highlight@7.24.5": - resolution: - { - integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.24.5": - resolution: - { - integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==, + integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==, } engines: { node: ">=6.0.0" } hasBin: true - "@babel/plugin-syntax-jsx@7.23.3": + "@babel/runtime@7.28.3": resolution: { - integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx@7.23.4": - resolution: - { - integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/template@7.22.15": - resolution: - { - integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==, + integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==, } engines: { node: ">=6.9.0" } - "@babel/template@7.24.0": + "@babel/types@7.29.0": resolution: { - integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==, + integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==, } engines: { node: ">=6.9.0" } - "@babel/traverse@7.24.5": + "@capsizecss/unpack@4.0.0": resolution: { - integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==, + integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==, } - engines: { node: ">=6.9.0" } - - "@babel/types@7.24.5": - resolution: - { - integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==, - } - engines: { node: ">=6.9.0" } - - "@csstools/cascade-layer-name-parser@1.0.11": - resolution: - { - integrity: sha512-yhsonEAhaWRQvHFYhSzOUobH2Ev++fMci+ppFRagw0qVSPlcPV4FnNmlwpM/b2BM10ZeMRkVV4So6YRswD0O0w==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - "@csstools/css-parser-algorithms": ^2.6.3 - "@csstools/css-tokenizer": ^2.3.1 - - "@csstools/color-helpers@4.2.0": - resolution: - { - integrity: sha512-hJJrSBzbfGxUsaR6X4Bzd/FLx0F1ulKnR5ljY9AiXCtsR+H+zSWQDFWlKES1BRaVZTDHLpIIHS9K2o0h+JLlrg==, - } - engines: { node: ^14 || ^16 || >=18 } - - "@csstools/css-calc@1.2.2": - resolution: - { - integrity: sha512-0owrl7AruDRKAxoSIW8XzJdz7GnuW3AOj4rYLfmXsoKIX2ZZzttzGXoiC8n8V08X7wIBlEWWVB4C8fAN18+I6Q==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - "@csstools/css-parser-algorithms": ^2.6.3 - "@csstools/css-tokenizer": ^2.3.1 - - "@csstools/css-color-parser@2.0.2": - resolution: - { - integrity: sha512-Agx2YmxTcZ7TfB7KNZQ+iekaxbWSdblvtA35aTwE3KfuYyjOlCg3P4KGGdQF/cjm1pHWVSBo5duF/BRfZ8s07A==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - "@csstools/css-parser-algorithms": ^2.6.3 - "@csstools/css-tokenizer": ^2.3.1 - - "@csstools/css-parser-algorithms@2.6.3": - resolution: - { - integrity: sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - "@csstools/css-tokenizer": ^2.3.1 - - "@csstools/css-tokenizer@2.3.1": - resolution: - { - integrity: sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==, - } - engines: { node: ^14 || ^16 || >=18 } - - "@csstools/media-query-list-parser@2.1.11": - resolution: - { - integrity: sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - "@csstools/css-parser-algorithms": ^2.6.3 - "@csstools/css-tokenizer": ^2.3.1 - - "@csstools/postcss-cascade-layers@4.0.6": - resolution: - { - integrity: sha512-Xt00qGAQyqAODFiFEJNkTpSUz5VfYqnDLECdlA/Vv17nl/OIV5QfTRHGAXrBGG5YcJyHpJ+GF9gF/RZvOQz4oA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-color-function@3.0.16": - resolution: - { - integrity: sha512-KtmXfckANSKsLBoTQCzggvKft1cmmmDKYjFO4yVlB23nWUgGInVBTE9T5JLmH29NNdTWSEPLWPUxoQ6XiIEn2Q==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-color-mix-function@2.0.16": - resolution: - { - integrity: sha512-BJnD1M5Pdypl1cJuwGuzVC52PqgzaObsDLu34jgf+QU7daVFqz432PvpqvXTmfTSNt4OckOT1QIzWexEFlDNXw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-exponential-functions@1.0.7": - resolution: - { - integrity: sha512-9usBPQX74OhiF/VuaVrp44UAPzqbKNyoaxEa6tbEXiFp+OAm3yB/TLRKyPUWg5tvvHGCduGJVdJJB3w8c8NBtA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-font-format-keywords@3.0.2": - resolution: - { - integrity: sha512-E0xz2sjm4AMCkXLCFvI/lyl4XO6aN1NCSMMVEOngFDJ+k2rDwfr6NDjWljk1li42jiLNChVX+YFnmfGCigZKXw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-gamut-mapping@1.0.9": - resolution: - { - integrity: sha512-JmOeiBJj1RJriAkr+aLBaiYUpEqdNOIo3ERQ5a4uNzy18upzrQ6tz7m2Vt1GQpJ62zQj7rC5PjAhCoZCoyE31g==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-gradients-interpolation-method@4.0.17": - resolution: - { - integrity: sha512-qSNIqzLPKd2SadfWwHZv42lDRyYlLaM+Vx5rRIsnYCZbQxzFfe1XAwssrcCsHgba5bA6bi5oDoFCx0W+PRCpfw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-hwb-function@3.0.15": - resolution: - { - integrity: sha512-l34fRiZ7o5+pULv7OplXniBTU4TuKYNNOv0abuvUanddWGSy3+YHlMKUSgcVFo0d1DorxPAhJSTCrugl+4OmMQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-ic-unit@3.0.6": - resolution: - { - integrity: sha512-fHaU9C/sZPauXMrzPitZ/xbACbvxbkPpHoUgB9Kw5evtsBWdVkVrajOyiT9qX7/c+G1yjApoQjP1fQatldsy9w==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-initial@1.0.1": - resolution: - { - integrity: sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-is-pseudo-class@4.0.8": - resolution: - { - integrity: sha512-0aj591yGlq5Qac+plaWCbn5cpjs5Sh0daovYUKJUOMjIp70prGH/XPLp7QjxtbFXz3CTvb0H9a35dpEuIuUi3Q==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-light-dark-function@1.0.5": - resolution: - { - integrity: sha512-kKM9dtEaVmSTb3scL2pgef62KyWv6SK19JiAnCCuiDhlRE6PADKzaPPBXmP3qj4IEgIH+cQhdEosB0eroU6Fnw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-logical-float-and-clear@2.0.1": - resolution: - { - integrity: sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-logical-overflow@1.0.1": - resolution: - { - integrity: sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-logical-overscroll-behavior@1.0.1": - resolution: - { - integrity: sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-logical-resize@2.0.1": - resolution: - { - integrity: sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-logical-viewport-units@2.0.9": - resolution: - { - integrity: sha512-iBBJuExgHwedFH9AqNOHWzZFgYnt17zhu1qWjmSihu1P5pw0lIG9q5t3uIgJJFDNmYoOGfBKan66z9u1QH8yBQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-media-minmax@1.1.6": - resolution: - { - integrity: sha512-bc0frf2Lod53j6wEHVsaVElfvCf6uhc96v99M/wUfer4MmNYfO3YLx1kFuB8xXvb0AXiWx4fohCJqemHV3bfRg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.9": - resolution: - { - integrity: sha512-PR0s3tFSxPoKoPLoKuiZuYhwQC5bQxq/gFfywX2u/kh8rMzesARPZYKxE71I3jHWi6KDHGZl9Xb5xcFPwtvLiQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-nested-calc@3.0.2": - resolution: - { - integrity: sha512-ySUmPyawiHSmBW/VI44+IObcKH0v88LqFe0d09Sb3w4B1qjkaROc6d5IA3ll9kjD46IIX/dbO5bwFN/swyoyZA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-normalize-display-values@3.0.2": - resolution: - { - integrity: sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-oklab-function@3.0.16": - resolution: - { - integrity: sha512-zm8nND+EraZrmbO4mgcT8FrJrAQUfWNfMmbV5uTCpWtAcO5ycX3E3bO8T1TjczKYRxC5QMM/91n9YExYCF4Mvw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-progressive-custom-properties@3.2.0": - resolution: - { - integrity: sha512-BZlirVxCRgKlE7yVme+Xvif72eTn1MYXj8oZ4Knb+jwaH4u3AN1DjbhM7j86RP5vvuAOexJ4JwfifYYKWMN/QQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-relative-color-syntax@2.0.16": - resolution: - { - integrity: sha512-TSM8fVqJkT8JZDranZPnkpxjU/Q1sNR192lXMND+EcKOUjYa6uYpGSfHgjnWjCRiBSciettS+sL7y9wmnas7qQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-scope-pseudo-class@3.0.1": - resolution: - { - integrity: sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-stepped-value-functions@3.0.8": - resolution: - { - integrity: sha512-X76+thsvsmH/SkqVbN+vjeFKe1ABGLRx8/Wl68QTb/zvJWdzgx5S/nbszZP5O3nTRc5eI8NxIOrQUiy30fR+0g==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-text-decoration-shorthand@3.0.6": - resolution: - { - integrity: sha512-Q8HEu4AEiwNVZBD6+DpQ8M9SajpMow4+WtmndWIAv8qxDtDYL4JK1xXWkhOGk28PrcJawOvkrEZ8Ri59UN1TJw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-trigonometric-functions@3.0.8": - resolution: - { - integrity: sha512-zEzyGriPqoIYFgHJqWNy8bmoxjM4+ONyTap1ZzQK/Lll/VsCYvx0IckB33W/u89uLSVeeB8xC7uTrkoQ7ogKyQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/postcss-unset-value@3.0.1": - resolution: - { - integrity: sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - "@csstools/selector-resolve-nested@1.1.0": - resolution: - { - integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss-selector-parser: ^6.0.13 - - "@csstools/selector-specificity@3.1.1": - resolution: - { - integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss-selector-parser: ^6.0.13 - - "@csstools/utilities@1.0.0": - resolution: - { - integrity: sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 + engines: { node: ">=18" } "@ctrl/tinycolor@4.1.0": resolution: @@ -714,1062 +141,833 @@ packages: } engines: { node: ">=14" } - "@emmetio/abbreviation@2.3.3": + "@emnapi/runtime@1.8.1": resolution: { - integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==, + integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==, } - "@emmetio/css-abbreviation@2.1.8": + "@esbuild/aix-ppc64@0.25.9": resolution: { - integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==, + integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==, } - - "@emmetio/css-parser@0.4.0": - resolution: - { - integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==, - } - - "@emmetio/html-matcher@1.3.0": - resolution: - { - integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==, - } - - "@emmetio/scanner@1.0.4": - resolution: - { - integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==, - } - - "@emmetio/stream-reader-utils@0.1.0": - resolution: - { - integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==, - } - - "@emmetio/stream-reader@2.2.0": - resolution: - { - integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==, - } - - "@emnapi/runtime@1.1.1": - resolution: - { - integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==, - } - - "@esbuild/aix-ppc64@0.20.2": - resolution: - { - integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [ppc64] os: [aix] - "@esbuild/aix-ppc64@0.21.3": + "@esbuild/android-arm64@0.25.9": resolution: { - integrity: sha512-yTgnwQpFVYfvvo4SvRFB0SwrW8YjOxEoT7wfMT7Ol5v7v5LDNvSGo67aExmxOb87nQNeWPVvaGBNfQ7BXcrZ9w==, + integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==, } - engines: { node: ">=12" } - cpu: [ppc64] - os: [aix] - - "@esbuild/android-arm64@0.20.2": - resolution: - { - integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [arm64] os: [android] - "@esbuild/android-arm64@0.21.3": + "@esbuild/android-arm@0.25.9": resolution: { - integrity: sha512-c+ty9necz3zB1Y+d/N+mC6KVVkGUUOcm4ZmT5i/Fk5arOaY3i6CA3P5wo/7+XzV8cb4GrI/Zjp8NuOQ9Lfsosw==, + integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [android] - - "@esbuild/android-arm@0.20.2": - resolution: - { - integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [arm] os: [android] - "@esbuild/android-arm@0.21.3": + "@esbuild/android-x64@0.25.9": resolution: { - integrity: sha512-bviJOLMgurLJtF1/mAoJLxDZDL6oU5/ztMHnJQRejbJrSc9FFu0QoUoFhvi6qSKJEw9y5oGyvr9fuDtzJ30rNQ==, + integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==, } - engines: { node: ">=12" } - cpu: [arm] - os: [android] - - "@esbuild/android-x64@0.20.2": - resolution: - { - integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [x64] os: [android] - "@esbuild/android-x64@0.21.3": + "@esbuild/darwin-arm64@0.25.9": resolution: { - integrity: sha512-JReHfYCRK3FVX4Ra+y5EBH1b9e16TV2OxrPAvzMsGeES0X2Ndm9ImQRI4Ket757vhc5XBOuGperw63upesclRw==, + integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==, } - engines: { node: ">=12" } - cpu: [x64] - os: [android] - - "@esbuild/darwin-arm64@0.20.2": - resolution: - { - integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [arm64] os: [darwin] - "@esbuild/darwin-arm64@0.21.3": + "@esbuild/darwin-x64@0.25.9": resolution: { - integrity: sha512-U3fuQ0xNiAkXOmQ6w5dKpEvXQRSpHOnbw7gEfHCRXPeTKW9sBzVck6C5Yneb8LfJm0l6le4NQfkNPnWMSlTFUQ==, + integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [darwin] - - "@esbuild/darwin-x64@0.20.2": - resolution: - { - integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [x64] os: [darwin] - "@esbuild/darwin-x64@0.21.3": + "@esbuild/freebsd-arm64@0.25.9": resolution: { - integrity: sha512-3m1CEB7F07s19wmaMNI2KANLcnaqryJxO1fXHUV5j1rWn+wMxdUYoPyO2TnAbfRZdi7ADRwJClmOwgT13qlP3Q==, + integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==, } - engines: { node: ">=12" } - cpu: [x64] - os: [darwin] - - "@esbuild/freebsd-arm64@0.20.2": - resolution: - { - integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-arm64@0.21.3": + "@esbuild/freebsd-x64@0.25.9": resolution: { - integrity: sha512-fsNAAl5pU6wmKHq91cHWQT0Fz0vtyE1JauMzKotrwqIKAswwP5cpHUCxZNSTuA/JlqtScq20/5KZ+TxQdovU/g==, + integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [freebsd] - - "@esbuild/freebsd-x64@0.20.2": - resolution: - { - integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [x64] os: [freebsd] - "@esbuild/freebsd-x64@0.21.3": + "@esbuild/linux-arm64@0.25.9": resolution: { - integrity: sha512-tci+UJ4zP5EGF4rp8XlZIdq1q1a/1h9XuronfxTMCNBslpCtmk97Q/5qqy1Mu4zIc0yswN/yP/BLX+NTUC1bXA==, + integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==, } - engines: { node: ">=12" } - cpu: [x64] - os: [freebsd] - - "@esbuild/linux-arm64@0.20.2": - resolution: - { - integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [arm64] os: [linux] - "@esbuild/linux-arm64@0.21.3": + "@esbuild/linux-arm@0.25.9": resolution: { - integrity: sha512-vvG6R5g5ieB4eCJBQevyDMb31LMHthLpXTc2IGkFnPWS/GzIFDnaYFp558O+XybTmYrVjxnryru7QRleJvmZ6Q==, + integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [linux] - - "@esbuild/linux-arm@0.20.2": - resolution: - { - integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [arm] os: [linux] - "@esbuild/linux-arm@0.21.3": + "@esbuild/linux-ia32@0.25.9": resolution: { - integrity: sha512-f6kz2QpSuyHHg01cDawj0vkyMwuIvN62UAguQfnNVzbge2uWLhA7TCXOn83DT0ZvyJmBI943MItgTovUob36SQ==, + integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==, } - engines: { node: ">=12" } - cpu: [arm] - os: [linux] - - "@esbuild/linux-ia32@0.20.2": - resolution: - { - integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [ia32] os: [linux] - "@esbuild/linux-ia32@0.21.3": + "@esbuild/linux-loong64@0.25.9": resolution: { - integrity: sha512-HjCWhH7K96Na+66TacDLJmOI9R8iDWDDiqe17C7znGvvE4sW1ECt9ly0AJ3dJH62jHyVqW9xpxZEU1jKdt+29A==, + integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==, } - engines: { node: ">=12" } - cpu: [ia32] - os: [linux] - - "@esbuild/linux-loong64@0.20.2": - resolution: - { - integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [loong64] os: [linux] - "@esbuild/linux-loong64@0.21.3": + "@esbuild/linux-mips64el@0.25.9": resolution: { - integrity: sha512-BGpimEccmHBZRcAhdlRIxMp7x9PyJxUtj7apL2IuoG9VxvU/l/v1z015nFs7Si7tXUwEsvjc1rOJdZCn4QTU+Q==, + integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==, } - engines: { node: ">=12" } - cpu: [loong64] - os: [linux] - - "@esbuild/linux-mips64el@0.20.2": - resolution: - { - integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [mips64el] os: [linux] - "@esbuild/linux-mips64el@0.21.3": + "@esbuild/linux-ppc64@0.25.9": resolution: { - integrity: sha512-5rMOWkp7FQGtAH3QJddP4w3s47iT20hwftqdm7b+loe95o8JU8ro3qZbhgMRy0VuFU0DizymF1pBKkn3YHWtsw==, + integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==, } - engines: { node: ">=12" } - cpu: [mips64el] - os: [linux] - - "@esbuild/linux-ppc64@0.20.2": - resolution: - { - integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==, - } - engines: { node: ">=12" } + engines: { node: ">=18" } cpu: [ppc64] os: [linux] - "@esbuild/linux-ppc64@0.21.3": + "@esbuild/linux-riscv64@0.25.9": resolution: { - integrity: sha512-h0zj1ldel89V5sjPLo5H1SyMzp4VrgN1tPkN29TmjvO1/r0MuMRwJxL8QY05SmfsZRs6TF0c/IDH3u7XYYmbAg==, + integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==, + } + engines: { node: ">=18" } + cpu: [riscv64] + os: [linux] + + "@esbuild/linux-s390x@0.25.9": + resolution: + { + integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==, + } + engines: { node: ">=18" } + cpu: [s390x] + os: [linux] + + "@esbuild/linux-x64@0.25.9": + resolution: + { + integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [linux] + + "@esbuild/netbsd-arm64@0.25.9": + resolution: + { + integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [netbsd] + + "@esbuild/netbsd-x64@0.25.9": + resolution: + { + integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [netbsd] + + "@esbuild/openbsd-arm64@0.25.9": + resolution: + { + integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [openbsd] + + "@esbuild/openbsd-x64@0.25.9": + resolution: + { + integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [openbsd] + + "@esbuild/openharmony-arm64@0.25.9": + resolution: + { + integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [openharmony] + + "@esbuild/sunos-x64@0.25.9": + resolution: + { + integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [sunos] + + "@esbuild/win32-arm64@0.25.9": + resolution: + { + integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==, + } + engines: { node: ">=18" } + cpu: [arm64] + os: [win32] + + "@esbuild/win32-ia32@0.25.9": + resolution: + { + integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==, + } + engines: { node: ">=18" } + cpu: [ia32] + os: [win32] + + "@esbuild/win32-x64@0.25.9": + resolution: + { + integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==, + } + engines: { node: ">=18" } + cpu: [x64] + os: [win32] + + "@expressive-code/core@0.41.3": + resolution: + { + integrity: sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==, + } + + "@expressive-code/plugin-frames@0.41.3": + resolution: + { + integrity: sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==, + } + + "@expressive-code/plugin-shiki@0.41.3": + resolution: + { + integrity: sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==, + } + + "@expressive-code/plugin-text-markers@0.41.3": + resolution: + { + integrity: sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==, + } + + "@fontsource/inter@5.2.8": + resolution: + { + integrity: sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg==, + } + + "@fontsource/rubik@5.2.8": + resolution: + { + integrity: sha512-PIc8QR7FqWPcYhbdRiGff56vQlKqg/ytES1YqecSq1GkgxiH4TBshrFvDEOZ9JonUF9m1qQ+qXxJj7wD5zgXEw==, + } + + "@img/colour@1.0.0": + resolution: + { + integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==, + } + engines: { node: ">=18" } + + "@img/sharp-darwin-arm64@0.34.5": + resolution: + { + integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [darwin] + + "@img/sharp-darwin-x64@0.34.5": + resolution: + { + integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-darwin-arm64@1.2.4": + resolution: + { + integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==, + } + cpu: [arm64] + os: [darwin] + + "@img/sharp-libvips-darwin-x64@1.2.4": + resolution: + { + integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==, + } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-linux-arm64@1.2.4": + resolution: + { + integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==, + } + cpu: [arm64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-arm@1.2.4": + resolution: + { + integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==, + } + cpu: [arm] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-ppc64@1.2.4": + resolution: + { + integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==, } - engines: { node: ">=12" } cpu: [ppc64] os: [linux] + libc: [glibc] - "@esbuild/linux-riscv64@0.20.2": + "@img/sharp-libvips-linux-riscv64@1.2.4": resolution: { - integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==, + integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==, } - engines: { node: ">=12" } cpu: [riscv64] os: [linux] + libc: [glibc] - "@esbuild/linux-riscv64@0.21.3": + "@img/sharp-libvips-linux-s390x@1.2.4": resolution: { - integrity: sha512-dkAKcTsTJ+CRX6bnO17qDJbLoW37npd5gSNtSzjYQr0svghLJYGYB0NF1SNcU1vDcjXLYS5pO4qOW4YbFama4A==, + integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==, } - engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-x64@1.2.4": + resolution: + { + integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==, + } + cpu: [x64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": + resolution: + { + integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==, + } + cpu: [arm64] + os: [linux] + libc: [musl] + + "@img/sharp-libvips-linuxmusl-x64@1.2.4": + resolution: + { + integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==, + } + cpu: [x64] + os: [linux] + libc: [musl] + + "@img/sharp-linux-arm64@0.34.5": + resolution: + { + integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-arm@0.34.5": + resolution: + { + integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-ppc64@0.34.5": + resolution: + { + integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ppc64] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-riscv64@0.34.5": + resolution: + { + integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [riscv64] os: [linux] + libc: [glibc] - "@esbuild/linux-s390x@0.20.2": + "@img/sharp-linux-s390x@0.34.5": resolution: { - integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==, + integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==, } - engines: { node: ">=12" } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [s390x] os: [linux] + libc: [glibc] - "@esbuild/linux-s390x@0.21.3": + "@img/sharp-linux-x64@0.34.5": resolution: { - integrity: sha512-vnD1YUkovEdnZWEuMmy2X2JmzsHQqPpZElXx6dxENcIwTu+Cu5ERax6+Ke1QsE814Zf3c6rxCfwQdCTQ7tPuXA==, + integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==, } - engines: { node: ">=12" } - cpu: [s390x] - os: [linux] - - "@esbuild/linux-x64@0.20.2": - resolution: - { - integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==, - } - engines: { node: ">=12" } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [glibc] - "@esbuild/linux-x64@0.21.3": + "@img/sharp-linuxmusl-arm64@0.34.5": resolution: { - integrity: sha512-IOXOIm9WaK7plL2gMhsWJd+l2bfrhfilv0uPTptoRoSb2p09RghhQQp9YY6ZJhk/kqmeRt6siRdMSLLwzuT0KQ==, + integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==, } - engines: { node: ">=12" } - cpu: [x64] - os: [linux] - - "@esbuild/netbsd-x64@0.20.2": - resolution: - { - integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [netbsd] - - "@esbuild/netbsd-x64@0.21.3": - resolution: - { - integrity: sha512-uTgCwsvQ5+vCQnqM//EfDSuomo2LhdWhFPS8VL8xKf+PKTCrcT/2kPPoWMTs22aB63MLdGMJiE3f1PHvCDmUOw==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [netbsd] - - "@esbuild/openbsd-x64@0.20.2": - resolution: - { - integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [openbsd] - - "@esbuild/openbsd-x64@0.21.3": - resolution: - { - integrity: sha512-vNAkR17Ub2MgEud2Wag/OE4HTSI6zlb291UYzHez/psiKarp0J8PKGDnAhMBcHFoOHMXHfExzmjMojJNbAStrQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [openbsd] - - "@esbuild/sunos-x64@0.20.2": - resolution: - { - integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [sunos] - - "@esbuild/sunos-x64@0.21.3": - resolution: - { - integrity: sha512-W8H9jlGiSBomkgmouaRoTXo49j4w4Kfbl6I1bIdO/vT0+0u4f20ko3ELzV3hPI6XV6JNBVX+8BC+ajHkvffIJA==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [sunos] - - "@esbuild/win32-arm64@0.20.2": - resolution: - { - integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [win32] - - "@esbuild/win32-arm64@0.21.3": - resolution: - { - integrity: sha512-EjEomwyLSCg8Ag3LDILIqYCZAq/y3diJ04PnqGRgq8/4O3VNlXyMd54j/saShaN4h5o5mivOjAzmU6C3X4v0xw==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [win32] - - "@esbuild/win32-ia32@0.20.2": - resolution: - { - integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [win32] - - "@esbuild/win32-ia32@0.21.3": - resolution: - { - integrity: sha512-WGiE/GgbsEwR33++5rzjiYsKyHywE8QSZPF7Rfx9EBfK3Qn3xyR6IjyCr5Uk38Kg8fG4/2phN7sXp4NPWd3fcw==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [win32] - - "@esbuild/win32-x64@0.20.2": - resolution: - { - integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [win32] - - "@esbuild/win32-x64@0.21.3": - resolution: - { - integrity: sha512-xRxC0jaJWDLYvcUvjQmHCJSfMrgmUuvsoXgDeU/wTorQ1ngDdUBuFtgY3W1Pc5sprGAvZBtWdJX7RPg/iZZUqA==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [win32] - - "@expressive-code/core@0.35.3": - resolution: - { - integrity: sha512-SYamcarAjufYhbuK/kfvJSvAXLsfnM7DKc78R7Dq4B73R5bKQK2m5zR0l57tXr4yp2C5Z8lu5xZncdwWxcmPdg==, - } - - "@expressive-code/plugin-frames@0.35.3": - resolution: - { - integrity: sha512-QYytMq6IsaHgTofQ5b6d+CnbxkqLdikSF2hC+IL/ZZwPYHYZoUlmjIwmJZhY4/hHqJGELrtZsyVdlt06RntgmA==, - } - - "@expressive-code/plugin-shiki@0.35.3": - resolution: - { - integrity: sha512-aFQBPepv0zhVXqJFAvfQ4vXYv/meJKiqmEEKSxdjAfwXllIV49PDlnGEXmbGYjR4hUQQjbfDgzAbrbfePc3YVQ==, - } - - "@expressive-code/plugin-text-markers@0.35.3": - resolution: - { - integrity: sha512-gDdnQrfDRXw5Y+PKHJDkpAUdf2pthYOthGcgy3JB8GOTQ3EL1h+755Ct/bGc4MR6jn+dgnQP47uHMWQaccvN6Q==, - } - - "@fontsource/inter@5.0.18": - resolution: - { - integrity: sha512-YCsoYPTcs713sI7tLtxaPrIhXAXvEetGg5Ry02ivA8qUOb3fQHojbK/X9HLD5OOKvFUNR2Ynkwb1kR1hVKQHpw==, - } - - "@fontsource/rubik@5.0.20": - resolution: - { - integrity: sha512-4iEk1Nnnz4kzrpfsjfHXOm7HDVtsDfs8uihhE4LaXqQuxnY8lERZWJhtGAKILDwbx3gsnVXI+0beUNLRmaHeCw==, - } - - "@img/sharp-darwin-arm64@0.33.4": - resolution: - { - integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==, - } - engines: - { - glibc: ">=2.26", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [arm64] - os: [darwin] - - "@img/sharp-darwin-x64@0.33.4": - resolution: - { - integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==, - } - engines: - { - glibc: ">=2.26", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [x64] - os: [darwin] - - "@img/sharp-libvips-darwin-arm64@1.0.2": - resolution: - { - integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==, - } - engines: { macos: ">=11", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } - cpu: [arm64] - os: [darwin] - - "@img/sharp-libvips-darwin-x64@1.0.2": - resolution: - { - integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==, - } - engines: - { macos: ">=10.13", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } - cpu: [x64] - os: [darwin] - - "@img/sharp-libvips-linux-arm64@1.0.2": - resolution: - { - integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==, - } - engines: - { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [arm64] os: [linux] + libc: [musl] - "@img/sharp-libvips-linux-arm@1.0.2": + "@img/sharp-linuxmusl-x64@0.34.5": resolution: { - integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==, + integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==, } - engines: - { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } - cpu: [arm] - os: [linux] - - "@img/sharp-libvips-linux-s390x@1.0.2": - resolution: - { - integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==, - } - engines: - { glibc: ">=2.28", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } - cpu: [s390x] - os: [linux] - - "@img/sharp-libvips-linux-x64@1.0.2": - resolution: - { - integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==, - } - engines: - { glibc: ">=2.26", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [x64] os: [linux] + libc: [musl] - "@img/sharp-libvips-linuxmusl-arm64@1.0.2": + "@img/sharp-wasm32@0.34.5": resolution: { - integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==, - } - engines: - { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } - cpu: [arm64] - os: [linux] - - "@img/sharp-libvips-linuxmusl-x64@1.0.2": - resolution: - { - integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==, - } - engines: - { musl: ">=1.2.2", npm: ">=9.6.5", pnpm: ">=7.1.0", yarn: ">=3.2.0" } - cpu: [x64] - os: [linux] - - "@img/sharp-linux-arm64@0.33.4": - resolution: - { - integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==, - } - engines: - { - glibc: ">=2.26", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [arm64] - os: [linux] - - "@img/sharp-linux-arm@0.33.4": - resolution: - { - integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==, - } - engines: - { - glibc: ">=2.28", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [arm] - os: [linux] - - "@img/sharp-linux-s390x@0.33.4": - resolution: - { - integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==, - } - engines: - { - glibc: ">=2.31", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [s390x] - os: [linux] - - "@img/sharp-linux-x64@0.33.4": - resolution: - { - integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==, - } - engines: - { - glibc: ">=2.26", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [x64] - os: [linux] - - "@img/sharp-linuxmusl-arm64@0.33.4": - resolution: - { - integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==, - } - engines: - { - musl: ">=1.2.2", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [arm64] - os: [linux] - - "@img/sharp-linuxmusl-x64@0.33.4": - resolution: - { - integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==, - } - engines: - { - musl: ">=1.2.2", - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", - } - cpu: [x64] - os: [linux] - - "@img/sharp-wasm32@0.33.4": - resolution: - { - integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==, - } - engines: - { - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", + integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==, } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [wasm32] - "@img/sharp-win32-ia32@0.33.4": + "@img/sharp-win32-arm64@0.34.5": resolution: { - integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==, + integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==, } - engines: + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [win32] + + "@img/sharp-win32-ia32@0.34.5": + resolution: { - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", + integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==, } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } cpu: [ia32] os: [win32] - "@img/sharp-win32-x64@0.33.4": + "@img/sharp-win32-x64@0.34.5": resolution: { - integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==, + integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==, } - engines: + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [win32] + + "@jridgewell/sourcemap-codec@1.5.5": + resolution: { - node: ^18.17.0 || ^20.3.0 || >=21.0.0, - npm: ">=9.6.5", - pnpm: ">=7.1.0", - yarn: ">=3.2.0", + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, + } + + "@mdx-js/mdx@3.1.0": + resolution: + { + integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==, + } + + "@oslojs/encoding@1.1.0": + resolution: + { + integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==, + } + + "@pagefind/darwin-arm64@1.3.0": + resolution: + { + integrity: sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==, + } + cpu: [arm64] + os: [darwin] + + "@pagefind/darwin-x64@1.3.0": + resolution: + { + integrity: sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==, + } + cpu: [x64] + os: [darwin] + + "@pagefind/default-ui@1.3.0": + resolution: + { + integrity: sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==, + } + + "@pagefind/linux-arm64@1.3.0": + resolution: + { + integrity: sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==, + } + cpu: [arm64] + os: [linux] + + "@pagefind/linux-x64@1.3.0": + resolution: + { + integrity: sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==, + } + cpu: [x64] + os: [linux] + + "@pagefind/windows-x64@1.3.0": + resolution: + { + integrity: sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==, } cpu: [x64] os: [win32] - "@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462": + "@rollup/pluginutils@5.3.0": resolution: { - integrity: sha512-etqLfpSJ5zaw76KUNF603be6d6QsiQPmaHr9FKEp4zhLZJzWCCMH6Icak7MtLUFLZLMpL761mZNImi/joBo1ZA==, + integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==, } + engines: { node: ">=14.0.0" } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - "@jridgewell/gen-mapping@0.3.3": + "@rollup/rollup-android-arm-eabi@4.48.1": resolution: { - integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/gen-mapping@0.3.5": - resolution: - { - integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/resolve-uri@3.1.1": - resolution: - { - integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/set-array@1.1.2": - resolution: - { - integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/set-array@1.2.1": - resolution: - { - integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, - } - engines: { node: ">=6.0.0" } - - "@jridgewell/sourcemap-codec@1.4.15": - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, - } - - "@jridgewell/trace-mapping@0.3.20": - resolution: - { - integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==, - } - - "@jridgewell/trace-mapping@0.3.25": - resolution: - { - integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, - } - - "@mdx-js/mdx@3.0.0": - resolution: - { - integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==, - } - - "@nodelib/fs.scandir@2.1.5": - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.stat@2.0.5": - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.walk@1.2.8": - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } - - "@pagefind/darwin-arm64@1.0.4": - resolution: - { - integrity: sha512-2OcthvceX2xhm5XbgOmW+lT45oLuHqCmvFeFtxh1gsuP5cO8vcD8ZH8Laj4pXQFCcK6eAdSShx+Ztx/LsQWZFQ==, - } - cpu: [arm64] - os: [darwin] - - "@pagefind/darwin-x64@1.0.4": - resolution: - { - integrity: sha512-xkdvp0D9Ld/ZKsjo/y1bgfhTEU72ITimd2PMMQtts7jf6JPIOJbsiErCvm37m/qMFuPGEq/8d+fZ4pydOj08HQ==, - } - cpu: [x64] - os: [darwin] - - "@pagefind/default-ui@1.0.4": - resolution: - { - integrity: sha512-edkcaPSKq67C49Vehjo+LQCpT615v4d7JRhfGzFPccePvdklaL+VXrfghN/uIfsdoG+HoLI1PcYy2iFcB9CTkw==, - } - - "@pagefind/linux-arm64@1.0.4": - resolution: - { - integrity: sha512-jGBrcCzIrMnNxLKVtogaQyajVfTAXM59KlBEwg6vTn8NW4fQ6nuFbbhlG4dTIsaamjEM5e8ZBEAKZfTB/qd9xw==, - } - cpu: [arm64] - os: [linux] - - "@pagefind/linux-x64@1.0.4": - resolution: - { - integrity: sha512-LIn/QcvcEtLEBqKe5vpSbSC2O3fvqbRCWOTIklslqSORisCsvzsWbP6j+LYxE9q0oWIfkdMoWV1vrE/oCKRxHg==, - } - cpu: [x64] - os: [linux] - - "@pagefind/windows-x64@1.0.4": - resolution: - { - integrity: sha512-QlBCVeZfj9fc9sbUgdOz76ZDbeK4xZihOBAFqGuRJeChfM8pnVeH9iqSnXgO3+m9oITugTf7PicyRUFAG76xeQ==, - } - cpu: [x64] - os: [win32] - - "@rollup/rollup-android-arm-eabi@4.17.2": - resolution: - { - integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==, + integrity: sha512-rGmb8qoG/zdmKoYELCBwu7vt+9HxZ7Koos3pD0+sH5fR3u3Wb/jGcpnqxcnWsPEKDUyzeLSqksN8LJtgXjqBYw==, } cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.17.2": + "@rollup/rollup-android-arm64@4.48.1": resolution: { - integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==, + integrity: sha512-4e9WtTxrk3gu1DFE+imNJr4WsL13nWbD/Y6wQcyku5qadlKHY3OQ3LJ/INrrjngv2BJIHnIzbqMk1GTAC2P8yQ==, } cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.17.2": + "@rollup/rollup-darwin-arm64@4.48.1": resolution: { - integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==, + integrity: sha512-+XjmyChHfc4TSs6WUQGmVf7Hkg8ferMAE2aNYYWjiLzAS/T62uOsdfnqv+GHRjq7rKRnYh4mwWb4Hz7h/alp8A==, } cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.17.2": + "@rollup/rollup-darwin-x64@4.48.1": resolution: { - integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==, + integrity: sha512-upGEY7Ftw8M6BAJyGwnwMw91rSqXTcOKZnnveKrVWsMTF8/k5mleKSuh7D4v4IV1pLxKAk3Tbs0Lo9qYmii5mQ==, } cpu: [x64] os: [darwin] - "@rollup/rollup-linux-arm-gnueabihf@4.17.2": + "@rollup/rollup-freebsd-arm64@4.48.1": resolution: { - integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==, + integrity: sha512-P9ViWakdoynYFUOZhqq97vBrhuvRLAbN/p2tAVJvhLb8SvN7rbBnJQcBu8e/rQts42pXGLVhfsAP0k9KXWa3nQ==, + } + cpu: [arm64] + os: [freebsd] + + "@rollup/rollup-freebsd-x64@4.48.1": + resolution: + { + integrity: sha512-VLKIwIpnBya5/saccM8JshpbxfyJt0Dsli0PjXozHwbSVaHTvWXJH1bbCwPXxnMzU4zVEfgD1HpW3VQHomi2AQ==, + } + cpu: [x64] + os: [freebsd] + + "@rollup/rollup-linux-arm-gnueabihf@4.48.1": + resolution: + { + integrity: sha512-3zEuZsXfKaw8n/yF7t8N6NNdhyFw3s8xJTqjbTDXlipwrEHo4GtIKcMJr5Ed29leLpB9AugtAQpAHW0jvtKKaQ==, } cpu: [arm] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-arm-musleabihf@4.17.2": + "@rollup/rollup-linux-arm-musleabihf@4.48.1": resolution: { - integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==, + integrity: sha512-leo9tOIlKrcBmmEypzunV/2w946JeLbTdDlwEZ7OnnsUyelZ72NMnT4B2vsikSgwQifjnJUbdXzuW4ToN1wV+Q==, } cpu: [arm] os: [linux] + libc: [musl] - "@rollup/rollup-linux-arm64-gnu@4.17.2": + "@rollup/rollup-linux-arm64-gnu@4.48.1": resolution: { - integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==, + integrity: sha512-Vy/WS4z4jEyvnJm+CnPfExIv5sSKqZrUr98h03hpAMbE2aI0aD2wvK6GiSe8Gx2wGp3eD81cYDpLLBqNb2ydwQ==, } cpu: [arm64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-arm64-musl@4.17.2": + "@rollup/rollup-linux-arm64-musl@4.48.1": resolution: { - integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==, + integrity: sha512-x5Kzn7XTwIssU9UYqWDB9VpLpfHYuXw5c6bJr4Mzv9kIv242vmJHbI5PJJEnmBYitUIfoMCODDhR7KoZLot2VQ==, } cpu: [arm64] os: [linux] + libc: [musl] - "@rollup/rollup-linux-powerpc64le-gnu@4.17.2": + "@rollup/rollup-linux-loongarch64-gnu@4.48.1": resolution: { - integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==, + integrity: sha512-yzCaBbwkkWt/EcgJOKDUdUpMHjhiZT/eDktOPWvSRpqrVE04p0Nd6EGV4/g7MARXXeOqstflqsKuXVM3H9wOIQ==, + } + cpu: [loong64] + os: [linux] + libc: [glibc] + + "@rollup/rollup-linux-ppc64-gnu@4.48.1": + resolution: + { + integrity: sha512-UK0WzWUjMAJccHIeOpPhPcKBqax7QFg47hwZTp6kiMhQHeOYJeaMwzeRZe1q5IiTKsaLnHu9s6toSYVUlZ2QtQ==, } cpu: [ppc64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-riscv64-gnu@4.17.2": + "@rollup/rollup-linux-riscv64-gnu@4.48.1": resolution: { - integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==, + integrity: sha512-3NADEIlt+aCdCbWVZ7D3tBjBX1lHpXxcvrLt/kdXTiBrOds8APTdtk2yRL2GgmnSVeX4YS1JIf0imFujg78vpw==, } cpu: [riscv64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-s390x-gnu@4.17.2": + "@rollup/rollup-linux-riscv64-musl@4.48.1": resolution: { - integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==, + integrity: sha512-euuwm/QTXAMOcyiFCcrx0/S2jGvFlKJ2Iro8rsmYL53dlblp3LkUQVFzEidHhvIPPvcIsxDhl2wkBE+I6YVGzA==, + } + cpu: [riscv64] + os: [linux] + libc: [musl] + + "@rollup/rollup-linux-s390x-gnu@4.48.1": + resolution: + { + integrity: sha512-w8mULUjmPdWLJgmTYJx/W6Qhln1a+yqvgwmGXcQl2vFBkWsKGUBRbtLRuKJUln8Uaimf07zgJNxOhHOvjSQmBQ==, } cpu: [s390x] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-x64-gnu@4.17.2": + "@rollup/rollup-linux-x64-gnu@4.48.1": resolution: { - integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==, + integrity: sha512-90taWXCWxTbClWuMZD0DKYohY1EovA+W5iytpE89oUPmT5O1HFdf8cuuVIylE6vCbrGdIGv85lVRzTcpTRZ+kA==, } cpu: [x64] os: [linux] + libc: [glibc] - "@rollup/rollup-linux-x64-musl@4.17.2": + "@rollup/rollup-linux-x64-musl@4.48.1": resolution: { - integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==, + integrity: sha512-2Gu29SkFh1FfTRuN1GR1afMuND2GKzlORQUP3mNMJbqdndOg7gNsa81JnORctazHRokiDzQ5+MLE5XYmZW5VWg==, } cpu: [x64] os: [linux] + libc: [musl] - "@rollup/rollup-win32-arm64-msvc@4.17.2": + "@rollup/rollup-win32-arm64-msvc@4.48.1": resolution: { - integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==, + integrity: sha512-6kQFR1WuAO50bxkIlAVeIYsz3RUx+xymwhTo9j94dJ+kmHe9ly7muH23sdfWduD0BA8pD9/yhonUvAjxGh34jQ==, } cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.17.2": + "@rollup/rollup-win32-ia32-msvc@4.48.1": resolution: { - integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==, + integrity: sha512-RUyZZ/mga88lMI3RlXFs4WQ7n3VyU07sPXmMG7/C1NOi8qisUg57Y7LRarqoGoAiopmGmChUhSwfpvQ3H5iGSQ==, } cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.17.2": + "@rollup/rollup-win32-x64-msvc@4.48.1": resolution: { - integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==, + integrity: sha512-8a/caCUN4vkTChxkaIJcMtwIVcBhi4X2PQRoT+yCK3qRYaZ7cURrmJFL5Ux9H9RaMIXj9RuihckdmkBX3zZsgg==, } cpu: [x64] os: [win32] - "@shikijs/core@1.5.2": + "@shikijs/core@3.11.0": resolution: { - integrity: sha512-wSAOgaz48GmhILFElMCeQypSZmj6Ru6DttOOtl3KNkdJ17ApQuGNCfzpk4cClasVrnIu45++2DBwG4LNMQAfaA==, + integrity: sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g==, } - "@trysound/sax@0.2.0": + "@shikijs/core@3.22.0": resolution: { - integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==, - } - engines: { node: ">=10.13.0" } - - "@types/acorn@4.0.6": - resolution: - { - integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==, + integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==, } - "@types/babel__core@7.20.5": + "@shikijs/engine-javascript@3.11.0": resolution: { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, + integrity: sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA==, } - "@types/babel__generator@7.6.7": + "@shikijs/engine-javascript@3.22.0": resolution: { - integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==, + integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==, } - "@types/babel__template@7.4.4": + "@shikijs/engine-oniguruma@3.11.0": resolution: { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, + integrity: sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw==, } - "@types/babel__traverse@7.20.4": + "@shikijs/engine-oniguruma@3.22.0": resolution: { - integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==, + integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==, } - "@types/cookie@0.6.0": + "@shikijs/langs@3.11.0": resolution: { - integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==, + integrity: sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw==, + } + + "@shikijs/langs@3.22.0": + resolution: + { + integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==, + } + + "@shikijs/themes@3.11.0": + resolution: + { + integrity: sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q==, + } + + "@shikijs/themes@3.22.0": + resolution: + { + integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==, + } + + "@shikijs/types@3.11.0": + resolution: + { + integrity: sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q==, + } + + "@shikijs/types@3.22.0": + resolution: + { + integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==, + } + + "@shikijs/vscode-textmate@10.0.2": + resolution: + { + integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, } "@types/debug@4.1.12": @@ -1778,46 +976,52 @@ packages: integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==, } - "@types/estree-jsx@1.0.3": + "@types/estree-jsx@1.0.5": resolution: { - integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==, + integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==, } - "@types/estree@1.0.5": + "@types/estree@1.0.8": resolution: { - integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==, + integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, } - "@types/hast@3.0.3": + "@types/hast@3.0.4": resolution: { - integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==, + integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, } - "@types/mdast@4.0.3": + "@types/js-yaml@4.0.9": resolution: { - integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==, + integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==, } - "@types/mdx@2.0.10": + "@types/mdast@4.0.4": resolution: { - integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==, + integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, } - "@types/ms@0.7.34": + "@types/mdx@2.0.13": resolution: { - integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==, + integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==, } - "@types/nlcst@1.0.4": + "@types/ms@2.1.0": resolution: { - integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==, + integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==, + } + + "@types/nlcst@2.0.3": + resolution: + { + integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==, } "@types/node@17.0.45": @@ -1826,90 +1030,34 @@ packages: integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==, } + "@types/node@24.3.0": + resolution: + { + integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==, + } + "@types/sax@1.2.7": resolution: { integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==, } - "@types/unist@2.0.10": + "@types/unist@2.0.11": resolution: { - integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==, + integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==, } - "@types/unist@3.0.2": + "@types/unist@3.0.3": resolution: { - integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==, + integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, } - "@ungap/structured-clone@1.2.0": + "@ungap/structured-clone@1.3.0": resolution: { - integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, - } - - "@volar/kit@2.2.4": - resolution: - { - integrity: sha512-TyRYaj56NBwa+0DgYbIkNQm+pN5DaV1dvZ5PzoKGDk9oag/sCG+W6wVkyaqmYCNJkXpmRtM627RkeMRTBvnYzw==, - } - peerDependencies: - typescript: "*" - - "@volar/language-core@2.2.4": - resolution: - { - integrity: sha512-7As47GndxGxsqqYnbreLrfB5NDUeQioPM2LJKUuB4/34c0NpEJ2byVl3c9KYdjIdiEstWZ9JLtLKNTaPWb5jtA==, - } - - "@volar/language-server@2.2.4": - resolution: - { - integrity: sha512-wgRsKsqFMY7MRkmBfIX+GB0uzAv2Nks7YS3Ud6RWdHsjEu7tF+cXzBX/IRgW5HOayLLPC1xES2PYXk26hdOIoA==, - } - - "@volar/language-service@2.2.4": - resolution: - { - integrity: sha512-3OxJFADEsAZp1RoTS3SX2GY9SeVnB9mbd3N/Faz45IvnT2EFAyVJGPOyrz5bJDvKuCtjdoTNNWS1GX1bHGytrA==, - } - - "@volar/snapshot-document@2.2.4": - resolution: - { - integrity: sha512-XwL9Jo5+nn4WZystok1+kRXbmFuJXaCx0KfJYZizJQDd7kPDgBcyci/aKsBVNhIgiD9JT0KKycru0ndyHRadGQ==, - } - - "@volar/source-map@2.2.4": - resolution: - { - integrity: sha512-m92FLpR9vB1YEZfiZ+bfgpLrToL/DNkOrorWVep3pffHrwwI4Tx2oIQN+sqHJfKkiT5N3J1owC+8crhAEinfjg==, - } - - "@volar/typescript@2.2.4": - resolution: - { - integrity: sha512-uAQC53tgEbHO62G8NXMfmBrJAlP2QJ9WxVEEQqqK3I6VSy8frL5LbH3hAWODxiwMWixv74wJLWlKbWXOgdIoRQ==, - } - - "@vscode/emmet-helper@2.9.2": - resolution: - { - integrity: sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==, - } - - "@vscode/l10n@0.0.16": - resolution: - { - integrity: sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==, - } - - "@vscode/l10n@0.0.18": - resolution: - { - integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==, + integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==, } acorn-jsx@5.3.2: @@ -1920,18 +1068,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.2: + acorn@8.15.0: resolution: { - integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==, - } - engines: { node: ">=0.4.0" } - hasBin: true - - acorn@8.11.3: - resolution: - { - integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==, + integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, } engines: { node: ">=0.4.0" } hasBin: true @@ -1949,27 +1089,13 @@ packages: } engines: { node: ">=8" } - ansi-regex@6.0.1: + ansi-regex@6.2.0: resolution: { - integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, + integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==, } engines: { node: ">=12" } - ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } - - ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } - ansi-styles@6.2.1: resolution: { @@ -1977,12 +1103,6 @@ packages: } engines: { node: ">=12" } - any-promise@1.3.0: - resolution: - { - integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, - } - anymatch@3.1.3: resolution: { @@ -1996,23 +1116,18 @@ packages: integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, } - argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } - argparse@2.0.1: resolution: { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, } - aria-query@5.3.0: + aria-query@5.3.2: resolution: { - integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==, + integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==, } + engines: { node: ">= 0.4" } array-iterate@2.0.1: resolution: @@ -2020,45 +1135,36 @@ packages: integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==, } - astring@1.8.6: + astring@1.9.0: resolution: { - integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==, + integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==, } hasBin: true - astro-expressive-code@0.35.3: + astro-expressive-code@0.41.3: resolution: { - integrity: sha512-f1L1m3J3EzZHDEox6TXmuKo5fTSbaNxE/HU0S0UQmvlCowtOKnU/LOsoDwsbQSYGKz+fdLRPsCjFMiKqEoyfcw==, + integrity: sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==, } peerDependencies: - astro: ^4.0.0-beta || ^3.3.0 + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@4.8.6: + astro@5.17.1: resolution: { - integrity: sha512-psHIfK+e+bMPhRwghV9yCGH/uc1jvY4DHmDZdoEepax9yA7kzYH0wt3dpkqlcrO2zxl5jzSC3DmqZfkD6wnW9A==, + integrity: sha512-oD3tlxTaVWGq/Wfbqk6gxzVRz98xa/rYlpe+gU2jXJMSD01k6sEDL01ZlT8mVSYB/rMgnvIOfiQQ3BbLdN237A==, } engines: - { node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } + { node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: ">=9.6.5", pnpm: ">=7.1.0" } hasBin: true - autoprefixer@10.4.19: + axobject-query@4.1.0: resolution: { - integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==, - } - engines: { node: ^10 || ^12 || >=14 } - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - axobject-query@4.0.0: - resolution: - { - integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==, + integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, } + engines: { node: ">= 0.4" } bail@2.0.2: resolution: @@ -2066,12 +1172,6 @@ packages: integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==, } - balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - base-64@1.0.0: resolution: { @@ -2090,72 +1190,25 @@ packages: integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==, } - binary-extensions@2.2.0: - resolution: - { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, - } - engines: { node: ">=8" } - boolbase@1.0.0: resolution: { integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, } - boxen@7.1.1: + boxen@8.0.1: resolution: { - integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==, + integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==, } - engines: { node: ">=14.16" } + engines: { node: ">=18" } - brace-expansion@1.1.11: + camelcase@8.0.0: resolution: { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } - - braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, - } - engines: { node: ">=8" } - - browserslist@4.23.0: - resolution: - { - integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - - camelcase-css@2.0.1: - resolution: - { - integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, - } - engines: { node: ">= 6" } - - camelcase@7.0.1: - resolution: - { - integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==, - } - engines: { node: ">=14.16" } - - caniuse-api@3.0.0: - resolution: - { - integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, - } - - caniuse-lite@1.0.30001620: - resolution: - { - integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==, + integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==, } + engines: { node: ">=16" } ccount@2.0.1: resolution: @@ -2163,17 +1216,10 @@ packages: integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, } - chalk@2.4.2: + chalk@5.6.0: resolution: { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } - - chalk@5.3.0: - resolution: - { - integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, + integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==, } engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } @@ -2201,24 +1247,17 @@ packages: integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==, } - chokidar@3.5.3: + chokidar@5.0.0: resolution: { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==, } - engines: { node: ">= 8.10.0" } + engines: { node: ">= 20.19.0" } - chokidar@3.6.0: + ci-info@4.4.0: resolution: { - integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, - } - engines: { node: ">= 8.10.0" } - - ci-info@4.0.0: - resolution: - { - integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==, + integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==, } engines: { node: ">=8" } @@ -2229,27 +1268,6 @@ packages: } engines: { node: ">=10" } - cli-cursor@4.0.0: - resolution: - { - integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - cli-spinners@2.9.2: - resolution: - { - integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, - } - engines: { node: ">=6" } - - cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } - clsx@2.1.1: resolution: { @@ -2263,69 +1281,18 @@ packages: integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==, } - color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } - - color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } - - color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } - - color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - - color-string@1.9.1: - resolution: - { - integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, - } - - color@4.2.3: - resolution: - { - integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, - } - engines: { node: ">=12.5.0" } - - colord@2.9.3: - resolution: - { - integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==, - } - comma-separated-tokens@2.0.3: resolution: { integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, } - commander@4.1.1: + commander@11.1.0: resolution: { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, } - engines: { node: ">= 6" } - - commander@7.2.0: - resolution: - { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, - } - engines: { node: ">= 10" } + engines: { node: ">=16" } common-ancestor-path@1.0.1: resolution: @@ -2333,78 +1300,35 @@ packages: integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==, } - concat-map@0.0.1: + cookie-es@1.2.2: resolution: { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==, } - convert-source-map@2.0.0: + cookie@1.1.1: resolution: { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, + integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==, + } + engines: { node: ">=18" } + + crossws@0.3.5: + resolution: + { + integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==, } - cookie@0.6.0: + css-select@5.2.2: resolution: { - integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==, - } - engines: { node: ">= 0.6" } - - cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, - } - engines: { node: ">= 8" } - - css-blank-pseudo@6.0.2: - resolution: - { - integrity: sha512-J/6m+lsqpKPqWHOifAFtKFeGLOzw3jR92rxQcwRUfA/eTuZzKfKlxOmYDx2+tqOPQAueNvBiY8WhAeHu5qNmTg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - css-declaration-sorter@7.2.0: - resolution: - { - integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.0.9 - - css-has-pseudo@6.0.5: - resolution: - { - integrity: sha512-ZTv6RlvJJZKp32jPYnAJVhowDCrRrHUTAxsYSuUPBEDJjzws6neMnzkRblxtgmv1RgcV5dhH2gn7E3wA9Wt6lw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - css-prefers-color-scheme@9.0.1: - resolution: - { - integrity: sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - css-select@5.1.0: - resolution: - { - integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, } - css-selector-parser@3.0.4: + css-selector-parser@3.1.3: resolution: { - integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==, + integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==, } css-tree@2.2.1: @@ -2414,26 +1338,20 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" } - css-tree@2.3.1: + css-tree@3.1.0: resolution: { - integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, + integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==, } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - css-what@6.1.0: + css-what@6.2.2: resolution: { - integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, } engines: { node: ">= 6" } - cssdb@8.0.1: - resolution: - { - integrity: sha512-diegY/vnOYmPXY0bOBj5jeHaiK8MMpjgPuipirY8pF9AthtqEXgqVdKF5tnb6RTc/ZdhQqG0TBnInQ5CbbUW7Q==, - } - cssesc@3.0.0: resolution: { @@ -2442,33 +1360,6 @@ packages: engines: { node: ">=4" } hasBin: true - cssnano-preset-default@7.0.1: - resolution: - { - integrity: sha512-Fumyr+uZMcjYQeuHssAZxn0cKj3cdQc5GcxkBcmEzISGB+UW9CLNlU4tBOJbJGcPukFDlicG32eFbrc8K9V5pw==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@5.0.0: - resolution: - { - integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - cssnano@7.0.1: - resolution: - { - integrity: sha512-917Mej/4SdI7b55atsli3sU4MOJ9XDoKgnlCtQtXYj8XUFcM3riTuYHyqBBnnskawW+zWwp0KxJzpEUodlpqUg==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - csso@5.0.5: resolution: { @@ -2476,10 +1367,10 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: ">=7.0.0" } - debug@4.3.4: + debug@4.4.1: resolution: { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==, } engines: { node: ">=6.0" } peerDependencies: @@ -2488,10 +1379,28 @@ packages: supports-color: optional: true - decode-named-character-reference@1.0.2: + debug@4.4.3: resolution: { - integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==, + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.2.0: + resolution: + { + integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==, + } + + defu@6.1.4: + resolution: + { + integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==, } dequal@2.0.3: @@ -2501,10 +1410,16 @@ packages: } engines: { node: ">=6" } - detect-libc@2.0.3: + destr@2.0.5: resolution: { - integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==, + integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==, + } + + detect-libc@2.1.2: + resolution: + { + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, } engines: { node: ">=8" } @@ -2515,10 +1430,10 @@ packages: } engines: { node: ">=18" } - devalue@5.0.0: + devalue@5.6.2: resolution: { - integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==, + integrity: sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==, } devlop@1.1.0: @@ -2527,16 +1442,10 @@ packages: integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, } - didyoumean@1.2.2: + diff@8.0.3: resolution: { - integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, - } - - diff@5.2.0: - resolution: - { - integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==, + integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==, } engines: { node: ">=0.3.1" } @@ -2572,41 +1481,23 @@ packages: } engines: { node: ">= 4" } - domutils@3.1.0: + domutils@3.2.2: resolution: { - integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==, + integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, } - dset@3.1.3: + dset@3.1.4: resolution: { - integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==, + integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==, } engines: { node: ">=4" } - eastasianwidth@0.2.0: + emoji-regex@10.4.0: resolution: { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } - - electron-to-chromium@1.4.773: - resolution: - { - integrity: sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw==, - } - - emmet@2.4.6: - resolution: - { - integrity: sha512-dJfbdY/hfeTyf/Ef7Y7ubLYzkBvPQ912wPaeVYpAxvFxkEBf/+hJu4H6vhAvFN6HlxqedlfVn2x1S44FfQ97pg==, - } - - emoji-regex@10.3.0: - resolution: - { - integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==, + integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==, } emoji-regex@8.0.0: @@ -2615,12 +1506,6 @@ packages: integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, } - emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } - entities@4.5.0: resolution: { @@ -2628,48 +1513,39 @@ packages: } engines: { node: ">=0.12" } - es-module-lexer@1.4.1: + entities@6.0.1: resolution: { - integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==, + integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, + } + engines: { node: ">=0.12" } + + es-module-lexer@1.7.0: + resolution: + { + integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==, } - es-module-lexer@1.5.2: + esast-util-from-estree@2.0.0: resolution: { - integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==, + integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==, } - esbuild@0.20.2: + esast-util-from-js@2.0.1: resolution: { - integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==, + integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==, } - engines: { node: ">=12" } + + esbuild@0.25.9: + resolution: + { + integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==, + } + engines: { node: ">=18" } hasBin: true - esbuild@0.21.3: - resolution: - { - integrity: sha512-Kgq0/ZsAPzKrbOjCQcjoSmPoWhlcVnGAUo7jvaLHoxW1Drto0KGkR1xBNg2Cp43b9ImvxmPEJZ9xkfcnqPsfBw==, - } - engines: { node: ">=12" } - hasBin: true - - escalade@3.1.1: - resolution: - { - integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, - } - engines: { node: ">=6" } - - escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } - escape-string-regexp@5.0.0: resolution: { @@ -2677,14 +1553,6 @@ packages: } engines: { node: ">=12" } - esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } - hasBin: true - estree-util-attach-comments@3.0.0: resolution: { @@ -2703,6 +1571,12 @@ packages: integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==, } + estree-util-scope@1.0.0: + resolution: + { + integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==, + } + estree-util-to-js@2.0.0: resolution: { @@ -2715,6 +1589,12 @@ packages: integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==, } + estree-walker@2.0.2: + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + } + estree-walker@3.0.3: resolution: { @@ -2727,25 +1607,11 @@ packages: integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, } - execa@8.0.1: + expressive-code@0.41.3: resolution: { - integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, + integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==, } - engines: { node: ">=16.17" } - - expressive-code@0.35.3: - resolution: - { - integrity: sha512-XjWWUCxS4uQjPoRM98R7SNWWIYlFEaOeHm1piWv+c7coHCekuWno81thsc3g/UJ+DajNtOEsIQIAAcsBQZ8LMg==, - } - - extend-shallow@2.0.1: - resolution: - { - integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, - } - engines: { node: ">=0.10.0" } extend@3.0.2: resolution: @@ -2753,45 +1619,17 @@ packages: integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, } - fast-glob@3.3.2: + fdir@6.5.0: resolution: { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, - } - engines: { node: ">=8.6.0" } - - fastq@1.15.0: - resolution: - { - integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, - } - - fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, - } - engines: { node: ">=8" } - - find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } - - find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } - - find-yarn-workspace-root2@1.2.16: - resolution: - { - integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==, + integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, } + engines: { node: ">=12.0.0" } + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true flattie@1.1.1: resolution: @@ -2800,17 +1638,18 @@ packages: } engines: { node: ">=8" } - fraction.js@4.3.7: + fontace@0.4.1: resolution: { - integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, + integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==, } - fs.realpath@1.0.0: + fontkitten@1.0.2: resolution: { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + integrity: sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==, } + engines: { node: ">=20" } fsevents@2.3.3: resolution: @@ -2820,99 +1659,24 @@ packages: engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] - function-bind@1.1.2: + get-east-asian-width@1.3.0: resolution: { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } - - gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } - - get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } - - get-east-asian-width@1.2.0: - resolution: - { - integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==, + integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==, } engines: { node: ">=18" } - get-stream@8.0.1: - resolution: - { - integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, - } - engines: { node: ">=16" } - github-slugger@2.0.0: resolution: { integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==, } - glob-parent@5.1.2: + h3@1.15.5: resolution: { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==, } - engines: { node: ">= 6" } - - glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } - - glob@7.1.6: - resolution: - { - integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, - } - - globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: ">=4" } - - graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } - - gray-matter@4.0.3: - resolution: - { - integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==, - } - engines: { node: ">=6.0" } - - has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } - - hasown@2.0.0: - resolution: - { - integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==, - } - engines: { node: ">= 0.4" } hast-util-embedded@3.0.0: resolution: @@ -2920,16 +1684,22 @@ packages: integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==, } - hast-util-from-html@2.0.1: + hast-util-format@1.1.0: resolution: { - integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==, + integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==, } - hast-util-from-parse5@8.0.1: + hast-util-from-html@2.0.3: resolution: { - integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==, + integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==, + } + + hast-util-from-parse5@8.0.3: + resolution: + { + integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==, } hast-util-has-property@3.0.0: @@ -2938,10 +1708,10 @@ packages: integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==, } - hast-util-is-body-ok-link@3.0.0: + hast-util-is-body-ok-link@3.0.1: resolution: { - integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==, + integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==, } hast-util-is-element@3.0.0: @@ -2950,6 +1720,12 @@ packages: integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==, } + hast-util-minify-whitespace@1.0.1: + resolution: + { + integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==, + } + hast-util-parse-selector@4.0.0: resolution: { @@ -2962,40 +1738,34 @@ packages: integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==, } - hast-util-raw@9.0.1: + hast-util-raw@9.1.0: resolution: { - integrity: sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==, + integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==, } - hast-util-select@6.0.2: + hast-util-select@6.0.4: resolution: { - integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==, + integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==, } - hast-util-to-estree@3.1.0: + hast-util-to-estree@3.1.3: resolution: { - integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==, + integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==, } - hast-util-to-html@9.0.0: + hast-util-to-html@9.0.5: resolution: { - integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==, + integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==, } - hast-util-to-html@9.0.1: + hast-util-to-jsx-runtime@2.3.6: resolution: { - integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==, - } - - hast-util-to-jsx-runtime@2.3.0: - resolution: - { - integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==, + integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==, } hast-util-to-parse5@8.0.0: @@ -3004,10 +1774,10 @@ packages: integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==, } - hast-util-to-string@3.0.0: + hast-util-to-string@3.0.1: resolution: { - integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==, + integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==, } hast-util-to-text@4.0.2: @@ -3022,16 +1792,10 @@ packages: integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, } - hastscript@8.0.0: + hastscript@9.0.1: resolution: { - integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==, - } - - hastscript@9.0.0: - resolution: - { - integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==, + integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==, } html-escaper@3.0.3: @@ -3046,53 +1810,46 @@ packages: integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==, } - html-whitespace-sensitive-tag-names@3.0.0: + html-whitespace-sensitive-tag-names@3.0.1: resolution: { - integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==, + integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==, } - http-cache-semantics@4.1.1: + http-cache-semantics@4.2.0: resolution: { - integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==, + integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==, } - human-signals@5.0.0: + i18next@23.16.8: resolution: { - integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, - } - engines: { node: ">=16.17.0" } - - import-meta-resolve@4.0.0: - resolution: - { - integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==, + integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==, } - inflight@1.0.6: + import-meta-resolve@4.1.0: resolution: { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==, } - inherits@2.0.4: + import-meta-resolve@4.2.0: resolution: { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==, } - inline-style-parser@0.1.1: + inline-style-parser@0.2.4: resolution: { - integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==, + integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==, } - inline-style-parser@0.2.2: + iron-webcrypto@1.2.1: resolution: { - integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==, + integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==, } is-alphabetical@2.0.1: @@ -3107,32 +1864,6 @@ packages: integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==, } - is-arrayish@0.3.2: - resolution: - { - integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, - } - - is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } - - is-buffer@2.0.5: - resolution: - { - integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==, - } - engines: { node: ">=4" } - - is-core-module@2.13.1: - resolution: - { - integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==, - } - is-decimal@2.0.1: resolution: { @@ -3147,20 +1878,6 @@ packages: engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } hasBin: true - is-extendable@0.1.1: - resolution: - { - integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, - } - engines: { node: ">=0.10.0" } - - is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } - is-fullwidth-code-point@3.0.0: resolution: { @@ -3168,13 +1885,6 @@ packages: } engines: { node: ">=8" } - is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } - is-hexadecimal@2.0.1: resolution: { @@ -3189,20 +1899,6 @@ packages: engines: { node: ">=14.16" } hasBin: true - is-interactive@2.0.0: - resolution: - { - integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, - } - engines: { node: ">=12" } - - is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } - is-plain-obj@4.1.0: resolution: { @@ -3210,33 +1906,6 @@ packages: } engines: { node: ">=12" } - is-reference@3.0.2: - resolution: - { - integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==, - } - - is-stream@3.0.0: - resolution: - { - integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - is-unicode-supported@1.3.0: - resolution: - { - integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, - } - engines: { node: ">=12" } - - is-unicode-supported@2.0.0: - resolution: - { - integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==, - } - engines: { node: ">=18" } - is-wsl@3.1.0: resolution: { @@ -3244,32 +1913,6 @@ packages: } engines: { node: ">=16" } - isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - - jiti@1.21.0: - resolution: - { - integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==, - } - hasBin: true - - js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } - - js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } - hasBin: true - js-yaml@4.1.0: resolution: { @@ -3277,35 +1920,13 @@ packages: } hasBin: true - jsesc@2.5.2: + js-yaml@4.1.1: resolution: { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, } - engines: { node: ">=4" } hasBin: true - json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } - hasBin: true - - jsonc-parser@2.3.1: - resolution: - { - integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==, - } - - kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } - kleur@3.0.3: resolution: { @@ -3320,72 +1941,12 @@ packages: } engines: { node: ">=6" } - lilconfig@2.1.0: + klona@2.0.6: resolution: { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, + integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==, } - engines: { node: ">=10" } - - lilconfig@3.0.0: - resolution: - { - integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==, - } - engines: { node: ">=14" } - - lilconfig@3.1.1: - resolution: - { - integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==, - } - engines: { node: ">=14" } - - lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } - - load-yaml-file@0.2.0: - resolution: - { - integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==, - } - engines: { node: ">=6" } - - locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } - - locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } - - lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, - } - - lodash.uniq@4.5.0: - resolution: - { - integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, - } - - log-symbols@6.0.0: - resolution: - { - integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==, - } - engines: { node: ">=18" } + engines: { node: ">= 8" } longest-streak@3.1.0: resolution: @@ -3393,23 +1954,29 @@ packages: integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, } - lru-cache@5.1.1: + lru-cache@11.2.5: resolution: { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==, + } + engines: { node: 20 || >=22 } + + magic-string@0.30.18: + resolution: + { + integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==, } - lru-cache@6.0.0: + magic-string@0.30.21: resolution: { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, } - engines: { node: ">=10" } - magic-string@0.30.10: + magicast@0.5.2: resolution: { - integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==, + integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==, } markdown-extensions@2.0.0: @@ -3419,10 +1986,10 @@ packages: } engines: { node: ">=16" } - markdown-table@3.0.3: + markdown-table@3.0.4: resolution: { - integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==, + integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==, } mdast-util-definitions@6.0.0: @@ -3431,34 +1998,34 @@ packages: integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==, } - mdast-util-directive@3.0.0: + mdast-util-directive@3.1.0: resolution: { - integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==, + integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==, } - mdast-util-find-and-replace@3.0.1: + mdast-util-find-and-replace@3.0.2: resolution: { - integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==, + integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==, } - mdast-util-from-markdown@2.0.0: + mdast-util-from-markdown@2.0.2: resolution: { - integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==, + integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==, } - mdast-util-gfm-autolink-literal@2.0.0: + mdast-util-gfm-autolink-literal@2.0.1: resolution: { - integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==, + integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==, } - mdast-util-gfm-footnote@2.0.0: + mdast-util-gfm-footnote@2.1.0: resolution: { - integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==, + integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==, } mdast-util-gfm-strikethrough@2.0.0: @@ -3479,22 +2046,22 @@ packages: integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==, } - mdast-util-gfm@3.0.0: + mdast-util-gfm@3.1.0: resolution: { - integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==, + integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==, } - mdast-util-mdx-expression@2.0.0: + mdast-util-mdx-expression@2.0.1: resolution: { - integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==, + integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==, } - mdast-util-mdx-jsx@3.0.0: + mdast-util-mdx-jsx@3.2.0: resolution: { - integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==, + integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==, } mdast-util-mdx@3.0.0: @@ -3509,22 +2076,22 @@ packages: integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==, } - mdast-util-phrasing@4.0.0: + mdast-util-phrasing@4.1.0: resolution: { - integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==, + integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==, } - mdast-util-to-hast@13.0.2: + mdast-util-to-hast@13.2.0: resolution: { - integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==, + integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==, } - mdast-util-to-markdown@2.1.0: + mdast-util-to-markdown@2.1.2: resolution: { - integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==, + integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==, } mdast-util-to-string@4.0.0: @@ -3539,59 +2106,46 @@ packages: integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==, } - mdn-data@2.0.30: + mdn-data@2.12.2: resolution: { - integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, + integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==, } - merge-stream@2.0.0: + micromark-core-commonmark@2.0.3: resolution: { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==, } - merge2@1.4.1: + micromark-extension-directive@3.0.2: resolution: { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } - - micromark-core-commonmark@2.0.0: - resolution: - { - integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==, + integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==, } - micromark-extension-directive@3.0.0: + micromark-extension-gfm-autolink-literal@2.1.0: resolution: { - integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==, + integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==, } - micromark-extension-gfm-autolink-literal@2.0.0: + micromark-extension-gfm-footnote@2.1.0: resolution: { - integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==, + integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==, } - micromark-extension-gfm-footnote@2.0.0: + micromark-extension-gfm-strikethrough@2.1.0: resolution: { - integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==, + integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==, } - micromark-extension-gfm-strikethrough@2.0.0: + micromark-extension-gfm-table@2.1.1: resolution: { - integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==, - } - - micromark-extension-gfm-table@2.0.0: - resolution: - { - integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==, + integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==, } micromark-extension-gfm-tagfilter@2.0.0: @@ -3600,10 +2154,10 @@ packages: integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==, } - micromark-extension-gfm-task-list-item@2.0.1: + micromark-extension-gfm-task-list-item@2.1.0: resolution: { - integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==, + integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==, } micromark-extension-gfm@3.0.0: @@ -3612,16 +2166,16 @@ packages: integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==, } - micromark-extension-mdx-expression@3.0.0: + micromark-extension-mdx-expression@3.0.1: resolution: { - integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==, + integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==, } - micromark-extension-mdx-jsx@3.0.0: + micromark-extension-mdx-jsx@3.0.2: resolution: { - integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==, + integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==, } micromark-extension-mdx-md@2.0.0: @@ -3642,208 +2196,182 @@ packages: integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==, } - micromark-factory-destination@2.0.0: + micromark-factory-destination@2.0.1: resolution: { - integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==, + integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==, } - micromark-factory-label@2.0.0: + micromark-factory-label@2.0.1: resolution: { - integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==, + integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==, } - micromark-factory-mdx-expression@2.0.1: + micromark-factory-mdx-expression@2.0.3: resolution: { - integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==, + integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==, } - micromark-factory-space@2.0.0: + micromark-factory-space@2.0.1: resolution: { - integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==, + integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==, } - micromark-factory-title@2.0.0: + micromark-factory-title@2.0.1: resolution: { - integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==, + integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==, } - micromark-factory-whitespace@2.0.0: + micromark-factory-whitespace@2.0.1: resolution: { - integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==, + integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==, } - micromark-util-character@2.0.1: + micromark-util-character@2.1.1: resolution: { - integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==, + integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==, } - micromark-util-chunked@2.0.0: + micromark-util-chunked@2.0.1: resolution: { - integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==, + integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==, } - micromark-util-classify-character@2.0.0: + micromark-util-classify-character@2.0.1: resolution: { - integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==, + integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==, } - micromark-util-combine-extensions@2.0.0: + micromark-util-combine-extensions@2.0.1: resolution: { - integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==, + integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==, } - micromark-util-decode-numeric-character-reference@2.0.1: + micromark-util-decode-numeric-character-reference@2.0.2: resolution: { - integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==, + integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==, } - micromark-util-decode-string@2.0.0: + micromark-util-decode-string@2.0.1: resolution: { - integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==, + integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==, } - micromark-util-encode@2.0.0: + micromark-util-encode@2.0.1: resolution: { - integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==, + integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==, } - micromark-util-events-to-acorn@2.0.2: + micromark-util-events-to-acorn@2.0.3: resolution: { - integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==, + integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==, } - micromark-util-html-tag-name@2.0.0: + micromark-util-html-tag-name@2.0.1: resolution: { - integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==, + integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==, } - micromark-util-normalize-identifier@2.0.0: + micromark-util-normalize-identifier@2.0.1: resolution: { - integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==, + integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==, } - micromark-util-resolve-all@2.0.0: + micromark-util-resolve-all@2.0.1: resolution: { - integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==, + integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==, } - micromark-util-sanitize-uri@2.0.0: + micromark-util-sanitize-uri@2.0.1: resolution: { - integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==, + integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==, } - micromark-util-subtokenize@2.0.0: + micromark-util-subtokenize@2.1.0: resolution: { - integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==, + integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==, } - micromark-util-symbol@2.0.0: + micromark-util-symbol@2.0.1: resolution: { - integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==, + integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==, } - micromark-util-types@2.0.0: + micromark-util-types@2.0.2: resolution: { - integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==, + integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==, } - micromark@4.0.0: + micromark@4.0.2: resolution: { - integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==, + integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==, } - micromatch@4.0.5: + mrmime@2.0.1: resolution: { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, - } - engines: { node: ">=8.6" } - - mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: ">=6" } - - mimic-fn@4.0.0: - resolution: - { - integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, - } - engines: { node: ">=12" } - - minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - - mrmime@2.0.0: - resolution: - { - integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, + integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, } engines: { node: ">=10" } - ms@2.1.2: + ms@2.1.3: resolution: { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, } - muggle-string@0.4.1: + nanoid@3.3.11: resolution: { - integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==, - } - - mz@2.7.0: - resolution: - { - integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, - } - - nanoid@3.3.7: - resolution: - { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, + integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, } engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true - nlcst-to-string@3.1.1: + neotraverse@0.6.18: resolution: { - integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==, + integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==, + } + engines: { node: ">= 10" } + + nlcst-to-string@4.0.0: + resolution: + { + integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==, } - node-releases@2.0.14: + node-fetch-native@1.6.7: resolution: { - integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==, + integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==, + } + + node-mock-http@1.0.4: + resolution: + { + integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==, } normalize-path@3.0.0: @@ -3853,210 +2381,104 @@ packages: } engines: { node: ">=0.10.0" } - normalize-range@0.1.2: - resolution: - { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, - } - engines: { node: ">=0.10.0" } - - not@0.1.0: - resolution: - { - integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==, - } - - npm-run-path@5.1.0: - resolution: - { - integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - nth-check@2.1.1: resolution: { integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, } - object-assign@4.1.1: + ofetch@1.5.1: resolution: { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: ">=0.10.0" } - - object-hash@3.0.0: - resolution: - { - integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==, - } - engines: { node: ">= 6" } - - once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==, } - onetime@5.1.2: + ohash@2.0.11: resolution: { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==, } - engines: { node: ">=6" } - onetime@6.0.0: + oniguruma-parser@0.12.1: resolution: { - integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, + integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==, } - engines: { node: ">=12" } - ora@8.0.1: + oniguruma-to-es@4.3.3: resolution: { - integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==, + integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==, + } + + oniguruma-to-es@4.3.4: + resolution: + { + integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==, + } + + p-limit@6.2.0: + resolution: + { + integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==, } engines: { node: ">=18" } - p-limit@2.3.0: + p-queue@8.1.1: resolution: { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } - - p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } - - p-limit@5.0.0: - resolution: - { - integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==, + integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==, } engines: { node: ">=18" } - p-locate@4.1.0: + p-timeout@6.1.4: resolution: { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } - - p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } - - p-queue@8.0.1: - resolution: - { - integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==, - } - engines: { node: ">=18" } - - p-timeout@6.1.2: - resolution: - { - integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==, + integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==, } engines: { node: ">=14.16" } - p-try@2.2.0: + package-manager-detector@1.6.0: resolution: { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==, } - engines: { node: ">=6" } - pagefind@1.0.4: + pagefind@1.3.0: resolution: { - integrity: sha512-oRIizYe+zSI2Jw4zcMU0ebDZm27751hRFiSOBLwc1OIYMrsZKk+3m8p9EVaOmc6zZdtqwwdilNUNxXvBeHcP9w==, + integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==, } hasBin: true - parse-entities@4.0.1: + parse-entities@4.0.2: resolution: { - integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==, + integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==, } - parse-latin@5.0.1: + parse-latin@7.0.0: resolution: { - integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==, + integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==, } - parse5@7.1.2: + parse5@7.3.0: resolution: { - integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==, + integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, } - path-browserify@1.0.1: + piccolore@0.1.3: resolution: { - integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==, + integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==, } - path-exists@4.0.0: + picocolors@1.1.1: resolution: { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } - - path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } - - path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } - - path-key@4.0.0: - resolution: - { - integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, - } - engines: { node: ">=12" } - - path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } - - path-to-regexp@6.2.2: - resolution: - { - integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==, - } - - periscopic@3.1.0: - resolution: - { - integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==, - } - - picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, } picomatch@2.3.1: @@ -4066,602 +2488,40 @@ packages: } engines: { node: ">=8.6" } - pify@2.3.0: + picomatch@4.0.3: resolution: { - integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, + integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, } - engines: { node: ">=0.10.0" } + engines: { node: ">=12" } - pify@4.0.1: + postcss-nested@6.2.0: resolution: { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: ">=6" } - - pirates@4.0.6: - resolution: - { - integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, - } - engines: { node: ">= 6" } - - pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } - - postcss-attribute-case-insensitive@6.0.3: - resolution: - { - integrity: sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-calc@10.0.0: - resolution: - { - integrity: sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==, - } - engines: { node: ^18.12 || ^20.9 || >=22.0 } - peerDependencies: - postcss: ^8.4.38 - - postcss-clamp@4.1.0: - resolution: - { - integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==, - } - engines: { node: ">=7.6.0" } - peerDependencies: - postcss: ^8.4.6 - - postcss-color-functional-notation@6.0.11: - resolution: - { - integrity: sha512-gJ+hAtAsgBF4w7eh28Pg7EA60lx7vE5xO/B/yZawaI6FYHky+5avA9YSe73nJHnAMEVFpCMeJc6Wts5g+niksg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-color-hex-alpha@9.0.4: - resolution: - { - integrity: sha512-XQZm4q4fNFqVCYMGPiBjcqDhuG7Ey2xrl99AnDJMyr5eDASsAGalndVgHZF8i97VFNy1GQeZc4q2ydagGmhelQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-color-rebeccapurple@9.0.3: - resolution: - { - integrity: sha512-ruBqzEFDYHrcVq3FnW3XHgwRqVMrtEPLBtD7K2YmsLKVc2jbkxzzNEctJKsPCpDZ+LeMHLKRDoSShVefGc+CkQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-colormin@7.0.0: - resolution: - { - integrity: sha512-5CN6fqtsEtEtwf3mFV3B4UaZnlYljPpzmGeDB4yCK067PnAtfLe9uX2aFZaEwxHE7HopG5rUkW8gyHrNAesHEg==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@7.0.0: - resolution: - { - integrity: sha512-bMuzDgXBbFbByPgj+/r6va8zNuIDUaIIbvAFgdO1t3zdgJZ77BZvu6dfWyd6gHEJnYzmeVr9ayUsAQL3/qLJ0w==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-custom-media@10.0.6: - resolution: - { - integrity: sha512-BjihQoIO4Wjqv9fQNExSJIim8UAmkhLxuJnhJsLTRFSba1y1MhxkJK5awsM//6JJ+/Tu5QUxf624RQAvKHv6SA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-custom-properties@13.3.10: - resolution: - { - integrity: sha512-ejaalIpl7p0k0L5ngIZ86AZGmp3m1KdeOCbSQTK4gQcB1ncaoPTHorw206+tsZRIhIDYvh5ZButEje6740YDXw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-custom-selectors@7.1.10: - resolution: - { - integrity: sha512-bV/6+IExyT2J4kMzX6c+ZMlN1xDfjcC4ePr1ywKezcTgwgUn11qQN3jdzFBpo8Dk1K7vO/OYOwMb5AtJP4JZcg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-dir-pseudo-class@8.0.1: - resolution: - { - integrity: sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-discard-comments@7.0.0: - resolution: - { - integrity: sha512-xpSdzRqYmy4YIVmjfGyYXKaI1SRnK6CTr+4Zmvyof8ANwvgfZgGdVtmgAvzh59gJm808mJCWQC9tFN0KF5dEXA==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@7.0.0: - resolution: - { - integrity: sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@7.0.0: - resolution: - { - integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@7.0.0: - resolution: - { - integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-double-position-gradients@5.0.6: - resolution: - { - integrity: sha512-QJ+089FKMaqDxOhhIHsJrh4IP7h4PIHNC5jZP5PMmnfUScNu8Hji2lskqpFWCvu+5sj+2EJFyzKd13sLEWOZmQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-focus-visible@9.0.1: - resolution: - { - integrity: sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-focus-within@8.0.1: - resolution: - { - integrity: sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-font-variant@5.0.0: - resolution: - { - integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==, - } - peerDependencies: - postcss: ^8.1.0 - - postcss-gap-properties@5.0.1: - resolution: - { - integrity: sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-image-set-function@6.0.3: - resolution: - { - integrity: sha512-i2bXrBYzfbRzFnm+pVuxVePSTCRiNmlfssGI4H0tJQvDue+yywXwUxe68VyzXs7cGtMaH6MCLY6IbCShrSroCw==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-import@15.1.0: - resolution: - { - integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==, - } - engines: { node: ">=14.0.0" } - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: - { - integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==, - } - engines: { node: ^12 || ^14 || >= 16 } - peerDependencies: - postcss: ^8.4.21 - - postcss-lab-function@6.0.16: - resolution: - { - integrity: sha512-QWv0VxfjgIl8jBR/wuQcm/o31jn4P/LwzYuVKzNQoO5t7HPcU0d3RfWUiDrHN3frmSv+YYZppr3P81tKFTDyqg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-load-config@4.0.2: - resolution: - { - integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==, - } - engines: { node: ">= 14" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-logical@7.0.1: - resolution: - { - integrity: sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-merge-longhand@7.0.0: - resolution: - { - integrity: sha512-0X8I4/9+G03X5/5NnrfopG/YEln2XU8heDh7YqBaiq2SeaKIG3n66ShZPjIolmVuLBQ0BEm3yS8o1mlCLHdW7A==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@7.0.0: - resolution: - { - integrity: sha512-Zty3VlOsD6VSjBMu6PiHCVpLegtBT/qtZRVBcSeyEZ6q1iU5qTYT0WtEoLRV+YubZZguS5/ycfP+NRiKfjv6aw==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@7.0.0: - resolution: - { - integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@7.0.0: - resolution: - { - integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@7.0.0: - resolution: - { - integrity: sha512-XOJAuX8Q/9GT1sGxlUvaFEe2H9n50bniLZblXXsAT/BwSfFYvzSZeFG7uupwc0KbKpTnflnQ7aMwGzX6JUWliQ==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@7.0.0: - resolution: - { - integrity: sha512-f00CExZhD6lNw2vTZbcnmfxVgaVKzUw6IRsIFX3JTT8GdsoABc1WnhhGwL1i8YPJ3sSWw39fv7XPtvLb+3Uitw==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-nested@6.0.1: - resolution: - { - integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==, + integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==, } engines: { node: ">=12.0" } peerDependencies: postcss: ^8.2.14 - postcss-nesting@12.1.4: + postcss-selector-parser@6.1.2: resolution: { - integrity: sha512-CcHOq94K137E+U4Ommu7pexcpp0Tjm24zl4UcqWs1oSLAr5cLI+jLrqQ5h/bdjhMX6cMbzunyustVNnvrzF8Zg==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-normalize-charset@7.0.0: - resolution: - { - integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@7.0.0: - resolution: - { - integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@7.0.0: - resolution: - { - integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@7.0.0: - resolution: - { - integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@7.0.0: - resolution: - { - integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@7.0.0: - resolution: - { - integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@7.0.0: - resolution: - { - integrity: sha512-OnKV52/VFFDAim4n0pdI+JAhsolLBdnCKxE6VV5lW5Q/JeVGFN8UM8ur6/A3EAMLsT1ZRm3fDHh/rBoBQpqi2w==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@7.0.0: - resolution: - { - integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@7.0.0: - resolution: - { - integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-opacity-percentage@2.0.0: - resolution: - { - integrity: sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.2 - - postcss-ordered-values@7.0.0: - resolution: - { - integrity: sha512-KROvC63A8UQW1eYDljQe1dtwc1E/M+mMwDT6z7khV/weHYLWTghaLRLunU7x1xw85lWFwVZOAGakxekYvKV+0w==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-overflow-shorthand@5.0.1: - resolution: - { - integrity: sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-page-break@3.0.4: - resolution: - { - integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==, - } - peerDependencies: - postcss: ^8 - - postcss-place@9.0.1: - resolution: - { - integrity: sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-preset-env@9.5.13: - resolution: - { - integrity: sha512-YQMwWu6MAc4Envrjf/mW2BTrb5J8WkrJ4dV2VostZVDhrmEPpYREOyhmvtlFLDxK1/AmTDY8aXjZViMC1qKu/w==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-pseudo-class-any-link@9.0.2: - resolution: - { - integrity: sha512-HFSsxIqQ9nA27ahyfH37cRWGk3SYyQLpk0LiWw/UGMV4VKT5YG2ONee4Pz/oFesnK0dn2AjcyequDbIjKJgB0g==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-reduce-initial@7.0.0: - resolution: - { - integrity: sha512-iqGgmBxY9LrblZ0BKLjmrA1mC/cf9A/wYCCqSmD6tMi+xAyVl0+DfixZIHSVDMbCPRPjNmVF0DFGth/IDGelFQ==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@7.0.0: - resolution: - { - integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-replace-overflow-wrap@4.0.0: - resolution: - { - integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==, - } - peerDependencies: - postcss: ^8.0.3 - - postcss-selector-not@7.0.2: - resolution: - { - integrity: sha512-/SSxf/90Obye49VZIfc0ls4H0P6i6V1iHv0pzZH8SdgvZOPFkF37ef1r5cyWcMflJSFJ5bfuoluTnFnBBFiuSA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - - postcss-selector-parser@6.0.13: - resolution: - { - integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==, + integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, } engines: { node: ">=4" } - postcss-selector-parser@6.0.16: + postcss@8.5.6: resolution: { - integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==, - } - engines: { node: ">=4" } - - postcss-svgo@7.0.0: - resolution: - { - integrity: sha512-Xj5DRdvA97yRy3wjbCH2NKXtDUwEnph6EHr5ZXszsBVKCNrKXYBjzAXqav7/Afz5WwJ/1peZoTguCEJIg7ytmA==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >= 18 } - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@7.0.0: - resolution: - { - integrity: sha512-NYFqcft7vVQMZlQPsMdMPy+qU/zDpy95Malpw4GeA9ZZjM6dVXDshXtDmLc0m4WCD6XeZCJqjTfPT1USsdt+rA==, - } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - postcss-value-parser@4.2.0: - resolution: - { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, - } - - postcss@8.4.31: - resolution: - { - integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, + integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, } engines: { node: ^10 || ^12 || >=14 } - postcss@8.4.33: + prismjs@1.30.0: resolution: { - integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==, - } - engines: { node: ^10 || ^12 || >=14 } - - postcss@8.4.38: - resolution: - { - integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==, - } - engines: { node: ^10 || ^12 || >=14 } - - preferred-pm@3.1.3: - resolution: - { - integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==, - } - engines: { node: ">=10" } - - prismjs@1.29.0: - resolution: - { - integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==, + integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==, } engines: { node: ">=6" } @@ -4672,53 +2532,91 @@ packages: } engines: { node: ">= 6" } - property-information@6.4.0: + property-information@6.5.0: resolution: { - integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==, + integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==, } - queue-microtask@1.2.3: + property-information@7.1.0: resolution: { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==, } - read-cache@1.0.0: + radix3@1.1.2: resolution: { - integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, + integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==, } - readdirp@3.6.0: + readdirp@5.0.0: resolution: { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==, } - engines: { node: ">=8.10.0" } + engines: { node: ">= 20.19.0" } - rehype-expressive-code@0.35.3: + recma-build-jsx@1.0.0: resolution: { - integrity: sha512-kj43Rg+WzYUs8RRr6XyBr60pnrIZEgbmn9yJoV6qka1UDpcx7r8icn6Q2uSAgaLtlEUy+HCPgQJraOZrA53LOQ==, + integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==, } - rehype-format@5.0.0: + recma-jsx@1.0.1: resolution: { - integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==, + integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: + { + integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==, } - rehype-minify-whitespace@6.0.0: + recma-stringify@1.0.0: resolution: { - integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==, + integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==, } - rehype-parse@9.0.0: + regex-recursion@6.0.2: resolution: { - integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==, + integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==, + } + + regex-utilities@2.3.0: + resolution: + { + integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, + } + + regex@6.0.1: + resolution: + { + integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==, + } + + rehype-expressive-code@0.41.3: + resolution: + { + integrity: sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==, + } + + rehype-format@5.0.1: + resolution: + { + integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==, + } + + rehype-parse@9.0.1: + resolution: + { + integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==, } rehype-raw@7.0.0: @@ -4727,34 +2625,40 @@ packages: integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==, } - rehype-stringify@10.0.0: + rehype-recma@1.0.0: resolution: { - integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==, + integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==, } - rehype@13.0.1: + rehype-stringify@10.0.1: resolution: { - integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==, + integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==, } - remark-directive@3.0.0: + rehype@13.0.2: resolution: { - integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==, + integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==, } - remark-gfm@4.0.0: + remark-directive@3.0.1: resolution: { - integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==, + integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==, } - remark-mdx@3.0.0: + remark-gfm@4.0.1: resolution: { - integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==, + integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==, + } + + remark-mdx@3.1.0: + resolution: + { + integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==, } remark-parse@11.0.0: @@ -4763,18 +2667,18 @@ packages: integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==, } - remark-rehype@11.1.0: + remark-rehype@11.1.2: resolution: { - integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==, + integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==, } - remark-smartypants@2.0.0: + remark-smartypants@3.0.2: resolution: { - integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==, + integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: ">=16.0.0" } remark-stringify@11.0.0: resolution: @@ -4782,158 +2686,69 @@ packages: integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==, } - request-light@0.7.0: + retext-latin@4.0.0: resolution: { - integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==, + integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==, } - require-directory@2.1.1: + retext-smartypants@6.2.0: resolution: { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } - - resolve@1.22.8: - resolution: - { - integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, - } - hasBin: true - - restore-cursor@4.0.0: - resolution: - { - integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - retext-latin@3.1.0: - resolution: - { - integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==, + integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==, } - retext-smartypants@5.2.0: + retext-stringify@4.0.0: resolution: { - integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==, + integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==, } - retext-stringify@3.1.0: + retext@9.0.0: resolution: { - integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==, + integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==, } - retext@8.1.0: + rollup@4.48.1: resolution: { - integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==, - } - - reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - - rollup@4.17.2: - resolution: - { - integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==, + integrity: sha512-jVG20NvbhTYDkGAty2/Yh7HK6/q3DGSRH4o8ALKGArmMuaauM9kLfoMZ+WliPwA5+JHr2lTn3g557FxBV87ifg==, } engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true - run-parallel@1.2.0: + sax@1.4.1: resolution: { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, } - sax@1.3.0: + semver@7.7.4: resolution: { - integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==, - } - - section-matter@1.0.0: - resolution: - { - integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==, - } - engines: { node: ">=4" } - - semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } - hasBin: true - - semver@7.5.4: - resolution: - { - integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, + integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, } engines: { node: ">=10" } hasBin: true - semver@7.6.2: + sharp@0.34.5: resolution: { - integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==, + integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==, } - engines: { node: ">=10" } - hasBin: true + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - sharp@0.33.4: + shiki@3.11.0: resolution: { - integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==, - } - engines: { libvips: ">=8.15.2", node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - - shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } - - shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } - - shiki@1.5.2: - resolution: - { - integrity: sha512-fpPbuSaatinmdGijE7VYUD3hxLozR3ZZ+iAx8Iy2X6REmJGyF5hQl94SgmiUNTospq346nXUVZx0035dyGvIVw==, + integrity: sha512-VgKumh/ib38I1i3QkMn6mAQA6XjjQubqaAYhfge71glAll0/4xnt8L2oSuC45Qcr/G5Kbskj4RliMQddGmy/Og==, } - signal-exit@3.0.7: + shiki@3.22.0: resolution: { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } - - signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: ">=14" } - - simple-swizzle@0.2.2: - resolution: - { - integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, + integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==, } sisteransi@1.0.5: @@ -4942,34 +2757,42 @@ packages: integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, } - sitemap@7.1.1: + sitemap@8.0.0: resolution: { - integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==, + integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==, } - engines: { node: ">=12.0.0", npm: ">=5.6.0" } + engines: { node: ">=14.0.0", npm: ">=6.0.0" } + deprecated: "SECURITY: Multiple vulnerabilities fixed in 8.0.1 (XML injection, path traversal, command injection, protocol injection). Upgrade immediately: npm install sitemap@8.0.1" hasBin: true - source-map-js@1.0.2: + smol-toml@1.4.2: resolution: { - integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, + integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==, + } + engines: { node: ">= 18" } + + smol-toml@1.6.0: + resolution: + { + integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==, + } + engines: { node: ">= 18" } + + source-map-js@1.2.1: + resolution: + { + integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, } engines: { node: ">=0.10.0" } - source-map-js@1.2.0: + source-map@0.7.6: resolution: { - integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==, + integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==, } - engines: { node: ">=0.10.0" } - - source-map@0.7.4: - resolution: - { - integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, - } - engines: { node: ">= 8" } + engines: { node: ">= 12" } space-separated-tokens@2.0.2: resolution: @@ -4977,19 +2800,12 @@ packages: integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, } - sprintf-js@1.0.3: + stream-replace-string@2.0.0: resolution: { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==, } - stdin-discarder@0.2.2: - resolution: - { - integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==, - } - engines: { node: ">=18" } - string-width@4.2.3: resolution: { @@ -4997,24 +2813,17 @@ packages: } engines: { node: ">=8" } - string-width@5.1.2: + string-width@7.2.0: resolution: { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } - - string-width@7.1.0: - resolution: - { - integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==, + integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, } engines: { node: ">=18" } - stringify-entities@4.0.3: + stringify-entities@4.0.4: resolution: { - integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==, + integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, } strip-ansi@6.0.1: @@ -5031,112 +2840,45 @@ packages: } engines: { node: ">=12" } - strip-bom-string@1.0.0: + style-to-js@1.1.17: resolution: { - integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==, - } - engines: { node: ">=0.10.0" } - - strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } - - strip-final-newline@3.0.0: - resolution: - { - integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, - } - engines: { node: ">=12" } - - style-to-object@0.4.4: - resolution: - { - integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==, + integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==, } - style-to-object@1.0.5: + style-to-object@1.0.9: resolution: { - integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==, + integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==, } - stylehacks@7.0.0: + svgo@4.0.0: resolution: { - integrity: sha512-47Nw4pQ6QJb4CA6dzF2m9810sjQik4dfk4UwAm5wlwhrW3syzZKF8AR4/cfO3Cr6lsFgAoznQq0Wg57qhjTA2A==, + integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==, } - engines: { node: ^18.12.0 || ^20.9.0 || >=22.0 } - peerDependencies: - postcss: ^8.4.31 - - sucrase@3.34.0: - resolution: - { - integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==, - } - engines: { node: ">=8" } + engines: { node: ">=16" } hasBin: true - supports-color@5.5.0: + tiny-inflate@1.0.3: resolution: { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } - - supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } - - svgo@3.3.2: - resolution: - { - integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==, - } - engines: { node: ">=14.0.0" } - hasBin: true - - tailwindcss@3.4.3: - resolution: - { - integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==, - } - engines: { node: ">=14.0.0" } - hasBin: true - - thenify-all@1.6.0: - resolution: - { - integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, - } - engines: { node: ">=0.8" } - - thenify@3.3.1: - resolution: - { - integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==, } - to-fast-properties@2.0.0: + tinyexec@1.0.2: resolution: { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, + integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==, } - engines: { node: ">=4" } + engines: { node: ">=18" } - to-regex-range@5.0.1: + tinyglobby@0.2.15: resolution: { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, } - engines: { node: ">=8.0" } + engines: { node: ">=12.0.0" } trim-lines@3.0.1: resolution: @@ -5144,22 +2886,16 @@ packages: integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, } - trough@2.1.0: + trough@2.2.0: resolution: { - integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==, + integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==, } - ts-interface-checker@0.1.13: + tsconfck@3.1.6: resolution: { - integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, - } - - tsconfck@3.0.3: - resolution: - { - integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==, + integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==, } engines: { node: ^18 || >=20 } hasBin: true @@ -5169,55 +2905,67 @@ packages: typescript: optional: true - tslib@2.6.2: + tslib@2.8.1: resolution: { - integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, + integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, } - type-fest@2.19.0: + type-fest@4.41.0: resolution: { - integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==, + integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, } - engines: { node: ">=12.20" } + engines: { node: ">=16" } - typesafe-path@0.2.2: + typescript@5.9.2: resolution: { - integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==, - } - - typescript-auto-import-cache@0.3.2: - resolution: - { - integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==, - } - - typescript@5.4.5: - resolution: - { - integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==, + integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==, } engines: { node: ">=14.17" } hasBin: true - unherit@3.0.1: + ufo@1.6.1: resolution: { - integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==, + integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==, } - unified@10.1.2: + ufo@1.6.3: resolution: { - integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==, + integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==, } - unified@11.0.4: + ultrahtml@1.6.0: resolution: { - integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==, + integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==, + } + + uncrypto@0.1.3: + resolution: + { + integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==, + } + + undici-types@7.10.0: + resolution: + { + integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==, + } + + unified@11.0.5: + resolution: + { + integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==, + } + + unifont@0.7.3: + resolution: + { + integrity: sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA==, } unist-util-find-after@5.0.0: @@ -5226,22 +2974,16 @@ packages: integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==, } - unist-util-is@5.2.1: - resolution: - { - integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==, - } - unist-util-is@6.0.0: resolution: { integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==, } - unist-util-modify-children@3.1.1: + unist-util-modify-children@4.0.0: resolution: { - integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==, + integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==, } unist-util-position-from-estree@2.0.0: @@ -5262,28 +3004,16 @@ packages: integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==, } - unist-util-stringify-position@3.0.3: - resolution: - { - integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==, - } - unist-util-stringify-position@4.0.0: resolution: { integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, } - unist-util-visit-children@2.0.2: + unist-util-visit-children@3.0.0: resolution: { - integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==, - } - - unist-util-visit-parents@5.1.3: - resolution: - { - integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==, + integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==, } unist-util-visit-parents@6.0.1: @@ -5292,10 +3022,10 @@ packages: integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==, } - unist-util-visit@4.1.2: + unist-util-visit-parents@6.0.2: resolution: { - integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==, + integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==, } unist-util-visit@5.0.0: @@ -5304,14 +3034,70 @@ packages: integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, } - update-browserslist-db@1.0.13: + unstorage@1.17.4: resolution: { - integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==, + integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==, } - hasBin: true peerDependencies: - browserslist: ">= 4.21.0" + "@azure/app-configuration": ^1.8.0 + "@azure/cosmos": ^4.2.0 + "@azure/data-tables": ^13.3.0 + "@azure/identity": ^4.6.0 + "@azure/keyvault-secrets": ^4.9.0 + "@azure/storage-blob": ^12.26.0 + "@capacitor/preferences": ^6 || ^7 || ^8 + "@deno/kv": ">=0.9.0" + "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + "@planetscale/database": ^1.19.0 + "@upstash/redis": ^1.34.3 + "@vercel/blob": ">=0.27.1" + "@vercel/functions": ^2.2.12 || ^3.0.0 + "@vercel/kv": ^1 || ^2 || ^3 + aws4fetch: ^1.0.20 + db0: ">=0.2.1" + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + "@azure/app-configuration": + optional: true + "@azure/cosmos": + optional: true + "@azure/data-tables": + optional: true + "@azure/identity": + optional: true + "@azure/keyvault-secrets": + optional: true + "@azure/storage-blob": + optional: true + "@capacitor/preferences": + optional: true + "@deno/kv": + optional: true + "@netlify/blobs": + optional: true + "@planetscale/database": + optional: true + "@upstash/redis": + optional: true + "@vercel/blob": + optional: true + "@vercel/functions": + optional: true + "@vercel/kv": + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true util-deprecate@1.0.2: resolution: @@ -5319,209 +3105,78 @@ packages: integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, } - vfile-location@5.0.2: + vfile-location@5.0.3: resolution: { - integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==, + integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==, } - vfile-message@3.1.4: + vfile-message@4.0.3: resolution: { - integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==, + integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==, } - vfile-message@4.0.2: + vfile@6.0.3: resolution: { - integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==, + integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, } - vfile@5.3.7: + vite@6.4.1: resolution: { - integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==, + integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==, } - - vfile@6.0.1: - resolution: - { - integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==, - } - - vite@5.2.11: - resolution: - { - integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==, - } - engines: { node: ^18.0.0 || >=20.0.0 } + engines: { node: ^18.0.0 || ^20.0.0 || >=22.0.0 } hasBin: true peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" less: "*" lightningcss: ^1.21.0 sass: "*" + sass-embedded: "*" stylus: "*" sugarss: "*" - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: "@types/node": optional: true + jiti: + optional: true less: optional: true lightningcss: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true - vitefu@0.2.5: + vitefu@1.1.1: resolution: { - integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==, + integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==, } peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 peerDependenciesMeta: vite: optional: true - volar-service-css@0.0.45: - resolution: - { - integrity: sha512-f+AlUI1+kESbcZSVaNJVAnK0c/9Da5StoxzPqA5/8VqUHJWNdubWNnwG5xpFVTfgh6pgTcey3UBhBfHytFaIOg==, - } - peerDependencies: - "@volar/language-service": ~2.2.3 - peerDependenciesMeta: - "@volar/language-service": - optional: true - - volar-service-emmet@0.0.45: - resolution: - { - integrity: sha512-9nLXSDkR1vA/3fQkFEsSXAu3XovQxOpTkVG2jilQgfek/K1ZLkaA/WMhN/TtmPmQg4NxE9Ni6mA5udBQ5gVXIA==, - } - peerDependencies: - "@volar/language-service": ~2.2.3 - peerDependenciesMeta: - "@volar/language-service": - optional: true - - volar-service-html@0.0.45: - resolution: - { - integrity: sha512-tLTJqfy1v5C4nmeAsfekFIKPl4r4qDMyL0L9MWywr/EApZzPCsbeUGxCqdzxSMC2q7PMCfX2i167txDo+J0LVA==, - } - peerDependencies: - "@volar/language-service": ~2.2.3 - peerDependenciesMeta: - "@volar/language-service": - optional: true - - volar-service-prettier@0.0.45: - resolution: - { - integrity: sha512-+mBS2EsDgp/kunKEBnHvhBwIQm5v2ahw4NKpKdg4sTpXy3UxqHt+Fq/wRYQ7Z8LlNVNRVfp75ThjM+w2zaZBAw==, - } - peerDependencies: - "@volar/language-service": ~2.2.3 - prettier: ^2.2 || ^3.0 - peerDependenciesMeta: - "@volar/language-service": - optional: true - prettier: - optional: true - - volar-service-typescript-twoslash-queries@0.0.45: - resolution: - { - integrity: sha512-KrPUUvKggZgV9mrDpstCzmf20irgv0ooMv+FGDzIIQUkya+d2+nSS8Mx2h9FvsYgLccUVw5jU3Rhwhd3pv/7qg==, - } - peerDependencies: - "@volar/language-service": ~2.2.3 - peerDependenciesMeta: - "@volar/language-service": - optional: true - - volar-service-typescript@0.0.45: - resolution: - { - integrity: sha512-i/mMIIAMastJ2kgPo3qvX0Rrl7NyxhIYZ0ug/B4ambZcLPI1vzBgS2fmvyWX3jhBYHh8NmbAotFj+0Y9JtN47A==, - } - peerDependencies: - "@volar/language-service": ~2.2.3 - peerDependenciesMeta: - "@volar/language-service": - optional: true - - vscode-css-languageservice@6.2.10: - resolution: - { - integrity: sha512-sYUZPku4mQ06AWGCbMyjv2tdR6juBW6hTbVPFwbJvNVzdtEfBioQOgkdXg7yMJNWnXkvWSU1FL2kb4Vxu5Cdyw==, - } - - vscode-html-languageservice@5.2.0: - resolution: - { - integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==, - } - - vscode-jsonrpc@8.2.0: - resolution: - { - integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==, - } - engines: { node: ">=14.0.0" } - - vscode-languageserver-protocol@3.17.5: - resolution: - { - integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==, - } - - vscode-languageserver-textdocument@1.0.11: - resolution: - { - integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==, - } - - vscode-languageserver-types@3.17.5: - resolution: - { - integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==, - } - - vscode-languageserver@9.0.1: - resolution: - { - integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==, - } - hasBin: true - - vscode-nls@5.2.0: - resolution: - { - integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==, - } - - vscode-uri@2.1.2: - resolution: - { - integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==, - } - - vscode-uri@3.0.8: - resolution: - { - integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==, - } - web-namespaces@2.0.1: resolution: { @@ -5535,80 +3190,25 @@ packages: } engines: { node: ">=4" } - which-pm@2.0.0: + widest-line@5.0.0: resolution: { - integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==, + integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==, } - engines: { node: ">=8.15" } + engines: { node: ">=18" } - which-pm@2.1.1: + wrap-ansi@9.0.0: resolution: { - integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==, + integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, } - engines: { node: ">=8.15" } + engines: { node: ">=18" } - which@2.0.2: + xxhash-wasm@1.1.0: resolution: { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==, } - engines: { node: ">= 8" } - hasBin: true - - widest-line@4.0.1: - resolution: - { - integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==, - } - engines: { node: ">=12" } - - wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } - - wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } - - wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } - - yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } - - yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } - - yaml@2.3.4: - resolution: - { - integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==, - } - engines: { node: ">= 14" } yargs-parser@21.1.1: resolution: @@ -5617,45 +3217,48 @@ packages: } engines: { node: ">=12" } - yargs@17.7.2: + yocto-queue@1.2.1: resolution: { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: ">=12" } - - yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } - - yocto-queue@1.0.0: - resolution: - { - integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==, + integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==, } engines: { node: ">=12.20" } - zod-to-json-schema@3.23.0: + yocto-spinner@0.2.3: resolution: { - integrity: sha512-az0uJ243PxsRIa2x1WmNE/pnuA05gUq/JB8Lwe1EDCCL/Fz9MgjYQ0fPlyc2Tcv6aF2ZA7WM5TWaRZVEFaAIag==, + integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==, + } + engines: { node: ">=18.19" } + + yoctocolors@2.1.2: + resolution: + { + integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==, + } + engines: { node: ">=18" } + + zod-to-json-schema@3.25.1: + resolution: + { + integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==, } peerDependencies: - zod: ^3.23.3 + zod: ^3.25 || ^4 - zod@3.22.4: + zod-to-ts@1.2.0: resolution: { - integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==, + integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==, } + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 - zod@3.23.8: + zod@3.25.76: resolution: { - integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==, + integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==, } zwitch@2.0.4: @@ -5665,1093 +3268,600 @@ packages: } snapshots: - "@alloc/quick-lru@5.2.0": {} + "@astrojs/compiler@2.13.1": {} - "@ampproject/remapping@2.2.1": + "@astrojs/internal-helpers@0.7.2": {} + + "@astrojs/internal-helpers@0.7.5": {} + + "@astrojs/markdown-remark@6.3.10": dependencies: - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.20 - - "@astrojs/check@0.7.0(typescript@5.4.5)": - dependencies: - "@astrojs/language-server": 2.10.0(typescript@5.4.5) - chokidar: 3.5.3 - fast-glob: 3.3.2 - kleur: 4.1.5 - typescript: 5.4.5 - yargs: 17.7.2 - transitivePeerDependencies: - - prettier - - prettier-plugin-astro - - "@astrojs/compiler@2.8.0": {} - - "@astrojs/internal-helpers@0.4.0": {} - - "@astrojs/language-server@2.10.0(typescript@5.4.5)": - dependencies: - "@astrojs/compiler": 2.8.0 - "@jridgewell/sourcemap-codec": 1.4.15 - "@volar/kit": 2.2.4(typescript@5.4.5) - "@volar/language-core": 2.2.4 - "@volar/language-server": 2.2.4 - "@volar/language-service": 2.2.4 - "@volar/typescript": 2.2.4 - fast-glob: 3.3.2 - volar-service-css: 0.0.45(@volar/language-service@2.2.4) - volar-service-emmet: 0.0.45(@volar/language-service@2.2.4) - volar-service-html: 0.0.45(@volar/language-service@2.2.4) - volar-service-prettier: 0.0.45(@volar/language-service@2.2.4) - volar-service-typescript: 0.0.45(@volar/language-service@2.2.4) - volar-service-typescript-twoslash-queries: 0.0.45(@volar/language-service@2.2.4) - vscode-html-languageservice: 5.2.0 - vscode-uri: 3.0.8 - transitivePeerDependencies: - - typescript - - "@astrojs/markdown-remark@5.1.0": - dependencies: - "@astrojs/prism": 3.1.0 + "@astrojs/internal-helpers": 0.7.5 + "@astrojs/prism": 3.3.0 github-slugger: 2.0.0 - hast-util-from-html: 2.0.1 + hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.1 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 - rehype-stringify: 10.0.0 - remark-gfm: 4.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 remark-parse: 11.0.0 - remark-rehype: 11.1.0 - remark-smartypants: 2.0.0 - shiki: 1.5.2 - unified: 11.0.4 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.2 + shiki: 3.22.0 + smol-toml: 1.6.0 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + "@astrojs/markdown-remark@6.3.6": + dependencies: + "@astrojs/internal-helpers": 0.7.2 + "@astrojs/prism": 3.3.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.1.0 + js-yaml: 4.1.0 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.2 + shiki: 3.11.0 + smol-toml: 1.4.2 + unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - vfile: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: - supports-color - "@astrojs/mdx@2.3.1(astro@4.8.6(typescript@5.4.5))": + "@astrojs/mdx@4.3.4(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": dependencies: - "@astrojs/markdown-remark": 5.1.0 - "@mdx-js/mdx": 3.0.0 - acorn: 8.11.2 - astro: 4.8.6(typescript@5.4.5) - es-module-lexer: 1.4.1 + "@astrojs/markdown-remark": 6.3.6 + "@mdx-js/mdx": 3.1.0(acorn@8.15.0) + acorn: 8.15.0 + astro: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - hast-util-to-html: 9.0.0 + hast-util-to-html: 9.0.5 kleur: 4.1.5 rehype-raw: 7.0.0 - remark-gfm: 4.0.0 - remark-smartypants: 2.0.0 - source-map: 0.7.4 + remark-gfm: 4.0.1 + remark-smartypants: 3.0.2 + source-map: 0.7.6 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: - supports-color - "@astrojs/prism@3.1.0": + "@astrojs/prism@3.3.0": dependencies: - prismjs: 1.29.0 + prismjs: 1.30.0 - "@astrojs/sitemap@3.0.5": + "@astrojs/sitemap@3.5.1": dependencies: - sitemap: 7.1.1 - zod: 3.22.4 + sitemap: 8.0.0 + stream-replace-string: 2.0.0 + zod: 3.25.76 - "@astrojs/starlight-tailwind@2.0.2(@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5)))(@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3))(tailwindcss@3.4.3)": + "@astrojs/starlight@0.37.6(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2))": dependencies: - "@astrojs/starlight": 0.22.4(astro@4.8.6(typescript@5.4.5)) - "@astrojs/tailwind": 5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3) - tailwindcss: 3.4.3 - - "@astrojs/starlight@0.22.4(astro@4.8.6(typescript@5.4.5))": - dependencies: - "@astrojs/mdx": 2.3.1(astro@4.8.6(typescript@5.4.5)) - "@astrojs/sitemap": 3.0.5 - "@pagefind/default-ui": 1.0.4 - "@types/hast": 3.0.3 - "@types/mdast": 4.0.3 - astro: 4.8.6(typescript@5.4.5) - astro-expressive-code: 0.35.3(astro@4.8.6(typescript@5.4.5)) + "@astrojs/markdown-remark": 6.3.6 + "@astrojs/mdx": 4.3.4(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) + "@astrojs/sitemap": 3.5.1 + "@pagefind/default-ui": 1.3.0 + "@types/hast": 3.0.4 + "@types/js-yaml": 4.0.9 + "@types/mdast": 4.0.4 + astro: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + astro-expressive-code: 0.41.3(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)) bcp-47: 2.1.0 - hast-util-from-html: 2.0.1 - hast-util-select: 6.0.2 - hast-util-to-string: 3.0.0 - hastscript: 8.0.0 - mdast-util-directive: 3.0.0 - mdast-util-to-markdown: 2.1.0 - pagefind: 1.0.4 - rehype: 13.0.1 - rehype-format: 5.0.0 - remark-directive: 3.0.0 - unified: 11.0.4 + hast-util-from-html: 2.0.3 + hast-util-select: 6.0.4 + hast-util-to-string: 3.0.1 + hastscript: 9.0.1 + i18next: 23.16.8 + js-yaml: 4.1.0 + klona: 2.0.6 + magic-string: 0.30.18 + mdast-util-directive: 3.1.0 + mdast-util-to-markdown: 2.1.2 + mdast-util-to-string: 4.0.0 + pagefind: 1.3.0 + rehype: 13.0.2 + rehype-format: 5.0.1 + remark-directive: 3.0.1 + ultrahtml: 1.6.0 + unified: 11.0.5 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: - supports-color - "@astrojs/tailwind@5.1.0(astro@4.8.6(typescript@5.4.5))(tailwindcss@3.4.3)": + "@astrojs/telemetry@3.3.0": dependencies: - astro: 4.8.6(typescript@5.4.5) - autoprefixer: 10.4.19(postcss@8.4.31) - postcss: 8.4.31 - postcss-load-config: 4.0.2(postcss@8.4.31) - tailwindcss: 3.4.3 - transitivePeerDependencies: - - ts-node - - "@astrojs/telemetry@3.1.0": - dependencies: - ci-info: 4.0.0 - debug: 4.3.4 + ci-info: 4.4.0 + debug: 4.4.3 dlv: 1.1.3 - dset: 3.1.3 + dset: 3.1.4 is-docker: 3.0.0 is-wsl: 3.1.0 which-pm-runs: 1.1.0 transitivePeerDependencies: - supports-color - "@babel/code-frame@7.24.2": + "@babel/helper-string-parser@7.27.1": {} + + "@babel/helper-validator-identifier@7.28.5": {} + + "@babel/parser@7.29.0": dependencies: - "@babel/highlight": 7.24.5 - picocolors: 1.0.0 + "@babel/types": 7.29.0 - "@babel/compat-data@7.24.4": {} + "@babel/runtime@7.28.3": {} - "@babel/core@7.24.5": + "@babel/types@7.29.0": dependencies: - "@ampproject/remapping": 2.2.1 - "@babel/code-frame": 7.24.2 - "@babel/generator": 7.24.5 - "@babel/helper-compilation-targets": 7.23.6 - "@babel/helper-module-transforms": 7.24.5(@babel/core@7.24.5) - "@babel/helpers": 7.24.5 - "@babel/parser": 7.24.5 - "@babel/template": 7.24.0 - "@babel/traverse": 7.24.5 - "@babel/types": 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + "@babel/helper-string-parser": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 - "@babel/generator@7.24.5": + "@capsizecss/unpack@4.0.0": dependencies: - "@babel/types": 7.24.5 - "@jridgewell/gen-mapping": 0.3.5 - "@jridgewell/trace-mapping": 0.3.25 - jsesc: 2.5.2 - - "@babel/helper-annotate-as-pure@7.22.5": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-compilation-targets@7.23.6": - dependencies: - "@babel/compat-data": 7.24.4 - "@babel/helper-validator-option": 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - "@babel/helper-environment-visitor@7.22.20": {} - - "@babel/helper-function-name@7.23.0": - dependencies: - "@babel/template": 7.22.15 - "@babel/types": 7.24.5 - - "@babel/helper-hoist-variables@7.22.5": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-module-imports@7.22.15": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-module-imports@7.24.3": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)": - dependencies: - "@babel/core": 7.24.5 - "@babel/helper-environment-visitor": 7.22.20 - "@babel/helper-module-imports": 7.24.3 - "@babel/helper-simple-access": 7.24.5 - "@babel/helper-split-export-declaration": 7.24.5 - "@babel/helper-validator-identifier": 7.24.5 - - "@babel/helper-plugin-utils@7.22.5": {} - - "@babel/helper-simple-access@7.24.5": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-split-export-declaration@7.24.5": - dependencies: - "@babel/types": 7.24.5 - - "@babel/helper-string-parser@7.24.1": {} - - "@babel/helper-validator-identifier@7.24.5": {} - - "@babel/helper-validator-option@7.23.5": {} - - "@babel/helpers@7.24.5": - dependencies: - "@babel/template": 7.24.0 - "@babel/traverse": 7.24.5 - "@babel/types": 7.24.5 - transitivePeerDependencies: - - supports-color - - "@babel/highlight@7.24.5": - dependencies: - "@babel/helper-validator-identifier": 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - - "@babel/parser@7.24.5": - dependencies: - "@babel/types": 7.24.5 - - "@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.5)": - dependencies: - "@babel/core": 7.24.5 - "@babel/helper-plugin-utils": 7.22.5 - - "@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5)": - dependencies: - "@babel/core": 7.24.5 - "@babel/helper-annotate-as-pure": 7.22.5 - "@babel/helper-module-imports": 7.22.15 - "@babel/helper-plugin-utils": 7.22.5 - "@babel/plugin-syntax-jsx": 7.23.3(@babel/core@7.24.5) - "@babel/types": 7.24.5 - - "@babel/template@7.22.15": - dependencies: - "@babel/code-frame": 7.24.2 - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 - - "@babel/template@7.24.0": - dependencies: - "@babel/code-frame": 7.24.2 - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 - - "@babel/traverse@7.24.5": - dependencies: - "@babel/code-frame": 7.24.2 - "@babel/generator": 7.24.5 - "@babel/helper-environment-visitor": 7.22.20 - "@babel/helper-function-name": 7.23.0 - "@babel/helper-hoist-variables": 7.22.5 - "@babel/helper-split-export-declaration": 7.24.5 - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - "@babel/types@7.24.5": - dependencies: - "@babel/helper-string-parser": 7.24.1 - "@babel/helper-validator-identifier": 7.24.5 - to-fast-properties: 2.0.0 - - "@csstools/cascade-layer-name-parser@1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)": - dependencies: - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - - "@csstools/color-helpers@4.2.0": {} - - "@csstools/css-calc@1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)": - dependencies: - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - - "@csstools/css-color-parser@2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)": - dependencies: - "@csstools/color-helpers": 4.2.0 - "@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - - "@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1)": - dependencies: - "@csstools/css-tokenizer": 2.3.1 - - "@csstools/css-tokenizer@2.3.1": {} - - "@csstools/media-query-list-parser@2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1)": - dependencies: - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - - "@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.33)": - dependencies: - "@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16) - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - "@csstools/postcss-color-function@3.0.16(postcss@8.4.33)": - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-color-mix-function@2.0.16(postcss@8.4.33)": - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-exponential-functions@1.0.7(postcss@8.4.33)": - dependencies: - "@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - postcss: 8.4.33 - - "@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.33)": - dependencies: - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - "@csstools/postcss-gamut-mapping@1.0.9(postcss@8.4.33)": - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - postcss: 8.4.33 - - "@csstools/postcss-gradients-interpolation-method@4.0.17(postcss@8.4.33)": - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-hwb-function@3.0.15(postcss@8.4.33)": - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-ic-unit@3.0.6(postcss@8.4.33)": - dependencies: - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - "@csstools/postcss-initial@1.0.1(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - - "@csstools/postcss-is-pseudo-class@4.0.8(postcss@8.4.33)": - dependencies: - "@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16) - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - "@csstools/postcss-light-dark-function@1.0.5(postcss@8.4.33)": - dependencies: - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-logical-float-and-clear@2.0.1(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - - "@csstools/postcss-logical-overflow@1.0.1(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - - "@csstools/postcss-logical-overscroll-behavior@1.0.1(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - - "@csstools/postcss-logical-resize@2.0.1(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - "@csstools/postcss-logical-viewport-units@2.0.9(postcss@8.4.33)": - dependencies: - "@csstools/css-tokenizer": 2.3.1 - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-media-minmax@1.1.6(postcss@8.4.33)": - dependencies: - "@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/media-query-list-parser": 2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - postcss: 8.4.33 - - "@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.9(postcss@8.4.33)": - dependencies: - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/media-query-list-parser": 2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - postcss: 8.4.33 - - "@csstools/postcss-nested-calc@3.0.2(postcss@8.4.33)": - dependencies: - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - "@csstools/postcss-normalize-display-values@3.0.2(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - "@csstools/postcss-oklab-function@3.0.16(postcss@8.4.33)": - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-progressive-custom-properties@3.2.0(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - "@csstools/postcss-relative-color-syntax@2.0.16(postcss@8.4.33)": - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - "@csstools/postcss-scope-pseudo-class@3.0.1(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - "@csstools/postcss-stepped-value-functions@3.0.8(postcss@8.4.33)": - dependencies: - "@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - postcss: 8.4.33 - - "@csstools/postcss-text-decoration-shorthand@3.0.6(postcss@8.4.33)": - dependencies: - "@csstools/color-helpers": 4.2.0 - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - "@csstools/postcss-trigonometric-functions@3.0.8(postcss@8.4.33)": - dependencies: - "@csstools/css-calc": 1.2.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - postcss: 8.4.33 - - "@csstools/postcss-unset-value@3.0.1(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 - - "@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16)": - dependencies: - postcss-selector-parser: 6.0.16 - - "@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.0.16)": - dependencies: - postcss-selector-parser: 6.0.16 - - "@csstools/utilities@1.0.0(postcss@8.4.33)": - dependencies: - postcss: 8.4.33 + fontkitten: 1.0.2 "@ctrl/tinycolor@4.1.0": {} - "@emmetio/abbreviation@2.3.3": + "@emnapi/runtime@1.8.1": dependencies: - "@emmetio/scanner": 1.0.4 - - "@emmetio/css-abbreviation@2.1.8": - dependencies: - "@emmetio/scanner": 1.0.4 - - "@emmetio/css-parser@0.4.0": - dependencies: - "@emmetio/stream-reader": 2.2.0 - "@emmetio/stream-reader-utils": 0.1.0 - - "@emmetio/html-matcher@1.3.0": - dependencies: - "@emmetio/scanner": 1.0.4 - - "@emmetio/scanner@1.0.4": {} - - "@emmetio/stream-reader-utils@0.1.0": {} - - "@emmetio/stream-reader@2.2.0": {} - - "@emnapi/runtime@1.1.1": - dependencies: - tslib: 2.6.2 + tslib: 2.8.1 optional: true - "@esbuild/aix-ppc64@0.20.2": + "@esbuild/aix-ppc64@0.25.9": optional: true - "@esbuild/aix-ppc64@0.21.3": + "@esbuild/android-arm64@0.25.9": optional: true - "@esbuild/android-arm64@0.20.2": + "@esbuild/android-arm@0.25.9": optional: true - "@esbuild/android-arm64@0.21.3": + "@esbuild/android-x64@0.25.9": optional: true - "@esbuild/android-arm@0.20.2": + "@esbuild/darwin-arm64@0.25.9": optional: true - "@esbuild/android-arm@0.21.3": + "@esbuild/darwin-x64@0.25.9": optional: true - "@esbuild/android-x64@0.20.2": + "@esbuild/freebsd-arm64@0.25.9": optional: true - "@esbuild/android-x64@0.21.3": + "@esbuild/freebsd-x64@0.25.9": optional: true - "@esbuild/darwin-arm64@0.20.2": + "@esbuild/linux-arm64@0.25.9": optional: true - "@esbuild/darwin-arm64@0.21.3": + "@esbuild/linux-arm@0.25.9": optional: true - "@esbuild/darwin-x64@0.20.2": + "@esbuild/linux-ia32@0.25.9": optional: true - "@esbuild/darwin-x64@0.21.3": + "@esbuild/linux-loong64@0.25.9": optional: true - "@esbuild/freebsd-arm64@0.20.2": + "@esbuild/linux-mips64el@0.25.9": optional: true - "@esbuild/freebsd-arm64@0.21.3": + "@esbuild/linux-ppc64@0.25.9": optional: true - "@esbuild/freebsd-x64@0.20.2": + "@esbuild/linux-riscv64@0.25.9": optional: true - "@esbuild/freebsd-x64@0.21.3": + "@esbuild/linux-s390x@0.25.9": optional: true - "@esbuild/linux-arm64@0.20.2": + "@esbuild/linux-x64@0.25.9": optional: true - "@esbuild/linux-arm64@0.21.3": + "@esbuild/netbsd-arm64@0.25.9": optional: true - "@esbuild/linux-arm@0.20.2": + "@esbuild/netbsd-x64@0.25.9": optional: true - "@esbuild/linux-arm@0.21.3": + "@esbuild/openbsd-arm64@0.25.9": optional: true - "@esbuild/linux-ia32@0.20.2": + "@esbuild/openbsd-x64@0.25.9": optional: true - "@esbuild/linux-ia32@0.21.3": + "@esbuild/openharmony-arm64@0.25.9": optional: true - "@esbuild/linux-loong64@0.20.2": + "@esbuild/sunos-x64@0.25.9": optional: true - "@esbuild/linux-loong64@0.21.3": + "@esbuild/win32-arm64@0.25.9": optional: true - "@esbuild/linux-mips64el@0.20.2": + "@esbuild/win32-ia32@0.25.9": optional: true - "@esbuild/linux-mips64el@0.21.3": + "@esbuild/win32-x64@0.25.9": optional: true - "@esbuild/linux-ppc64@0.20.2": - optional: true - - "@esbuild/linux-ppc64@0.21.3": - optional: true - - "@esbuild/linux-riscv64@0.20.2": - optional: true - - "@esbuild/linux-riscv64@0.21.3": - optional: true - - "@esbuild/linux-s390x@0.20.2": - optional: true - - "@esbuild/linux-s390x@0.21.3": - optional: true - - "@esbuild/linux-x64@0.20.2": - optional: true - - "@esbuild/linux-x64@0.21.3": - optional: true - - "@esbuild/netbsd-x64@0.20.2": - optional: true - - "@esbuild/netbsd-x64@0.21.3": - optional: true - - "@esbuild/openbsd-x64@0.20.2": - optional: true - - "@esbuild/openbsd-x64@0.21.3": - optional: true - - "@esbuild/sunos-x64@0.20.2": - optional: true - - "@esbuild/sunos-x64@0.21.3": - optional: true - - "@esbuild/win32-arm64@0.20.2": - optional: true - - "@esbuild/win32-arm64@0.21.3": - optional: true - - "@esbuild/win32-ia32@0.20.2": - optional: true - - "@esbuild/win32-ia32@0.21.3": - optional: true - - "@esbuild/win32-x64@0.20.2": - optional: true - - "@esbuild/win32-x64@0.21.3": - optional: true - - "@expressive-code/core@0.35.3": + "@expressive-code/core@0.41.3": dependencies: "@ctrl/tinycolor": 4.1.0 - hast-util-select: 6.0.2 - hast-util-to-html: 9.0.1 + hast-util-select: 6.0.4 + hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 - hastscript: 9.0.0 - postcss: 8.4.38 - postcss-nested: 6.0.1(postcss@8.4.38) + hastscript: 9.0.1 + postcss: 8.5.6 + postcss-nested: 6.2.0(postcss@8.5.6) unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - "@expressive-code/plugin-frames@0.35.3": + "@expressive-code/plugin-frames@0.41.3": dependencies: - "@expressive-code/core": 0.35.3 + "@expressive-code/core": 0.41.3 - "@expressive-code/plugin-shiki@0.35.3": + "@expressive-code/plugin-shiki@0.41.3": dependencies: - "@expressive-code/core": 0.35.3 - shiki: 1.5.2 + "@expressive-code/core": 0.41.3 + shiki: 3.11.0 - "@expressive-code/plugin-text-markers@0.35.3": + "@expressive-code/plugin-text-markers@0.41.3": dependencies: - "@expressive-code/core": 0.35.3 + "@expressive-code/core": 0.41.3 - "@fontsource/inter@5.0.18": {} + "@fontsource/inter@5.2.8": {} - "@fontsource/rubik@5.0.20": {} + "@fontsource/rubik@5.2.8": {} - "@img/sharp-darwin-arm64@0.33.4": + "@img/colour@1.0.0": {} + + "@img/sharp-darwin-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.0.2 + "@img/sharp-libvips-darwin-arm64": 1.2.4 optional: true - "@img/sharp-darwin-x64@0.33.4": + "@img/sharp-darwin-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.0.2 + "@img/sharp-libvips-darwin-x64": 1.2.4 optional: true - "@img/sharp-libvips-darwin-arm64@1.0.2": + "@img/sharp-libvips-darwin-arm64@1.2.4": optional: true - "@img/sharp-libvips-darwin-x64@1.0.2": + "@img/sharp-libvips-darwin-x64@1.2.4": optional: true - "@img/sharp-libvips-linux-arm64@1.0.2": + "@img/sharp-libvips-linux-arm64@1.2.4": optional: true - "@img/sharp-libvips-linux-arm@1.0.2": + "@img/sharp-libvips-linux-arm@1.2.4": optional: true - "@img/sharp-libvips-linux-s390x@1.0.2": + "@img/sharp-libvips-linux-ppc64@1.2.4": optional: true - "@img/sharp-libvips-linux-x64@1.0.2": + "@img/sharp-libvips-linux-riscv64@1.2.4": optional: true - "@img/sharp-libvips-linuxmusl-arm64@1.0.2": + "@img/sharp-libvips-linux-s390x@1.2.4": optional: true - "@img/sharp-libvips-linuxmusl-x64@1.0.2": + "@img/sharp-libvips-linux-x64@1.2.4": optional: true - "@img/sharp-linux-arm64@0.33.4": + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": + optional: true + + "@img/sharp-libvips-linuxmusl-x64@1.2.4": + optional: true + + "@img/sharp-linux-arm64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.0.2 + "@img/sharp-libvips-linux-arm64": 1.2.4 optional: true - "@img/sharp-linux-arm@0.33.4": + "@img/sharp-linux-arm@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.0.2 + "@img/sharp-libvips-linux-arm": 1.2.4 optional: true - "@img/sharp-linux-s390x@0.33.4": + "@img/sharp-linux-ppc64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.0.2 + "@img/sharp-libvips-linux-ppc64": 1.2.4 optional: true - "@img/sharp-linux-x64@0.33.4": + "@img/sharp-linux-riscv64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.0.2 + "@img/sharp-libvips-linux-riscv64": 1.2.4 optional: true - "@img/sharp-linuxmusl-arm64@0.33.4": + "@img/sharp-linux-s390x@0.34.5": optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.0.2 + "@img/sharp-libvips-linux-s390x": 1.2.4 optional: true - "@img/sharp-linuxmusl-x64@0.33.4": + "@img/sharp-linux-x64@0.34.5": optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.0.2 + "@img/sharp-libvips-linux-x64": 1.2.4 optional: true - "@img/sharp-wasm32@0.33.4": - dependencies: - "@emnapi/runtime": 1.1.1 + "@img/sharp-linuxmusl-arm64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 optional: true - "@img/sharp-win32-ia32@0.33.4": + "@img/sharp-linuxmusl-x64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 optional: true - "@img/sharp-win32-x64@0.33.4": + "@img/sharp-wasm32@0.34.5": + dependencies: + "@emnapi/runtime": 1.8.1 optional: true - "@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462": + "@img/sharp-win32-arm64@0.34.5": + optional: true + + "@img/sharp-win32-ia32@0.34.5": + optional: true + + "@img/sharp-win32-x64@0.34.5": + optional: true + + "@jridgewell/sourcemap-codec@1.5.5": {} + + "@mdx-js/mdx@3.1.0(acorn@8.15.0)": dependencies: - "@vscode/l10n": 0.0.18 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - "@jridgewell/gen-mapping@0.3.3": - dependencies: - "@jridgewell/set-array": 1.1.2 - "@jridgewell/sourcemap-codec": 1.4.15 - "@jridgewell/trace-mapping": 0.3.20 - - "@jridgewell/gen-mapping@0.3.5": - dependencies: - "@jridgewell/set-array": 1.2.1 - "@jridgewell/sourcemap-codec": 1.4.15 - "@jridgewell/trace-mapping": 0.3.25 - - "@jridgewell/resolve-uri@3.1.1": {} - - "@jridgewell/set-array@1.1.2": {} - - "@jridgewell/set-array@1.2.1": {} - - "@jridgewell/sourcemap-codec@1.4.15": {} - - "@jridgewell/trace-mapping@0.3.20": - dependencies: - "@jridgewell/resolve-uri": 3.1.1 - "@jridgewell/sourcemap-codec": 1.4.15 - - "@jridgewell/trace-mapping@0.3.25": - dependencies: - "@jridgewell/resolve-uri": 3.1.1 - "@jridgewell/sourcemap-codec": 1.4.15 - - "@mdx-js/mdx@3.0.0": - dependencies: - "@types/estree": 1.0.5 - "@types/estree-jsx": 1.0.3 - "@types/hast": 3.0.3 - "@types/mdx": 2.0.10 + "@types/estree": 1.0.8 + "@types/estree-jsx": 1.0.5 + "@types/hast": 3.0.4 + "@types/mdx": 2.0.13 collapse-white-space: 2.1.0 devlop: 1.1.0 - estree-util-build-jsx: 3.0.1 estree-util-is-identifier-name: 3.0.0 - estree-util-to-js: 2.0.0 + estree-util-scope: 1.0.0 estree-walker: 3.0.3 - hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 - periscopic: 3.1.0 - remark-mdx: 3.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.15.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.0 remark-parse: 11.0.0 - remark-rehype: 11.1.0 - source-map: 0.7.4 - unified: 11.0.4 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 transitivePeerDependencies: + - acorn - supports-color - "@nodelib/fs.scandir@2.1.5": + "@oslojs/encoding@1.1.0": {} + + "@pagefind/darwin-arm64@1.3.0": + optional: true + + "@pagefind/darwin-x64@1.3.0": + optional: true + + "@pagefind/default-ui@1.3.0": {} + + "@pagefind/linux-arm64@1.3.0": + optional: true + + "@pagefind/linux-x64@1.3.0": + optional: true + + "@pagefind/windows-x64@1.3.0": + optional: true + + "@rollup/pluginutils@5.3.0(rollup@4.48.1)": dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: 1.2.0 + "@types/estree": 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.48.1 - "@nodelib/fs.stat@2.0.5": {} + "@rollup/rollup-android-arm-eabi@4.48.1": + optional: true - "@nodelib/fs.walk@1.2.8": + "@rollup/rollup-android-arm64@4.48.1": + optional: true + + "@rollup/rollup-darwin-arm64@4.48.1": + optional: true + + "@rollup/rollup-darwin-x64@4.48.1": + optional: true + + "@rollup/rollup-freebsd-arm64@4.48.1": + optional: true + + "@rollup/rollup-freebsd-x64@4.48.1": + optional: true + + "@rollup/rollup-linux-arm-gnueabihf@4.48.1": + optional: true + + "@rollup/rollup-linux-arm-musleabihf@4.48.1": + optional: true + + "@rollup/rollup-linux-arm64-gnu@4.48.1": + optional: true + + "@rollup/rollup-linux-arm64-musl@4.48.1": + optional: true + + "@rollup/rollup-linux-loongarch64-gnu@4.48.1": + optional: true + + "@rollup/rollup-linux-ppc64-gnu@4.48.1": + optional: true + + "@rollup/rollup-linux-riscv64-gnu@4.48.1": + optional: true + + "@rollup/rollup-linux-riscv64-musl@4.48.1": + optional: true + + "@rollup/rollup-linux-s390x-gnu@4.48.1": + optional: true + + "@rollup/rollup-linux-x64-gnu@4.48.1": + optional: true + + "@rollup/rollup-linux-x64-musl@4.48.1": + optional: true + + "@rollup/rollup-win32-arm64-msvc@4.48.1": + optional: true + + "@rollup/rollup-win32-ia32-msvc@4.48.1": + optional: true + + "@rollup/rollup-win32-x64-msvc@4.48.1": + optional: true + + "@shikijs/core@3.11.0": dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: 1.15.0 + "@shikijs/types": 3.11.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 + hast-util-to-html: 9.0.5 - "@pagefind/darwin-arm64@1.0.4": - optional: true - - "@pagefind/darwin-x64@1.0.4": - optional: true - - "@pagefind/default-ui@1.0.4": {} - - "@pagefind/linux-arm64@1.0.4": - optional: true - - "@pagefind/linux-x64@1.0.4": - optional: true - - "@pagefind/windows-x64@1.0.4": - optional: true - - "@rollup/rollup-android-arm-eabi@4.17.2": - optional: true - - "@rollup/rollup-android-arm64@4.17.2": - optional: true - - "@rollup/rollup-darwin-arm64@4.17.2": - optional: true - - "@rollup/rollup-darwin-x64@4.17.2": - optional: true - - "@rollup/rollup-linux-arm-gnueabihf@4.17.2": - optional: true - - "@rollup/rollup-linux-arm-musleabihf@4.17.2": - optional: true - - "@rollup/rollup-linux-arm64-gnu@4.17.2": - optional: true - - "@rollup/rollup-linux-arm64-musl@4.17.2": - optional: true - - "@rollup/rollup-linux-powerpc64le-gnu@4.17.2": - optional: true - - "@rollup/rollup-linux-riscv64-gnu@4.17.2": - optional: true - - "@rollup/rollup-linux-s390x-gnu@4.17.2": - optional: true - - "@rollup/rollup-linux-x64-gnu@4.17.2": - optional: true - - "@rollup/rollup-linux-x64-musl@4.17.2": - optional: true - - "@rollup/rollup-win32-arm64-msvc@4.17.2": - optional: true - - "@rollup/rollup-win32-ia32-msvc@4.17.2": - optional: true - - "@rollup/rollup-win32-x64-msvc@4.17.2": - optional: true - - "@shikijs/core@1.5.2": {} - - "@trysound/sax@0.2.0": {} - - "@types/acorn@4.0.6": + "@shikijs/core@3.22.0": dependencies: - "@types/estree": 1.0.5 + "@shikijs/types": 3.22.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 + hast-util-to-html: 9.0.5 - "@types/babel__core@7.20.5": + "@shikijs/engine-javascript@3.11.0": dependencies: - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 - "@types/babel__generator": 7.6.7 - "@types/babel__template": 7.4.4 - "@types/babel__traverse": 7.20.4 + "@shikijs/types": 3.11.0 + "@shikijs/vscode-textmate": 10.0.2 + oniguruma-to-es: 4.3.3 - "@types/babel__generator@7.6.7": + "@shikijs/engine-javascript@3.22.0": dependencies: - "@babel/types": 7.24.5 + "@shikijs/types": 3.22.0 + "@shikijs/vscode-textmate": 10.0.2 + oniguruma-to-es: 4.3.4 - "@types/babel__template@7.4.4": + "@shikijs/engine-oniguruma@3.11.0": dependencies: - "@babel/parser": 7.24.5 - "@babel/types": 7.24.5 + "@shikijs/types": 3.11.0 + "@shikijs/vscode-textmate": 10.0.2 - "@types/babel__traverse@7.20.4": + "@shikijs/engine-oniguruma@3.22.0": dependencies: - "@babel/types": 7.24.5 + "@shikijs/types": 3.22.0 + "@shikijs/vscode-textmate": 10.0.2 - "@types/cookie@0.6.0": {} + "@shikijs/langs@3.11.0": + dependencies: + "@shikijs/types": 3.11.0 + + "@shikijs/langs@3.22.0": + dependencies: + "@shikijs/types": 3.22.0 + + "@shikijs/themes@3.11.0": + dependencies: + "@shikijs/types": 3.11.0 + + "@shikijs/themes@3.22.0": + dependencies: + "@shikijs/types": 3.22.0 + + "@shikijs/types@3.11.0": + dependencies: + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 + + "@shikijs/types@3.22.0": + dependencies: + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 + + "@shikijs/vscode-textmate@10.0.2": {} "@types/debug@4.1.12": dependencies: - "@types/ms": 0.7.34 + "@types/ms": 2.1.0 - "@types/estree-jsx@1.0.3": + "@types/estree-jsx@1.0.5": dependencies: - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 - "@types/estree@1.0.5": {} + "@types/estree@1.0.8": {} - "@types/hast@3.0.3": + "@types/hast@3.0.4": dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 - "@types/mdast@4.0.3": + "@types/js-yaml@4.0.9": {} + + "@types/mdast@4.0.4": dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 - "@types/mdx@2.0.10": {} + "@types/mdx@2.0.13": {} - "@types/ms@0.7.34": {} + "@types/ms@2.1.0": {} - "@types/nlcst@1.0.4": + "@types/nlcst@2.0.3": dependencies: - "@types/unist": 2.0.10 + "@types/unist": 3.0.3 "@types/node@17.0.45": {} + "@types/node@24.3.0": + dependencies: + undici-types: 7.10.0 + "@types/sax@1.2.7": dependencies: - "@types/node": 17.0.45 + "@types/node": 24.3.0 - "@types/unist@2.0.10": {} + "@types/unist@2.0.11": {} - "@types/unist@3.0.2": {} + "@types/unist@3.0.3": {} - "@ungap/structured-clone@1.2.0": {} + "@ungap/structured-clone@1.3.0": {} - "@volar/kit@2.2.4(typescript@5.4.5)": + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - "@volar/language-service": 2.2.4 - "@volar/typescript": 2.2.4 - typesafe-path: 0.2.2 - typescript: 5.4.5 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 + acorn: 8.15.0 - "@volar/language-core@2.2.4": - dependencies: - "@volar/source-map": 2.2.4 - - "@volar/language-server@2.2.4": - dependencies: - "@volar/language-core": 2.2.4 - "@volar/language-service": 2.2.4 - "@volar/snapshot-document": 2.2.4 - "@volar/typescript": 2.2.4 - "@vscode/l10n": 0.0.16 - path-browserify: 1.0.1 - request-light: 0.7.0 - vscode-languageserver: 9.0.1 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - - "@volar/language-service@2.2.4": - dependencies: - "@volar/language-core": 2.2.4 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - - "@volar/snapshot-document@2.2.4": - dependencies: - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.11 - - "@volar/source-map@2.2.4": - dependencies: - muggle-string: 0.4.1 - - "@volar/typescript@2.2.4": - dependencies: - "@volar/language-core": 2.2.4 - path-browserify: 1.0.1 - - "@vscode/emmet-helper@2.9.2": - dependencies: - emmet: 2.4.6 - jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 2.1.2 - - "@vscode/l10n@0.0.16": {} - - "@vscode/l10n@0.0.18": {} - - acorn-jsx@5.3.2(acorn@8.11.2): - dependencies: - acorn: 8.11.2 - - acorn@8.11.2: {} - - acorn@8.11.3: {} + acorn@8.15.0: {} ansi-align@3.0.1: dependencies: @@ -6759,20 +3869,10 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 + ansi-regex@6.2.0: {} ansi-styles@6.2.1: {} - any-promise@1.3.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -6780,131 +3880,125 @@ snapshots: arg@5.0.2: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 + aria-query@5.3.2: {} array-iterate@2.0.1: {} - astring@1.8.6: {} + astring@1.9.0: {} - astro-expressive-code@0.35.3(astro@4.8.6(typescript@5.4.5)): + astro-expressive-code@0.41.3(astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2)): dependencies: - astro: 4.8.6(typescript@5.4.5) - rehype-expressive-code: 0.35.3 + astro: 5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2) + rehype-expressive-code: 0.41.3 - astro@4.8.6(typescript@5.4.5): + astro@5.17.1(@types/node@24.3.0)(rollup@4.48.1)(typescript@5.9.2): dependencies: - "@astrojs/compiler": 2.8.0 - "@astrojs/internal-helpers": 0.4.0 - "@astrojs/markdown-remark": 5.1.0 - "@astrojs/telemetry": 3.1.0 - "@babel/core": 7.24.5 - "@babel/generator": 7.24.5 - "@babel/parser": 7.24.5 - "@babel/plugin-transform-react-jsx": 7.23.4(@babel/core@7.24.5) - "@babel/traverse": 7.24.5 - "@babel/types": 7.24.5 - "@types/babel__core": 7.20.5 - "@types/cookie": 0.6.0 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - boxen: 7.1.1 - chokidar: 3.6.0 - ci-info: 4.0.0 + "@astrojs/compiler": 2.13.1 + "@astrojs/internal-helpers": 0.7.5 + "@astrojs/markdown-remark": 6.3.10 + "@astrojs/telemetry": 3.3.0 + "@capsizecss/unpack": 4.0.0 + "@oslojs/encoding": 1.1.0 + "@rollup/pluginutils": 5.3.0(rollup@4.48.1) + acorn: 8.15.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + boxen: 8.0.1 + ci-info: 4.4.0 clsx: 2.1.1 common-ancestor-path: 1.0.1 - cookie: 0.6.0 + cookie: 1.1.1 cssesc: 3.0.0 - debug: 4.3.4 + debug: 4.4.3 deterministic-object-hash: 2.0.2 - devalue: 5.0.0 - diff: 5.2.0 + devalue: 5.6.2 + diff: 8.0.3 dlv: 1.1.3 - dset: 3.1.3 - es-module-lexer: 1.5.2 - esbuild: 0.21.3 + dset: 3.1.4 + es-module-lexer: 1.7.0 + esbuild: 0.25.9 estree-walker: 3.0.3 - execa: 8.0.1 - fast-glob: 3.3.2 flattie: 1.1.1 + fontace: 0.4.1 github-slugger: 2.0.0 - gray-matter: 4.0.3 html-escaper: 3.0.3 - http-cache-semantics: 4.1.1 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.10 - mrmime: 2.0.0 - ora: 8.0.1 - p-limit: 5.0.0 - p-queue: 8.0.1 - path-to-regexp: 6.2.2 - preferred-pm: 3.1.3 + http-cache-semantics: 4.2.0 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.1 + magic-string: 0.30.21 + magicast: 0.5.2 + mrmime: 2.0.1 + neotraverse: 0.6.18 + p-limit: 6.2.0 + p-queue: 8.1.1 + package-manager-detector: 1.6.0 + piccolore: 0.1.3 + picomatch: 4.0.3 prompts: 2.4.2 - rehype: 13.0.1 - resolve: 1.22.8 - semver: 7.6.2 - shiki: 1.5.2 - string-width: 7.1.0 - strip-ansi: 7.1.0 - tsconfck: 3.0.3(typescript@5.4.5) + rehype: 13.0.2 + semver: 7.7.4 + shiki: 3.22.0 + smol-toml: 1.6.0 + svgo: 4.0.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tsconfck: 3.1.6(typescript@5.9.2) + ultrahtml: 1.6.0 + unifont: 0.7.3 unist-util-visit: 5.0.0 - vfile: 6.0.1 - vite: 5.2.11 - vitefu: 0.2.5(vite@5.2.11) - which-pm: 2.1.1 + unstorage: 1.17.4 + vfile: 6.0.3 + vite: 6.4.1(@types/node@24.3.0) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.3.0)) + xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.0(zod@3.23.8) + yocto-spinner: 0.2.3 + zod: 3.25.76 + zod-to-json-schema: 3.25.1(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76) optionalDependencies: - sharp: 0.33.4 + sharp: 0.34.5 transitivePeerDependencies: + - "@azure/app-configuration" + - "@azure/cosmos" + - "@azure/data-tables" + - "@azure/identity" + - "@azure/keyvault-secrets" + - "@azure/storage-blob" + - "@capacitor/preferences" + - "@deno/kv" + - "@netlify/blobs" + - "@planetscale/database" - "@types/node" + - "@upstash/redis" + - "@vercel/blob" + - "@vercel/functions" + - "@vercel/kv" + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti - less - lightningcss + - rollup - sass + - sass-embedded - stylus - sugarss - supports-color - terser + - tsx - typescript + - uploadthing + - yaml - autoprefixer@10.4.19(postcss@8.4.31): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001620 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.31 - postcss-value-parser: 4.2.0 - - autoprefixer@10.4.19(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001620 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - axobject-query@4.0.0: - dependencies: - dequal: 2.0.3 + axobject-query@4.1.0: {} bail@2.0.2: {} - balanced-match@1.0.2: {} - base-64@1.0.0: {} bcp-47-match@2.0.3: {} @@ -6915,59 +4009,24 @@ snapshots: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 - binary-extensions@2.2.0: {} - boolbase@1.0.0: {} - boxen@7.1.1: + boxen@8.0.1: dependencies: ansi-align: 3.0.1 - camelcase: 7.0.1 - chalk: 5.3.0 + camelcase: 8.0.0 + chalk: 5.6.0 cli-boxes: 3.0.0 - string-width: 5.1.2 - type-fest: 2.19.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 + string-width: 7.2.0 + type-fest: 4.41.0 + widest-line: 5.0.0 + wrap-ansi: 9.0.0 - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001620 - electron-to-chromium: 1.4.773 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - - camelcase-css@2.0.1: {} - - camelcase@7.0.1: {} - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001620 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001620: {} + camelcase@8.0.0: {} ccount@2.0.1: {} - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@5.3.0: {} + chalk@5.6.0: {} character-entities-html4@2.1.0: {} @@ -6977,213 +4036,91 @@ snapshots: character-reference-invalid@2.0.1: {} - chokidar@3.5.3: + chokidar@5.0.0: dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + readdirp: 5.0.0 - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - ci-info@4.0.0: {} + ci-info@4.4.0: {} cli-boxes@3.0.0: {} - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - - cli-spinners@2.9.2: {} - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - clsx@2.1.1: {} collapse-white-space@2.1.0: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - - colord@2.9.3: {} - comma-separated-tokens@2.0.3: {} - commander@4.1.1: {} - - commander@7.2.0: {} + commander@11.1.0: {} common-ancestor-path@1.0.1: {} - concat-map@0.0.1: {} + cookie-es@1.2.2: {} - convert-source-map@2.0.0: {} + cookie@1.1.1: {} - cookie@0.6.0: {} - - cross-spawn@7.0.3: + crossws@0.3.5: dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + uncrypto: 0.1.3 - css-blank-pseudo@6.0.2(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - css-declaration-sorter@7.2.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - css-has-pseudo@6.0.5(postcss@8.4.33): - dependencies: - "@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16) - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - postcss-value-parser: 4.2.0 - - css-prefers-color-scheme@9.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - css-select@5.1.0: + css-select@5.2.2: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 nth-check: 2.1.1 - css-selector-parser@3.0.4: {} + css-selector-parser@3.1.3: {} css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 - css-tree@2.3.1: + css-tree@3.1.0: dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.0 + mdn-data: 2.12.2 + source-map-js: 1.2.1 - css-what@6.1.0: {} - - cssdb@8.0.1: {} + css-what@6.2.2: {} cssesc@3.0.0: {} - cssnano-preset-default@7.0.1(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - css-declaration-sorter: 7.2.0(postcss@8.4.33) - cssnano-utils: 5.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-calc: 10.0.0(postcss@8.4.33) - postcss-colormin: 7.0.0(postcss@8.4.33) - postcss-convert-values: 7.0.0(postcss@8.4.33) - postcss-discard-comments: 7.0.0(postcss@8.4.33) - postcss-discard-duplicates: 7.0.0(postcss@8.4.33) - postcss-discard-empty: 7.0.0(postcss@8.4.33) - postcss-discard-overridden: 7.0.0(postcss@8.4.33) - postcss-merge-longhand: 7.0.0(postcss@8.4.33) - postcss-merge-rules: 7.0.0(postcss@8.4.33) - postcss-minify-font-values: 7.0.0(postcss@8.4.33) - postcss-minify-gradients: 7.0.0(postcss@8.4.33) - postcss-minify-params: 7.0.0(postcss@8.4.33) - postcss-minify-selectors: 7.0.0(postcss@8.4.33) - postcss-normalize-charset: 7.0.0(postcss@8.4.33) - postcss-normalize-display-values: 7.0.0(postcss@8.4.33) - postcss-normalize-positions: 7.0.0(postcss@8.4.33) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.33) - postcss-normalize-string: 7.0.0(postcss@8.4.33) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.33) - postcss-normalize-unicode: 7.0.0(postcss@8.4.33) - postcss-normalize-url: 7.0.0(postcss@8.4.33) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.33) - postcss-ordered-values: 7.0.0(postcss@8.4.33) - postcss-reduce-initial: 7.0.0(postcss@8.4.33) - postcss-reduce-transforms: 7.0.0(postcss@8.4.33) - postcss-svgo: 7.0.0(postcss@8.4.33) - postcss-unique-selectors: 7.0.0(postcss@8.4.33) - - cssnano-utils@5.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - cssnano@7.0.1(postcss@8.4.33): - dependencies: - cssnano-preset-default: 7.0.1(postcss@8.4.33) - lilconfig: 3.1.1 - postcss: 8.4.33 - csso@5.0.5: dependencies: css-tree: 2.2.1 - debug@4.3.4: + debug@4.4.1: dependencies: - ms: 2.1.2 + ms: 2.1.3 - decode-named-character-reference@1.0.2: + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 + defu@6.1.4: {} + dequal@2.0.3: {} - detect-libc@2.0.3: {} + destr@2.0.5: {} + + detect-libc@2.1.2: {} deterministic-object-hash@2.0.2: dependencies: base-64: 1.0.0 - devalue@5.0.0: {} + devalue@5.6.2: {} devlop@1.1.0: dependencies: dequal: 2.0.3 - didyoumean@1.2.2: {} - - diff@5.2.0: {} + diff@8.0.3: {} direction@2.0.1: {} @@ -7201,454 +4138,356 @@ snapshots: dependencies: domelementtype: 2.3.0 - domutils@3.1.0: + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dset@3.1.3: {} + dset@3.1.4: {} - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.4.773: {} - - emmet@2.4.6: - dependencies: - "@emmetio/abbreviation": 2.3.3 - "@emmetio/css-abbreviation": 2.1.8 - - emoji-regex@10.3.0: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - entities@4.5.0: {} - es-module-lexer@1.4.1: {} + entities@6.0.1: {} - es-module-lexer@1.5.2: {} + es-module-lexer@1.7.0: {} - esbuild@0.20.2: + esast-util-from-estree@2.0.0: + dependencies: + "@types/estree-jsx": 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + "@types/estree-jsx": 1.0.5 + acorn: 8.15.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.25.9: optionalDependencies: - "@esbuild/aix-ppc64": 0.20.2 - "@esbuild/android-arm": 0.20.2 - "@esbuild/android-arm64": 0.20.2 - "@esbuild/android-x64": 0.20.2 - "@esbuild/darwin-arm64": 0.20.2 - "@esbuild/darwin-x64": 0.20.2 - "@esbuild/freebsd-arm64": 0.20.2 - "@esbuild/freebsd-x64": 0.20.2 - "@esbuild/linux-arm": 0.20.2 - "@esbuild/linux-arm64": 0.20.2 - "@esbuild/linux-ia32": 0.20.2 - "@esbuild/linux-loong64": 0.20.2 - "@esbuild/linux-mips64el": 0.20.2 - "@esbuild/linux-ppc64": 0.20.2 - "@esbuild/linux-riscv64": 0.20.2 - "@esbuild/linux-s390x": 0.20.2 - "@esbuild/linux-x64": 0.20.2 - "@esbuild/netbsd-x64": 0.20.2 - "@esbuild/openbsd-x64": 0.20.2 - "@esbuild/sunos-x64": 0.20.2 - "@esbuild/win32-arm64": 0.20.2 - "@esbuild/win32-ia32": 0.20.2 - "@esbuild/win32-x64": 0.20.2 - - esbuild@0.21.3: - optionalDependencies: - "@esbuild/aix-ppc64": 0.21.3 - "@esbuild/android-arm": 0.21.3 - "@esbuild/android-arm64": 0.21.3 - "@esbuild/android-x64": 0.21.3 - "@esbuild/darwin-arm64": 0.21.3 - "@esbuild/darwin-x64": 0.21.3 - "@esbuild/freebsd-arm64": 0.21.3 - "@esbuild/freebsd-x64": 0.21.3 - "@esbuild/linux-arm": 0.21.3 - "@esbuild/linux-arm64": 0.21.3 - "@esbuild/linux-ia32": 0.21.3 - "@esbuild/linux-loong64": 0.21.3 - "@esbuild/linux-mips64el": 0.21.3 - "@esbuild/linux-ppc64": 0.21.3 - "@esbuild/linux-riscv64": 0.21.3 - "@esbuild/linux-s390x": 0.21.3 - "@esbuild/linux-x64": 0.21.3 - "@esbuild/netbsd-x64": 0.21.3 - "@esbuild/openbsd-x64": 0.21.3 - "@esbuild/sunos-x64": 0.21.3 - "@esbuild/win32-arm64": 0.21.3 - "@esbuild/win32-ia32": 0.21.3 - "@esbuild/win32-x64": 0.21.3 - - escalade@3.1.1: {} - - escape-string-regexp@1.0.5: {} + "@esbuild/aix-ppc64": 0.25.9 + "@esbuild/android-arm": 0.25.9 + "@esbuild/android-arm64": 0.25.9 + "@esbuild/android-x64": 0.25.9 + "@esbuild/darwin-arm64": 0.25.9 + "@esbuild/darwin-x64": 0.25.9 + "@esbuild/freebsd-arm64": 0.25.9 + "@esbuild/freebsd-x64": 0.25.9 + "@esbuild/linux-arm": 0.25.9 + "@esbuild/linux-arm64": 0.25.9 + "@esbuild/linux-ia32": 0.25.9 + "@esbuild/linux-loong64": 0.25.9 + "@esbuild/linux-mips64el": 0.25.9 + "@esbuild/linux-ppc64": 0.25.9 + "@esbuild/linux-riscv64": 0.25.9 + "@esbuild/linux-s390x": 0.25.9 + "@esbuild/linux-x64": 0.25.9 + "@esbuild/netbsd-arm64": 0.25.9 + "@esbuild/netbsd-x64": 0.25.9 + "@esbuild/openbsd-arm64": 0.25.9 + "@esbuild/openbsd-x64": 0.25.9 + "@esbuild/openharmony-arm64": 0.25.9 + "@esbuild/sunos-x64": 0.25.9 + "@esbuild/win32-arm64": 0.25.9 + "@esbuild/win32-ia32": 0.25.9 + "@esbuild/win32-x64": 0.25.9 escape-string-regexp@5.0.0: {} - esprima@4.0.1: {} - estree-util-attach-comments@3.0.0: dependencies: - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 estree-util-build-jsx@3.0.1: dependencies: - "@types/estree-jsx": 1.0.3 + "@types/estree-jsx": 1.0.5 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 estree-walker: 3.0.3 estree-util-is-identifier-name@3.0.0: {} + estree-util-scope@1.0.0: + dependencies: + "@types/estree": 1.0.8 + devlop: 1.1.0 + estree-util-to-js@2.0.0: dependencies: - "@types/estree-jsx": 1.0.3 - astring: 1.8.6 - source-map: 0.7.4 + "@types/estree-jsx": 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 estree-util-visit@2.0.0: dependencies: - "@types/estree-jsx": 1.0.3 - "@types/unist": 3.0.2 + "@types/estree-jsx": 1.0.5 + "@types/unist": 3.0.3 + + estree-walker@2.0.2: {} estree-walker@3.0.3: dependencies: - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 eventemitter3@5.0.1: {} - execa@8.0.1: + expressive-code@0.41.3: dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - - expressive-code@0.35.3: - dependencies: - "@expressive-code/core": 0.35.3 - "@expressive-code/plugin-frames": 0.35.3 - "@expressive-code/plugin-shiki": 0.35.3 - "@expressive-code/plugin-text-markers": 0.35.3 - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 + "@expressive-code/core": 0.41.3 + "@expressive-code/plugin-frames": 0.41.3 + "@expressive-code/plugin-shiki": 0.41.3 + "@expressive-code/plugin-text-markers": 0.41.3 extend@3.0.2: {} - fast-glob@3.3.2: - dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fastq@1.15.0: - dependencies: - reusify: 1.0.4 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 flattie@1.1.1: {} - fraction.js@4.3.7: {} + fontace@0.4.1: + dependencies: + fontkitten: 1.0.2 - fs.realpath@1.0.0: {} + fontkitten@1.0.2: + dependencies: + tiny-inflate: 1.0.3 fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - - gensync@1.0.0-beta.2: {} - - get-caller-file@2.0.5: {} - - get-east-asian-width@1.2.0: {} - - get-stream@8.0.1: {} + get-east-asian-width@1.3.0: {} github-slugger@2.0.0: {} - glob-parent@5.1.2: + h3@1.15.5: dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@7.1.6: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@11.12.0: {} - - graceful-fs@4.2.11: {} - - gray-matter@4.0.3: - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - - has-flag@3.0.0: {} - - hasown@2.0.0: - dependencies: - function-bind: 1.1.2 + cookie-es: 1.2.2 + crossws: 0.3.5 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.4 + radix3: 1.1.2 + ufo: 1.6.3 + uncrypto: 0.1.3 hast-util-embedded@3.0.0: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 hast-util-is-element: 3.0.0 - hast-util-from-html@2.0.1: + hast-util-format@1.1.0: dependencies: - "@types/hast": 3.0.3 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 - parse5: 7.1.2 - vfile: 6.0.1 - vfile-message: 4.0.2 + "@types/hast": 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-minify-whitespace: 1.0.1 + hast-util-phrasing: 3.0.1 + hast-util-whitespace: 3.0.0 + html-whitespace-sensitive-tag-names: 3.0.1 + unist-util-visit-parents: 6.0.1 - hast-util-from-parse5@8.0.1: + hast-util-from-html@2.0.3: dependencies: - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 + "@types/hast": 3.0.4 devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.4.0 - vfile: 6.0.1 - vfile-location: 5.0.2 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 web-namespaces: 2.0.1 hast-util-has-property@3.0.0: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 - hast-util-is-body-ok-link@3.0.0: + hast-util-is-body-ok-link@3.0.1: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 hast-util-is-element@3.0.0: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 + + hast-util-minify-whitespace@1.0.1: + dependencies: + "@types/hast": 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-is-element: 3.0.0 + hast-util-whitespace: 3.0.0 + unist-util-is: 6.0.0 hast-util-parse-selector@4.0.0: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 hast-util-phrasing@3.0.1: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 hast-util-embedded: 3.0.0 hast-util-has-property: 3.0.0 - hast-util-is-body-ok-link: 3.0.0 + hast-util-is-body-ok-link: 3.0.1 hast-util-is-element: 3.0.0 - hast-util-raw@9.0.1: + hast-util-raw@9.1.0: dependencies: - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 - "@ungap/structured-clone": 1.2.0 - hast-util-from-parse5: 8.0.1 + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 + "@ungap/structured-clone": 1.3.0 + hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.0.2 - parse5: 7.1.2 + mdast-util-to-hast: 13.2.0 + parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - vfile: 6.0.1 + vfile: 6.0.3 web-namespaces: 2.0.1 zwitch: 2.0.4 - hast-util-select@6.0.2: + hast-util-select@6.0.4: dependencies: - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.0.4 + css-selector-parser: 3.1.3 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 - hast-util-to-string: 3.0.0 + hast-util-to-string: 3.0.1 hast-util-whitespace: 3.0.0 - not: 0.1.0 nth-check: 2.1.1 - property-information: 6.4.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 unist-util-visit: 5.0.0 zwitch: 2.0.4 - hast-util-to-estree@3.1.0: + hast-util-to-estree@3.1.3: dependencies: - "@types/estree": 1.0.5 - "@types/estree-jsx": 1.0.3 - "@types/hast": 3.0.3 + "@types/estree": 1.0.8 + "@types/estree-jsx": 1.0.5 + "@types/hast": 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-attach-comments: 3.0.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 + style-to-js: 1.1.17 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: - supports-color - hast-util-to-html@9.0.0: + hast-util-to-html@9.0.5: dependencies: - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.1 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.0.2 - property-information: 6.4.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 + stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-html@9.0.1: + hast-util-to-jsx-runtime@2.3.6: dependencies: - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.1 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.0.2 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.3 - zwitch: 2.0.4 - - hast-util-to-jsx-runtime@2.3.0: - dependencies: - "@types/estree": 1.0.5 - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 + "@types/estree": 1.0.8 + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.5 + style-to-js: 1.1.17 unist-util-position: 5.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color hast-util-to-parse5@8.0.0: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.4.0 + property-information: 6.5.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 - hast-util-to-string@3.0.0: + hast-util-to-string@3.0.1: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 hast-util-to-text@4.0.2: dependencies: - "@types/hast": 3.0.3 - "@types/unist": 3.0.2 + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 hast-util-whitespace@3.0.0: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 - hastscript@8.0.0: + hastscript@9.0.1: dependencies: - "@types/hast": 3.0.3 + "@types/hast": 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 6.4.0 - space-separated-tokens: 2.0.2 - - hastscript@9.0.0: - dependencies: - "@types/hast": 3.0.3 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.4.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 html-escaper@3.0.3: {} html-void-elements@3.0.0: {} - html-whitespace-sensitive-tag-names@3.0.0: {} + html-whitespace-sensitive-tag-names@3.0.1: {} - http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} - human-signals@5.0.0: {} - - import-meta-resolve@4.0.0: {} - - inflight@1.0.6: + i18next@23.16.8: dependencies: - once: 1.4.0 - wrappy: 1.0.2 + "@babel/runtime": 7.28.3 - inherits@2.0.4: {} + import-meta-resolve@4.1.0: {} - inline-style-parser@0.1.1: {} + import-meta-resolve@4.2.0: {} - inline-style-parser@0.2.2: {} + inline-style-parser@0.2.4: {} + + iron-webcrypto@1.2.1: {} is-alphabetical@2.0.1: {} @@ -7657,1282 +4496,750 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-arrayish@0.3.2: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 - - is-buffer@2.0.5: {} - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.0 - is-decimal@2.0.1: {} is-docker@3.0.0: {} - is-extendable@0.1.1: {} - - is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 - is-interactive@2.0.0: {} - - is-number@7.0.0: {} - is-plain-obj@4.1.0: {} - is-reference@3.0.2: - dependencies: - "@types/estree": 1.0.5 - - is-stream@3.0.0: {} - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.0.0: {} - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - isexe@2.0.0: {} - - jiti@1.21.0: {} - - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 - jsesc@2.5.2: {} - - json5@2.2.3: {} - - jsonc-parser@2.3.1: {} - - kind-of@6.0.3: {} + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 kleur@3.0.3: {} kleur@4.1.5: {} - lilconfig@2.1.0: {} - - lilconfig@3.0.0: {} - - lilconfig@3.1.1: {} - - lines-and-columns@1.2.4: {} - - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.memoize@4.1.2: {} - - lodash.uniq@4.5.0: {} - - log-symbols@6.0.0: - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 + klona@2.0.6: {} longest-streak@3.1.0: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 + lru-cache@11.2.5: {} - lru-cache@6.0.0: + magic-string@0.30.18: dependencies: - yallist: 4.0.0 + "@jridgewell/sourcemap-codec": 1.5.5 - magic-string@0.30.10: + magic-string@0.30.21: dependencies: - "@jridgewell/sourcemap-codec": 1.4.15 + "@jridgewell/sourcemap-codec": 1.5.5 + + magicast@0.5.2: + dependencies: + "@babel/parser": 7.29.0 + "@babel/types": 7.29.0 + source-map-js: 1.2.1 markdown-extensions@2.0.0: {} - markdown-table@3.0.3: {} + markdown-table@3.0.4: {} mdast-util-definitions@6.0.0: dependencies: - "@types/mdast": 4.0.3 - "@types/unist": 3.0.2 + "@types/mdast": 4.0.4 + "@types/unist": 3.0.3 unist-util-visit: 5.0.0 - mdast-util-directive@3.0.0: + mdast-util-directive@3.1.0: dependencies: - "@types/mdast": 4.0.3 - "@types/unist": 3.0.2 + "@types/mdast": 4.0.4 + "@types/unist": 3.0.3 + ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 unist-util-visit-parents: 6.0.1 transitivePeerDependencies: - supports-color - mdast-util-find-and-replace@3.0.1: + mdast-util-find-and-replace@3.0.2: dependencies: - "@types/mdast": 4.0.3 + "@types/mdast": 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - mdast-util-from-markdown@2.0.0: + mdast-util-from-markdown@2.0.2: dependencies: - "@types/mdast": 4.0.3 - "@types/unist": 3.0.2 - decode-named-character-reference: 1.0.2 + "@types/mdast": 4.0.4 + "@types/unist": 3.0.3 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@2.0.0: + mdast-util-gfm-autolink-literal@2.0.1: dependencies: - "@types/mdast": 4.0.3 + "@types/mdast": 4.0.4 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.0.1 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@2.0.0: + mdast-util-gfm-footnote@2.1.0: dependencies: - "@types/mdast": 4.0.3 + "@types/mdast": 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: - supports-color mdast-util-gfm-strikethrough@2.0.0: dependencies: - "@types/mdast": 4.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + "@types/mdast": 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm-table@2.0.0: dependencies: - "@types/mdast": 4.0.3 + "@types/mdast": 4.0.4 devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm-task-list-item@2.0.0: dependencies: - "@types/mdast": 4.0.3 + "@types/mdast": 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm@3.0.0: + mdast-util-gfm@3.1.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-gfm-autolink-literal: 2.0.0 - mdast-util-gfm-footnote: 2.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.0: + mdast-util-mdx-expression@2.0.1: dependencies: - "@types/estree-jsx": 1.0.3 - "@types/hast": 3.0.3 - "@types/mdast": 4.0.3 + "@types/estree-jsx": 1.0.5 + "@types/hast": 3.0.4 + "@types/mdast": 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.0.0: + mdast-util-mdx-jsx@3.2.0: dependencies: - "@types/estree-jsx": 1.0.3 - "@types/hast": 3.0.3 - "@types/mdast": 4.0.3 - "@types/unist": 3.0.2 + "@types/estree-jsx": 1.0.5 + "@types/hast": 3.0.4 + "@types/mdast": 4.0.4 + "@types/unist": 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-remove-position: 5.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-mdxjs-esm@2.0.1: dependencies: - "@types/estree-jsx": 1.0.3 - "@types/hast": 3.0.3 - "@types/mdast": 4.0.3 + "@types/estree-jsx": 1.0.5 + "@types/hast": 3.0.4 + "@types/mdast": 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-phrasing@4.0.0: + mdast-util-phrasing@4.1.0: dependencies: - "@types/mdast": 4.0.3 + "@types/mdast": 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.0.2: + mdast-util-to-hast@13.2.0: dependencies: - "@types/hast": 3.0.3 - "@types/mdast": 4.0.3 - "@ungap/structured-clone": 1.2.0 + "@types/hast": 3.0.4 + "@types/mdast": 4.0.4 + "@ungap/structured-clone": 1.3.0 devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 + micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 + vfile: 6.0.3 - mdast-util-to-markdown@2.1.0: + mdast-util-to-markdown@2.1.2: dependencies: - "@types/mdast": 4.0.3 - "@types/unist": 3.0.2 + "@types/mdast": 4.0.4 + "@types/unist": 3.0.3 longest-streak: 3.1.0 - mdast-util-phrasing: 4.0.0 + mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 unist-util-visit: 5.0.0 zwitch: 2.0.4 mdast-util-to-string@4.0.0: dependencies: - "@types/mdast": 4.0.3 + "@types/mdast": 4.0.4 mdn-data@2.0.28: {} - mdn-data@2.0.30: {} + mdn-data@2.12.2: {} - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromark-core-commonmark@2.0.0: + micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.0.2 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-directive@3.0.0: + micromark-extension-directive@3.0.2: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - parse-entities: 4.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + parse-entities: 4.0.2 - micromark-extension-gfm-autolink-literal@2.0.0: + micromark-extension-gfm-autolink-literal@2.1.0: dependencies: - micromark-util-character: 2.0.1 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-footnote@2.0.0: + micromark-extension-gfm-footnote@2.1.0: dependencies: devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-strikethrough@2.0.0: + micromark-extension-gfm-strikethrough@2.1.0: dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-gfm-table@2.0.0: + micromark-extension-gfm-table@2.1.1: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 micromark-extension-gfm-tagfilter@2.0.0: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.2 - micromark-extension-gfm-task-list-item@2.0.1: + micromark-extension-gfm-task-list-item@2.1.0: dependencies: devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 micromark-extension-gfm@3.0.0: dependencies: - micromark-extension-gfm-autolink-literal: 2.0.0 - micromark-extension-gfm-footnote: 2.0.0 - micromark-extension-gfm-strikethrough: 2.0.0 - micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.0.1 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-mdx-expression@3.0.0: + micromark-extension-mdx-expression@3.0.1: dependencies: - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-extension-mdx-jsx@3.0.0: + micromark-extension-mdx-jsx@3.0.2: dependencies: - "@types/acorn": 4.0.6 - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 micromark-extension-mdx-md@2.0.0: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.2 micromark-extension-mdxjs-esm@3.0.0: dependencies: - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.0 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-destination@2.0.0: + micromark-factory-destination@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-label@2.0.0: + micromark-factory-label@2.0.1: dependencies: devlop: 1.1.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-mdx-expression@2.0.1: + micromark-factory-mdx-expression@2.0.3: dependencies: - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 devlop: 1.1.0 - micromark-util-character: 2.0.1 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - micromark-factory-space@2.0.0: + micromark-factory-space@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 - micromark-factory-title@2.0.0: + micromark-factory-title@2.0.1: dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-factory-whitespace@2.0.0: + micromark-factory-whitespace@2.0.1: dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-character@2.0.1: + micromark-util-character@2.1.1: dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-chunked@2.0.0: + micromark-util-chunked@2.0.1: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-classify-character@2.0.0: + micromark-util-classify-character@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-combine-extensions@2.0.0: + micromark-util-combine-extensions@2.0.1: dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-decode-numeric-character-reference@2.0.1: + micromark-util-decode-numeric-character-reference@2.0.2: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-decode-string@2.0.0: + micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 - micromark-util-encode@2.0.0: {} + micromark-util-encode@2.0.1: {} - micromark-util-events-to-acorn@2.0.2: + micromark-util-events-to-acorn@2.0.3: dependencies: - "@types/acorn": 4.0.6 - "@types/estree": 1.0.5 - "@types/unist": 3.0.2 + "@types/estree": 1.0.8 + "@types/unist": 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 - micromark-util-html-tag-name@2.0.0: {} + micromark-util-html-tag-name@2.0.1: {} - micromark-util-normalize-identifier@2.0.0: + micromark-util-normalize-identifier@2.0.1: dependencies: - micromark-util-symbol: 2.0.0 + micromark-util-symbol: 2.0.1 - micromark-util-resolve-all@2.0.0: + micromark-util-resolve-all@2.0.1: dependencies: - micromark-util-types: 2.0.0 + micromark-util-types: 2.0.2 - micromark-util-sanitize-uri@2.0.0: + micromark-util-sanitize-uri@2.0.1: dependencies: - micromark-util-character: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 - micromark-util-subtokenize@2.0.0: + micromark-util-subtokenize@2.1.0: dependencies: devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 - micromark-util-symbol@2.0.0: {} + micromark-util-symbol@2.0.1: {} - micromark-util-types@2.0.0: {} + micromark-util-types@2.0.2: {} - micromark@4.0.0: + micromark@4.0.2: dependencies: "@types/debug": 4.1.12 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 + debug: 4.4.1 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 - micromark-core-commonmark: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 transitivePeerDependencies: - supports-color - micromatch@4.0.5: + mrmime@2.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + neotraverse@0.6.18: {} + + nlcst-to-string@4.0.0: dependencies: - braces: 3.0.2 - picomatch: 2.3.1 + "@types/nlcst": 2.0.3 - mimic-fn@2.1.0: {} + node-fetch-native@1.6.7: {} - mimic-fn@4.0.0: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - mrmime@2.0.0: {} - - ms@2.1.2: {} - - muggle-string@0.4.1: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: {} - - nlcst-to-string@3.1.1: - dependencies: - "@types/nlcst": 1.0.4 - - node-releases@2.0.14: {} + node-mock-http@1.0.4: {} normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - - not@0.1.0: {} - - npm-run-path@5.1.0: - dependencies: - path-key: 4.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - once@1.4.0: + ofetch@1.5.1: dependencies: - wrappy: 1.0.2 + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.1 - onetime@5.1.2: + ohash@2.0.11: {} + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.3: dependencies: - mimic-fn: 2.1.0 + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 - onetime@6.0.0: + oniguruma-to-es@4.3.4: dependencies: - mimic-fn: 4.0.0 + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 - ora@8.0.1: + p-limit@6.2.0: dependencies: - chalk: 5.3.0 - cli-cursor: 4.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.0.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.1.0 - strip-ansi: 7.1.0 + yocto-queue: 1.2.1 - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-queue@8.0.1: + p-queue@8.1.1: dependencies: eventemitter3: 5.0.1 - p-timeout: 6.1.2 + p-timeout: 6.1.4 - p-timeout@6.1.2: {} + p-timeout@6.1.4: {} - p-try@2.2.0: {} + package-manager-detector@1.6.0: {} - pagefind@1.0.4: + pagefind@1.3.0: optionalDependencies: - "@pagefind/darwin-arm64": 1.0.4 - "@pagefind/darwin-x64": 1.0.4 - "@pagefind/linux-arm64": 1.0.4 - "@pagefind/linux-x64": 1.0.4 - "@pagefind/windows-x64": 1.0.4 + "@pagefind/darwin-arm64": 1.3.0 + "@pagefind/darwin-x64": 1.3.0 + "@pagefind/linux-arm64": 1.3.0 + "@pagefind/linux-x64": 1.3.0 + "@pagefind/windows-x64": 1.3.0 - parse-entities@4.0.1: + parse-entities@4.0.2: dependencies: - "@types/unist": 2.0.10 - character-entities: 2.0.2 + "@types/unist": 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 + decode-named-character-reference: 1.2.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-latin@5.0.1: + parse-latin@7.0.0: dependencies: - nlcst-to-string: 3.1.1 - unist-util-modify-children: 3.1.1 - unist-util-visit-children: 2.0.2 + "@types/nlcst": 2.0.3 + "@types/unist": 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 - parse5@7.1.2: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.1 - path-browserify@1.0.1: {} + piccolore@0.1.3: {} - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-parse@1.0.7: {} - - path-to-regexp@6.2.2: {} - - periscopic@3.1.0: - dependencies: - "@types/estree": 1.0.5 - estree-walker: 3.0.3 - is-reference: 3.0.2 - - picocolors@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} - pify@2.3.0: {} + picomatch@4.0.3: {} - pify@4.0.1: {} - - pirates@4.0.6: {} - - pkg-dir@4.2.0: + postcss-nested@6.2.0(postcss@8.5.6): dependencies: - find-up: 4.1.0 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 - postcss-attribute-case-insensitive@6.0.3(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-calc@10.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - postcss-value-parser: 4.2.0 - - postcss-clamp@4.1.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-color-functional-notation@6.0.11(postcss@8.4.33): - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - postcss-color-hex-alpha@9.0.4(postcss@8.4.33): - dependencies: - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-color-rebeccapurple@9.0.3(postcss@8.4.33): - dependencies: - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-colormin@7.0.0(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-convert-values@7.0.0(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-custom-media@10.0.6(postcss@8.4.33): - dependencies: - "@csstools/cascade-layer-name-parser": 1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/media-query-list-parser": 2.1.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - postcss: 8.4.33 - - postcss-custom-properties@13.3.10(postcss@8.4.33): - dependencies: - "@csstools/cascade-layer-name-parser": 1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-custom-selectors@7.1.10(postcss@8.4.33): - dependencies: - "@csstools/cascade-layer-name-parser": 1.0.11(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-dir-pseudo-class@8.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-discard-comments@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-discard-duplicates@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-discard-empty@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-discard-overridden@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-double-position-gradients@5.0.6(postcss@8.4.33): - dependencies: - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-focus-visible@9.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-focus-within@8.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-font-variant@5.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-gap-properties@5.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-image-set-function@6.0.3(postcss@8.4.33): - dependencies: - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-import@15.1.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.33): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.33 - - postcss-lab-function@6.0.16(postcss@8.4.33): - dependencies: - "@csstools/css-color-parser": 2.0.2(@csstools/css-parser-algorithms@2.6.3(@csstools/css-tokenizer@2.3.1))(@csstools/css-tokenizer@2.3.1) - "@csstools/css-parser-algorithms": 2.6.3(@csstools/css-tokenizer@2.3.1) - "@csstools/css-tokenizer": 2.3.1 - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/utilities": 1.0.0(postcss@8.4.33) - postcss: 8.4.33 - - postcss-load-config@4.0.2(postcss@8.4.31): - dependencies: - lilconfig: 3.0.0 - yaml: 2.3.4 - optionalDependencies: - postcss: 8.4.31 - - postcss-load-config@4.0.2(postcss@8.4.33): - dependencies: - lilconfig: 3.0.0 - yaml: 2.3.4 - optionalDependencies: - postcss: 8.4.33 - - postcss-logical@7.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-merge-longhand@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.0(postcss@8.4.33) - - postcss-merge-rules@7.0.0(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-minify-font-values@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@7.0.0(postcss@8.4.33): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-minify-params@7.0.0(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - cssnano-utils: 5.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-nested@6.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.13 - - postcss-nested@6.0.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.13 - - postcss-nesting@12.1.4(postcss@8.4.33): - dependencies: - "@csstools/selector-resolve-nested": 1.1.0(postcss-selector-parser@6.0.16) - "@csstools/selector-specificity": 3.1.1(postcss-selector-parser@6.0.16) - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-normalize-charset@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-normalize-display-values@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@7.0.0(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-opacity-percentage@2.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-ordered-values@7.0.0(postcss@8.4.33): - dependencies: - cssnano-utils: 5.0.0(postcss@8.4.33) - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-overflow-shorthand@5.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-page-break@3.0.4(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-place@9.0.1(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-preset-env@9.5.13(postcss@8.4.33): - dependencies: - "@csstools/postcss-cascade-layers": 4.0.6(postcss@8.4.33) - "@csstools/postcss-color-function": 3.0.16(postcss@8.4.33) - "@csstools/postcss-color-mix-function": 2.0.16(postcss@8.4.33) - "@csstools/postcss-exponential-functions": 1.0.7(postcss@8.4.33) - "@csstools/postcss-font-format-keywords": 3.0.2(postcss@8.4.33) - "@csstools/postcss-gamut-mapping": 1.0.9(postcss@8.4.33) - "@csstools/postcss-gradients-interpolation-method": 4.0.17(postcss@8.4.33) - "@csstools/postcss-hwb-function": 3.0.15(postcss@8.4.33) - "@csstools/postcss-ic-unit": 3.0.6(postcss@8.4.33) - "@csstools/postcss-initial": 1.0.1(postcss@8.4.33) - "@csstools/postcss-is-pseudo-class": 4.0.8(postcss@8.4.33) - "@csstools/postcss-light-dark-function": 1.0.5(postcss@8.4.33) - "@csstools/postcss-logical-float-and-clear": 2.0.1(postcss@8.4.33) - "@csstools/postcss-logical-overflow": 1.0.1(postcss@8.4.33) - "@csstools/postcss-logical-overscroll-behavior": 1.0.1(postcss@8.4.33) - "@csstools/postcss-logical-resize": 2.0.1(postcss@8.4.33) - "@csstools/postcss-logical-viewport-units": 2.0.9(postcss@8.4.33) - "@csstools/postcss-media-minmax": 1.1.6(postcss@8.4.33) - "@csstools/postcss-media-queries-aspect-ratio-number-values": 2.0.9(postcss@8.4.33) - "@csstools/postcss-nested-calc": 3.0.2(postcss@8.4.33) - "@csstools/postcss-normalize-display-values": 3.0.2(postcss@8.4.33) - "@csstools/postcss-oklab-function": 3.0.16(postcss@8.4.33) - "@csstools/postcss-progressive-custom-properties": 3.2.0(postcss@8.4.33) - "@csstools/postcss-relative-color-syntax": 2.0.16(postcss@8.4.33) - "@csstools/postcss-scope-pseudo-class": 3.0.1(postcss@8.4.33) - "@csstools/postcss-stepped-value-functions": 3.0.8(postcss@8.4.33) - "@csstools/postcss-text-decoration-shorthand": 3.0.6(postcss@8.4.33) - "@csstools/postcss-trigonometric-functions": 3.0.8(postcss@8.4.33) - "@csstools/postcss-unset-value": 3.0.1(postcss@8.4.33) - autoprefixer: 10.4.19(postcss@8.4.33) - browserslist: 4.23.0 - css-blank-pseudo: 6.0.2(postcss@8.4.33) - css-has-pseudo: 6.0.5(postcss@8.4.33) - css-prefers-color-scheme: 9.0.1(postcss@8.4.33) - cssdb: 8.0.1 - postcss: 8.4.33 - postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.33) - postcss-clamp: 4.1.0(postcss@8.4.33) - postcss-color-functional-notation: 6.0.11(postcss@8.4.33) - postcss-color-hex-alpha: 9.0.4(postcss@8.4.33) - postcss-color-rebeccapurple: 9.0.3(postcss@8.4.33) - postcss-custom-media: 10.0.6(postcss@8.4.33) - postcss-custom-properties: 13.3.10(postcss@8.4.33) - postcss-custom-selectors: 7.1.10(postcss@8.4.33) - postcss-dir-pseudo-class: 8.0.1(postcss@8.4.33) - postcss-double-position-gradients: 5.0.6(postcss@8.4.33) - postcss-focus-visible: 9.0.1(postcss@8.4.33) - postcss-focus-within: 8.0.1(postcss@8.4.33) - postcss-font-variant: 5.0.0(postcss@8.4.33) - postcss-gap-properties: 5.0.1(postcss@8.4.33) - postcss-image-set-function: 6.0.3(postcss@8.4.33) - postcss-lab-function: 6.0.16(postcss@8.4.33) - postcss-logical: 7.0.1(postcss@8.4.33) - postcss-nesting: 12.1.4(postcss@8.4.33) - postcss-opacity-percentage: 2.0.0(postcss@8.4.33) - postcss-overflow-shorthand: 5.0.1(postcss@8.4.33) - postcss-page-break: 3.0.4(postcss@8.4.33) - postcss-place: 9.0.1(postcss@8.4.33) - postcss-pseudo-class-any-link: 9.0.2(postcss@8.4.33) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.33) - postcss-selector-not: 7.0.2(postcss@8.4.33) - - postcss-pseudo-class-any-link@9.0.2(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-reduce-initial@7.0.0(postcss@8.4.33): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - postcss: 8.4.33 - - postcss-reduce-transforms@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - - postcss-selector-not@7.0.2(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-selector-parser@6.0.13: + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@6.0.16: + postcss@8.5.6: dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 - postcss-svgo@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-unique-selectors@7.0.0(postcss@8.4.33): - dependencies: - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.31: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - postcss@8.4.33: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - - preferred-pm@3.1.3: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - - prismjs@1.29.0: {} + prismjs@1.30.0: {} prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@6.4.0: {} + property-information@6.5.0: {} - queue-microtask@1.2.3: {} + property-information@7.1.0: {} - read-cache@1.0.0: + radix3@1.1.2: {} + + readdirp@5.0.0: {} + + recma-build-jsx@1.0.0: dependencies: - pify: 2.3.0 + "@types/estree": 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 - readdirp@3.6.0: + recma-jsx@1.0.1(acorn@8.15.0): dependencies: - picomatch: 2.3.1 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 - rehype-expressive-code@0.35.3: + recma-parse@1.0.0: dependencies: - expressive-code: 0.35.3 + "@types/estree": 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 - rehype-format@5.0.0: + recma-stringify@1.0.0: dependencies: - "@types/hast": 3.0.3 - hast-util-embedded: 3.0.0 - hast-util-is-element: 3.0.0 - hast-util-phrasing: 3.0.1 - hast-util-whitespace: 3.0.0 - html-whitespace-sensitive-tag-names: 3.0.0 - rehype-minify-whitespace: 6.0.0 - unist-util-visit-parents: 6.0.1 + "@types/estree": 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 - rehype-minify-whitespace@6.0.0: + regex-recursion@6.0.2: dependencies: - "@types/hast": 3.0.3 - hast-util-embedded: 3.0.0 - hast-util-is-element: 3.0.0 - hast-util-whitespace: 3.0.0 - unist-util-is: 6.0.0 + regex-utilities: 2.3.0 - rehype-parse@9.0.0: + regex-utilities@2.3.0: {} + + regex@6.0.1: dependencies: - "@types/hast": 3.0.3 - hast-util-from-html: 2.0.1 - unified: 11.0.4 + regex-utilities: 2.3.0 + + rehype-expressive-code@0.41.3: + dependencies: + expressive-code: 0.41.3 + + rehype-format@5.0.1: + dependencies: + "@types/hast": 3.0.4 + hast-util-format: 1.1.0 + + rehype-parse@9.0.1: + dependencies: + "@types/hast": 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 rehype-raw@7.0.0: dependencies: - "@types/hast": 3.0.3 - hast-util-raw: 9.0.1 - vfile: 6.0.1 + "@types/hast": 3.0.4 + hast-util-raw: 9.1.0 + vfile: 6.0.3 - rehype-stringify@10.0.0: + rehype-recma@1.0.0: dependencies: - "@types/hast": 3.0.3 - hast-util-to-html: 9.0.0 - unified: 11.0.4 - - rehype@13.0.1: - dependencies: - "@types/hast": 3.0.3 - rehype-parse: 9.0.0 - rehype-stringify: 10.0.0 - unified: 11.0.4 - - remark-directive@3.0.0: - dependencies: - "@types/mdast": 4.0.3 - mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.0 - unified: 11.0.4 + "@types/estree": 1.0.8 + "@types/hast": 3.0.4 + hast-util-to-estree: 3.1.3 transitivePeerDependencies: - supports-color - remark-gfm@4.0.0: + rehype-stringify@10.0.1: dependencies: - "@types/mdast": 4.0.3 - mdast-util-gfm: 3.0.0 + "@types/hast": 3.0.4 + hast-util-to-html: 9.0.5 + unified: 11.0.5 + + rehype@13.0.2: + dependencies: + "@types/hast": 3.0.4 + rehype-parse: 9.0.1 + rehype-stringify: 10.0.1 + unified: 11.0.5 + + remark-directive@3.0.1: + dependencies: + "@types/mdast": 4.0.4 + mdast-util-directive: 3.1.0 + micromark-extension-directive: 3.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.1: + dependencies: + "@types/mdast": 4.0.4 + mdast-util-gfm: 3.1.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 - unified: 11.0.4 + unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-mdx@3.0.0: + remark-mdx@3.1.0: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -8941,182 +5248,162 @@ snapshots: remark-parse@11.0.0: dependencies: - "@types/mdast": 4.0.3 - mdast-util-from-markdown: 2.0.0 - micromark-util-types: 2.0.0 - unified: 11.0.4 + "@types/mdast": 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-rehype@11.1.0: + remark-rehype@11.1.2: dependencies: - "@types/hast": 3.0.3 - "@types/mdast": 4.0.3 - mdast-util-to-hast: 13.0.2 - unified: 11.0.4 - vfile: 6.0.1 + "@types/hast": 3.0.4 + "@types/mdast": 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 - remark-smartypants@2.0.0: + remark-smartypants@3.0.2: dependencies: - retext: 8.1.0 - retext-smartypants: 5.2.0 - unist-util-visit: 4.1.2 + retext: 9.0.0 + retext-smartypants: 6.2.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 remark-stringify@11.0.0: dependencies: - "@types/mdast": 4.0.3 - mdast-util-to-markdown: 2.1.0 - unified: 11.0.4 + "@types/mdast": 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 - request-light@0.7.0: {} - - require-directory@2.1.1: {} - - resolve@1.22.8: + retext-latin@4.0.0: dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + "@types/nlcst": 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 - restore-cursor@4.0.0: + retext-smartypants@6.2.0: dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 + "@types/nlcst": 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.0.0 - retext-latin@3.1.0: + retext-stringify@4.0.0: dependencies: - "@types/nlcst": 1.0.4 - parse-latin: 5.0.1 - unherit: 3.0.1 - unified: 10.1.2 + "@types/nlcst": 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 - retext-smartypants@5.2.0: + retext@9.0.0: dependencies: - "@types/nlcst": 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - unist-util-visit: 4.1.2 + "@types/nlcst": 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 - retext-stringify@3.1.0: + rollup@4.48.1: dependencies: - "@types/nlcst": 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - - retext@8.1.0: - dependencies: - "@types/nlcst": 1.0.4 - retext-latin: 3.1.0 - retext-stringify: 3.1.0 - unified: 10.1.2 - - reusify@1.0.4: {} - - rollup@4.17.2: - dependencies: - "@types/estree": 1.0.5 + "@types/estree": 1.0.8 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.17.2 - "@rollup/rollup-android-arm64": 4.17.2 - "@rollup/rollup-darwin-arm64": 4.17.2 - "@rollup/rollup-darwin-x64": 4.17.2 - "@rollup/rollup-linux-arm-gnueabihf": 4.17.2 - "@rollup/rollup-linux-arm-musleabihf": 4.17.2 - "@rollup/rollup-linux-arm64-gnu": 4.17.2 - "@rollup/rollup-linux-arm64-musl": 4.17.2 - "@rollup/rollup-linux-powerpc64le-gnu": 4.17.2 - "@rollup/rollup-linux-riscv64-gnu": 4.17.2 - "@rollup/rollup-linux-s390x-gnu": 4.17.2 - "@rollup/rollup-linux-x64-gnu": 4.17.2 - "@rollup/rollup-linux-x64-musl": 4.17.2 - "@rollup/rollup-win32-arm64-msvc": 4.17.2 - "@rollup/rollup-win32-ia32-msvc": 4.17.2 - "@rollup/rollup-win32-x64-msvc": 4.17.2 + "@rollup/rollup-android-arm-eabi": 4.48.1 + "@rollup/rollup-android-arm64": 4.48.1 + "@rollup/rollup-darwin-arm64": 4.48.1 + "@rollup/rollup-darwin-x64": 4.48.1 + "@rollup/rollup-freebsd-arm64": 4.48.1 + "@rollup/rollup-freebsd-x64": 4.48.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.48.1 + "@rollup/rollup-linux-arm-musleabihf": 4.48.1 + "@rollup/rollup-linux-arm64-gnu": 4.48.1 + "@rollup/rollup-linux-arm64-musl": 4.48.1 + "@rollup/rollup-linux-loongarch64-gnu": 4.48.1 + "@rollup/rollup-linux-ppc64-gnu": 4.48.1 + "@rollup/rollup-linux-riscv64-gnu": 4.48.1 + "@rollup/rollup-linux-riscv64-musl": 4.48.1 + "@rollup/rollup-linux-s390x-gnu": 4.48.1 + "@rollup/rollup-linux-x64-gnu": 4.48.1 + "@rollup/rollup-linux-x64-musl": 4.48.1 + "@rollup/rollup-win32-arm64-msvc": 4.48.1 + "@rollup/rollup-win32-ia32-msvc": 4.48.1 + "@rollup/rollup-win32-x64-msvc": 4.48.1 fsevents: 2.3.3 - run-parallel@1.2.0: + sax@1.4.1: {} + + semver@7.7.4: {} + + sharp@0.34.5: dependencies: - queue-microtask: 1.2.3 - - sax@1.3.0: {} - - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - - semver@6.3.1: {} - - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.2: {} - - sharp@0.33.4: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.6.2 + "@img/colour": 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.4 optionalDependencies: - "@img/sharp-darwin-arm64": 0.33.4 - "@img/sharp-darwin-x64": 0.33.4 - "@img/sharp-libvips-darwin-arm64": 1.0.2 - "@img/sharp-libvips-darwin-x64": 1.0.2 - "@img/sharp-libvips-linux-arm": 1.0.2 - "@img/sharp-libvips-linux-arm64": 1.0.2 - "@img/sharp-libvips-linux-s390x": 1.0.2 - "@img/sharp-libvips-linux-x64": 1.0.2 - "@img/sharp-libvips-linuxmusl-arm64": 1.0.2 - "@img/sharp-libvips-linuxmusl-x64": 1.0.2 - "@img/sharp-linux-arm": 0.33.4 - "@img/sharp-linux-arm64": 0.33.4 - "@img/sharp-linux-s390x": 0.33.4 - "@img/sharp-linux-x64": 0.33.4 - "@img/sharp-linuxmusl-arm64": 0.33.4 - "@img/sharp-linuxmusl-x64": 0.33.4 - "@img/sharp-wasm32": 0.33.4 - "@img/sharp-win32-ia32": 0.33.4 - "@img/sharp-win32-x64": 0.33.4 + "@img/sharp-darwin-arm64": 0.34.5 + "@img/sharp-darwin-x64": 0.34.5 + "@img/sharp-libvips-darwin-arm64": 1.2.4 + "@img/sharp-libvips-darwin-x64": 1.2.4 + "@img/sharp-libvips-linux-arm": 1.2.4 + "@img/sharp-libvips-linux-arm64": 1.2.4 + "@img/sharp-libvips-linux-ppc64": 1.2.4 + "@img/sharp-libvips-linux-riscv64": 1.2.4 + "@img/sharp-libvips-linux-s390x": 1.2.4 + "@img/sharp-libvips-linux-x64": 1.2.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 + "@img/sharp-linux-arm": 0.34.5 + "@img/sharp-linux-arm64": 0.34.5 + "@img/sharp-linux-ppc64": 0.34.5 + "@img/sharp-linux-riscv64": 0.34.5 + "@img/sharp-linux-s390x": 0.34.5 + "@img/sharp-linux-x64": 0.34.5 + "@img/sharp-linuxmusl-arm64": 0.34.5 + "@img/sharp-linuxmusl-x64": 0.34.5 + "@img/sharp-wasm32": 0.34.5 + "@img/sharp-win32-arm64": 0.34.5 + "@img/sharp-win32-ia32": 0.34.5 + "@img/sharp-win32-x64": 0.34.5 - shebang-command@2.0.0: + shiki@3.11.0: dependencies: - shebang-regex: 3.0.0 + "@shikijs/core": 3.11.0 + "@shikijs/engine-javascript": 3.11.0 + "@shikijs/engine-oniguruma": 3.11.0 + "@shikijs/langs": 3.11.0 + "@shikijs/themes": 3.11.0 + "@shikijs/types": 3.11.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 - shebang-regex@3.0.0: {} - - shiki@1.5.2: + shiki@3.22.0: dependencies: - "@shikijs/core": 1.5.2 - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 + "@shikijs/core": 3.22.0 + "@shikijs/engine-javascript": 3.22.0 + "@shikijs/engine-oniguruma": 3.22.0 + "@shikijs/langs": 3.22.0 + "@shikijs/themes": 3.22.0 + "@shikijs/types": 3.22.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 sisteransi@1.0.5: {} - sitemap@7.1.1: + sitemap@8.0.0: dependencies: "@types/node": 17.0.45 "@types/sax": 1.2.7 arg: 5.0.2 - sax: 1.3.0 + sax: 1.4.1 - source-map-js@1.0.2: {} + smol-toml@1.4.2: {} - source-map-js@1.2.0: {} + smol-toml@1.6.0: {} - source-map@0.7.4: {} + source-map-js@1.2.1: {} + + source-map@0.7.6: {} space-separated-tokens@2.0.2: {} - sprintf-js@1.0.3: {} - - stdin-discarder@0.2.2: {} + stream-replace-string@2.0.0: {} string-width@4.2.3: dependencies: @@ -9124,19 +5411,13 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: + string-width@7.2.0: dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 - string-width@7.1.0: - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - - stringify-entities@4.0.3: + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 @@ -9147,398 +5428,206 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.2.0 - strip-bom-string@1.0.0: {} - - strip-bom@3.0.0: {} - - strip-final-newline@3.0.0: {} - - style-to-object@0.4.4: + style-to-js@1.1.17: dependencies: - inline-style-parser: 0.1.1 + style-to-object: 1.0.9 - style-to-object@1.0.5: + style-to-object@1.0.9: dependencies: - inline-style-parser: 0.2.2 + inline-style-parser: 0.2.4 - stylehacks@7.0.0(postcss@8.4.33): + svgo@4.0.0: dependencies: - browserslist: 4.23.0 - postcss: 8.4.33 - postcss-selector-parser: 6.0.16 - - sucrase@3.34.0: - dependencies: - "@jridgewell/gen-mapping": 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svgo@3.3.2: - dependencies: - "@trysound/sax": 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 + commander: 11.1.0 + css-select: 5.2.2 + css-tree: 3.1.0 + css-what: 6.2.2 csso: 5.0.5 - picocolors: 1.0.0 + picocolors: 1.1.1 + sax: 1.4.1 - tailwindcss@3.4.3: + tiny-inflate@1.0.3: {} + + tinyexec@1.0.2: {} + + tinyglobby@0.2.15: dependencies: - "@alloc/quick-lru": 5.2.0 - arg: 5.0.2 - chokidar: 3.5.3 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.33 - postcss-import: 15.1.0(postcss@8.4.33) - postcss-js: 4.0.1(postcss@8.4.33) - postcss-load-config: 4.0.2(postcss@8.4.33) - postcss-nested: 6.0.1(postcss@8.4.33) - postcss-selector-parser: 6.0.13 - resolve: 1.22.8 - sucrase: 3.34.0 - transitivePeerDependencies: - - ts-node - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - to-fast-properties@2.0.0: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 trim-lines@3.0.1: {} - trough@2.1.0: {} + trough@2.2.0: {} - ts-interface-checker@0.1.13: {} - - tsconfck@3.0.3(typescript@5.4.5): + tsconfck@3.1.6(typescript@5.9.2): optionalDependencies: - typescript: 5.4.5 + typescript: 5.9.2 - tslib@2.6.2: + tslib@2.8.1: optional: true - type-fest@2.19.0: {} + type-fest@4.41.0: {} - typesafe-path@0.2.2: {} + typescript@5.9.2: {} - typescript-auto-import-cache@0.3.2: + ufo@1.6.1: {} + + ufo@1.6.3: {} + + ultrahtml@1.6.0: {} + + uncrypto@0.1.3: {} + + undici-types@7.10.0: {} + + unified@11.0.5: dependencies: - semver: 7.5.4 - - typescript@5.4.5: {} - - unherit@3.0.1: {} - - unified@10.1.2: - dependencies: - "@types/unist": 2.0.10 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 5.3.7 - - unified@11.0.4: - dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 bail: 2.0.2 devlop: 1.1.0 extend: 3.0.2 is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 6.0.1 + trough: 2.2.0 + vfile: 6.0.3 + + unifont@0.7.3: + dependencies: + css-tree: 3.1.0 + ofetch: 1.5.1 + ohash: 2.0.11 unist-util-find-after@5.0.0: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 unist-util-is: 6.0.0 - unist-util-is@5.2.1: - dependencies: - "@types/unist": 2.0.10 - unist-util-is@6.0.0: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 - unist-util-modify-children@3.1.1: + unist-util-modify-children@4.0.0: dependencies: - "@types/unist": 2.0.10 + "@types/unist": 3.0.3 array-iterate: 2.0.1 unist-util-position-from-estree@2.0.0: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 unist-util-position@5.0.0: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 unist-util-remove-position@5.0.0: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 unist-util-visit: 5.0.0 - unist-util-stringify-position@3.0.3: - dependencies: - "@types/unist": 2.0.10 - unist-util-stringify-position@4.0.0: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 - unist-util-visit-children@2.0.2: + unist-util-visit-children@3.0.0: dependencies: - "@types/unist": 2.0.10 - - unist-util-visit-parents@5.1.3: - dependencies: - "@types/unist": 2.0.10 - unist-util-is: 5.2.1 + "@types/unist": 3.0.3 unist-util-visit-parents@6.0.1: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 unist-util-is: 6.0.0 - unist-util-visit@4.1.2: + unist-util-visit-parents@6.0.2: dependencies: - "@types/unist": 2.0.10 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 + "@types/unist": 3.0.3 + unist-util-is: 6.0.0 unist-util-visit@5.0.0: dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - update-browserslist-db@1.0.13(browserslist@4.23.0): + unstorage@1.17.4: dependencies: - browserslist: 4.23.0 - escalade: 3.1.1 - picocolors: 1.0.0 + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.5 + lru-cache: 11.2.5 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.3 util-deprecate@1.0.2: {} - vfile-location@5.0.2: + vfile-location@5.0.3: dependencies: - "@types/unist": 3.0.2 - vfile: 6.0.1 + "@types/unist": 3.0.3 + vfile: 6.0.3 - vfile-message@3.1.4: + vfile-message@4.0.3: dependencies: - "@types/unist": 2.0.10 - unist-util-stringify-position: 3.0.3 - - vfile-message@4.0.2: - dependencies: - "@types/unist": 3.0.2 + "@types/unist": 3.0.3 unist-util-stringify-position: 4.0.0 - vfile@5.3.7: + vfile@6.0.3: dependencies: - "@types/unist": 2.0.10 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 + "@types/unist": 3.0.3 + vfile-message: 4.0.3 - vfile@6.0.1: + vite@6.4.1(@types/node@24.3.0): dependencies: - "@types/unist": 3.0.2 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - - vite@5.2.11: - dependencies: - esbuild: 0.20.2 - postcss: 8.4.38 - rollup: 4.17.2 + esbuild: 0.25.9 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.48.1 + tinyglobby: 0.2.15 optionalDependencies: + "@types/node": 24.3.0 fsevents: 2.3.3 - vitefu@0.2.5(vite@5.2.11): + vitefu@1.1.1(vite@6.4.1(@types/node@24.3.0)): optionalDependencies: - vite: 5.2.11 - - volar-service-css@0.0.45(@volar/language-service@2.2.4): - dependencies: - vscode-css-languageservice: 6.2.10 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - optionalDependencies: - "@volar/language-service": 2.2.4 - - volar-service-emmet@0.0.45(@volar/language-service@2.2.4): - dependencies: - "@emmetio/css-parser": 0.4.0 - "@emmetio/html-matcher": 1.3.0 - "@vscode/emmet-helper": 2.9.2 - optionalDependencies: - "@volar/language-service": 2.2.4 - - volar-service-html@0.0.45(@volar/language-service@2.2.4): - dependencies: - vscode-html-languageservice: "@johnsoncodehk/vscode-html-languageservice@5.2.0-34a5462" - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - optionalDependencies: - "@volar/language-service": 2.2.4 - - volar-service-prettier@0.0.45(@volar/language-service@2.2.4): - dependencies: - vscode-uri: 3.0.8 - optionalDependencies: - "@volar/language-service": 2.2.4 - - volar-service-typescript-twoslash-queries@0.0.45(@volar/language-service@2.2.4): - optionalDependencies: - "@volar/language-service": 2.2.4 - - volar-service-typescript@0.0.45(@volar/language-service@2.2.4): - dependencies: - path-browserify: 1.0.1 - semver: 7.5.4 - typescript-auto-import-cache: 0.3.2 - vscode-languageserver-textdocument: 1.0.11 - vscode-nls: 5.2.0 - optionalDependencies: - "@volar/language-service": 2.2.4 - - vscode-css-languageservice@6.2.10: - dependencies: - "@vscode/l10n": 0.0.16 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-html-languageservice@5.2.0: - dependencies: - "@vscode/l10n": 0.0.18 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.11: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: - dependencies: - vscode-languageserver-protocol: 3.17.5 - - vscode-nls@5.2.0: {} - - vscode-uri@2.1.2: {} - - vscode-uri@3.0.8: {} + vite: 6.4.1(@types/node@24.3.0) web-namespaces@2.0.1: {} which-pm-runs@1.1.0: {} - which-pm@2.0.0: + widest-line@5.0.0: dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 + string-width: 7.2.0 - which-pm@2.1.1: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - widest-line@4.0.1: - dependencies: - string-width: 5.1.2 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: + wrap-ansi@9.0.0: dependencies: ansi-styles: 6.2.1 - string-width: 5.1.2 + string-width: 7.2.0 strip-ansi: 7.1.0 - wrappy@1.0.2: {} - - y18n@5.0.8: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml@2.3.4: {} + xxhash-wasm@1.1.0: {} yargs-parser@21.1.1: {} - yargs@17.7.2: + yocto-queue@1.2.1: {} + + yocto-spinner@0.2.3: dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 + yoctocolors: 2.1.2 - yocto-queue@0.1.0: {} + yoctocolors@2.1.2: {} - yocto-queue@1.0.0: {} - - zod-to-json-schema@3.23.0(zod@3.23.8): + zod-to-json-schema@3.25.1(zod@3.25.76): dependencies: - zod: 3.23.8 + zod: 3.25.76 - zod@3.22.4: {} + zod-to-ts@1.2.0(typescript@5.9.2)(zod@3.25.76): + dependencies: + typescript: 5.9.2 + zod: 3.25.76 - zod@3.23.8: {} + zod@3.25.76: {} zwitch@2.0.4: {} diff --git a/docs/postcss.config.cjs b/docs/postcss.config.cjs deleted file mode 100644 index 378d0c29..00000000 --- a/docs/postcss.config.cjs +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - plugins: [ - require("autoprefixer"), - require("cssnano"), - require("postcss-preset-env")({ - stage: 3, - features: { "nesting-rules": false }, - }), - ], -}; diff --git a/docs/src/.i18n-filter b/docs/src/.i18n-filter index 9871cee8..f113dae9 100644 --- a/docs/src/.i18n-filter +++ b/docs/src/.i18n-filter @@ -1,6 +1,6 @@ -en ca de +en es fr nn-no diff --git a/docs/src/components/DocsVersionSelect.astro b/docs/src/components/DocsVersionSelect.astro index 9e64e010..9bedafa9 100644 --- a/docs/src/components/DocsVersionSelect.astro +++ b/docs/src/components/DocsVersionSelect.astro @@ -1,16 +1,16 @@ --- import Select from '@astrojs/starlight/components/Select.astro'; -import type { Props } from '@astrojs/starlight/props'; ---
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Yassine Doghri -
- - Yassine Doghri - -
-
- - 💻 - {" "} - - 🐛 - {" "} - - 📖 - {" "} - - 👀 - {" "} - - 🚧 - {" "} - - 🖋 - {" "} - - 🎨 - {" "} - - ️️️️♿️ - {" "} - - 🌍 - {" "} - - 💬 - {" "} - - 🧑‍🏫 - {" "} - - 🚇 - {" "} - - 🤔 - {" "} - - 📆 - {" "} - - 📝 - -
- - Benjamin Bellamy -
- - Benjamin Bellamy - -
-
- - 💻 - {" "} - - 🐛 - {" "} - - 👀 - {" "} - - 🖋 - {" "} - - 🌍 - {" "} - - 💬 - {" "} - - 🚇 - {" "} - - 🤔 - {" "} - - 📝 - {" "} - - 📆 - {" "} - - 📢 - -
- - Ola Hneini -
- - Ola Hneini - -
-
- - 💻 - {" "} - - 👀 - {" "} - - 📖 - {" "} - - 🚧 - {" "} - - 💬 - {" "} - - 🤔 - -
- - Romain de Laage -
- - Romain de Laage - -
-
- - 💻 - {" "} - - 🚇 - {" "} - - 📖 - {" "} - - 🌍 - {" "} - - 🤔 - -
- - Lyonel Bernard -
- - Lyonel Bernard - -
-
- - 🐛 - {" "} - - 💬 - {" "} - - 🔊 - {" "} - - 🤔 - -
- - Christopher Lagonick-Weitzel -
- - Christopher Lagonick-Weitzel - -
-
- - 🐛 - {" "} - - 💬 - {" "} - - 🔊 - {" "} - - 🤔 - -
- - Ernesto Acosta -
- - Ernesto Acosta - -
-
- - 🐛 - {" "} - - 🔊 - {" "} - - 🌍 - {" "} - - 💬 - {" "} - - 🤔 - -
- - Ewen -
- - Ewen - -
-
- - 🌍 - {" "} - - 🤔 - {" "} - - 💻 - -
- - Bastien Luneteau -
- - Bastien Luneteau - -
-
- - 💻 - {" "} - - 🐛 - -
- - Cécile Ricordeau -
- - Cécile Ricordeau - -
-
- - 🎨 - -
- - Patryk Miś -
- - Patryk Miś - -
-
- - 🌍 - -
- - Marcin Lewandowski -
- - Marcin Lewandowski - -
-
- - 🐛 - {" "} - - 🤔 - -
- - Sebastian Janik -
- - Sebastian Janik - -
-
- - 💻 - -
- - Patryk Karczmarczyk -
- - Patryk Karczmarczyk - -
-
- - 💻 - -
- - denis d -
- - denis d - -
-
- - 🐛 - {" "} - - 🤔 - -
- - Douglas Kastle -
- - Douglas Kastle - -
-
- - 🐛 - {" "} - - 🤔 - -
- - cExplorer -
- - cExplorer - -
-
- - 🐛 - {" "} - - 🌍 - -
- - ImaCrea -
- - ImaCrea - -
-
- - 🐛 - {" "} - - 🤔 - -
- - Jonas S -
- - Jonas S - -
-
- - 💻 - -
- - LEFEBVRE Yann -
- - LEFEBVRE Yann - -
-
- - 🐛 - -
- - Sebastian Späth -
- - Sebastian Späth - -
-
- - 🐛 - {" "} - - 🤔 - -
- - rocky III -
- - rocky III - -
-
- - 🐛 - -
- - Hermann Josef Eckl -
- - Hermann Josef Eckl - -
-
- - 🐛 - -
- - Delhaye Cyrille -
- - Delhaye Cyrille - -
-
- - 🐛 - {" "} - - 🤔 - -
- - João Leandro -
- - João Leandro - -
-
- - 🌍 - {" "} - - 🤔 - -
- - Angelos Chouvardas -
- - Angelos Chouvardas - -
-
- - 🌍 - -
- - Eivind -
- - Eivind - -
-
- - 🌍 - -
- - forght -
- - forght - -
-
- - 🌍 - -
- - glottis0q -
- - glottis0q - -
-
- - 🌍 - -
- - ButterflyOfFire -
- - ButterflyOfFire - -
-
- - 🌍 - -
- - Lucian I. Last -
- - Lucian I. Last - -
-
- - 🌍 - -
- - LuuzViir -
- - LuuzViir - -
-
- - 🌍 - -
- - CTHTC -
- - CTHTC - -
-
- - 🌍 - -
- - Russian Retro -
- - Russian Retro - -
-
- - 🌍 - -
- - Marek L'ach -
- - Marek L'ach - -
-
- - 🌍 - -
- - GunChleoc -
- - GunChleoc - -
-
- - 🌍 - -
- - GabiSnow -
- - GabiSnow - -
-
- - 🌍 - -
- - bendaha -
- - bendaha - -
-
- - 🌍 - -
- - Samuel Roland -
- - Samuel Roland - -
-
- - 🌍 - -
- - Dimitri Regnier -
- - Dimitri Regnier - -
-
- - 🤔 - -
- - irithys -
- - irithys - -
-
- - 🌍 - -
- - Sergi -
- - Sergi - -
-
- - 🌍 - -
- - ghose (XoseM) -
- - ghose (XoseM) - -
-
- - 🌍 - -
- - Andreas Olsson -
- - Andreas Olsson - -
-
- - 🌍 - -
- - leonfrom -
- - leonfrom - -
-
- - 🌍 - -
- - agentcobra -
- - agentcobra - -
-
- - 🌍 - -
- - Alessandro -
- - Alessandro - -
-
- - 🌍 - -
- - liimee -
- - liimee - -
-
- - 🌍 - -
- - Ahmed Sabouni -
- - Ahmed Sabouni - -
-
- - 🌍 - -
- - KrzysztofDomanczyk -
- - KrzysztofDomanczyk - -
-
- - 💻 - -
- - Guy Martin -
- - Guy Martin - -
-
- - 🐛 - {" "} - - 💻 - -
- -{/* markdownlint-restore */} -{/* prettier-ignore-end */} - -{/* ALL-CONTRIBUTORS-LIST:END */} - -This project follows the -[all-contributors](https://github.com/all-contributors/all-contributors) -specification. Contributions of any kind welcome! - -## Darempred +## Contact You may reach us for help or ask any question you have on: @@ -1360,7 +172,7 @@ Alternatively, you can follow us on social media platforms to get news about Castopod: - [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance) -- [Twitter](https://twitter.com/castopod) +- [Bluesky](https://bsky.app/profile/castopod.org) - [LinkedIn](https://linkedin.com/company/castopod) - [Facebook](https://www.facebook.com/castopod) @@ -1374,7 +186,7 @@ backers. If you'd like to help, please consider [![NLnet Logo](../../../assets/images/sponsors/nlnet.svg)](https://nlnet.nl/) -## Aotre +## License [GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/) diff --git a/docs/src/content/docs/br/getting-started/auth.mdx b/docs/src/content/docs/br/getting-started/auth.mdx index b51d2d1d..aea953e5 100644 --- a/docs/src/content/docs/br/getting-started/auth.mdx +++ b/docs/src/content/docs/br/getting-started/auth.mdx @@ -12,73 +12,73 @@ coupled with custom rules. Roles and permissions are defined at two levels: ### Instance roles -{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */} +{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/} -| role | description | permissions | -| --------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------ | -| Dreistmerour·ez | Ur c'hontroll klok en deus war Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks | -| Merour·ez | Merañ a ra endalc'had Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage | -| Podkaster | Implijerien·ezed kustum Castopod. | admin.access | +| role | description | permissions | +| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ | +| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks | +| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage | +| Podkaster | General users of Castopod. | admin.access | -{/* AUTH-INSTANCE-ROLES-LIST:END */} +{/_ AUTH-INSTANCE-ROLES-LIST:END _/} ### Instance permissions -{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */} +{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/} -| permission | description | -| ----------------------- | ------------------------------------------------------------------------------------------------- | -| admin.access | Gallout a ra gwelet taolenn-stur Castopod. | -| admin.settings | Gallout a ra gwelet arventennoù Castopod. | -| users.manage | Gallout a ra ober war-dro implijerien·ezed Castopod. | -| persons.manage | Gallout a ra merañ an emellerien·ezed. | -| pages.manage | Gallout a ra merañ ar pajennoù. | -| podcasts.view | Gallout a ra gwelet an holl bodkastoù. | -| podcasts.create | Gallout a ra krouiñ podkastoù nevez. | -| podcasts.import | Gallout a ra enporzhiañ podkastoù. | -| fediverse.manage-blocks | Gallout a ra mirout aktourien·ezed pe domanioù ar Fediverse ouzh kaout darempredoù gant Castopod. | +| permission | description | +| ----------------------- | ------------------------------------------------------------------ | +| admin.access | Can access the Castopod admin area. | +| admin.settings | Can access the Castopod settings. | +| users.manage | Can manage Castopod users. | +| persons.manage | Can manage persons. | +| pages.manage | Can manage pages. | +| podcasts.view | Can view all podcasts. | +| podcasts.create | Can create new podcasts. | +| podcasts.import | Can import podcasts. | +| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. | -{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */} +{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/} ## 2. Per podcast roles and permissions ### Per podcast roles -{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */} +{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/} -| role | description | permissions | -| ---------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Merour·ez | Ur c'hontroll klok en deus war ar podkast #\{id\}. | \* | -| Embanner | Merañ a ra endalc'had hag embannadurioù ar podkast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments | -| Aozer·ez | Merañ a ra endalc'had ar podkast #\{id\} met ne c'hall ket embann anezho. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips | -| Kouviad·ez | Perzhiad·ez eus ar podkast #\{id\}. | view, episodes.view | +| role | description | permissions | +| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Admin | Has complete control of podcast #\{id\}. | \* | +| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments | +| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips | +| Guest | General contributor of the podcast #\{id\}. | view, episodes.view | -{/* AUTH-PODCAST-ROLES-LIST:END */} +{/_ AUTH-PODCAST-ROLES-LIST:END _/} ### Per podcast permissions -{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */} +{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/} -| permission | description | -| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| view | Gallout a ra gwelet taolenn-stur ha muzulioù heklev ar podkast #\{id\}. | -| edit | Gallout a ra kemmañ ar podkast #\{id\}. | -| delete | Gallout a ra lemel ar podkast #\{id\}. | -| manage-import | Gallout a ra sinkronekaat ar podkast enporzhiet #\{id\}. | -| manage-persons | Gallout a ra merañ koumanantoù ar podkast #\{id\}. | -| manage-subscriptions | Gallout a ra merañ koumanantoù ar podkast #\{id\}. | -| manage-contributors | Gallout a ra merañ perzhidi ha perzhiadezed ar podkast #\{id\}. | -| manage-platforms | Gallout a ra ouzhpennañ pe lemel liammoù etrezek savennoù diavaez evit ar podkast #\{id\}. | -| manage-publications | Gallout a ra embann ar podkast #\{id\}. | -| manage-notifications | Gallout a ra gwelet kemennoù ar podkast #\{id\} ha lakaat anezho evel lennet. | -| interact-as | Gallout a ra ober traoù gant identelezh ar podkast #\{id\}: ouzhpennañ ur gemennadenn d'ar re garetañ, rannañ anezhi pe respont dezhi. | -| episodes.view | Gallout a ra gwelet taolennoù-stur ha muzulioù heklev rannoù ar podkast #\{id\}. | -| episodes.create | Gallout a ra krouiñ rannoù evit podkast #\{id\}. | -| episodes.edit | Gallout a ra kemmañ rannoù ar podkast #\{id\}. | -| episodes.delete | Gallout a ra lemel rannoù ar podkast #\{id\}. | -| episodes.manage-persons | Gallout a ra merañ emellerien·ezed ar podkast #\{id\}. | -| episodes.manage-clips | Gallout a ra merañ klipoù video pe tennadoù son ar podkast #\{id\}. | -| episodes.manage-publications | Gallout a ra embann pe diembann rannoù ha kemennadennoù ar podkast #\{id\}. | -| episodes.manage-comments | Gallout a ra krouiñ/lemel evezhiadennoù evit rannoù ar podkast #\{id\}. | +| permission | description | +| ---------------------------- | -------------------------------------------------------------------------- | +| view | Can view dashboard and analytics of podcast #\{id\}. | +| edit | Can edit podcast #\{id\}. | +| delete | Can delete podcast #\{id\}. | +| manage-import | Can synchronize imported podcast #\{id\}. | +| manage-persons | Can manage subscriptions of podcast #\{id\}. | +| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. | +| manage-contributors | Can manage contributors of podcast #\{id\}. | +| manage-platforms | Can set/remove platform links of podcast #\{id\}. | +| manage-publications | Can publish podcast #\{id\}. | +| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. | +| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. | +| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. | +| episodes.create | Can create episodes for podcast #\{id\}. | +| episodes.edit | Can edit episodes of podcast #\{id\}. | +| episodes.delete | Can delete episodes of podcast #\{id\}. | +| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. | +| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. | +| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. | +| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. | -{/* AUTH-PODCAST-PERMISSIONS-LIST:END */} +{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/} diff --git a/docs/src/content/docs/br/getting-started/docker.mdx b/docs/src/content/docs/br/getting-started/docker.mdx index 781a034a..6304854e 100644 --- a/docs/src/content/docs/br/getting-started/docker.mdx +++ b/docs/src/content/docs/br/getting-started/docker.mdx @@ -24,129 +24,130 @@ can be added as a cache handler. ## Example usage -1. Install [docker](https://docs.docker.com/get-docker/) and - [docker-compose](https://docs.docker.com/compose/install/) -2. Create a `docker-compose.yml` file with the following: +1. Install [docker](https://docs.docker.com/get-docker/) and + [docker-compose](https://docs.docker.com/compose/install/) - ```yml - version: "3.7" +2. Create a `docker-compose.yml` file with the following: - services: - app: - image: castopod/castopod:latest - container_name: "castopod-app" - volumes: - - castopod-media:/var/www/castopod/public/media - environment: - MYSQL_DATABASE: castopod - MYSQL_USER: castopod - MYSQL_PASSWORD: changeme - CP_BASEURL: "https://castopod.example.com" - CP_ANALYTICS_SALT: changeme - CP_CACHE_HANDLER: redis - CP_REDIS_HOST: redis - CP_REDIS_PASSWORD: changeme - networks: - - castopod-app - - castopod-db - ports: - - 8000:8000 - restart: unless-stopped + ```yml + version: "3.7" - mariadb: - image: mariadb:10.5 - container_name: "castopod-mariadb" - networks: - - castopod-db - volumes: - - castopod-db:/var/lib/mysql - environment: - MYSQL_ROOT_PASSWORD: changeme - MYSQL_DATABASE: castopod - MYSQL_USER: castopod - MYSQL_PASSWORD: changeme - restart: unless-stopped + services: + app: + image: castopod/castopod:latest + container_name: "castopod-app" + volumes: + - castopod-media:/var/www/castopod/public/media + environment: + MYSQL_DATABASE: castopod + MYSQL_USER: castopod + MYSQL_PASSWORD: changeme + CP_BASEURL: "https://castopod.example.com" + CP_ANALYTICS_SALT: changeme + CP_CACHE_HANDLER: redis + CP_REDIS_HOST: redis + CP_REDIS_PASSWORD: changeme + networks: + - castopod-app + - castopod-db + ports: + - 8000:8000 + restart: unless-stopped - redis: - image: redis:7.0-alpine - container_name: "castopod-redis" - command: --requirepass changeme - volumes: - - castopod-cache:/data - networks: - - castopod-app + mariadb: + image: mariadb:10.5 + container_name: "castopod-mariadb" + networks: + - castopod-db + volumes: + - castopod-db:/var/lib/mysql + environment: + MYSQL_ROOT_PASSWORD: changeme + MYSQL_DATABASE: castopod + MYSQL_USER: castopod + MYSQL_PASSWORD: changeme + restart: unless-stopped - volumes: - castopod-media: - castopod-db: - castopod-cache: + redis: + image: redis:7.0-alpine + container_name: "castopod-redis" + command: --requirepass changeme + volumes: + - castopod-cache:/data + networks: + - castopod-app - networks: - castopod-app: - castopod-db: - ``` + volumes: + castopod-media: + castopod-db: + castopod-cache: - You have to adapt some variables to your needs (e.g. `CP_BASEURL`, - `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`). + networks: + castopod-app: + castopod-db: + ``` -3. Setup a reverse proxy for TLS (SSL/HTTPS) + You have to adapt some variables to your needs (e.g. `CP_BASEURL`, + `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`). - TLS is mandatory for ActivityPub to work. This job can easily be handled by - a reverse proxy, for example with [Caddy](https://caddyserver.com/): +3. Setup a reverse proxy for TLS (SSL/HTTPS) - ``` - #castopod - castopod.example.com { - reverse_proxy localhost:8000 - } - ``` + TLS is mandatory for ActivityPub to work. This job can easily be handled by + a reverse proxy, for example with [Caddy](https://caddyserver.com/): -4. Run `docker-compose up -d`, wait for it to initialize and head on to - `https://castopod.example.com/cp-install` to finish setting up Castopod! + ``` + #castopod + castopod.example.com { + reverse_proxy localhost:8000 + } + ``` -5. You're all set, start podcasting! 🎙️🚀 +4. Run `docker-compose up -d`, wait for it to initialize and head on to + `https://castopod.example.com/cp-install` to finish setting up Castopod! + +5. You're all set, start podcasting! 🎙️🚀 ## Omgevingsvariabelen - **castopod/castopod** and **castopod/app** - | De naam van de variabele | Type (`default`) | Standaard | - | ------------------------------------- | ----------------------- | ------------------ | - | **`CP_BASEURL`** | tekenreeks | `niet gedefineerd` | - | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | - | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | - | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | - | **`CP_ANALYTICS_SALT`** | string | `niet gedefineerd` | - | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | - | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | - | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | - | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | - | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | - | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | - | **`CP_REDIS_HOST`** | ?string | `"localhost"` | - | **`CP_REDIS_PASSWORD`** | ?string | `null` | - | **`CP_REDIS_PORT`** | ?number | `6379` | - | **`CP_REDIS_DATABASE`** | ?number | `0` | - | **`CP_EMAIL_SMTP_HOST`** | ?string | `niet gedefineerd` | - | **`CP_EMAIL_FROM`** | ?string | `niet gedefineerd` | - | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | - | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | - | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | - | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | - | **`CP_ENABLE_2FA`** | ?boolean | `niet gedefineerd` | - | **`CP_MEDIA_FILE_MANAGER`** | ?string | `niet gedefineerd` | - | **`CP_MEDIA_S3_ENDPOINT`** | ?string | `niet gedefineerd` | - | **`CP_MEDIA_S3_KEY`** | ?string | `niet gedefineerd` | - | **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` | - | **`CP_MEDIA_S3_REGION`** | ?string | `undefined` | - | **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` | - | **`CP_MEDIA_S3_PROTOCOL`** | ?number | `niet gedefineerd` | - | **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `niet gedefineerd` | - | **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `niet gedefineerd` | - | **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `niet gedefineerd` | - | **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` | - | **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` | - | **`CP_TIMEOUT`** | ?number | `900` | + | De naam van de variabele | Type (`default`) | Standaard | + | ------------------------------------- | ----------------------- | ---------------- | + | **`CP_BASEURL`** | string | `undefined` | + | **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` | + | **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` | + | **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` | + | **`CP_ANALYTICS_SALT`** | string | `undefined` | + | **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` | + | **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` | + | **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` | + | **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` | + | **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` | + | **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` | + | **`CP_REDIS_HOST`** | ?string | `"localhost"` | + | **`CP_REDIS_PASSWORD`** | ?string | `null` | + | **`CP_REDIS_PORT`** | ?number | `6379` | + | **`CP_REDIS_DATABASE`** | ?number | `0` | + | **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` | + | **`CP_EMAIL_FROM`** | ?string | `undefined` | + | **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` | + | **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` | + | **`CP_EMAIL_SMTP_PORT`** | ?number | `25` | + | **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` | + | **`CP_ENABLE_2FA`** | ?boolean | `undefined` | + | **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` | + | **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` | + | **`CP_MEDIA_S3_KEY`** | ?string | `undefined` | + | **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` | + | **`CP_MEDIA_S3_REGION`** | ?string | `undefined` | + | **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` | + | **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` | + | **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` | + | **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` | + | **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` | + | **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` | + | **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` | + | **`CP_TIMEOUT`** | ?number | `900` | - **castopod/web-server** diff --git a/docs/src/content/docs/br/getting-started/install.mdx b/docs/src/content/docs/br/getting-started/install.mdx index 2d1f988a..4e8f1b2c 100644 --- a/docs/src/content/docs/br/getting-started/install.mdx +++ b/docs/src/content/docs/br/getting-started/install.mdx @@ -1,5 +1,5 @@ --- -title: Penaos staliañ Castopod? +title: How to install Castopod? --- import { Aside } from "@astrojs/starlight/components"; @@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components"; Castopod was thought-out to be easy to install. Whether using dedicated or shared hosting, you can install it on most PHP-MySQL compatible web servers. - - ## Requirements - PHP v8.1 or higher @@ -49,7 +40,7 @@ You will need the server hostname, database name, username and password to complete the installation process. If you do not have these, please contact your server administrator. -#### Brientoù +#### Privileges User must have at least these privileges on the database for Castopod to work: `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`, @@ -91,7 +82,6 @@ want to generate Video Clips. The following extensions must be installed: **Note** - If you do not add this cron task, the following Castopod features will not work: - - Importing a podcast from an existing RSS feed - Broadcasting social activities to your followers in the fediverse - Broadcasting episodes to open hubs using @@ -104,7 +94,7 @@ want to generate Video Clips. The following extensions must be installed: 1. Run the Castopod install script by going to the install wizard page (`https://your_domain_name.com/cp-install`) in your favorite web browser. 2. Follow the instructions on your screen. -3. Kregiñ da bodkastiñ! +3. Start podcasting!
diff --git a/docs/src/content/docs/ca/getting-started/update.mdx b/docs/src/content/docs/ca/getting-started/update.mdx index d41ec18a..48a866e2 100644 --- a/docs/src/content/docs/ca/getting-started/update.mdx +++ b/docs/src/content/docs/ca/getting-started/update.mdx @@ -12,26 +12,22 @@ d'errors 🐛 i millores de rendiment ⚡. 0. ⚠️ Before any update, we highly recommend you backup your Castopod files and database. - - cf. [Should I make a backup before updating?](#should-i-make-a-backup-before-updating) 1. Go to the [releases page](https://code.castopod.org/adaures/castopod/-/releases) and see if your instance is up to date with the latest Castopod version - - cf. [Where can I find my Castopod version?](#where-can-i-find-my-castopod-version) 2. Download the latest release package named `Castopod Package`, you may choose between the `zip` or `tar.gz` archives - - ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code - Note that you can also download the latest package from [castopod.org](https://castopod.org/) 3. On your server: - - Remove all files except `.env` and `public/media` - Copy the new files from the downloaded package into your server @@ -51,6 +47,7 @@ d'errors 🐛 i millores de rendiment ⚡. 5. Clear your cache from your `Castopod Admin` > `Settings` > `general` > `Housekeeping` + 6. ✨ Enjoy your fresh instance, you're all done!
asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/locations.php b/themes/cp_admin/podcast/analytics/locations.php index b5544184..4f5493a8 100644 --- a/themes/cp_admin/podcast/analytics/locations.php +++ b/themes/cp_admin/podcast/analytics/locations.php @@ -32,5 +32,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/players.php b/themes/cp_admin/podcast/analytics/players.php index f728ca78..ec8fce09 100644 --- a/themes/cp_admin/podcast/analytics/players.php +++ b/themes/cp_admin/podcast/analytics/players.php @@ -44,5 +44,5 @@
asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/time_periods.php b/themes/cp_admin/podcast/analytics/time_periods.php index 0857aae5..6d8a1e45 100644 --- a/themes/cp_admin/podcast/analytics/time_periods.php +++ b/themes/cp_admin/podcast/analytics/time_periods.php @@ -25,5 +25,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/unique_listeners.php b/themes/cp_admin/podcast/analytics/unique_listeners.php index 89522300..6cc31aeb 100644 --- a/themes/cp_admin/podcast/analytics/unique_listeners.php +++ b/themes/cp_admin/podcast/analytics/unique_listeners.php @@ -27,5 +27,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/webpages.php b/themes/cp_admin/podcast/analytics/webpages.php index 82acfd5c..a2379079 100644 --- a/themes/cp_admin/podcast/analytics/webpages.php +++ b/themes/cp_admin/podcast/analytics/webpages.php @@ -38,5 +38,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/edit.php b/themes/cp_admin/podcast/edit.php index d38bc5a8..fadba91b 100644 --- a/themes/cp_admin/podcast/edit.php +++ b/themes/cp_admin/podcast/edit.php @@ -262,6 +262,10 @@ label="" hint="" value="new_feed_url) ?>" /> + + +
@@ -278,7 +282,7 @@ value="new_feed_url) ?>" - + endSection() ?> diff --git a/themes/cp_admin/podcast/latest_episodes.php b/themes/cp_admin/podcast/latest_episodes.php index 47bdd5c7..c54bc889 100644 --- a/themes/cp_admin/podcast/latest_episodes.php +++ b/themes/cp_admin/podcast/latest_episodes.php @@ -7,16 +7,16 @@ ) ?>" class="inline-flex items-center text-sm underline hover:no-underline focus:ring-accent"> 'ml-2', - ]) ?> + 'class' => 'ml-2', + ]) ?>
$episode, - ]) ?> + 'episode' => $episode, + ]) ?>
diff --git a/themes/cp_admin/podcast/list.php b/themes/cp_admin/podcast/list.php index 5ecb7976..c20f2f7c 100644 --- a/themes/cp_admin/podcast/list.php +++ b/themes/cp_admin/podcast/list.php @@ -10,8 +10,8 @@ section('headerRight') ?> diff --git a/themes/cp_admin/podcast/persons.php b/themes/cp_admin/podcast/persons.php index 697d3ea2..3235d9b7 100644 --- a/themes/cp_admin/podcast/persons.php +++ b/themes/cp_admin/podcast/persons.php @@ -9,7 +9,7 @@ endSection() ?> section('headerRight') ?> - + endSection() ?> @@ -84,7 +84,7 @@ [ 'header' => lang('Common.actions'), 'cell' => function ($person): string { - // @icon('delete-bin-fill') + // @icon("delete-bin-fill") return ''; }, ], diff --git a/themes/cp_admin/podcast/view.php b/themes/cp_admin/podcast/view.php index 51a2ad39..9df1dc61 100644 --- a/themes/cp_admin/podcast/view.php +++ b/themes/cp_admin/podcast/view.php @@ -10,8 +10,8 @@ section('headerRight') ?> diff --git a/themes/cp_admin/settings/general.php b/themes/cp_admin/settings/general.php index 9253a0ed..600aae67 100644 --- a/themes/cp_admin/settings/general.php +++ b/themes/cp_admin/settings/general.php @@ -67,7 +67,7 @@ - + @@ -84,7 +84,7 @@ - + diff --git a/themes/cp_admin/subscription/list.php b/themes/cp_admin/subscription/list.php index f534721d..455fc841 100644 --- a/themes/cp_admin/subscription/list.php +++ b/themes/cp_admin/subscription/list.php @@ -9,7 +9,7 @@ endSection() ?> section('headerRight') ?> - + endSection() ?> diff --git a/themes/cp_admin/subscription/suspend.php b/themes/cp_admin/subscription/suspend.php index 3b3c8d9c..ff7250c1 100644 --- a/themes/cp_admin/subscription/suspend.php +++ b/themes/cp_admin/subscription/suspend.php @@ -28,7 +28,7 @@
- +
diff --git a/themes/cp_admin/user/list.php b/themes/cp_admin/user/list.php index aec95ff2..44d94e4c 100644 --- a/themes/cp_admin/user/list.php +++ b/themes/cp_admin/user/list.php @@ -9,7 +9,7 @@ endSection() ?> section('headerRight') ?> - + endSection() ?> @@ -37,7 +37,7 @@ $role = '
' . icon('shield-user-fill') . '' . $role . '
'; } - // @icon('pencil-fill') + // @icon("pencil-fill") return $role . '' . lang('User.edit_role', [ 'username' => esc($user->username), ]) . ''; diff --git a/themes/cp_app/embed.php b/themes/cp_app/embed.php index b4ab4480..40b448af 100644 --- a/themes/cp_app/embed.php +++ b/themes/cp_app/embed.php @@ -13,9 +13,9 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/embed.ts', 'js') ?> + ->asset('js/embed.ts') ?> title) ?> is_premium && ! is_unlocked($podcast->handle)): ?> - + @@ -55,7 +55,7 @@ - + diff --git a/themes/cp_app/episode/_layout-preview.php b/themes/cp_app/episode/_layout-preview.php index 917cebc7..d4661aa1 100644 --- a/themes/cp_app/episode/_layout-preview.php +++ b/themes/cp_app/episode/_layout-preview.php @@ -28,13 +28,13 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/podcast.ts', 'js') ?> + ->asset('js/podcast.ts') ?> asset('js/audio-player.ts', 'js') ?> + ->asset('js/audio-player.ts') ?> cover->medium_url ?>" alt="title) ?>" class="flex-shrink-0 rounded-md shadow-xl h-36 aspect-square" loading="lazy" /> @@ -170,7 +170,7 @@ loggedIn()): ?> publication_status, ['scheduled', 'with_podcast'], true)): ?> - + - + diff --git a/themes/cp_app/episode/activity.php b/themes/cp_app/episode/activity.php index 9d0c0c8f..fcdcd47e 100644 --- a/themes/cp_app/episode/activity.php +++ b/themes/cp_app/episode/activity.php @@ -17,7 +17,7 @@ placeholder="" required="true" rows="2" /> - + diff --git a/themes/cp_app/episode/comment.php b/themes/cp_app/episode/comment.php index 5628862c..462082d2 100644 --- a/themes/cp_app/episode/comment.php +++ b/themes/cp_app/episode/comment.php @@ -6,7 +6,9 @@ 'mr-2 text-lg', + ], ) . lang('Comment.back_to_comments') ?>
diff --git a/themes/cp_app/episode/comments.php b/themes/cp_app/episode/comments.php index f907aab9..dd507f75 100644 --- a/themes/cp_app/episode/comments.php +++ b/themes/cp_app/episode/comments.php @@ -16,7 +16,7 @@ required="true" placeholder="" rows="2" /> - +
diff --git a/themes/cp_app/episode/preview-transcript.php b/themes/cp_app/episode/preview-transcript.php index 90953788..6728498f 100644 --- a/themes/cp_app/episode/preview-transcript.php +++ b/themes/cp_app/episode/preview-transcript.php @@ -4,7 +4,8 @@
-
- ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> @@ -41,9 +41,9 @@ get('App.siteName') === 'Castopod' ? 'castopod' . + ->get('App.siteName') === 'Castopod' ? 'castopod' . svg('castopod-logo-base', 'h-6 ml-2') : esc(service('settings') - ->get('App.siteName')) ?> + ->get('App.siteName')) ?>
diff --git a/themes/cp_app/pages/_layout.php b/themes/cp_app/pages/_layout.php index cc4905d5..d2dbff4e 100644 --- a/themes/cp_app/pages/_layout.php +++ b/themes/cp_app/pages/_layout.php @@ -24,11 +24,11 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/audio-player.ts', 'js') ?> + ->asset('js/audio-player.ts') ?> " class="inline-flex items-center mb-2 text-sm focus:ring-accent"> 'mr-2', + ], ) . lang('Page.back_to_home') ?> title) ?>
@@ -53,7 +55,7 @@
'Castopod', - ], null, false) ?> + 'castopod' => 'Castopod', + ], null, false) ?>
diff --git a/themes/cp_app/pages/map.php b/themes/cp_app/pages/map.php index 8defde7d..c1d233ea 100644 --- a/themes/cp_app/pages/map.php +++ b/themes/cp_app/pages/map.php @@ -27,11 +27,11 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/map.ts', 'js') ?> + ->asset('js/map.ts') ?> " class="inline-flex items-center mb-2 text-sm focus:ring-accent"> 'mr-2', + ], ) . lang('Page.back_to_home') ?>
@@ -56,9 +58,9 @@ diff --git a/themes/cp_app/podcast/_layout.php b/themes/cp_app/podcast/_layout.php index 9330ce12..59cf98f9 100644 --- a/themes/cp_app/podcast/_layout.php +++ b/themes/cp_app/podcast/_layout.php @@ -25,13 +25,13 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/podcast.ts', 'js') ?> + ->asset('js/podcast.ts') ?> asset('js/audio-player.ts', 'js') ?> + ->asset('js/audio-player.ts') ?> slug), - 'mr-2 flex-shrink-0', - $fundingPlatform->type + $fundingPlatform->type . ':' . $fundingPlatform->slug, + [ + 'class' => 'mr-2 flex-shrink-0', + ], ) . '' . esc($fundingPlatform->link_url) . '' ?> diff --git a/themes/cp_app/podcast/_partials/premium_banner.php b/themes/cp_app/podcast/_partials/premium_banner.php index 932fa34b..5530f317 100644 --- a/themes/cp_app/podcast/_partials/premium_banner.php +++ b/themes/cp_app/podcast/_partials/premium_banner.php @@ -4,8 +4,10 @@ if ($podcast->is_premium): ?> isUnlocked($podcast->handle); - $shownIcon = $isUnlocked ? 'lock-unlock' : 'lock'; - $hiddenIcon = $isUnlocked ? 'lock' : 'lock-unlock'; + // @icon("lock-unlock-fill") + // @icon("lock-fill") + $shownIcon = $isUnlocked ? 'lock-unlock-fill' : 'lock-fill'; + $hiddenIcon = $isUnlocked ? 'lock-fill' : 'lock-unlock-fill'; ?>

@@ -25,7 +27,7 @@ if ($podcast->is_premium): ?> ]) ?> - +
diff --git a/themes/cp_app/podcast/activity.php b/themes/cp_app/podcast/activity.php index 9cc52d8e..5c9ef39a 100644 --- a/themes/cp_app/podcast/activity.php +++ b/themes/cp_app/podcast/activity.php @@ -21,7 +21,7 @@ name="episode_url" type="url" placeholder="" /> - + diff --git a/themes/cp_app/podcast/episodes.php b/themes/cp_app/podcast/episodes.php index 070c5b2f..e2d37f24 100644 --- a/themes/cp_app/podcast/episodes.php +++ b/themes/cp_app/podcast/episodes.php @@ -23,7 +23,7 @@ 'class' => 'ml-2 text-xl', ]) ?> -