diff --git a/.env.dist b/.env.dist index 9d6fb2a2..c870c3c0 100644 --- a/.env.dist +++ b/.env.dist @@ -1,42 +1,55 @@ -# Vagrant -VAGRANT_BOX=bento/ubuntu-20.04 -VAGRANT_PROJECT_NAME=symfony-boilerplate -VAGRANT_MEMORY=4096 -VAGRANT_CPUS=2 -VAGRANT_DOCKER_COMPOSE_VERSION=1.28.2 - -# The next variables help templating the docker-compose.yml file. -# -# Consider putting here your secrets with dummy values and variables you want to -# reuse in two or more services. - -APP_NAME="Symfony Boilerplate" - -# Domain -DOMAIN=symfony-boilerplate.localhost -API_SUBDOMAIN=api -STORAGE_SUBDOMAIN=minio - -# API -APP_SECRET=$ecretf0rt3st - -# MySQL -MYSQL_ROOT_PASSWORD=super-secret -MYSQL_DATABASE=symfony-boilerplate -MYSQL_USER=api-agent -MYSQL_PASSWORD=secret - -# Redis -REDIS_PASSWORD=secret - -# Storage -STORAGE_PUBLIC_BUCKET=public -STORAGE_PRIVATE_BUCKET=private -STORAGE_ACCESS_KEY=accesskey -STORAGE_SECRET_KEY=secretkey - -# i18n -DEFAULT_LOCALE=en - -# XDebug -XDEBUG_MODE=debug,coverage \ No newline at end of file +# The password, username et databasename shall be updated + +APP_NAME="boilerplatev2" +DATABASE_PASSWORD="super-secret" +DATABASE_USERNAME="api-user" +DATABASE_NAME="api" + +BASE_DOMAIN="${APP_NAME}.localhost" +API_SUBDOMAIN="api" +API_ROUTE_FROM_BASE_DOMAIN="/api" +PHPMYADMIN_DOMAIN="phpmyadmin.${BASE_DOMAIN}" +MINIO_CONSOLE_DOMAIN="minio-console.${BASE_DOMAIN}" +MINIO_DOMAIN="minio.${BASE_DOMAIN}" +PROTOCOL="http" + +BACK_APP_NAME="back" +FRONT_APP_NAME="front" + +API_DOMAIN="${API_SUBDOMAIN}.${BASE_DOMAIN}" + +API_PREFIX="/api" + +# MINIO +STORAGE_S3_ENDPOINT="http://minio:9000" +STORAGE_S3_KEY="admin" +STORAGE_S3_SECRET="super-secret" +STORAGE_PRIVATE_SOURCE="private.storage.s3" +STORAGE_PUBLIC_SOURCE="public.storage.s3" +STORAGE_PUBLIC_BUCKET_NAME="public" +STORAGE_PRIVATE_BUCKET_NAME="private" + +DEPLOYMENT_TAG=latest + +IMAGE_REGISTRY="git.thecodingmachine.com:444/tcm-projects/${APP_NAME}" +BACK_IMAGE_NAME="${IMAGE_REGISTRY}/${BACK_APP_NAME}" +FRONT_IMAGE_NAME="${IMAGE_REGISTRY}/${FRONT_APP_NAME}" + +BACK_ROUTER_RULE="Host(`${API_DOMAIN}`) || Host(`${BASE_DOMAIN}`) && PathPrefix(`${API_ROUTE_FROM_BASE_DOMAIN}`)" +FRONT_ROUTER_RULE="Host(`${BASE_DOMAIN}`) && ! PathPrefix(`${API_ROUTE_FROM_BASE_DOMAIN}`)" +PHPMYADMIN_ROUTER_RULE="Host(`${PHPMYADMIN_DOMAIN}`)" +MINIO_ROUTER_RULE="Host(`${MINIO_DOMAIN}`)" +MINIO_CONSOLE_ROUTER_RULE="Host(`${MINIO_CONSOLE_DOMAIN}`)" + +# SSO CONFIG +APP_SSO_SERVICEPROVIDER_X509CERT="MIICkDCCAfmgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBlMQswCQYDVQQGEwJmcjEOMAwGA1UECAwFUEFSSVMxDDAKBgNVBAoMA1RDTTEaMBgGA1UEAwwRZnJvbnQuc29jb3RlYy5kZXYxDjAMBgNVBAcMBVBBUklTMQwwCgYDVQQLDANUQ00wHhcNMTcwOTA4MTUyNzM0WhcNMTgwOTA4MTUyNzM0WjBlMQswCQYDVQQGEwJmcjEOMAwGA1UECAwFUEFSSVMxDDAKBgNVBAoMA1RDTTEaMBgGA1UEAwwRZnJvbnQuc29jb3RlYy5kZXYxDjAMBgNVBAcMBVBBUklTMQwwCgYDVQQLDANUQ00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMKCd0hnMKX40MYR+fZNRqMJjSiDpTPTkV9A0bfQKESZ9esPjNt8Janq+2MGLrm6cRcMXRx8yo/x7pfoCmdiu9D7VNhk69nFsNKH0PQp/jf2+vLPHXgKvlcCFvlaOB/Cvg9UnK9mq83H88LPwvrpaNRl4qDrLS5TTByEIohjFUJrAgMBAAGjUDBOMB0GA1UdDgQWBBSk8/zuzxKBEwpusxRAva7oY7MkrDAfBgNVHSMEGDAWgBSk8/zuzxKBEwpusxRAva7oY7MkrDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4GBAGlGJPIGYAKKkhW/EAvJbprOAwLvSEansPR8iQlGOq49k/R+mvvTKyQ4DsUglrjbTqA90MZ3S7IG25rPtX6uG2Gmi8QdpJbvfbvkMqk4aNbHveWm35lhsFpiJhu5ngUvb7RjZAVg9YRJGMufZwA5TKrr57fIKhA45QXxbITEP2gX" +APP_SSO_SERVICEPROVIDER_PRIVATEKEY="MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMKCd0hnMKX40MYR+fZNRqMJjSiDpTPTkV9A0bfQKESZ9esPjNt8Janq+2MGLrm6cRcMXRx8yo/x7pfoCmdiu9D7VNhk69nFsNKH0PQp/jf2+vLPHXgKvlcCFvlaOB/Cvg9UnK9mq83H88LPwvrpaNRl4qDrLS5TTByEIohjFUJrAgMBAAECgYEAgLUgBTLzCABa9ZXTl12PDjc1xsdFu8OVgDg+DamZ27sc9Qv3Iw1FRuiMq/vdU1zBlITD4CPbTeDDBpWuvLainACpk4JJK22JozwLpaqnyrrhPNxphBe3XUREe6Tw53q9cM1j9RlD+PwbM2KbudfBmsi+sPvNK0pEAHFJZhogjfECQQDtwqhYQhLUCmgzMMFNU1PYvPJ6+5cdrgxK5JJhQxKJnclUdnjw3zUwdN3XpJk9ggq/GTCAjd/vE8ILV2DXgD6nAkEA0W5pvJx5EG9hekJ3/LaqcIKNH38uqhm4LPrXaLbUOToVyjBsJhlfRVVQojhOT9mAkTs4RhSP0IZy+Xkvh3s6nQJBALPzOnriN2HpJohoBEXEJZfLGjNerDc4ffFJIkke/K7Pj4uvx0V3ishMC4Ok/p6BCCUuqXkC6FQIvjrbPV6dn80CQQDRAZvMe2vmlwF0/fi436Ng/SjRkh+D6n7/hKaM/kj1g55TVdfYfeGyU95QxliBH9NLHQqgBc0wkb0Uc3iXgMeRAkAm30yjx2YPHjXZydKsJFgNtfI0PvoFS8tv1Ljb3FfflzrKEFFBtwfC/kxJXY+oKIKMSW0YxT0EuOkq3K5uIeGd" +# THE SSO APP +APP_SSO_IDENTITYPROVIDER_X509CERT="MIIDXTCCAkWgAwIBAgIJALmVVuDWu4NYMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMTYxMjMxMTQzNDQ3WhcNNDgwNjI1MTQzNDQ3WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzUCFozgNb1h1M0jzNRSCjhOBnR+uVbVpaWfXYIR+AhWDdEe5ryY+CgavOg8bfLybyzFdehlYdDRgkedEB/GjG8aJw06l0qF4jDOAw0kEygWCu2mcH7XOxRt+YAH3TVHa/Hu1W3WjzkobqqqLQ8gkKWWM27fOgAZ6GieaJBN6VBSMMcPey3HWLBmc+TYJmv1dbaO2jHhKh8pfKw0W12VM8P1PIO8gv4Phu/uuJYieBWKixBEyy0lHjyixYFCR12xdh4CA47q958ZRGnnDUGFVE1QhgRacJCOZ9bd5t9mr8KLaVBYTCJo5ERE8jymab5dPqe5qKfJsCZiqWglbjUo9twIDAQABo1AwTjAdBgNVHQ4EFgQUxpuwcs/CYQOyui+r1G+3KxBNhxkwHwYDVR0jBBgwFoAUxpuwcs/CYQOyui+r1G+3KxBNhxkwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAAiWUKs/2x/viNCKi3Y6blEuCtAGhzOOZ9EjrvJ8+COH3Rag3tVBWrcBZ3/uhhPq5gy9lqw4OkvEws99/5jFsX1FJ6MKBgqfuy7yh5s1YfM0ANHYczMmYpZeAcQf2CGAaVfwTTfSlzNLsF2lW/ly7yapFzlYSJLGoVE+OHEu8g5SlNACUEfkXw+5Eghh+KzlIN7R6Q7r2ixWNFBC/jWf7NKUfJyX8qIG5md1YUeT6GBW9Bm2/1/RiO24JTaYlfLdKK9TYb8sG5B+OLab2DImG99CJ25RkAcSobWNF5zD0O6lgOo3cEdB/ksCq3hmtlC/DlLZ/D8CJ+7VuZnS1rR2naQ==" +APP_SSO_IDENTITYPROVIDER_ENTITYID="http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/metadata.php" +APP_SSO_IDENTITYPROVIDER_LOGINURL="http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/SSOService.php" +APP_SSO_IDENTITYPROVIDER_LOGOUTURL="http://samltest.${BASE_DOMAIN}/simplesaml/saml2/idp/SSOService.php" + +###> symfony/mailer ### +MAILER_DSN=smtp://c2935bd6538947:7a7bce53de361c@sandbox.smtp.mailtrap.io:2525/?encryption=ssl&auth_mode=login +MAIL_HOST=admin@mail.com diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml deleted file mode 100644 index fd249b21..00000000 --- a/.github/workflows/documentation.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: documentation - -on: - pull_request: - branches: [master] - push: - branches: [master] - -jobs: - checks: - if: github.event_name != 'push' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - uses: actions/setup-node@v1 - with: - node-version: '12.x' - - name: Test Build - run: | - cd docs - if [ -e yarn.lock ]; then - yarn install --frozen-lockfile - elif [ -e package-lock.json ]; then - npm ci - else - npm i - fi - npm run build - gh-release: - if: github.event_name != 'pull_request' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - uses: actions/setup-node@v1 - with: - node-version: '12.x' - - name: Add key to allow access to repository - env: - SSH_AUTH_SOCK: /tmp/ssh_agent.sock - run: | - mkdir -p ~/.ssh - ssh-keyscan github.com >> ~/.ssh/known_hosts - echo "${{ secrets.GH_PAGES_DEPLOY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - cat <> ~/.ssh/config - Host github.com - HostName github.com - IdentityFile ~/.ssh/id_rsa - EOT - - name: Release to GitHub Pages - env: - USE_SSH: true - GIT_USER: git - run: | - cd docs - git config --global user.email "actions@gihub.com" - git config --global user.name "gh-actions" - if [ -e yarn.lock ]; then - yarn install --frozen-lockfile - elif [ -e package-lock.json ]; then - npm ci - else - npm i - fi - npx docusaurus deploy \ No newline at end of file diff --git a/.gitignore b/.gitignore index f2fb1de1..db7af65d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -/Vagrantfile -/.env \ No newline at end of file +docker-compose.override.yml +/.env +.ssh/ +.idea/ \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index af9f5b43..14c33582 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,127 +1,44 @@ -# Environment Definitions - -.api: &api - image: thecodingmachine/php:8.0-v4-cli - variables: - PHP_EXTENSIONS: gd pdo_mysql xdebug imap intl - PHP_INI_MEMORY_LIMIT: 1G - DEFAULT_LOCALE: "en" - MONOLOG_LOGGING_PATH: "php://stderr" - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: "foo" - MYSQL_USER: "foo" - MYSQL_PASSWORD: "foo" - TESTS_DATABASE_URL: "mysql://$MYSQL_USER:$MYSQL_PASSWORD@mysql:3306/$MYSQL_DATABASE?server_version=8.0" - before_script: - - cd src/api - - cp .env.dist .env - - composer install - cache: - key: - prefix: "api" - files: - - src/api/composer.lock - paths: - - src/api/vendor - policy: pull - -.webapp: &webapp - image: thecodingmachine/nodejs:14 - before_script: - - cd src/webapp - - yarn - cache: - key: - prefix: "webapp" - files: - - src/webapp/composer.json - paths: - - src/webapp/node_modules - policy: pull - -# Jobs descriptions - -.build: &build - stage: build - script: - - exit 0 - cache: - policy: pull-push - -.00_composer_static_analysis: &00_composer_static_analysis - stage: test - script: - - composer phpstan - -.01_composer_test: &01_composer_test - stage: test - script: - - composer pest - coverage: '/^.*Cov:.*?(\d+.\d+\%)/' - -.02_composer_codestyle: &02_composer_codestyle - stage: test - script: - - composer cscheck - -.00_yarn_static_analysis: &00_yarn_static_analysis - stage: test - script: - - yarn lint - -.01_yarn_test: &01_yarn_test - stage: test - script: - - yarn build - coverage: '/^\s*Lines:\s*\d+.\d+\%/' - -# Jobs in their environment - -api:build: - extends: - - .api - - .build - -api:00_composer_static_analysis: - extends: - - .api - - .00_composer_static_analysis - needs: - - api:build - -api:01_composer_test: - services: - - name: mysql:8.0 - alias: mysql - command: ["--default-authentication-plugin=mysql_native_password"] - extends: - - .api - - .01_composer_test - needs: - - api:build - -api:02_composer_codestyle: - extends: - - .api - - .02_composer_codestyle - needs: - - api:build - -webapp:build: - extends: - - .webapp - - .build - -webapp:00_yarn_static_analysis: - extends: - - .webapp - - .00_yarn_static_analysis - needs: - - webapp:build - -webapp:01_yarn_test: - extends: - - .webapp - - .01_yarn_test - needs: - - webapp:build +stages: + - build + - test + - deploy + - cleanup + +# It is shared between includes anyway +default: + retry: + max: 2 + when: + - unknown_failure + - api_failure + - stuck_or_timeout_failure + - runner_system_failure + - runner_unsupported + - stale_schedule + - job_execution_timeout + - unmet_prerequisites + - scheduler_failure + - data_integrity_failure + +variables: + GIT_STRATEGY: fetch + GIT_DEPTH: 1 + TAG_NAME: ${CI_COMMIT_REF_SLUG} + BACK_IMAGE: ${CI_REGISTRY_IMAGE}/back + BACK_IMAGE_DEV: ${BACK_IMAGE}:${TAG_NAME}-dev + BACK_IMAGE_STABLE: ${BACK_IMAGE}:${TAG_NAME} + FRONT_IMAGE: ${CI_REGISTRY_IMAGE}/front + FRONT_IMAGE_DEV: ${FRONT_IMAGE}:${TAG_NAME}-dev + FRONT_IMAGE_STABLE: ${FRONT_IMAGE}:${TAG_NAME} + FEATURE_DEPLOY_MR_ON_K8S: 1 + KUBERNETES_URL_SUFFIX: "boilerplate.test.thecodingmachine.com" + #KUBERNETES_PASSWORD_SECRET: "CHANGE-THIS-SECRET" # Define it in gitlab CI/CD variables +# DEPLOYMENT_PATH: /tcm_deployment/${CI_PROJECT_NAME} +# DEPLOYMENT_IP: PUT_YOUR_DEPLOYMENT_IP_HERE + +include: + - local: 'gitlab-ci/rules.gitlab-ci.yml' + - local: 'gitlab-ci/build.gitlab-ci.yml' + - local: 'gitlab-ci/test-back.gitlab-ci.yml' + - local: 'gitlab-ci/test-front.gitlab-ci.yml' + - local: 'gitlab-ci/deploy-k8s.gitlab-ci.yml' diff --git a/Makefile b/Makefile index 436c46b6..3a8e7f1c 100644 --- a/Makefile +++ b/Makefile @@ -1,65 +1,183 @@ -include .env +.DEFAULT_GOAL := help +SHELL := $(shell which bash) -.PHONY: up down webapp api consume vagrant +# Load .env variable +-include .env.dist +-include .env -.env: ## Setup .env from dist +.env: ## Create .env file if it's does not exist cp .env.dist .env -up: .env ## Start the Docker Compose stack. - docker-compose up -d - - -down: ## Stop the Docker Compose stack. - docker-compose down - -webapp: ## Run bash in the webapp service. - docker-compose exec webapp bash - -api: ## Run bash in the api service. - docker-compose exec api bash - -consume: ## Consume messages from the queue. - docker-compose exec api php bin/console messenger:consume async -vv - -vagrant: ## Create the Vagrantfile from the template Vagrantfile.template. - ./scripts/create-vagrantfile-from-template.sh \ - $(VAGRANT_BOX) \ - $(VAGRANT_PROJECT_NAME) \ - $(VAGRANT_MEMORY) \ - $(VAGRANT_CPUS) \ - $(VAGRANT_DOCKER_COMPOSE_VERSION) - -.PHONY: create-migrate -create-migrate: ## Create a new migration file - docker-compose exec api bin/console doctrine:database:drop --force - docker-compose exec api bin/console doctrine:database:create -n - docker-compose exec api bin/console doctrine:migrations:migrate -n - docker-compose exec api bin/console make:migration - docker-compose exec api bin/console doctrine:migrations:migrate -n - -.PHONY: graphql-print-schema -graphql-print-schema: ## Display current GraphQL Schema - docker-compose exec api ./bin/console graphqlite:dump-schema - -.PHONY: test-% lint-% -test-api: ## Launch test in api - docker-compose exec api composer yaml-lint - docker-compose exec api composer cscheck - docker-compose exec api composer phpstan - docker-compose exec api composer pest - docker-compose exec api composer deptrac - -test-webapp: ## Launch test in webapp - docker-compose exec webapp yarn lint - -lint-api: ## Launch linter in api - docker-compose exec api composer yaml-lint - docker-compose exec api composer csfix - docker-compose exec api composer cscheck - -lint-webapp: ## Launch linter in webapp - docker-compose exec webapp yarn lint:fix - docker-compose exec webapp yarn lint +.PHONY: sync-env +sync-env: .env ## Add variables who did not exist in .env (from .env.dist) + @while IFS='=' read -r k v; do \ + if [[ ! -z "$$k" && ! -z "$$v" && $${k:0:1} != '#' ]]; then \ + grep -q "^$$k=" .env; \ + if [[ $$? -ne 0 ]]; then \ + echo "Warning : $$k is declared in .env.dist but was not in .env (auto fixed)" >&2; \ + echo "# Added by autofix :" >> .env; echo "$$k=$$v" >> .env; \ + fi; \ + fi; \ + done < .env.dist + +.PHONY: bbash +bbash: sync-env ## connect to the back container + docker compose exec back bash; + +.PHONY: fbash +fbash: sync-env ## connect to the front container + docker compose exec front bash; + +.PHONY: migrate +migrate: sync-env ## Launch migration + docker compose exec back composer -- run console doctrine:migrations:migrate -n + +.PHONY: db-dev-mig +db-dev-mig: sync-env ## Force doctrine update from entities + docker compose exec back composer -- run console doctrine\:schema\:update -f + +db-mig-diff: sync-env ## Launch generate migration (recommended) from database diff + # doctrine:schema:validate --skip-sync is used to check the database mapping before generating the migration, + # skip-sync is used to skip database and mapping sync validation + docker compose exec back composer -- run console doctrine:schema:validate --skip-sync + docker compose exec back composer -- run console make:migration + +.PHONY: migrate-diff +db-migrate-diff: sync-env ## Launch generate migration (not recommended) + docker compose exec back composer -- run console doctrine:migrations:diff -n + +.PHONY: blogs +blogs: ## Display logs of back + docker compose logs back -f + +.PHONY: flogs +flogs: sync-env ## Display logs of front + docker compose logs front -f +.PHONY: init-dev +## We add `; \` to ignore error. `cp -n .env.dist .env;` could not work if .env exist already, it wont be replaced +init-dev: sync-env ## Init dev env + cp -n .env.dist .env; \ + cp -n docker-compose.override.yml.template docker-compose.override.yml; \ + if uname | grep -iq "linux\|darwin"; then \ + echo "Add $(BASE_DOMAIN) and $(API_DOMAIN) mail.${BASE_DOMAIN} and samltest.$(BASE_DOMAIN) to your /etc/hosts"; \ + if grep -q $(BASE_DOMAIN) /etc/hosts ; then echo "not adding to /etc/hosts" ; else printf "\n127.0.0.1 $(BASE_DOMAIN) $(API_DOMAIN) samltest.$(BASE_DOMAIN) mail.${BASE_DOMAIN}\n" | sudo tee -a /etc/hosts ; fi \ + fi +# +# Theses are usefull when you use docker +# +.PHONY: down +down: sync-env ## down docker compose + docker compose down + +.PHONY: up +up: sync-env ## up docker compose + DOCKER_BUILDKIT=1 docker compose up -d + docker compose logs initback back front -f + +.PHONY: fdown +fdown: sync-env ## stronger down (remove volume / image / orphans) + docker compose down -v --remove-orphans + +fup: sync-env ## stronger up (recreate all container and rebuild the image) + DOCKER_BUILDKIT=1 docker compose up -d --force-recreate --build + + +.PHONY: restart +restart: down up ## Soft Restart + +.PHONY: frestart +frestart: fdown fup ## Hard restart + + +.PHONY: fe-stop +fe-stop: sync-env ## stop front container + DOCKER_BUILDKIT=1 docker compose stop front + +.PHONY: fe-rm +fe-rm: sync-env ## remove front container + DOCKER_BUILDKIT=1 docker compose rm front -f + +.PHONY: fe-start +fe-start: sync-env ## start front container + DOCKER_BUILDKIT=1 docker compose up front -d + +.PHONY: fe-restart +fe-restart: fe-stop fe-rm fe-start ## reset front container + +.PHONY: dumpautoload +dumpautoload: sync-env ## dump the composer autoloader + docker compose exec back composer -- dumpautoload + +# +# Theses are static analyses + tests +# + +.PHONY: phpmd +phpmd: sync-env ## phpMD + docker compose exec back composer -- run phpmd + +.PHONY: cs-fix +cs-fix: sync-env ## cs-fix + docker compose exec back composer -- run cs-fix + + +.PHONY: cs-check +cs-check: sync-env ## cs-check + docker compose exec back composer -- run cs-check + +.PHONY: phpstan +phpstan: sync-env ## phpstan + docker compose exec back composer -- run phpstan + +be-yaml: + docker compose exec back console -- bin/console lint:yaml config + +.PHONY: fe-lint +fe-lint: sync-env ## lint front (fix) +.PHONY: backlint +backlint: sync-env ## phpstan + docker compose exec back composer -- run lint-all + +.PHONY: frontlint +frontlint: sync-env ## lint front (fix) + docker compose exec front yarn lint --fix + +.PHONY: frontcheck +fe-check: sync-env ## lint front (check) + docker compose exec front yarn lint + +.PHONY: ci +ci: cs-fix phpstan phpmd cs-check fe-lint ## Run all CI tools + +.PHONY: drop-db-dev +drop-db-dev: ## Drop database + docker compose exec back bin/console doctrine:schema:drop --full-database --force + +.PHONY: reset-db +reset-db: drop-db-dev migrate ## reset database and load fixtures + docker compose exec back bin/console doctrine:fixtures:load -n --append + +.PHONY: dump +dump: ## dump database in apps/back/dump/dump.sql (use git lfs) + docker compose exec mysql mysqldump -u $(DATABASE_USERNAME) -p$(DATABASE_PASSWORD) $(DATABASE_NAME) > apps/back/dump/dump.sql + gzip -f apps/back/dump/dump.sql + git lfs track ./apps/back/dump/dump.sql.gz + + +.PHONY: network-prune +network-prune: ## Prune networks + docker network prune +.PHONY: image-prune +image-prune: ## Prune images + docker image prune -a +.PHONY: system-prune +system-prune: ## Prune system + docker system prune -a +.PHONY: system-prune +system-prune-volumes: ## Prune system with --volumes /!\ Data will be lost + docker system prune -a --volumes +prune: system-prune image-prune network-prune + .PHONY: help help: ## This help. diff --git a/README.md b/README.md index edca1ea5..c7bd14a0 100644 --- a/README.md +++ b/README.md @@ -1,231 +1,150 @@ -

- Symfony Boilerplate -

-

Symfony Boilerplate

-

Documentation

+# Boilerplate TheCodingMachine ---- +# Setup the project -This is a template of a *README*. Adapt it according to the comments and your needs. - ---- - -# Symfony Boilerplate - -> Replace this title and the following description with your project name and description. - -A web application built with Nuxt.js 2, Symfony 5.4 (LTS), and GraphQL 5. - -## Setup - -### Prerequisites +``` +make init-dev +``` -#### Linux +# Merge request -Install the latest version of [Docker](https://docs.docker.com/install/) and -[Docker Compose](https://docs.docker.com/compose/install/). +To check: -#### macOS +- if entities has changed, a new migration should be created -Consider installing [Vagrant](https://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/). +### Error -Indeed, Docker currently has substantial performance issues on macOS, and using Vagrant allows us to have an almost -Linux-like experience regarding performances. +@see https://datatracker.ietf.org/doc/html/rfc7807 via symfony/serializer-pack and https://symfony.com/doc/current/controller/error_pages.html -#### Windows +For loggin: Monolog\Formatter\JsonFormatter (this is WIP) +## Database -Consider using a Linux-like terminal to run the [Makefile](Makefile) commands. -Vagrant might also be a solution regarding performances. +### Update the database +The database access is configured directly via the environment variable "DATABASE_URL", In dev: -If not possible, you may also directly run the commands specified in the [Makefile](Makefile). -For instance, instead of running `make up`, run `docker-compose up -d`. +#### HOW TO -### Hosts +- In development -Update your `hosts` file with the following entries: +During development it is safe to assume: ``` -127.0.0.1 traefik.symfony-boilerplate.localhost -127.0.0.1 symfony-boilerplate.localhost -127.0.0.1 api.symfony-boilerplate.localhost -127.0.0.1 phpmyadmin.symfony-boilerplate.localhost -127.0.0.1 minio.symfony-boilerplate.localhost -127.0.0.1 mailhog.symfony-boilerplate.localhost +composer run console -- doctrine:schema:update --force ``` -> Update the domain with the one used in your project. - -On Linux and macOS, run `sudo nano /etc/hosts` to edit it. +working -On Windows, edit the file `C:\Windows\System32\drivers\etc\hosts` with administrative privileges. +- In production -### First start - -Copy the file [.env.dist](.env.dist) to a file named `.env`. For instance: +To deploy new structures in production (IE mapping update): +1. Generate a migration ``` -cp .env.dist .env +composer run console -- doctrine:migrations:diff ``` -> Edit the [.env.dist](.env.dist) by updating the default values of `DOMAIN`, `MYSQL_DATABASE` and `APP_SECRET` -> environment variables. - ---- - -#### Vagrant user - -"Comment" the `STARTUP_COMMAND_3` and `STARTUP_COMMAND_4` environment variables from the `api` service -in the [docker-compose.yml](docker-compose.yml) file. - -Next, run: +2. Apply the migration in production ``` -docker-compose up webapp api +composer run console -- doctrine:migrations:migrate ``` -πŸ“£  This command start the `webapp` and `api` service. While booting, these services install the JavaScript -and PHP dependencies. We cannot do that directly in the Vagrant VM as `yarn` and `composer install` fail miserably the -first time. +### Create an entity -Once the services have installed the dependencies, you may stop them with: +- Entity ``` -CTRL+C -docker-compose down -``` +declare(strict_types=1); -Don't forget to uncomment the previous environments variables from the `api` service -in the [docker-compose.yml](docker-compose.yml) file. +namespace App\Modules\Dummy\Entity; +use Doctrine\ORM\Mapping as ORM; +use JsonSerializable; -Next, check there is no application running on port 80 (like Apache or another virtual machine). +#[ORM\Entity()] +class Dummy implements JsonSerializable { -If OK, run `make vagrant`, then `vagrant up`, and finally `vagrant ssh` to connect to the virtual machine. -From here, you'll be able to run all the next commands like Linux users! + #[ORM\Id()] + #[ORM\GeneratedValue(strategy: "CUSTOM")] + #[ORM\Column(type: "uuid", unique: true)] + #[ORM\CustomIdGenerator(class: \Ramsey\Uuid\Doctrine\UuidGenerator::class)] + private $id; -> Update the variable `VAGRANT_PROJECT_NAME` from the [.env](.env) and [.env.dist](.env.dist) files with -> your project name. Only use alphanumeric characters (no spaces, distinguish words with `_` or `-`). + public function jsonSerialize(): array { + return [ + "id" => $this->id + ]; ---- + } -Next, make sure there is no application running on port 80 (Vagrant users can skip this check). - -Good? You may now start all the Docker containers with the following commands: - -``` -make up +} ``` -It may take some time as each container will also set up itself, such as installing dependencies (PHP, JavaScript, etc.), -compiling sources (JavaScript), or running migrations to set up the database structure. +- Repository (here the name of the entity is event, and the domain name is event too) -**πŸ“£  In some cases, the `api` service will try to run the migrations before the `mysql` service is ready. -If so, restart the `api` service with `docker-compose up -d api`.** -The containers will be ready faster next time you run this command as the first run is doing most of the setup. +``` + Update the domain with the one used in your project. +use App\Modules\Dummy\Entity\Dummy as EntityDummy; +use Doctrine\ORM\EntityManagerInterface; +use Doctrine\ORM\EntityRepository; -You may now enter the `api` service and load the development data: +class Dummy +{ + private EntityManagerInterface $entityManager; + /** + * @var EntityRepository + */ + private EntityRepository $repository; -``` -make api -php bin/console app:fixtures:dev -exit -``` + public function __construct(EntityManagerInterface $entityManager) + { + $this->entityManager = $entityManager; + $this->repository = $this->entityManager->getRepository(EntityDummy::class); + } -**Last but not least, start the message consumer with:** - + /** + * @return iterable + */ + public function findAll(): iterable + { + return $this->repository->findAll(); + } +} ``` -make consume -``` - -## What's next? - -### Configuring Git -Git should ignore globally some folders like those generated by your IDE and Vagrant. -If not already done, you should tell Git where to find your global `.gitignore` file. -For instance, on Linux/macOS/Windows git bash: +# BASICS +## How the backend it has been created ``` -git config --global core.excludesfile '~/.gitignore' +docker run --rm --volume=`pwd`/app:/usr/src/app/:rw thecodingmachine/php:8.0-v4-apache -- bash -c "cd '/usr/src/app/' && composer create-project symfony/skeleton backend" ``` -Windows cmd: - -``` -git config --global core.excludesfile "%USERPROFILE%\.gitignore" -``` - -Windows PowerShell: - +## Install composer package inside the project ``` -git config --global core.excludesfile "$Env:USERPROFILE\.gitignore" +docker run --rm --volume=`pwd`/app/backend:/usr/src/app/:rw thecodingmachine/php:8.0-v4-apache -- bash -c "cd '/usr/src/app/' && composer require mypackage" ``` -Then create the global `.gitignore` file according to the location specified previously. - -You may now edit it, according to your environment, with: - +## Run a command ``` -# IDE -.idea -.vscode -# MacOS -.DS_Store -# Vagrant -.vagrant +docker run --rm --volume=`pwd`/app/backend:/usr/src/app/:rw thecodingmachine/php:8.0-v4-apache -- bash -c "cd '/usr/src/app/' && php bin/console debug:config monolog" ``` -### Documentations - -Make sure you have read the following documentations: - -**Day-to-day guidelines** - -* [Web application guidelines](src/webapp/README.md) -* [API guidelines](src/api/README.md) - -**In-depth explanations** - -* See [docs](docs) folder. +## Must to read -### How to stop the stack? +https://symfony.com/doc/current/configuration.html#configuration-environments -As simple as the `make up` command, run `make down` to stop the entire Docker Compose stack. +## Update the database -If you're a Vagrant user, you may also stop the virtual machine with `vagrant halt`. -If you're not going to work on the project for a while, you may also destroy -the virtual machine using `vagrant destroy`. +connect to the container then run -### How to view the logs of the Docker containers? - -All aggregated logs: - -``` -docker-compose logs -f -``` - -Logs of one service: - -``` -docker-compose logs -f SERVICE_NAME -``` - -For instance, if you want the logs of the `api` service: - -``` -docker-compose logs -f api ``` +php bin/console doctrine:sc:update --dump-sql +``` \ No newline at end of file diff --git a/Vagrantfile.template b/Vagrantfile.template deleted file mode 100644 index 025c33f9..00000000 --- a/Vagrantfile.template +++ /dev/null @@ -1,75 +0,0 @@ -# encoding: utf-8 -# -*- mode: ruby -*- -# vi: set ft=ruby : -# Box / OS -VAGRANT_BOX = '#BOX#' - -# Memorable name for your VM -VM_NAME = '#PROJECT_NAME#-vm-vagrant' - -# VM User β€” 'vagrant' by default -VM_USER = 'vagrant' - -# Username on your Mac -MAC_USER = '#MAC_USER#' - -# Host folder to sync -HOST_PATH = '#HOST_PATH#' - -# Where to sync to on Guest β€” 'vagrant' is the default user name -GUEST_PATH = '/opt/#PROJECT_NAME#' - -# # VM Port β€” uncomment this to use NAT instead of DHCP -# VM_PORT = 8080 -Vagrant.configure(2) do |config| - - # Vagrant box from Hashicorp - config.vm.box = VAGRANT_BOX - - # Actual machine name - config.vm.hostname = VM_NAME - - # Set VM name in Virtualbox - config.vm.provider "virtualbox" do |v| - v.name = VM_NAME - v.memory = #MEMORY# - v.cpus = #CPUS# - end - - #DHCP β€” comment this out if planning on using NAT instead - #config.vm.network "private_network", type: "dhcp" - config.vm.network :forwarded_port, guest: 80, host: 80 - - # # Port forwarding β€” uncomment this to use NAT instead of DHCP - # config.vm.network "forwarded_port", guest: 80, host: VM_PORT - # Sync folder - config.vm.synced_folder HOST_PATH, GUEST_PATH - - # Disable default Vagrant folder, use a unique path per project - config.vm.synced_folder '.', '/home/'+VM_USER+'', disabled: true - - #Install package for your VM - config.vm.provision "shell", inline: <<-SHELL - apt-get update -y - apt-get install -y git - apt-get install -y apt-transport-https - apt-get install -y build-essential - apt-get install -y curl - apt-get install -y gnupg-agent - apt-get install -y software-properties-common - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - apt-key fingerprint 0EBFCD88 - add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" - apt-get update -y - apt-get install -y docker-ce docker-ce-cli containerd.io - curl -L "https://github.com/docker/compose/releases/download/#DOCKER_COMPOSE_VERSION#/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - chmod +x /usr/local/bin/docker-compose - ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose - usermod -aG docker vagrant - newgrp docker - echo "cd /opt/#PROJECT_NAME#" >> /home/vagrant/.bashrc - SHELL -end \ No newline at end of file diff --git a/apps/back/.dockerignore b/apps/back/.dockerignore new file mode 100644 index 00000000..bd57f961 --- /dev/null +++ b/apps/back/.dockerignore @@ -0,0 +1,2 @@ +./var/* +.git/ \ No newline at end of file diff --git a/src/api/.env.dist b/apps/back/.env similarity index 52% rename from src/api/.env.dist rename to apps/back/.env index d320a76f..5ebc3732 100644 --- a/src/api/.env.dist +++ b/apps/back/.env @@ -1,3 +1,4 @@ +# Theses env files shall not be used. You should prefer inject env variables from DOCKER # In all environments, the following files are loaded if they exist, # the latter taking precedence over the former: # @@ -5,17 +6,19 @@ # * .env.local uncommitted file with local overrides # * .env.$APP_ENV committed environment-specific defaults # * .env.$APP_ENV.local uncommitted environment-specific overrides + # # Real environment variables win over .env files. # # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# https://symfony.com/doc/current/configuration/secrets.html # # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration ###> symfony/framework-bundle ### -APP_ENV=dev -APP_SECRET=60d39a7440d83a0c9fa9d3391688db31 +#APP_ENV=dev +#APP_SECRET=0ec29fdfe2bfce3ae4c3b8a6159354e4 ###< symfony/framework-bundle ### ###> doctrine/doctrine-bundle ### @@ -23,29 +26,9 @@ APP_SECRET=60d39a7440d83a0c9fa9d3391688db31 # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml # # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" - DATABASE_URL="mysql://root:root@127.0.0.1:3306/db_name?serverVersion=5.7" -#DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8" +# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8&charset=utf8mb4" ###< doctrine/doctrine-bundle ### -###> nelmio/cors-bundle ### -CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' -###< nelmio/cors-bundle ### - -# This file should always be updated with the environment variables used by the API. -# Keys are available under the api service in the root docker-compose.yml file. -APP_NAME='foo' -APP_DEBUG='1' -MONOLOG_LOGGING_PATH='php://stderr' -MESSENGER_TRANSPORT_DSN='redis://foo@redis:6379/messages' -STORAGE_PUBLIC_SOURCE='public.storage.s3' -STORAGE_PRIVATE_SOURCE='private.storage.s3' -STORAGE_ENDPOINT='http://minio:9000' -STORAGE_PUBLIC_BUCKET='public' -STORAGE_PRIVATE_BUCKET='private' -STORAGE_ACCESS_KEY='foo' -STORAGE_SECRET_KEY='foo' -MAILER_DSN='smtp://null:null@mailhog:1025' -MAIL_FROM_ADDRESS='no-reply@foo.localhost' -MAIL_FROM_NAME='foo' -MAIL_WEBAPP_URL='http://foo.localhost/' -MAIL_WEBAPP_UPDATE_PASSWORD_ROUTE_FORMAT='%s/update-password/%s/%s' +###> symfony/mailer ### +#MAILER_DSN=null://null +###< symfony/mailer ### diff --git a/src/api/.env.test b/apps/back/.env.test similarity index 52% rename from src/api/.env.test rename to apps/back/.env.test index 9e7162f0..cb8fdeed 100644 --- a/src/api/.env.test +++ b/apps/back/.env.test @@ -1,4 +1,6 @@ +# Theses env files shall not be used. You should prefer inject env variables from DOCKER # define your env variables for the test env here +# You should always prefer to populate the env variable from docker, we keep this for symfony compatibility KERNEL_CLASS='App\Kernel' APP_SECRET='$ecretf0rt3st' SYMFONY_DEPRECATIONS_HELPER=999999 diff --git a/src/api/.gitignore b/apps/back/.gitignore similarity index 81% rename from src/api/.gitignore rename to apps/back/.gitignore index c5e20e09..e422b44e 100644 --- a/src/api/.gitignore +++ b/apps/back/.gitignore @@ -1,5 +1,3 @@ -/coverage -/.deptrac.cache ###> symfony/framework-bundle ### /.env.local @@ -15,13 +13,17 @@ /.phpcs-cache /phpcs.xml ###< squizlabs/php_codesniffer ### - -###> phpunit/phpunit ### -/phpunit.xml -.phpunit.result.cache -###< phpunit/phpunit ### +###> friendsofphp/php-cs-fixer ### +/.php-cs-fixer.php +/.php-cs-fixer.cache +###< friendsofphp/php-cs-fixer ### ###> symfony/phpunit-bridge ### .phpunit.result.cache /phpunit.xml ###< symfony/phpunit-bridge ### + +###> phpunit/phpunit ### +/phpunit.xml +.phpunit.result.cache +###< phpunit/phpunit ### diff --git a/apps/back/001-symf.conf b/apps/back/001-symf.conf new file mode 100644 index 00000000..46c72be3 --- /dev/null +++ b/apps/back/001-symf.conf @@ -0,0 +1,17 @@ + + + + ServerName myapp.localhost + ServerAlias * + + DocumentRoot /var/www/html/public + DirectoryIndex /index.php + + AllowOverride All + Order Allow,Deny + Allow from All + FallbackResource /index.php + + # ErrorLog /var/log/apache2/project_error.log + # CustomLog /var/log/apache2/project_access.log combined + \ No newline at end of file diff --git a/apps/back/Dockerfile b/apps/back/Dockerfile new file mode 100644 index 00000000..56219459 --- /dev/null +++ b/apps/back/Dockerfile @@ -0,0 +1,62 @@ +# syntax=docker.io/docker/dockerfile:1.4 +ARG IMAGE_VERSION=php:8.2-v4 +ARG APP_ENV=prod +ARG APP_SOURCE_FILE='./' +ARG PHP_EXTENSIONS="apcu mysqli pdo_mysql intl gd xdebug" + +FROM thecodingmachine/${IMAGE_VERSION}-slim-apache as dev +ENV APP_ENV=dev +ENV APP_DEBUG=1 +ENV TEMPLATE_PHP_INI=development +ENV APACHE_DOCUMENT_ROOT="public/" +ENV PHP_EXTENSION_XDEBUG=1 \ + PHP_INI_OPCACHE__ENABLE="0" \ + PHP_INI_MEMORY_LIMIT="1G" + +FROM dev as stable + +COPY --link --chown=docker:docker ./001-symf.conf /etc/apache2/sites-enabled/001-symf.conf +COPY --link --chown=docker:docker ./bin/ /var/www/html/bin/ +COPY --link --chown=docker:docker ./.env /var/www/html/.env +COPY --link --chown=docker:docker ./composer.json /var/www/html/composer.json +COPY --link --chown=docker:docker ./composer.lock /var/www/html/composer.lock +COPY --link --chown=docker:docker ./symfony.lock /var/www/html/symfony.lock + +ENV APP_ENV=prod +ENV APP_DEBUG=0 +ENV TEMPLATE_PHP_INI=production +ENV PHP_EXTENSION_XDEBUG=0 \ + PHP_EXTENSION_MYSQLI=1 \ + PHP_EXTENSION_PDO=1 +#ENV APACHE_RUN_USER=www-data \ +# APACHE_RUN_GROUP=www-data + +ENV PHP_INI_MEMORY_LIMIT="256M" + +# OPCACHE +ENV PHP_INI_OPCACHE__ENABLE="1" + +## SYMFONY RECOMMANDATIONS +ENV PHP_INI_OPCACHE__PRELOAD="/var/www/html/config/preload.php" +ENV PHP_INI_OPCACHE__PRELOAD_USER="www-data" +# maximum memory that OPcache can use to store compiled PHP files +ENV PHP_INI_OPCACHE__MEMORY_CONSUMPTION="256" +# maximum number of files that can be stored in the cache +ENV PHP_INI_OPCACHE__MAX_ACCELERATED_FILES="20000" +# by default OPcache checks if cached files have changed their contents since they were cached +ENV PHP_INI_OPCACHE__VALIDATE_TIMESTAMPS="0" +ENV PHP_INI_REALPATH_CACHE_SIZE="4096k" +ENV PHP_INI_REALPATH_CACHE_TTL="600" + +RUN composer install --no-dev --no-scripts --no-interaction --optimize-autoloader + +# This need to be here to prevent docker to recompile composer layers at each build +COPY --link --chown=1000:1000 ./templates/ /var/www/html/templates/ +COPY --link --chown=1000:1000 ./public/ /var/www/html/public/ +COPY --link --chown=1000:1000 ./phpstan/ /var/www/html/phpstan/ +COPY --link --chown=1000:1000 ./config/ /var/www/html/config/ +COPY --link --chown=1000:1000 ./migrations/ /var/www/html/migrations/ +COPY --link --chown=1000:1000 ./src/ /var/www/html/src/ + +RUN composer dump-autoload --no-dev --classmap-authoritative +USER docker \ No newline at end of file diff --git a/apps/back/bin/console b/apps/back/bin/console new file mode 100755 index 00000000..c933dc53 --- /dev/null +++ b/apps/back/bin/console @@ -0,0 +1,17 @@ +#!/usr/bin/env php +=8.1", + "ext-ctype": "*", + "ext-iconv": "*", + "doctrine/annotations": "^1.0", + "doctrine/doctrine-bundle": "^2.7", + "doctrine/doctrine-migrations-bundle": "^3.2", + "doctrine/orm": "^2.14", + "nelmio/security-bundle": "^3.0", + "league/flysystem-aws-s3-v3": "^3.16", + "league/flysystem-bundle": "^3.2", + "league/flysystem-memory": "^3.16", + "onelogin/php-saml": "^4.1", + "phpdocumentor/reflection-docblock": "^5.3", + "phpstan/phpdoc-parser": "^1.13", + "ramsey/uuid": "^4.5", + "symfony/apache-pack": "^1.0", + "symfony/console": "6.3.*", + "symfony/dotenv": "6.3.*", + "symfony/flex": "^1.17|^2", + "symfony/framework-bundle": "6.3.*", + "symfony/mailer": "6.3.*", + "symfony/monolog-bundle": "^3.8", + "symfony/property-access": "6.3.*", + "symfony/property-info": "6.3.*", + "symfony/proxy-manager-bridge": "6.3.*", + "symfony/runtime": "6.3.*", + "symfony/security-bundle": "6.3.*", + "symfony/serializer": "6.3.*", + "symfony/string": "6.3.*", + "symfony/translation": "6.3.*", + "symfony/twig-bundle": "6.3.*", + "symfony/validator": "6.3.*", + "symfony/yaml": "6.3.*" + }, + "config": { + "allow-plugins": { + "composer/package-versions-deprecated": true, + "symfony/flex": true, + "symfony/runtime": true, + "dealerdirect/phpcodesniffer-composer-installer": true + }, + "optimize-autoloader": true, + "preferred-install": { + "*": "dist" + }, + "sort-packages": true + }, + "autoload": { + "psr-4": { + "App\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "App\\Tests\\": "tests/" + } + }, + "replace": { + "symfony/polyfill-ctype": "*", + "symfony/polyfill-iconv": "*", + "symfony/polyfill-php72": "*" + }, + "scripts": { + "auto-scripts": { + "cache:clear": "symfony-cmd", + "assets:install %PUBLIC_DIR%": "symfony-cmd" + }, + "post-install-cmd": [ + "@auto-scripts" + ], + "post-update-cmd": [ + "@auto-scripts" + ], + "phpstan": "phpstan analyse -c phpstan.neon --ansi", + "cs-check": "phpcs --standard=phpcs.xml.dist", + "cs-fix": "phpcbf --standard=phpcs.xml.dist", + "test": "php bin/phpunit", + "phpmd": "phpmd src/ ansi ./phpmd.xml", + "console": [ + "Composer\\Config::disableProcessTimeout", + "php bin/console -v --ansi" + ], + "databasemigrate": [ + "Composer\\Config::disableProcessTimeout", + "php bin/console -v --ansi" + ], + "lint-all": [ + "@phpstan", "@phpmd", "phpcbf --standard=phpcs.xml.dist || true", "@cs-check" + ] + }, + "conflict": { + "symfony/symfony": "*" + }, + "extra": { + "symfony": { + "allow-contrib": false, + "require": "6.3.*" + } + }, + "require-dev": { + "dama/doctrine-test-bundle": "^7.2", + "doctrine/coding-standard": "^10.0", + "doctrine/doctrine-fixtures-bundle": "^3.4", + "phpmd/phpmd": "^2.13", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-doctrine": "^1.3", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^9.5", + "slevomat/coding-standard": "^8.6", + "squizlabs/php_codesniffer": "^3.7", + "symfony/browser-kit": "6.3.*", + "symfony/css-selector": "6.3.*", + "symfony/maker-bundle": "^1.47", + "symfony/phpunit-bridge": "^6.3" + } +} diff --git a/src/api/composer.lock b/apps/back/composer.lock similarity index 54% rename from src/api/composer.lock rename to apps/back/composer.lock index 3fd24ea6..e504a6e0 100644 --- a/src/api/composer.lock +++ b/apps/back/composer.lock @@ -4,27 +4,31 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9f64400e013d4f2f2f9770f5cae9db63", + "content-hash": "ec666131f764a10dea9f2991c6a27bfa", "packages": [ { "name": "aws/aws-crt-php", - "version": "v1.0.2", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "3942776a8c99209908ee0b287746263725685732" + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/3942776a8c99209908ee0b287746263725685732", - "reference": "3942776a8c99209908ee0b287746263725685732", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/eb0c6e4e142224a10b08f49ebf87f32611d162b2", + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2", "shasum": "" }, "require": { "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.3" + "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." }, "type": "library", "autoload": { @@ -43,7 +47,7 @@ } ], "description": "AWS Common Runtime for PHP", - "homepage": "http://aws.amazon.com/sdkforphp", + "homepage": "https://github.com/awslabs/aws-crt-php", "keywords": [ "amazon", "aws", @@ -52,39 +56,42 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.0.2" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.4" }, - "time": "2021-09-03T22:57:30+00:00" + "time": "2023-11-08T00:42:13+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.208.10", + "version": "3.293.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "a7802ac9289e0c4de2c76cfe0ea0f11f72955754" + "reference": "1d3e952ea2f45bb0d42d7f873d1b4957bb6362c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a7802ac9289e0c4de2c76cfe0ea0f11f72955754", - "reference": "a7802ac9289e0c4de2c76cfe0ea0f11f72955754", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1d3e952ea2f45bb0d42d7f873d1b4957bb6362c4", + "reference": "1d3e952ea2f45bb0d42d7f873d1b4957bb6362c4", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.0.2", + "aws/aws-crt-php": "^1.2.3", "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^5.3.3|^6.2.1|^7.0", - "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.7.0|^2.0", + "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": ">=5.5" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", + "composer/composer": "^1.10.22", + "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", @@ -92,10 +99,11 @@ "ext-sockets": "*", "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^4.8.35|^5.4.3", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3" + "sebastian/comparator": "^1.2.3 || ^4.0", + "yoast/phpunit-polyfills": "^1.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -111,12 +119,12 @@ } }, "autoload": { - "psr-4": { - "Aws\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Aws\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -143,133 +151,31 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.208.10" - }, - "time": "2022-01-05T19:19:54+00:00" - }, - { - "name": "beberlei/porpaginas", - "version": "v1.2", - "source": { - "type": "git", - "url": "https://github.com/beberlei/porpaginas.git", - "reference": "2bd874d7c5711131367fe1f646e7afc3e17aab94" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/beberlei/porpaginas/zipball/2bd874d7c5711131367fe1f646e7afc3e17aab94", - "reference": "2bd874d7c5711131367fe1f646e7afc3e17aab94", - "shasum": "" - }, - "require-dev": { - "doctrine/orm": ">=2.2", - "knplabs/knp-components": "@stable", - "pagerfanta/pagerfanta": "@stable", - "phake/phake": "@stable", - "phpunit/phpunit": "^5.7", - "symfony/event-dispatcher": "@stable", - "twig/twig": "@stable" - }, - "suggest": { - "pagerfanta/pagerfanta": "For rendering pagination with Pagerfanta" - }, - "type": "library", - "autoload": { - "psr-0": { - "Porpaginas\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - } - ], - "description": "Library that generically solves several pagination issues with DAO/repository abstractions.", - "keywords": [ - "page", - "pagination", - "paginator", - "paging" - ], - "support": { - "issues": "https://github.com/beberlei/porpaginas/issues", - "source": "https://github.com/beberlei/porpaginas/tree/master" - }, - "time": "2017-08-31T09:40:09+00:00" - }, - { - "name": "brain-diminished/schema-version-control", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/brain-diminished/schema-version-control.git", - "reference": "48c592db9c5c7c3f521cc6bde9e27f72157c0edc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brain-diminished/schema-version-control/zipball/48c592db9c5c7c3f521cc6bde9e27f72157c0edc", - "reference": "48c592db9c5c7c3f521cc6bde9e27f72157c0edc", - "shasum": "" - }, - "require": { - "doctrine/dbal": "^2.8", - "symfony/yaml": "^4.1 | ^5" - }, - "require-dev": { - "phpunit/phpunit": "^7", - "satooshi/php-coveralls": "^1.0.1", - "thecodingmachine/dbal-fluid-schema-builder": "^1.3.0" - }, - "default-branch": true, - "type": "library", - "autoload": { - "psr-4": { - "BrainDiminished\\SchemaVersionControl\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dorian Savina", - "email": "dorian.savina@gmail.com" - } - ], - "support": { - "issues": "https://github.com/brain-diminished/schema-version-control/issues", - "source": "https://github.com/brain-diminished/schema-version-control/tree/1.0.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.293.2" }, - "time": "2020-08-02T10:02:48+00:00" + "time": "2023-12-01T19:06:15+00:00" }, { "name": "brick/math", - "version": "0.9.3", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -294,121 +200,50 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { "url": "https://github.com/BenMorel", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" } ], - "time": "2021-08-15T20:50:18+00:00" + "time": "2023-01-15T23:15:59+00:00" }, { - "name": "clue/graph", - "version": "v0.9.3", + "name": "composer/ca-bundle", + "version": "1.3.7", "source": { "type": "git", - "url": "https://github.com/graphp/graph.git", - "reference": "d1661c0a0e011a8550fa60ae5354f230d1555909" + "url": "https://github.com/composer/ca-bundle.git", + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/graphp/graph/zipball/d1661c0a0e011a8550fa60ae5354f230d1555909", - "reference": "d1661c0a0e011a8550fa60ae5354f230d1555909", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", "shasum": "" }, "require": { - "php": ">=5.3" + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "suggest": { - "graphp/algorithms": "Common graph algorithms, such as Dijkstra and Moore-Bellman-Ford (shortest path), minimum spanning tree (MST), Kruskal, Prim and many more..", - "graphp/graphviz": "GraphViz graph drawing / DOT output" + "phpstan/phpstan": "^0.12.55", + "psr/log": "^1.0", + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "type": "library", - "autoload": { - "psr-4": { - "Fhaculty\\Graph\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian LΓΌck", - "email": "christian@clue.engineering" - } - ], - "description": "GraPHP is the mathematical graph/network library written in PHP.", - "homepage": "https://github.com/graphp/graph", - "keywords": [ - "edge", - "graph", - "mathematical", - "network", - "vertex" - ], - "support": { - "issues": "https://github.com/graphp/graph/issues", - "source": "https://github.com/graphp/graph/tree/v0.9.3" - }, - "funding": [ - { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-12-30T09:22:01+00:00" - }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.4", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b174585d1fe49ceed21928a945138948cb394600" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600", - "reference": "b174585d1fe49ceed21928a945138948cb394600", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", "extra": { - "class": "PackageVersions\\Installer", "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { "psr-4": { - "PackageVersions\\": "src/PackageVersions" + "Composer\\CaBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -416,19 +251,24 @@ "MIT" ], "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, { "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "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" + ], "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.3.7" }, "funding": [ { @@ -444,34 +284,38 @@ "type": "tidelift" } ], - "time": "2021-09-13T08:41:34+00:00" + "time": "2023-08-30T09:31:38+00:00" }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "vimeo/psalm": "^4.10" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" }, "type": "library", "autoload": { @@ -514,22 +358,22 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.14.3" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/cache", - "version": "1.12.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -539,18 +383,12 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, "type": "library", "autoload": { @@ -599,7 +437,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.12.1" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -615,35 +453,38 @@ "type": "tidelift" } ], - "time": "2021-07-17T14:39:21+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/collections", - "version": "1.6.8", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + "reference": "72328a11443a0de79967104ad36ba7b30bded134" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "url": "https://api.github.com/repos/doctrine/collections/zipball/72328a11443a0de79967104ad36ba7b30bded134", + "reference": "72328a11443a0de79967104ad36ba7b30bded134", "shasum": "" }, "require": { - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.2.1" + "doctrine/coding-standard": "^12", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -682,41 +523,56 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.6.8" + "source": "https://github.com/doctrine/collections/tree/2.1.4" }, - "time": "2021-08-10T18:51:53+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2023-10-03T09:22:33+00:00" }, { "name": "doctrine/common", - "version": "3.2.1", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "e927fc2410c8723d053b8032e591cdff76587cdb" + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/e927fc2410c8723d053b8032e591cdff76587cdb", - "reference": "e927fc2410c8723d053b8032e591cdff76587cdb", + "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced", + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced", "shasum": "" }, "require": { - "doctrine/persistence": "^2.0", + "doctrine/persistence": "^2.0 || ^3.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.2.0", + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5", + "symfony/phpunit-bridge": "^6.1", "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -758,7 +614,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.2.1" + "source": "https://github.com/doctrine/common/tree/3.4.3" }, "funding": [ { @@ -774,39 +630,44 @@ "type": "tidelift" } ], - "time": "2021-12-26T22:39:45+00:00" + "time": "2022-10-09T11:47:59+00:00" }, { "name": "doctrine/dbal", - "version": "2.13.7", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3" + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/6e22f6012b42d7932674857989fcf184e9e9b1c3", - "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2021.1", - "phpstan/phpstan": "1.3.0", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.11", - "psalm/plugin-phpunit": "0.16.1", - "squizlabs/php_codesniffer": "3.6.2", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.16.1" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.42", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.13", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^5.4|^6.0", + "symfony/console": "^4.4|^5.4|^6.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -817,7 +678,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -860,14 +721,13 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.7" + "source": "https://github.com/doctrine/dbal/tree/3.7.2" }, "funding": [ { @@ -883,29 +743,33 @@ "type": "tidelift" } ], - "time": "2022-01-06T09:08:04+00:00" + "time": "2023-11-19T08:06:58+00:00" }, { "name": "doctrine/deprecations", - "version": "v0.5.3", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -924,61 +788,67 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2021-03-21T12:59:47+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.5.5", + "version": "2.11.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "5c086cbbe5327937dd6f90da075f7d421b0f28bc" + "reference": "4089f1424b724786c062aea50aae5f773449b94b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5c086cbbe5327937dd6f90da075f7d421b0f28bc", - "reference": "5c086cbbe5327937dd6f90da075f7d421b0f28bc", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", + "reference": "4089f1424b724786c062aea50aae5f773449b94b", "shasum": "" }, "require": { - "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1|^3.1", - "doctrine/persistence": "^2.2", + "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.4.18|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0|^3" + "php": "^7.4 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { - "doctrine/orm": "<2.9", - "twig/twig": "<1.34|>=2.0,<2.4" + "doctrine/annotations": ">=3.0", + "doctrine/orm": "<2.14 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.9 || ^3.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.14 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", - "psalm/plugin-phpunit": "^0.16.1", - "psalm/plugin-symfony": "^3", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", - "vimeo/psalm": "^4.7" + "phpunit/phpunit": "^9.5.26 || ^10.0", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^4", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "twig/twig": "^1.34 || ^2.12 || ^3.0", + "vimeo/psalm": "^4.30" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -1023,7 +893,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.5.5" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" }, "funding": [ { @@ -1039,38 +909,44 @@ "type": "tidelift" } ], - "time": "2022-01-06T08:56:31+00:00" + "time": "2023-11-15T20:01:50+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "c1b10bc1466e08bba82640e49c7bbcce0c9853c2" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/c1b10bc1466e08bba82640e49c7bbcce0c9853c2", - "reference": "c1b10bc1466e08bba82640e49c7bbcce0c9853c2", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0|^9.0", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^8.5|^9.5", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -1092,11 +968,11 @@ }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineMigrationsBundle", @@ -1108,7 +984,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.1" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" }, "funding": [ { @@ -1124,41 +1000,38 @@ "type": "tidelift" } ], - "time": "2021-11-11T11:08:52+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1202,7 +1075,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + "source": "https://github.com/doctrine/event-manager/tree/2.0.0" }, "funding": [ { @@ -1218,41 +1091,36 @@ "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-10-12T20:59:15+00:00" }, { "name": "doctrine/inflector", - "version": "1.4.4", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, @@ -1298,7 +1166,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/1.4.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -1314,33 +1182,34 @@ "type": "tidelift" } ], - "time": "2021-04-16T17:34:40+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -1367,7 +1236,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -1383,39 +1252,37 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1447,7 +1314,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -1463,49 +1330,51 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "doctrine/migrations", - "version": "3.3.2", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "b6e43bb5815f4dbb88c79a0fef1c669dfba52d58" + "reference": "e4e0855ea993d169c8adb50e19b014e64bbdda46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/b6e43bb5815f4dbb88c79a0fef1c669dfba52d58", - "reference": "b6e43bb5815f4dbb88c79a0fef1c669dfba52d58", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/e4e0855ea993d169c8adb50e19b014e64bbdda46", + "reference": "e4e0855ea993d169c8adb50e19b014e64bbdda46", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/dbal": "^2.11 || ^3.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.2 || ^8.0", + "composer-runtime-api": "^2", + "doctrine/dbal": "^3.5.1 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^3.4 || ^4.4.16 || ^5.0 || ^6.0", - "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" + }, + "conflict": { + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3 || ^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpstan/phpstan-symfony": "^0.12", - "phpunit/phpunit": "^8.5 || ^9.4", - "symfony/cache": "^3.4.26 || ~4.1.12 || ^4.2.7 || ^5.0 || ^6.0", - "symfony/process": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1515,12 +1384,6 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" @@ -1553,7 +1416,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.3.2" + "source": "https://github.com/doctrine/migrations/tree/3.7.1" }, "funding": [ { @@ -1569,57 +1432,59 @@ "type": "tidelift" } ], - "time": "2021-11-12T09:03:27+00:00" + "time": "2023-11-19T06:55:22+00:00" }, { "name": "doctrine/orm", - "version": "2.10.4", + "version": "2.17.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "cccb2e2fdfed2969afb3d65c5ea82bafdefbe1a7" + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/cccb2e2fdfed2969afb3d65c5ea82bafdefbe1a7", - "reference": "cccb2e2fdfed2969afb3d65c5ea82bafdefbe1a7", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1", + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", + "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", - "doctrine/dbal": "^2.13.1 || ^3.1.1", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.1", + "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^2.2", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2", + "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", - "ext-pdo": "*", - "php": "^7.1 ||^8.0", + "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php72": "^1.23", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/annotations": "<1.13 || >= 2.0" + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/annotations": "^1.13", - "doctrine/coding-standard": "^9.0", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "1.2.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "squizlabs/php_codesniffer": "3.6.2", - "symfony/cache": "^4.4 || ^5.2", + "phpstan/phpstan": "~1.4.10 || 1.10.35", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psr/log": "^1 || ^2 || ^3", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.15.0" + "vimeo/psalm": "4.30.0 || 5.15.0" }, "suggest": { + "ext-dom": "Provides support for XSD validation for XML mapping files", "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, @@ -1666,50 +1531,47 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.10.4" + "source": "https://github.com/doctrine/orm/tree/2.17.1" }, - "time": "2021-12-20T21:23:47+00:00" + "time": "2023-11-17T06:25:40+00:00" }, { "name": "doctrine/persistence", - "version": "2.2.3", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "5e7bdbbfe9811c06e1f745d1c166647d5c47d6ee" + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/5e7bdbbfe9811c06e1f745d1c166647d5c47d6ee", - "reference": "5e7bdbbfe9811c06e1f745d1c166647d5c47d6ee", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603", + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "php": "^7.1 || ^8.0", - "psr/cache": "^1.0|^2.0|^3.0" + "doctrine/event-manager": "^1 || ^2", + "php": "^7.2 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/common": "<2.10@dev" + "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/coding-standard": "^6.0 || ^9.0", + "doctrine/coding-standard": "^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "0.12.84", - "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", - "symfony/cache": "^4.4|^5.0", - "vimeo/psalm": "4.7.0" + "phpstan/phpstan": "1.9.4", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + "Doctrine\\Persistence\\": "src/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -1743,7 +1605,7 @@ } ], "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", "keywords": [ "mapper", "object", @@ -1753,22 +1615,36 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.2.3" + "source": "https://github.com/doctrine/persistence/tree/3.2.0" }, - "time": "2021-10-25T19:59:10+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2023-05-17T18:32:04+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894" + "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/20c39c2de286a9d3262cc8ed282a4ae60e265894", - "reference": "20c39c2de286a9d3262cc8ed282a4ae60e265894", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5", + "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5", "shasum": "" }, "require": { @@ -1794,7 +1670,7 @@ { "name": "Jeremy Dorn", "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" + "homepage": "https://jeremydorn.com/" } ], "description": "a PHP SQL highlighting library", @@ -1805,83 +1681,32 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.2" - }, - "time": "2021-11-05T11:11:14+00:00" - }, - { - "name": "ecodev/graphql-upload", - "version": "6.1.0", - "source": { - "type": "git", - "url": "https://github.com/Ecodev/graphql-upload.git", - "reference": "d602aa2cd421228ff5e080906f43dce32e93f4c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ecodev/graphql-upload/zipball/d602aa2cd421228ff5e080906f43dce32e93f4c3", - "reference": "d602aa2cd421228ff5e080906f43dce32e93f4c3", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.2 || ^8.0", - "psr/http-server-middleware": "^1.0", - "webonyx/graphql-php": "^14.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "@stable", - "laminas/laminas-diactoros": "@stable", - "phpstan/phpstan": "@stable", - "phpunit/phpunit": "@stable" - }, - "type": "library", - "autoload": { - "psr-4": { - "GraphQL\\Upload\\": "src" - } + "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A middleware to support file uploads in GraphQL", - "keywords": [ - "api", - "graphql", - "middleware", - "multipart", - "upload" - ], - "support": { - "issues": "https://github.com/Ecodev/graphql-upload/issues", - "source": "https://github.com/Ecodev/graphql-upload/tree/6.1.0" - }, - "time": "2020-12-02T23:44:18+00:00" + "time": "2022-05-23T21:33:49+00:00" }, { "name": "egulias/email-validator", - "version": "3.1.2", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1889,7 +1714,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1917,7 +1742,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -1925,77 +1750,26 @@ "type": "github" } ], - "time": "2021-10-11T09:18:27+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { - "name": "ezyang/htmlpurifier", - "version": "v4.14.0", + "name": "friendsofphp/proxy-manager-lts", + "version": "v1.0.16", "source": { "type": "git", - "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c", + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c", "shasum": "" }, "require": { - "php": ">=5.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "HTMLPurifier": "library/" - }, - "files": [ - "library/HTMLPurifier.composer.php" - ], - "exclude-from-classmap": [ - "/library/HTMLPurifier/Language/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Edward Z. Yang", - "email": "admin@htmlpurifier.org", - "homepage": "http://ezyang.com" - } - ], - "description": "Standards compliant HTML filter written in PHP", - "homepage": "http://htmlpurifier.org/", - "keywords": [ - "html" - ], - "support": { - "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" - }, - "time": "2021-12-25T01:21:49+00:00" - }, - { - "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.5", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", - "shasum": "" - }, - "require": { - "laminas/laminas-code": "~3.4.1|^4.0", - "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "laminas/laminas-code": "~3.4.1|^4.0", + "php": ">=7.1", + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -2006,7 +1780,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.2|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -2028,7 +1802,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" + "homepage": "https://ocramius.github.io/" }, { "name": "Nicolas Grekas", @@ -2046,7 +1820,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" }, "funding": [ { @@ -2058,140 +1832,26 @@ "type": "tidelift" } ], - "time": "2021-05-22T16:11:15+00:00" - }, - { - "name": "graphp/algorithms", - "version": "v0.8.2", - "source": { - "type": "git", - "url": "https://github.com/graphp/algorithms.git", - "reference": "abebbc44109f65c2962cd66f048ea3b8563e0a4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/graphp/algorithms/zipball/abebbc44109f65c2962cd66f048ea3b8563e0a4a", - "reference": "abebbc44109f65c2962cd66f048ea3b8563e0a4a", - "shasum": "" - }, - "require": { - "clue/graph": "~0.9.0|~0.8.0", - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "Graphp\\Algorithms\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian LΓΌck", - "email": "christian@clue.engineering" - } - ], - "description": "Common mathematical graph algorithms implemented in PHP", - "homepage": "https://github.com/graphp/algorithms", - "keywords": [ - "Graph algorithms", - "dijkstra", - "kruskal", - "minimum spanning tree", - "moore-bellman-ford", - "prim", - "shortest path" - ], - "support": { - "issues": "https://github.com/graphp/algorithms/issues", - "source": "https://github.com/graphp/algorithms/tree/v0.8.2" - }, - "time": "2020-02-20T18:01:41+00:00" - }, - { - "name": "greenlion/php-sql-parser", - "version": "v4.4.0", - "source": { - "type": "git", - "url": "https://github.com/greenlion/PHP-SQL-Parser.git", - "reference": "e38d6f0f500d4d86bee7722e2e89262eeaab7e59" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/greenlion/PHP-SQL-Parser/zipball/e38d6f0f500d4d86bee7722e2e89262eeaab7e59", - "reference": "e38d6f0f500d4d86bee7722e2e89262eeaab7e59", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "analog/analog": "^1.0.6", - "phpunit/phpunit": "^4.0.14", - "squizlabs/php_codesniffer": "^1.5.1" - }, - "type": "library", - "autoload": { - "psr-0": { - "PHPSQLParser\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Justin Swanhart", - "email": "greenlion@gmail.com", - "homepage": "http://code.google.com/u/greenlion@gmail.com/", - "role": "Owner" - }, - { - "name": "AndrΓ© Rothe", - "email": "phosco@gmx.de", - "homepage": "https://www.phosco.info", - "role": "Committer" - } - ], - "description": "A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL", - "homepage": "https://github.com/greenlion/PHP-SQL-Parser", - "keywords": [ - "creator", - "mysql", - "parser", - "sql" - ], - "support": { - "issues": "https://github.com/greenlion/PHP-SQL-Parser/issues", - "source": "https://github.com/greenlion/PHP-SQL-Parser" - }, - "time": "2021-03-28T23:13:55+00:00" + "time": "2023-05-24T07:17:17+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.1", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -2200,10 +1860,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -2213,17 +1874,18 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "7.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2280,7 +1942,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.1" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -2296,41 +1958,40 @@ "type": "tidelift" } ], - "time": "2021-12-06T18:43:05+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2364,7 +2025,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -2380,26 +2041,26 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.1.0", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -2407,17 +2068,18 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.1-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -2479,7 +2141,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.1.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -2495,33 +2157,33 @@ "type": "tidelift" } ], - "time": "2021-10-06T17:43:30+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "laminas/laminas-code", - "version": "4.5.1", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", - "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": ">=7.4, <8.2" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^1.13.2", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^9.5.10", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.13.1" + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -2531,10 +2193,7 @@ "autoload": { "psr-4": { "Laminas\\Code\\": "src/" - }, - "files": [ - "polyfill/ReflectionEnumPolyfill.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2561,141 +2220,51 @@ "type": "community_bridge" } ], - "time": "2021-12-19T18:06:55+00:00" - }, - { - "name": "laminas/laminas-diactoros", - "version": "2.8.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "0c26ef1d95b6d7e6e3943a243ba3dc0797227199" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/0c26ef1d95b6d7e6e3943a243ba3dc0797227199", - "reference": "0c26ef1d95b6d7e6e3943a243ba3dc0797227199", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0", - "zendframework/zend-diactoros": "*" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-gd": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.8.0", - "laminas/laminas-coding-standard": "~1.0.0", - "php-http/psr7-integration-tests": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.1", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Laminas\\Diactoros\\ConfigProvider", - "module": "Laminas\\Diactoros" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" - ], - "psr-4": { - "Laminas\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-17", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-diactoros/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-diactoros/issues", - "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", - "source": "https://github.com/laminas/laminas-diactoros" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-22T03:54:36+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { "name": "league/flysystem", - "version": "2.4.0", + "version": "3.22.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4a6f9f7d7b97c938f2fd25aeb9ff9a6a34c79f2f" + "reference": "d18526ee587f265f091f47bb83f1d9a001ef6f36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4a6f9f7d7b97c938f2fd25aeb9ff9a6a34c79f2f", - "reference": "4a6f9f7d7b97c938f2fd25aeb9ff9a6a34c79f2f", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d18526ee587f265f091f47bb83f1d9a001ef6f36", + "reference": "d18526ee587f265f091f47bb83f1d9a001ef6f36", "shasum": "" }, "require": { - "ext-json": "*", + "league/flysystem-local": "^3.0.0", "league/mime-type-detection": "^1.0.0", - "php": "^7.2 || ^8.0" + "php": "^8.0.2" }, "conflict": { - "guzzlehttp/ringphp": "<1.1.1" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.132.4", + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.220.0", "composer/semver": "^3.0", "ext-fileinfo": "*", - "friendsofphp/php-cs-fixer": "^3.2", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^8.5 || ^9.4", - "sabre/dav": "^4.1" + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.34", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.3.1" }, "type": "library", "autoload": { @@ -2729,45 +2298,42 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/2.4.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.22.0" }, "funding": [ { - "url": "https://offset.earth/frankdejonge", + "url": "https://ecologi.com/frankdejonge", "type": "custom" }, { "url": "https://github.com/frankdejonge", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" } ], - "time": "2022-01-04T17:09:29+00:00" + "time": "2023-12-03T18:35:53+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "2.1.0", + "version": "3.22.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "8d8edfe2541d94e6607808e3dd8484734c86eb2a" + "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/8d8edfe2541d94e6607808e3dd8484734c86eb2a", - "reference": "8d8edfe2541d94e6607808e3dd8484734c86eb2a", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/9808919ee5d819730d9582d4e1673e8d195c38d8", + "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8", "shasum": "" }, "require": { - "aws/aws-sdk-php": "^3.132.4", - "league/flysystem": "^2.0.0", + "aws/aws-sdk-php": "^3.220.0", + "league/flysystem": "^3.10.0", "league/mime-type-detection": "^1.0.0", - "php": "^7.2 || ^8.0" + "php": "^8.0.2" }, "conflict": { + "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1" }, "type": "library", @@ -2798,47 +2364,57 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/2.1.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.22.0" }, - "time": "2021-05-24T15:37:00+00:00" + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-11-18T14:03:37+00:00" }, { "name": "league/flysystem-bundle", - "version": "2.1.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-bundle.git", - "reference": "983a908d469b3ff8d7f8858ff4b390588312a69b" + "reference": "ad6ef9c0a8d918269ae5cf47da2f0a4a995bfbd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/983a908d469b3ff8d7f8858ff4b390588312a69b", - "reference": "983a908d469b3ff8d7f8858ff4b390588312a69b", + "url": "https://api.github.com/repos/thephpleague/flysystem-bundle/zipball/ad6ef9c0a8d918269ae5cf47da2f0a4a995bfbd8", + "reference": "ad6ef9c0a8d918269ae5cf47da2f0a4a995bfbd8", "shasum": "" }, "require": { - "league/flysystem": "^2.0", - "php": ">=7.2", - "symfony/config": "^4.2|^5.0|^6.0", - "symfony/dependency-injection": "^4.2|^5.0|^6.0", - "symfony/http-kernel": "^4.2|^5.0|^6.0", - "symfony/options-resolver": "^4.2|^5.0|^6.0" - }, - "conflict": { - "league/flysystem-cached-adapter": "<1.0.9" + "league/flysystem": "^3.0", + "php": ">=8.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "league/flysystem-async-aws-s3": "^2.0", - "league/flysystem-aws-s3-v3": "^2.0", - "league/flysystem-ftp": "^2.0", - "league/flysystem-google-cloud-storage": "^2.0", - "league/flysystem-memory": "^2.0", - "league/flysystem-sftp": "^2.0", - "symfony/dotenv": "^4.2|^5.0|^6.0", - "symfony/framework-bundle": "^4.2|^5.0|^6.0", - "symfony/phpunit-bridge": "^5.2", - "symfony/var-dumper": "^4.1|^5.0|^6.0", - "symfony/yaml": "^4.2|^5.0|^6.0" + "league/flysystem-async-aws-s3": "^3.1", + "league/flysystem-aws-s3-v3": "^3.1", + "league/flysystem-azure-blob-storage": "^3.1", + "league/flysystem-ftp": "^3.1", + "league/flysystem-google-cloud-storage": "^3.1", + "league/flysystem-memory": "^3.1", + "league/flysystem-read-only": "^3.15", + "league/flysystem-sftp-v3": "^3.1", + "symfony/dotenv": "^5.4 || ^6.0 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "autoload": { @@ -2856,36 +2432,37 @@ "email": "galopintitouan@gmail.com" } ], - "description": "Symfony bundle integrating Flysystem into Symfony 4.2+ applications", + "description": "Symfony bundle integrating Flysystem into Symfony 5.4+ applications", "support": { "issues": "https://github.com/thephpleague/flysystem-bundle/issues", - "source": "https://github.com/thephpleague/flysystem-bundle/tree/2.1.0" + "source": "https://github.com/thephpleague/flysystem-bundle/tree/3.3.2" }, - "time": "2021-12-14T12:21:39+00:00" + "time": "2023-12-02T17:27:51+00:00" }, { - "name": "league/flysystem-memory", - "version": "2.0.6", + "name": "league/flysystem-local", + "version": "3.22.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem-memory.git", - "reference": "f644026c705b8a501543f38cb8b745a603aa4952" + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "42dfb4eaafc4accd248180f0dd66f17073b40c4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-memory/zipball/f644026c705b8a501543f38cb8b745a603aa4952", - "reference": "f644026c705b8a501543f38cb8b745a603aa4952", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/42dfb4eaafc4accd248180f0dd66f17073b40c4c", + "reference": "42dfb4eaafc4accd248180f0dd66f17073b40c4c", "shasum": "" }, "require": { "ext-fileinfo": "*", - "league/flysystem": "^2.0.0", - "php": "^7.2 || ^8.0" + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "type": "library", "autoload": { "psr-4": { - "League\\Flysystem\\InMemory\\": "" + "League\\Flysystem\\Local\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2898,47 +2475,53 @@ "email": "info@frankdejonge.nl" } ], - "description": "In-memory filesystem adapter for Flysystem.", + "description": "Local filesystem adapter for Flysystem.", "keywords": [ "Flysystem", "file", "files", "filesystem", - "memory" + "local" ], "support": { - "issues": "https://github.com/thephpleague/flysystem-memory/issues", - "source": "https://github.com/thephpleague/flysystem-memory/tree/2.0.6" + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.22.0" }, - "time": "2021-02-12T19:24:17+00:00" + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-11-18T20:52:53+00:00" }, { - "name": "league/mime-type-detection", - "version": "1.9.0", + "name": "league/flysystem-memory", + "version": "3.19.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" + "url": "https://github.com/thephpleague/flysystem-memory.git", + "reference": "52456fb814b25a4c44414c50a6026cd7250ce835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", + "url": "https://api.github.com/repos/thephpleague/flysystem-memory/zipball/52456fb814b25a4c44414c50a6026cd7250ce835", + "reference": "52456fb814b25a4c44414c50a6026cd7250ce835", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "league/flysystem": "^3.0.0", + "php": "^8.0.2" }, "type": "library", "autoload": { "psr-4": { - "League\\MimeTypeDetection\\": "src" + "League\\Flysystem\\InMemory\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2951,104 +2534,57 @@ "email": "info@frankdejonge.nl" } ], - "description": "Mime-type detection for Flysystem", + "description": "In-memory filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "memory" + ], "support": { - "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.9.0" + "issues": "https://github.com/thephpleague/flysystem-memory/issues", + "source": "https://github.com/thephpleague/flysystem-memory/tree/3.19.0" }, "funding": [ { - "url": "https://github.com/frankdejonge", - "type": "github" + "url": "https://ecologi.com/frankdejonge", + "type": "custom" }, { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" + "url": "https://github.com/frankdejonge", + "type": "github" } ], - "time": "2021-11-21T11:48:40+00:00" + "time": "2023-11-07T08:50:56+00:00" }, { - "name": "lorenzo/pinky", - "version": "1.0.5", + "name": "league/mime-type-detection", + "version": "1.14.0", "source": { "type": "git", - "url": "https://github.com/lorenzo/pinky.git", - "reference": "2bc1a9d5696d6496df5d5682962929165a823e57" + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lorenzo/pinky/zipball/2bc1a9d5696d6496df5d5682962929165a823e57", - "reference": "2bc1a9d5696d6496df5d5682962929165a823e57", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { - "ext-xsl": "*", - "php": ">=5.6.0" + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "autoload": { - "files": [ - "src/pinky.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jose Lorenzo Rodriguez", - "email": "jose.zap@gmail.com" - } - ], - "description": "A Foundation for Emails (Inky) template transpiler", - "keywords": [ - "email", - "foundation", - "inky", - "template", - "zurb" - ], - "support": { - "issues": "https://github.com/lorenzo/pinky/issues", - "source": "https://github.com/lorenzo/pinky/tree/1.0.5" - }, - "time": "2019-09-16T21:23:31+00:00" - }, - { - "name": "maennchen/zipstream-php", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58", - "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58", - "shasum": "" - }, - "require": { - "myclabs/php-enum": "^1.5", - "php": ">= 7.1", - "psr/http-message": "^1.0", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "ext-zip": "*", - "guzzlehttp/guzzle": ">= 6.3", - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": ">= 7.5" + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { "psr-4": { - "ZipStream\\": "src/" + "League\\MimeTypeDetection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3057,182 +2593,66 @@ ], "authors": [ { - "name": "Paul Duncan", - "email": "pabs@pablotron.org" - }, - { - "name": "Jonatan MΓ€nnchen", - "email": "jonatan@maennchen.ch" - }, - { - "name": "Jesse Donat", - "email": "donatj@gmail.com" - }, - { - "name": "AndrΓ‘s KolesΓ‘r", - "email": "kolesar@kolesar.hu" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", - "keywords": [ - "stream", - "zip" - ], + "description": "Mime-type detection for Flysystem", "support": { - "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/master" + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { - "url": "https://opencollective.com/zipstream", - "type": "open_collective" - } - ], - "time": "2020-05-30T13:11:16+00:00" - }, - { - "name": "markbaker/complex", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/MarkBaker/PHPComplex.git", - "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/ab8bc271e404909db09ff2d5ffa1e538085c0f22", - "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "phpcompatibility/php-compatibility": "^9.0", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", - "squizlabs/php_codesniffer": "^3.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Complex\\": "classes/src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark Baker", - "email": "mark@lange.demon.co.uk" - } - ], - "description": "PHP Class for working with complex numbers", - "homepage": "https://github.com/MarkBaker/PHPComplex", - "keywords": [ - "complex", - "mathematics" - ], - "support": { - "issues": "https://github.com/MarkBaker/PHPComplex/issues", - "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.1" - }, - "time": "2021-06-29T15:32:53+00:00" - }, - { - "name": "markbaker/matrix", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/MarkBaker/PHPMatrix.git", - "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/c66aefcafb4f6c269510e9ac46b82619a904c576", - "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "phpcompatibility/php-compatibility": "^9.0", - "phpdocumentor/phpdocumentor": "2.*", - "phploc/phploc": "^4.0", - "phpmd/phpmd": "2.*", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", - "sebastian/phpcpd": "^4.0", - "squizlabs/php_codesniffer": "^3.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Matrix\\": "classes/src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "url": "https://github.com/frankdejonge", + "type": "github" + }, { - "name": "Mark Baker", - "email": "mark@demon-angel.eu" + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" } ], - "description": "PHP Class for working with matrices", - "homepage": "https://github.com/MarkBaker/PHPMatrix", - "keywords": [ - "mathematics", - "matrix", - "vector" - ], - "support": { - "issues": "https://github.com/MarkBaker/PHPMatrix/issues", - "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.0" - }, - "time": "2021-07-01T19:01:15+00:00" + "time": "2023-10-17T14:13:20+00:00" }, { "name": "monolog/monolog", - "version": "2.3.5", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -3247,14 +2667,13 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -3282,7 +2701,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.5" + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" }, "funding": [ { @@ -3294,33 +2713,45 @@ "type": "tidelift" } ], - "time": "2021-10-01T21:08:31+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { - "name": "mouf/classname-mapper", - "version": "v1.0.2", + "name": "mtdowling/jmespath.php", + "version": "2.7.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/classname-mapper.git", - "reference": "fa32a0ef5a45292d2240a405aed8a1aa5f04d642" + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/classname-mapper/zipball/fa32a0ef5a45292d2240a405aed8a1aa5f04d642", - "reference": "fa32a0ef5a45292d2240a405aed8a1aa5f04d642", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" }, "require-dev": { - "phpunit/phpunit": "~4.0 | ~5.0", - "satooshi/php-coveralls": "~1.0" + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" }, + "bin": [ + "bin/jp.php" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, "autoload": { + "files": [ + "src/JmesPath.php" + ], "psr-4": { - "Mouf\\Composer\\": "src/" + "JmesPath\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3329,82 +2760,74 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Provides a way to find in which PHP files a class will be looked upon.", - "homepage": "http://mouf-php.com/packages/thecodingmachine/classname-mapper", + "description": "Declaratively specify how to extract elements from a JSON document", "keywords": [ - "autoload", - "composer" + "json", + "jsonpath" ], "support": { - "issues": "https://github.com/thecodingmachine/classname-mapper/issues", - "source": "https://github.com/thecodingmachine/classname-mapper/tree/1.0" + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" }, - "time": "2019-01-17T16:26:30+00:00" + "time": "2023-08-25T10:54:48+00:00" }, { - "name": "mouf/magic-query", - "version": "v1.5.0", + "name": "nelmio/security-bundle", + "version": "v3.1.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/magic-query.git", - "reference": "7efa677ee73d7e5681f80b5f85526ab5ebe8eb41" + "url": "https://github.com/nelmio/NelmioSecurityBundle.git", + "reference": "da7cc88ae338c6b8370c45c2e5fec88d24f5595d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/magic-query/zipball/7efa677ee73d7e5681f80b5f85526ab5ebe8eb41", - "reference": "7efa677ee73d7e5681f80b5f85526ab5ebe8eb41", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/da7cc88ae338c6b8370c45c2e5fec88d24f5595d", + "reference": "da7cc88ae338c6b8370c45c2e5fec88d24f5595d", "shasum": "" }, "require": { - "doctrine/cache": "^1.5", - "greenlion/php-sql-parser": "^4.3", - "mouf/schema-analyzer": "~1.0", - "mouf/utils.common.conditioninterface": "~2.0", - "mouf/utils.common.paginable-interface": "~1.0", - "mouf/utils.common.sortable-interface": "~1.0", - "mouf/utils.value.value-interface": "~1.0", "php": "^7.4 || ^8.0", - "twig/twig": "^2.11 || ^3" - }, - "conflict": { - "mouf/database.querywriter": "< 4.0" + "symfony/framework-bundle": "^5.4 || ^6.3 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.3 || ^7.0", + "symfony/security-core": "^5.4 || ^6.3 || ^7.0", + "symfony/security-csrf": "^5.4 || ^6.3 || ^7.0", + "symfony/security-http": "^5.4 || ^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.3 || ^7.0", + "ua-parser/uap-php": "^3.4.4" }, "require-dev": { - "doctrine/dbal": "~2.5", - "phpstan/phpstan": "^0.12.82", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.1", "phpunit/phpunit": "^9.5", - "satooshi/php-coveralls": "~1.0" - }, - "suggest": { - "doctrine/dbal": "To support more databases than just MySQL and to use MagicJoin feature", - "mouf/database.querywriter": "To get a nice user interface to edit your SQL queries", - "mouf/mouf": "To get a nice user interface to edit your SQL queries" + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/browser-kit": "^5.4 || ^6.3 || ^7.0", + "symfony/cache": "^5.4 || ^6.3 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/twig-bundle": "^5.4 || ^6.3 || ^7.0", + "twig/twig": "^2.10 || ^3.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { - "mouf": { - "logo": "database.png", - "doc": [ - { - "title": "MagicParameters: automatically discard unused parameters", - "url": "doc/discard_unused_parameters.md" - }, - { - "title": "MagicJoin: let MagicQuery write JOINs for you", - "url": "doc/magic_join.md" - } - ] + "branch-alias": { + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Mouf\\Database\\": "src/Mouf/Database/", - "SQLParser\\": "src/SQLParser/" + "Nelmio\\SecurityBundle\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3413,86 +2836,106 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Nelmio", + "homepage": "http://nelm.io" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/nelmio/NelmioSecurityBundle/contributors" } ], - "description": "A very clever library to help you with SQL: generate prepared statements with a variable number of parameters, automatically writes joins... and much more!", - "homepage": "http://mouf-php.com/packages/mouf/magic-query", + "description": "Extra security-related features for Symfony: signed/encrypted cookies, HTTPS/SSL/HSTS handling, cookie session storage, ...", "keywords": [ - "database", - "mouf", - "query" + "security" ], "support": { - "issues": "https://github.com/thecodingmachine/magic-query/issues", - "source": "https://github.com/thecodingmachine/magic-query/tree/v1.5.0" + "issues": "https://github.com/nelmio/NelmioSecurityBundle/issues", + "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.1.0" }, - "time": "2021-09-23T12:41:47+00:00" + "time": "2023-12-03T08:44:55+00:00" }, { - "name": "mouf/schema-analyzer", - "version": "v1.1.5", + "name": "onelogin/php-saml", + "version": "4.1.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/schema-analyzer.git", - "reference": "bb3e99eef214fd45be56da561d6623baaaf03f4b" + "url": "https://github.com/onelogin/php-saml.git", + "reference": "b22a57ebd13e838b90df5d3346090bc37056409d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/schema-analyzer/zipball/bb3e99eef214fd45be56da561d6623baaaf03f4b", - "reference": "bb3e99eef214fd45be56da561d6623baaaf03f4b", + "url": "https://api.github.com/repos/onelogin/php-saml/zipball/b22a57ebd13e838b90df5d3346090bc37056409d", + "reference": "b22a57ebd13e838b90df5d3346090bc37056409d", "shasum": "" }, "require": { - "clue/graph": "~0.9.0", - "doctrine/cache": "^1.4.1", - "doctrine/dbal": "~2.5", - "graphp/algorithms": "~0.8.0" + "php": ">=7.3", + "robrichards/xmlseclibs": ">=3.1.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.36", - "satooshi/php-coveralls": "^1.0" + "pdepend/pdepend": "^2.8.0", + "php-coveralls/php-coveralls": "^2.0", + "phploc/phploc": "^4.0 || ^5.0 || ^6.0 || ^7.0", + "phpunit/phpunit": "^9.5", + "sebastian/phpcpd": "^4.0 || ^5.0 || ^6.0 ", + "squizlabs/php_codesniffer": "^3.5.8" + }, + "suggest": { + "ext-curl": "Install curl lib to be able to use the IdPMetadataParser for parsing remote XMLs", + "ext-dom": "Install xml lib", + "ext-openssl": "Install openssl lib in order to handle with x509 certs (require to support sign and encryption)", + "ext-zlib": "Install zlib" }, "type": "library", "autoload": { "psr-4": { - "Mouf\\Database\\SchemaAnalyzer\\": "src/" + "OneLogin\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A package that offers utility tools to analyze database schemas (on top of Doctrine DBAL)", + "description": "OneLogin PHP SAML Toolkit", + "homepage": "https://developers.onelogin.com/saml/php", + "keywords": [ + "SAML2", + "onelogin", + "saml" + ], "support": { - "issues": "https://github.com/thecodingmachine/schema-analyzer/issues", - "source": "https://github.com/thecodingmachine/schema-analyzer/tree/1.1" + "email": "sixto.garcia@onelogin.com", + "issues": "https://github.com/onelogin/php-saml/issues", + "source": "https://github.com/onelogin/php-saml/" }, - "time": "2020-08-01T21:25:10+00:00" + "time": "2022-07-15T20:44:36+00:00" }, { - "name": "mouf/utils.common.conditioninterface", - "version": "v2.0.2", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/utils.common.conditioninterface.git", - "reference": "5325ede73cf243e9c1af5b57350a7e65ae1e30b6" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/utils.common.conditioninterface/zipball/5325ede73cf243e9c1af5b57350a7e65ae1e30b6", - "reference": "5325ede73cf243e9c1af5b57350a7e65ae1e30b6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } }, - "type": "mouf-library", "autoload": { - "psr-0": { - "Mouf\\Utils\\Common\\ConditionInterface": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3501,49 +2944,59 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "This package contains one interface for condition, and a few classes that implement it. For instance, AndCondition that requires all conditions to be met, and OrCondition that requires at least one condition to be met. A condition is a class that possesses an 'isOk' method. The condition returns true if the condition is met, and false otherwise.", - "homepage": "https://github.com/thecodingmachine/utils.common.conditioninterface", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "condition", - "interface" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], "support": { - "issues": "https://github.com/thecodingmachine/utils.common.conditioninterface/issues", - "source": "https://github.com/thecodingmachine/utils.common.conditioninterface/tree/2.0" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "time": "2019-08-29T15:22:40+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "mouf/utils.common.paginable-interface", - "version": "v1.0.0", + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/utils.common.paginable-interface.git", - "reference": "9859c02ab65015742b18e48e55b3b28afd2ad5b1" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/utils.common.paginable-interface/zipball/9859c02ab65015742b18e48e55b3b28afd2ad5b1", - "reference": "9859c02ab65015742b18e48e55b3b28afd2ad5b1", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": ">=5.3.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { - "mouf": { - "logo": "logo.png" + "branch-alias": { + "dev-master": "5.x-dev" } }, "autoload": { - "psr-0": { - "Mouf\\Utils\\Common\\": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3552,51 +3005,60 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], - "description": "This package contains an interface used by objects to say they can paginate data. The concept is very simple, the object implements a paginate method that takes a limit and an offset, and that's it!", - "homepage": "https://mouf-php.com/packages/mouf/utils.common.paginate-interface", - "keywords": [ - "interface", - "mouf", - "paginate", - "paginateinterface" - ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { - "issues": "https://github.com/thecodingmachine/utils.common.paginable-interface/issues", - "source": "https://github.com/thecodingmachine/utils.common.paginable-interface/tree/1.0" + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2013-10-29T18:21:59+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { - "name": "mouf/utils.common.sortable-interface", - "version": "v1.0.0", + "name": "phpdocumentor/type-resolver", + "version": "1.7.3", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/utils.common.sortable-interface.git", - "reference": "4922d560092f68bb8a831a391d866db0cad976c2" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/utils.common.sortable-interface/zipball/4922d560092f68bb8a831a391d866db0cad976c2", - "reference": "4922d560092f68bb8a831a391d866db0cad976c2", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { - "php": ">=5.3.0" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { - "mouf": { - "logo": "logo.png" + "branch-alias": { + "dev-1.x": "1.x-dev" } }, "autoload": { - "psr-0": { - "Mouf\\Utils\\Common\\": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3605,104 +3067,90 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "This package contains an interface used by objects to say they can sort data. The concept is very simple, the object implements a sort method that takes a key (the sort column) and a direction, and that's it!", - "homepage": "https://mouf-php.com/packages/mouf/utils.common.sortable-interface", - "keywords": [ - "interface", - "mouf", - "sortable", - "sortableinterface" - ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "https://github.com/thecodingmachine/utils.common.sortable-interface/issues", - "source": "https://github.com/thecodingmachine/utils.common.sortable-interface/tree/1.0" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2013-10-29T18:21:59+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { - "name": "mouf/utils.log.psr.multi-logger", - "version": "v1.0.0", + "name": "phpstan/phpdoc-parser", + "version": "1.24.4", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/utils.log.psr.multi-logger.git", - "reference": "5af7022ead1b5e2fe8dffa34066a6f06e6efdd55" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/utils.log.psr.multi-logger/zipball/5af7022ead1b5e2fe8dffa34066a6f06e6efdd55", - "reference": "5af7022ead1b5e2fe8dffa34066a6f06e6efdd55", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": "^7.2 || ^8.0" }, - "type": "mouf-library", - "extra": { - "mouf": { - "logo": "logo.png" - } + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, + "type": "library", "autoload": { - "psr-0": { - "Mouf\\Utils\\Log\\Psr\\": "src/" + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Kevin Nguyen", - "email": "k.nguyen@thecodingmachine.com", - "homepage": "http://mouf-php.com" - } - ], - "description": "This package contains a PSR-3 compatible logger that wrap a set of loggers", - "homepage": "https://mouf-php.com/packages/mouf/utils.log.psr.multi-logger", - "keywords": [ - "error_log", - "log", - "logger" - ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { - "issues": "https://github.com/thecodingmachine/utils.log.psr.multi-logger/issues", - "source": "https://github.com/thecodingmachine/utils.log.psr.multi-logger/tree/1.0" + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" }, - "time": "2016-04-07T14:15:39+00:00" + "time": "2023-11-26T18:29:22+00:00" }, { - "name": "mouf/utils.value.value-interface", - "version": "v1.0.0", + "name": "psr/cache", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/utils.value.value-interface.git", - "reference": "3825f2734d2d88b3be1cbd480392cf0170d3170e" + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/utils.value.value-interface/zipball/3825f2734d2d88b3be1cbd480392cf0170d3170e", - "reference": "3825f2734d2d88b3be1cbd480392cf0170d3170e", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { - "mouf": { - "logo": "logo.png" + "branch-alias": { + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "Mouf\\Utils\\Value": "src/" + "psr-4": { + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3711,62 +3159,43 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "This package contains an interface used by many objects to say they represent a value that can be computed. The concept is very simple, and very powerful at the same time.", - "homepage": "https://mouf-php.com/mouf/utils.value.value-interface", + "description": "Common interface for caching libraries", "keywords": [ - "interface", - "mouf", - "value" + "cache", + "psr", + "psr-6" ], "support": { - "issues": "https://github.com/thecodingmachine/utils.value.value-interface/issues", - "source": "https://github.com/thecodingmachine/utils.value.value-interface/tree/1.0" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2013-10-29T18:22:00+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { - "name": "mtdowling/jmespath.php", - "version": "2.6.1", + "name": "psr/clock", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", - "symfony/polyfill-mbstring": "^1.17" - }, - "require-dev": { - "composer/xdebug-handler": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^7.5.15" + "php": "^7.0 || ^8.0" }, - "bin": [ - "bin/jp.php" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, "autoload": { "psr-4": { - "JmesPath\\": "src/" - }, - "files": [ - "src/JmesPath.php" - ] + "Psr\\Clock\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3774,49 +3203,51 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Declaratively specify how to extract elements from a JSON document", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "json", - "jsonpath" + "clock", + "now", + "psr", + "psr-20", + "time" ], "support": { - "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "time": "2021-06-14T00:11:39+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { - "name": "myclabs/php-enum", - "version": "1.8.3", + "name": "psr/container", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/myclabs/php-enum.git", - "reference": "b942d263c641ddb5190929ff840c68f78713e937" + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", - "reference": "b942d263c641ddb5190929ff840c68f78713e937", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.6.2" + "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "MyCLabs\\Enum\\": "src/" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3825,65 +3256,52 @@ ], "authors": [ { - "name": "PHP Enum contributors", - "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "PHP Enum implementation", - "homepage": "http://github.com/myclabs/php-enum", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "enum" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.3" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", - "type": "tidelift" - } - ], - "time": "2021-07-05T08:18:36+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { - "name": "nelmio/cors-bundle", - "version": "2.2.0", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0", - "reference": "0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "symfony/framework-bundle": "^4.3 || ^5.0 || ^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.2", - "symfony/phpunit-bridge": "^4.3 || ^5.0 || ^6.0" + "php": ">=7.2.0" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Nelmio\\CorsBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\EventDispatcher\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3891,65 +3309,49 @@ ], "authors": [ { - "name": "Nelmio", - "homepage": "http://nelm.io" - }, - { - "name": "Symfony Community", - "homepage": "https://github.com/nelmio/NelmioCorsBundle/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Symfony application", + "description": "Standard interfaces for event handling.", "keywords": [ - "api", - "cors", - "crossdomain" + "events", + "psr", + "psr-14" ], "support": { - "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.2.0" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2021-12-01T09:34:27+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "nyholm/psr7", - "version": "1.4.1", + "name": "psr/http-client", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/Nyholm/psr7.git", - "reference": "2212385b47153ea71b1c1b1374f8cb5e4f7892ec" + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/2212385b47153ea71b1c1b1374f8cb5e4f7892ec", - "reference": "2212385b47153ea71b1c1b1374f8cb5e4f7892ec", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { - "php": ">=7.1", - "php-http/message-factory": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "php-http/psr7-integration-tests": "^1.0", - "phpunit/phpunit": "^7.5 || 8.5 || 9.4", - "symfony/error-handler": "^4.4" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Nyholm\\Psr7\\": "src/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3958,76 +3360,51 @@ ], "authors": [ { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - }, - { - "name": "Martijn van der Ven", - "email": "martijn@vanderven.se" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "A fast PHP7 implementation of PSR-7", - "homepage": "https://tnyholm.se", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "psr-17", - "psr-7" + "http", + "http-client", + "psr", + "psr-18" ], "support": { - "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.4.1" + "source": "https://github.com/php-fig/http-client" }, - "funding": [ - { - "url": "https://github.com/Zegnat", - "type": "github" - }, - { - "url": "https://github.com/nyholm", - "type": "github" - } - ], - "time": "2021-07-02T08:32:20+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { - "name": "overblog/graphiql-bundle", - "version": "v0.2.1", + "name": "psr/http-factory", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/overblog/GraphiQLBundle.git", - "reference": "3161762574dcc6b264e1b6046e5fd2769e4e87c4" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overblog/GraphiQLBundle/zipball/3161762574dcc6b264e1b6046e5fd2769e4e87c4", - "reference": "3161762574dcc6b264e1b6046e5fd2769e4e87c4", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { - "php": ">=5.6", - "symfony/framework-bundle": "^3.4 || ^4.0 || ^5.0", - "symfony/twig-bundle": "^3.4 || ^4.0 || ^5.0" - }, - "require-dev": { - "overblog/graphql-bundle": ">=0.9", - "phpunit/phpunit": "^5.7 || ^6.0", - "sensio/framework-extra-bundle": "^3.0 || ^4.0 || ^5.0", - "symfony/browser-kit": "^3.4 || ^4.0 || ^5.0", - "symfony/templating": "^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0" + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "0.1-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Overblog\\GraphiQLBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4035,52 +3412,52 @@ ], "authors": [ { - "name": "Renato Mefi", - "email": "renato@mefi.in" - }, - { - "name": "Overblog", - "homepage": "http://www.over-blog.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Symfony GraphiQLBundle makes possible to render the UI into your symfony project", + "description": "Common interfaces for PSR-7 HTTP message factories", "keywords": [ - "graphiql", - "graphql" + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/overblog/GraphiQLBundle/issues", - "source": "https://github.com/overblog/GraphiQLBundle/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2020-02-03T16:17:50+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { - "name": "php-http/message-factory", - "version": "v1.0.2", + "name": "psr/http-message", + "version": "2.0", "source": { "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Http\\Message\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4089,51 +3466,51 @@ ], "authors": [ { - "name": "MΓ‘rk SΓ‘gi-KazΓ‘r", - "email": "mark.sagikazar@gmail.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "factory", "http", - "message", - "stream", - "uri" + "http-message", + "psr", + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2015-12-19T14:08:53+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "psr/log", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-2.x": "2.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4142,3023 +3519,47 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "log", + "psr", + "psr-3" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2020-06-27T09:03:43+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpoffice/phpspreadsheet", - "version": "1.21.0", - "source": { - "type": "git", - "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "1a359d2ccbb89c05f5dffb32711a95f4afc67964" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/1a359d2ccbb89c05f5dffb32711a95f4afc67964", - "reference": "1a359d2ccbb89c05f5dffb32711a95f4afc67964", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-gd": "*", - "ext-iconv": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-xml": "*", - "ext-xmlreader": "*", - "ext-xmlwriter": "*", - "ext-zip": "*", - "ext-zlib": "*", - "ezyang/htmlpurifier": "^4.13", - "maennchen/zipstream-php": "^2.1", - "markbaker/complex": "^3.0", - "markbaker/matrix": "^3.0", - "php": "^7.3 || ^8.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/simple-cache": "^1.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-master", - "dompdf/dompdf": "^1.0", - "friendsofphp/php-cs-fixer": "^3.2", - "jpgraph/jpgraph": "^4.0", - "mpdf/mpdf": "^8.0", - "phpcompatibility/php-compatibility": "^9.3", - "phpstan/phpstan": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5 || ^9.0", - "squizlabs/php_codesniffer": "^3.6", - "tecnickcom/tcpdf": "^6.4" - }, - "suggest": { - "dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)", - "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", - "mpdf/mpdf": "Option for rendering PDF with PDF Writer", - "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)" - }, - "type": "library", - "autoload": { - "psr-4": { - "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maarten Balliauw", - "homepage": "https://blog.maartenballiauw.be" - }, - { - "name": "Mark Baker", - "homepage": "https://markbakeruk.net" - }, - { - "name": "Franck Lefevre", - "homepage": "https://rootslabs.net" - }, - { - "name": "Erik Tilt" - }, - { - "name": "Adrien Crivelli" - } - ], - "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", - "keywords": [ - "OpenXML", - "excel", - "gnumeric", - "ods", - "php", - "spreadsheet", - "xls", - "xlsx" - ], - "support": { - "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.21.0" - }, - "time": "2022-01-06T11:10:08+00:00" - }, - { - "name": "psr/cache", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/2.0.0" - }, - "time": "2021-02-03T23:23:37+00:00" - }, - { - "name": "psr/container", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" - }, - "time": "2021-11-05T16:50:12+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "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" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" - }, - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/http-server-handler", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side request handler", - "keywords": [ - "handler", - "http", - "http-interop", - "psr", - "psr-15", - "psr-7", - "request", - "response", - "server" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-handler/issues", - "source": "https://github.com/php-fig/http-server-handler/tree/master" - }, - "time": "2018-10-30T16:46:14+00:00" - }, - { - "name": "psr/http-server-middleware", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "http", - "http-interop", - "middleware", - "psr", - "psr-15", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-middleware/issues", - "source": "https://github.com/php-fig/http-server-middleware/tree/master" - }, - "time": "2018-10-30T17:12:04+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" - }, - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/collection", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" - }, - "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2021-10-10T03:01:02+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.2.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "shasum": "" - }, - "require": { - "brick/math": "^0.8 || ^0.9", - "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "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", - "moontoast/math": "^1.1", - "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.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - }, - "captainhook": { - "force-install": true - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.2.3" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2021-09-25T23:10:38+00:00" - }, - { - "name": "sensio/framework-extra-bundle", - "version": "v5.6.1", - "source": { - "type": "git", - "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "430d14c01836b77c28092883d195a43ce413ee32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/430d14c01836b77c28092883d195a43ce413ee32", - "reference": "430d14c01836b77c28092883d195a43ce413ee32", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0" - }, - "conflict": { - "doctrine/doctrine-cache-bundle": "<1.3.1", - "doctrine/persistence": "<1.3" - }, - "require-dev": { - "doctrine/dbal": "^2.10|^3.0", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.5", - "nyholm/psr7": "^1.1", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/doctrine-bridge": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/monolog-bridge": "^4.0|^5.0", - "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9", - "symfony/psr-http-message-bridge": "^1.1", - "symfony/security-bundle": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "5.6.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" - }, - "exclude-from-classmap": [ - "/tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "This bundle provides a way to configure your controllers with annotations", - "keywords": [ - "annotations", - "controllers" - ], - "support": { - "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v5.6.1" - }, - "time": "2020-08-25T19:10:18+00:00" - }, - { - "name": "symfony/amqp-messenger", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "0755d69e70be3f35f83b1ad496be4d3c6a87558c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/0755d69e70be3f35f83b1ad496be4d3c6a87558c", - "reference": "0755d69e70be3f35f83b1ad496be4d3c6a87558c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/messenger": "^5.3|^6.0" - }, - "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "type": "symfony-messenger-bridge", - "autoload": { - "psr-4": { - "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" - }, - "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": "Symfony AMQP extension Messenger Bridge", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.0" - }, - "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": "2021-11-23T10:19:22+00:00" - }, - { - "name": "symfony/apache-pack", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/apache-pack.git", - "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/apache-pack/zipball/3aa5818d73ad2551281fc58a75afd9ca82622e6c", - "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c", - "shasum": "" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for Apache support in Symfony", - "support": { - "issues": "https://github.com/symfony/apache-pack/issues", - "source": "https://github.com/symfony/apache-pack/tree/master" - }, - "time": "2017-12-12T01:46:35+00:00" - }, - { - "name": "symfony/cache", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "8aad4b69a10c5c51ab54672e78995860f5e447ec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/8aad4b69a10c5c51ab54672e78995860f5e447ec", - "reference": "8aad4b69a10c5c51ab54672e78995860f5e447ec", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0", - "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" - }, - "provide": { - "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0|2.0", - "symfony/cache-implementation": "1.0|2.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides an extended PSR-6, PSR-16 (and tags) implementation", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.2" - }, - "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": "2021-12-28T17:15:56+00:00" - }, - { - "name": "symfony/cache-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ac2e168102a2e06a2624f0379bde94cd5854ced2", - "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" - }, - "suggest": { - "symfony/cache-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "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": "Generic abstractions related to caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.0" - }, - "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": "2021-08-17T14:20:01+00:00" - }, - { - "name": "symfony/config", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "2e082dae50da563c639119b7b52347a2a3db4ba5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2e082dae50da563c639119b7b52347a2a3db4ba5", - "reference": "2e082dae50da563c639119b7b52347a2a3db4ba5", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<4.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "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": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/config/tree/v5.4.2" - }, - "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": "2021-12-15T11:06:13+00:00" - }, - { - "name": "symfony/console", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a2c6b7ced2eb7799a35375fb9022519282b5405e", - "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "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": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.4.2" - }, - "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": "2021-12-20T16:11:12+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "cfcbee910e159df402603502fe387e8b677c22fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/cfcbee910e159df402603502fe387e8b677c22fd", - "reference": "cfcbee910e159df402603502fe387e8b677c22fd", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-FranΓ§ois Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.2" - }, - "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": "2021-12-16T21:58:21+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "ba94559be9738d77cd29e24b5d81cf3b89b7d628" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ba94559be9738d77cd29e24b5d81cf3b89b7d628", - "reference": "ba94559be9738d77cd29e24b5d81cf3b89b7d628", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<5.3", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" - }, - "require-dev": { - "symfony/config": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "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": "Allows you to standardize and centralize the way objects are constructed in your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.2" - }, - "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": "2021-12-29T10:10:35+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", - "shasum": "" - }, - "require": { - "php": ">=8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "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": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0" - }, - "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": "2021-11-01T23:48:49+00:00" - }, - { - "name": "symfony/doctrine-bridge", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "1afa4465ead0d1f59decc8cb6111b89848e819d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/1afa4465ead0d1f59decc8cb6111b89848e819d3", - "reference": "1afa4465ead0d1f59decc8cb6111b89848e819d3", - "shasum": "" - }, - "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "doctrine/dbal": "<2.13.1", - "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.7.4", - "phpunit/phpunit": "<5.4.3", - "symfony/cache": "<5.4", - "symfony/dependency-injection": "<4.4", - "symfony/form": "<5.1", - "symfony/http-kernel": "<5", - "symfony/messenger": "<4.4", - "symfony/property-info": "<5", - "symfony/proxy-manager-bridge": "<4.4.19", - "symfony/security-bundle": "<5", - "symfony/security-core": "<5.3", - "symfony/validator": "<5.2" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.0", - "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3.0", - "doctrine/orm": "^2.7.4", - "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/doctrine-messenger": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.1.3|^6.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.0|^6.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.3|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^5.2|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" - }, - "type": "symfony-bridge", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "" - }, - "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 integration for Doctrine with various Symfony components", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.2" - }, - "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": "2021-12-25T19:46:58+00:00" - }, - { - "name": "symfony/doctrine-messenger", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "62897fdc6bce5106405faa9ddfa005c6dced6ffc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/62897fdc6bce5106405faa9ddfa005c6dced6ffc", - "reference": "62897fdc6bce5106405faa9ddfa005c6dced6ffc", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/messenger": "^5.1|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "doctrine/dbal": "<2.13", - "doctrine/persistence": "<1.3" - }, - "require-dev": { - "doctrine/dbal": "^2.13|^3.0", - "doctrine/persistence": "^1.3|^2", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "type": "symfony-messenger-bridge", - "autoload": { - "psr-4": { - "Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": "" - }, - "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": "Symfony Doctrine Messenger Bridge", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.0" - }, - "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": "2021-11-29T15:30:56+00:00" - }, - { - "name": "symfony/dotenv", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "1f28b9b3edf9da7e2c4b295dcd1df291ccb498d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/1f28b9b3edf9da7e2c4b295dcd1df291ccb498d3", - "reference": "1f28b9b3edf9da7e2c4b295dcd1df291ccb498d3", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3" - }, - "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "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": "Registers environment variables from a .env file", - "homepage": "https://symfony.com", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.2" - }, - "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": "2021-12-16T21:52:00+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/e0c0dd0f9d4120a20158fc9aec2367d07d38bc56", - "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "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 tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.2" - }, - "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": "2021-12-19T20:02:00+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "27d39ae126352b9fa3be5e196ccf4617897be3eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/27d39ae126352b9fa3be5e196ccf4617897be3eb", - "reference": "27d39ae126352b9fa3be5e196ccf4617897be3eb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^2|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/dependency-injection": "<4.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "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 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/v5.4.0" - }, - "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": "2021-11-23T10:19:22+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", - "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "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": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0" - }, - "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": "2021-07-15T12:33:35+00:00" - }, - { - "name": "symfony/expression-language", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/expression-language.git", - "reference": "aff6ee3cf4ac1f37f5c7dad3f89f439dbe0893f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/aff6ee3cf4ac1f37f5c7dad3f89f439dbe0893f2", - "reference": "aff6ee3cf4ac1f37f5c7dad3f89f439dbe0893f2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ExpressionLanguage\\": "" - }, - "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 an engine that can compile and evaluate expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.4.0" - }, - "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": "2021-11-23T10:19:22+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/731f917dc31edcffec2c6a777f3698c33bea8f01", - "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "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/v5.4.0" - }, - "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": "2021-10-28T13:39:27+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "e77046c252be48c48a40816187ed527703c8f76c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e77046c252be48c48a40816187ed527703c8f76c", - "reference": "e77046c252be48c48a40816187ed527703c8f76c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "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": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.2" - }, - "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": "2021-12-15T11:06:13+00:00" - }, - { - "name": "symfony/flex", - "version": "v1.17.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/flex.git", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/7a79135e1dc66b30042b4d968ecba0908f9374bc", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0|^2.0", - "php": ">=7.1" - }, - "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "symfony/dotenv": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Symfony\\Flex\\Flex" - }, - "autoload": { - "psr-4": { - "Symfony\\Flex\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien.potencier@gmail.com" - } - ], - "description": "Composer plugin for Symfony", - "support": { - "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.17.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": "2021-11-29T15:39:37+00:00" - }, - { - "name": "symfony/framework-bundle", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "2e6b8b208a998a08a94be407498f21bae62a8a4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/2e6b8b208a998a08a94be407498f21bae62a8a4a", - "reference": "2e6b8b208a998a08a94be407498f21bae62a8a4a", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/cache": "^5.2|^6.0", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/routing": "^5.3|^6.0" - }, - "conflict": { - "doctrine/annotations": "<1.13.1", - "doctrine/cache": "<1.11", - "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", - "symfony/asset": "<5.3", - "symfony/console": "<5.2.5", - "symfony/dom-crawler": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/form": "<5.2", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<5.2", - "symfony/messenger": "<5.4", - "symfony/mime": "<4.4", - "symfony/property-access": "<5.3", - "symfony/property-info": "<4.4", - "symfony/security-csrf": "<5.3", - "symfony/serializer": "<5.2", - "symfony/service-contracts": ">=3.0", - "symfony/stopwatch": "<4.4", - "symfony/translation": "<5.3", - "symfony/twig-bridge": "<4.4", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.2", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<5.2" - }, - "require-dev": { - "doctrine/annotations": "^1.13.1", - "doctrine/cache": "^1.11|^2.0", - "doctrine/persistence": "^1.3|^2.0", - "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3|^6.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", - "symfony/dotenv": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.2|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/mailer": "^5.2|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/notifier": "^5.4|^6.0", - "symfony/phpunit-bridge": "^5.3|^6.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-info": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/security-bundle": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/string": "^5.0|^6.0", - "symfony/translation": "^5.3|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.2|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.10|^3.0" - }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" - }, - "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 a tight integration between Symfony components and the Symfony full-stack framework", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.4.2" - }, - "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": "2021-12-22T00:01:28+00:00" - }, - { - "name": "symfony/http-client", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "5e344f1402584a56631c81a24ec9403e3159c790" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/5e344f1402584a56631c81a24ec9403e3159c790", - "reference": "5e344f1402584a56631c81a24ec9403e3159c790", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-client-contracts": "^2.4", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2|^3" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "2.4" - }, - "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.2" - }, - "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": "2021-12-29T10:10:35+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ec82e57b5b714dbb69300d348bd840b345e24166", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "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": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.0" - }, - "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": "2021-11-03T09:24:47+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce952af52877eaf3eab5d0c08cc0ea865ed37313", - "reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "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": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.2" - }, - "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": "2021-12-28T17:15:56+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "35b7e9868953e0d1df84320bb063543369e43ef5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/35b7e9868953e0d1df84320bb063543369e43ef5", - "reference": "35b7e9868953e0d1df84320bb063543369e43ef5", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.3.7|^6.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "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 a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.2" - }, - "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": "2021-12-29T13:20:26+00:00" - }, - { - "name": "symfony/mailer", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "309ba427654351dcad9691bef817b96920ebd2cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/309ba427654351dcad9691bef817b96920ebd2cf", - "reference": "309ba427654351dcad9691bef817b96920ebd2cf", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=7.2.5", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2.6|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<4.4" + "php": ">=5.6" }, "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^4.4|^5.0|^6.0" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/getallheaders.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7167,168 +3568,69 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "Helps sending emails", - "homepage": "https://symfony.com", + "description": "A polyfill for getallheaders.", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.2" + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "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": "2021-12-11T16:33:38+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "symfony/messenger", - "version": "v5.4.2", + "name": "ramsey/collection", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/messenger.git", - "reference": "c35f9937b3bde678377ec0d5879760ad007cb500" + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/c35f9937b3bde678377ec0d5879760ad007cb500", - "reference": "c35f9937b3bde678377ec0d5879760ad007cb500", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/amqp-messenger": "^5.1|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-messenger": "^5.1|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/redis-messenger": "^5.1|^6.0" - }, - "conflict": { - "symfony/event-dispatcher": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/serializer": "<5.0" + "php": "^8.1" }, "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/serializer": "^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0" - }, - "suggest": { - "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "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" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Messenger\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Samuel Roze", - "email": "samuel.roze@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps applications send and receive messages to/from other applications or via message queues", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/messenger/tree/v5.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" + "extra": { + "captainhook": { + "force-install": true }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" } - ], - "time": "2021-12-16T21:52:00+00:00" - }, - { - "name": "symfony/mime", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/1bfd938cf9562822c05c4d00e8f92134d3c8e42d", - "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.1|^6.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.2|^6.0" }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Ramsey\\Collection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7336,382 +3638,251 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", + "description": "A PHP library for representing and manipulating collections.", "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.2" - }, - "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": "2021-12-28T17:15:56+00:00" - }, - { - "name": "symfony/monolog-bridge", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "6ce6f39536a718ec2ece37eae81c6899030fc571" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6ce6f39536a718ec2ece37eae81c6899030fc571", - "reference": "6ce6f39536a718ec2ece37eae81c6899030fc571", - "shasum": "" - }, - "require": { - "monolog/monolog": "^1.25.1|^2", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" - }, - "conflict": { - "symfony/console": "<4.4", - "symfony/http-foundation": "<5.3" - }, - "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/mailer": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", - "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", - "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." - }, - "type": "symfony-bridge", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Monolog\\": "" - }, - "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" - } + "array", + "collection", + "hash", + "map", + "queue", + "set" ], - "description": "Provides integration for Monolog with various Symfony components", - "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.0" + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/ramsey", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", "type": "tidelift" } ], - "time": "2021-11-23T10:19:22+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { - "name": "symfony/monolog-bundle", - "version": "v3.7.1", + "name": "ramsey/uuid", + "version": "4.7.5", "source": { "type": "git", - "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "fde12fc628162787a4e53877abadc30047fd868b" + "url": "https://github.com/ramsey/uuid.git", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/fde12fc628162787a4e53877abadc30047fd868b", - "reference": "fde12fc628162787a4e53877abadc30047fd868b", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { - "monolog/monolog": "~1.22 || ~2.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "captainhook/captainhook": "^5.10", + "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", + "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" }, - "type": "symfony-bundle", + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" + "captainhook": { + "force-install": true } }, "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Ramsey\\Uuid\\": "src/" + } }, "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": "Symfony MonologBundle", - "homepage": "https://symfony.com", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ - "log", - "logging" + "guid", + "identifier", + "uuid" ], "support": { - "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.1" + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/ramsey", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", "type": "tidelift" } ], - "time": "2021-11-05T10:34:29+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { - "name": "symfony/options-resolver", - "version": "v5.4.0", + "name": "robrichards/xmlseclibs", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "b0fb78576487af19c500aaddb269fd36701d4847" + "url": "https://github.com/robrichards/xmlseclibs.git", + "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b0fb78576487af19c500aaddb269fd36701d4847", - "reference": "b0fb78576487af19c500aaddb269fd36701d4847", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df", + "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "ext-openssl": "*", + "php": ">= 5.4" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "RobRichards\\XMLSecLibs\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "BSD-3-Clause" ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", + "description": "A PHP library for XML Security", + "homepage": "https://github.com/robrichards/xmlseclibs", "keywords": [ - "config", - "configuration", - "options" + "security", + "signature", + "xml", + "xmldsig" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.0" + "issues": "https://github.com/robrichards/xmlseclibs/issues", + "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.1" }, - "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": "2021-11-23T10:19:22+00:00" + "time": "2020-09-05T13:00:25+00:00" }, { - "name": "symfony/password-hasher", - "version": "v5.4.2", + "name": "symfony/apache-pack", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/password-hasher.git", - "reference": "62748882f339e2a00751af8375258cf1b66a1c57" + "url": "https://github.com/symfony/apache-pack.git", + "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/62748882f339e2a00751af8375258cf1b66a1c57", - "reference": "62748882f339e2a00751af8375258cf1b66a1c57", + "url": "https://api.github.com/repos/symfony/apache-pack/zipball/3aa5818d73ad2551281fc58a75afd9ca82622e6c", + "reference": "3aa5818d73ad2551281fc58a75afd9ca82622e6c", "shasum": "" }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/security-core": "<5.3" - }, - "require-dev": { - "symfony/console": "^5", - "symfony/security-core": "^5.3|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\PasswordHasher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, + "type": "symfony-pack", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Robin Chalas", - "email": "robin.chalas@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides password hashing utilities", - "homepage": "https://symfony.com", - "keywords": [ - "hashing", - "password" - ], + "description": "A pack for Apache support in Symfony", "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.4.2" + "issues": "https://github.com/symfony/apache-pack/issues", + "source": "https://github.com/symfony/apache-pack/tree/master" }, - "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": "2021-12-16T21:58:21+00:00" + "time": "2017-12-12T01:46:35+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", + "name": "symfony/cache", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + "url": "https://github.com/symfony/cache.git", + "reference": "8c6e84272e4febbb1fed3c5b9f3c722537c2bd55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "url": "https://api.github.com/repos/symfony/cache/zipball/8c6e84272e4febbb1fed3c5b9f3c722537c2bd55", + "reference": "8c6e84272e4febbb1fed3c5b9f3c722537c2bd55", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.3.6" }, - "suggest": { - "ext-intl": "For best performance" + "conflict": { + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/var-dumper": "<5.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + "Symfony\\Component\\Cache\\": "" }, - "files": [ - "bootstrap.php" + "classmap": [ + "Traits/ValueWrapper.php" + ], + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7728,18 +3899,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" + "caching", + "psr6" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0" + "source": "https://github.com/symfony/cache/tree/v6.3.9" }, "funding": [ { @@ -7755,47 +3922,40 @@ "type": "tidelift" } ], - "time": "2021-11-23T21:10:46+00:00" + "time": "2023-11-24T13:24:35+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", + "name": "symfony/cache-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=8.1", + "psr/cache": "^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "3.4-dev" }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7803,30 +3963,26 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" }, "funding": [ { @@ -7842,47 +3998,39 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", + "name": "symfony/clock", + "version": "v6.3.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/symfony/clock.git", + "reference": "a74086d3db70d0f06ffd84480daa556248706e98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/clock/zipball/a74086d3db70d0f06ffd84480daa556248706e98", + "reference": "a74086d3db70d0f06ffd84480daa556248706e98", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "psr/clock": "^1.0" }, - "suggest": { - "ext-intl": "For best performance" + "provide": { + "psr/clock-implementation": "1.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ - "bootstrap.php" + "Resources/now.php" ], - "classmap": [ - "Resources/stubs" + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7899,18 +4047,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Decouples applications from the system clock", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "clock", + "psr20", + "time" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" + "source": "https://github.com/symfony/clock/tree/v6.3.4" }, "funding": [ { @@ -7926,47 +4071,46 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2023-07-31T11:35:03+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", + "name": "symfony/config", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "url": "https://github.com/symfony/config.git", + "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/config/zipball/b7a63887960359e5b59b15826fa9f9be10acbe88", + "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^5.4|^6.0", + "symfony/polyfill-ctype": "~1.8" }, - "provide": { - "ext-mbstring": "*" + "conflict": { + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, - "suggest": { - "ext-mbstring": "For best performance" + "require-dev": { + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Component\\Config\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7975,25 +4119,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" + "source": "https://github.com/symfony/config/tree/v6.3.8" }, "funding": [ { @@ -8009,44 +4146,55 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2023-11-09T08:28:21+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.24.0", + "name": "symfony/console", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + "url": "https://github.com/symfony/console.git", + "reference": "0566dbd051f8648d980592c7849f5d90d2c7c60c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "url": "https://api.github.com/repos/symfony/console/zipball/0566dbd051f8648d980592c7849f5d90d2c7c60c", + "reference": "0566dbd051f8648d980592c7849f5d90d2c7c60c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Component\\Console\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8055,24 +4203,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "cli", + "command-line", + "console", + "terminal" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0" + "source": "https://github.com/symfony/console/tree/v6.3.9" }, "funding": [ { @@ -8088,44 +4236,52 @@ "type": "tidelift" } ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2023-11-20T16:36:29+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.24.0", + "name": "symfony/dependency-injection", + "version": "v6.3.10", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51383a1d9d7e93d5c3c76ddc32672de1b3e82c77", + "reference": "51383a1d9d7e93d5c3c76ddc32672de1b3e82c77", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", + "symfony/yaml": "<5.4" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" }, + "require-dev": { + "symfony/config": "^6.1", + "symfony/expression-language": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" + }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8134,28 +4290,18 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.10" }, "funding": [ { @@ -8171,44 +4317,38 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:33+00:00" + "time": "2023-12-01T14:25:58+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.24.0", + "name": "symfony/deprecation-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "3.4-dev" }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8225,16 +4365,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -8250,30 +4384,78 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:11+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { - "name": "symfony/process", - "version": "v5.4.2", + "name": "symfony/doctrine-bridge", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4" + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "8842d289d41320a0f725e996b4e58d84af398a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/2b3ba8722c4aaf3e88011be5e7f48710088fb5e4", - "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/8842d289d41320a0f725e996b4e58d84af398a9e", + "reference": "8842d289d41320a0f725e996b4e58d84af398a9e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "doctrine/event-manager": "^1.2|^2", + "doctrine/persistence": "^2|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3" }, - "type": "library", + "conflict": { + "doctrine/annotations": "<1.13.1", + "doctrine/dbal": "<2.13.1", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.12", + "symfony/cache": "<5.4", + "symfony/dependency-injection": "<6.2", + "symfony/form": "<5.4.21|>=6,<6.2.7", + "symfony/http-foundation": "<6.3", + "symfony/http-kernel": "<6.2", + "symfony/lock": "<6.3", + "symfony/messenger": "<5.4", + "symfony/property-info": "<5.4", + "symfony/security-bundle": "<5.4", + "symfony/security-core": "<6.0", + "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" + }, + "require-dev": { + "doctrine/annotations": "^1.13.1|^2", + "doctrine/collections": "^1.0|^2.0", + "doctrine/data-fixtures": "^1.1", + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.12|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^6.2", + "symfony/doctrine-messenger": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-kernel": "^6.3", + "symfony/lock": "^6.3", + "symfony/messenger": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/proxy-manager-bridge": "^5.4|^6.0", + "symfony/security-core": "^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "symfony-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Bridge\\Doctrine\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8293,10 +4475,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.2" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.8" }, "funding": [ { @@ -8312,38 +4494,37 @@ "type": "tidelift" } ], - "time": "2021-12-27T21:01:00+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { - "name": "symfony/property-access", - "version": "v5.4.2", + "name": "symfony/dotenv", + "version": "v6.3.7", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "133c62a1be8a868134c4cced928568568d6b26f8" + "url": "https://github.com/symfony/dotenv.git", + "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/133c62a1be8a868134c4cced928568568d6b26f8", - "reference": "133c62a1be8a868134c4cced928568568d6b26f8", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", + "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" + "php": ">=8.1" }, - "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" + "conflict": { + "symfony/console": "<5.4", + "symfony/process": "<5.4" }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "require-dev": { + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Component\\Dotenv\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8363,21 +4544,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Registers environment variables from a .env file", "homepage": "https://symfony.com", "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" + "dotenv", + "env", + "environment" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.2" + "source": "https://github.com/symfony/dotenv/tree/v6.3.7" }, "funding": [ { @@ -8393,51 +4568,42 @@ "type": "tidelift" } ], - "time": "2021-12-11T16:33:38+00:00" + "time": "2023-10-26T18:15:14+00:00" }, { - "name": "symfony/property-info", - "version": "v5.4.2", + "name": "symfony/error-handler", + "version": "v6.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "a32f813896ffb3b4710fca5af5b05bef600cf4f0" + "url": "https://github.com/symfony/error-handler.git", + "reference": "1f69476b64fb47105c06beef757766c376b548c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/a32f813896ffb3b4710fca5af5b05bef600cf4f0", - "reference": "a32f813896ffb3b4710fca5af5b05bef600cf4f0", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "symfony/deprecation-contracts": "<2.5" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" + "Symfony\\Component\\ErrorHandler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8448,27 +4614,19 @@ "MIT" ], "authors": [ - { - "name": "KΓ©vin Dunglas", - "email": "dunglas@gmail.com" + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", + "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", - "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" - ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.2" + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" }, "funding": [ { @@ -8484,49 +4642,48 @@ "type": "tidelift" } ], - "time": "2021-12-26T13:30:54+00:00" + "time": "2023-09-12T06:57:20+00:00" }, { - "name": "symfony/psr-http-message-bridge", - "version": "v2.1.2", + "name": "symfony/event-dispatcher", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { - "php": ">=7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, - "require-dev": { - "nyholm/psr7": "^1.1", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", - "symfony/config": "^4.4 || ^5.0 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.4@dev || ^6.0" + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-main": "2.1-dev" - } + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8543,20 +4700,13 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", - "keywords": [ - "http", - "http-message", - "psr-17", - "psr-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": { - "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" }, "funding": [ { @@ -8572,39 +4722,40 @@ "type": "tidelift" } ], - "time": "2021-11-05T13:13:39+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { - "name": "symfony/redis-messenger", - "version": "v5.4.2", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/redis-messenger.git", - "reference": "b4bf15c6b735eeb52fbbe3c402aa4428d83f9794" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/b4bf15c6b735eeb52fbbe3c402aa4428d83f9794", - "reference": "b4bf15c6b735eeb52fbbe3c402aa4428d83f9794", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/messenger": "^5.1|^6.0" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, - "require-dev": { - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } }, - "type": "symfony-messenger-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\Messenger\\Bridge\\Redis\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8612,18 +4763,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Redis extension Messenger Bridge", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.4.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -8639,52 +4798,31 @@ "type": "tidelift" } ], - "time": "2021-12-28T17:15:56+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { - "name": "symfony/routing", - "version": "v5.4.0", + "name": "symfony/filesystem", + "version": "v6.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "9eeae93c32ca86746e5d38f3679e9569981038b1" + "url": "https://github.com/symfony/filesystem.git", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9eeae93c32ca86746e5d38f3679e9569981038b1", - "reference": "9eeae93c32ca86746e5d38f3679e9569981038b1", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.3", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8704,16 +4842,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.0" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { @@ -8729,70 +4861,32 @@ "type": "tidelift" } ], - "time": "2021-11-23T10:19:22+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { - "name": "symfony/security-bundle", - "version": "v5.4.2", + "name": "symfony/finder", + "version": "v6.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/security-bundle.git", - "reference": "4da15c5a30ec90acb4dd2d27b2e046385212192e" + "url": "https://github.com/symfony/finder.git", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4da15c5a30ec90acb4dd2d27b2e046385212192e", - "reference": "4da15c5a30ec90acb4dd2d27b2e046385212192e", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", "shasum": "" }, "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^5.4|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.4|^6.0" - }, - "conflict": { - "symfony/browser-kit": "<4.4", - "symfony/console": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<5.1", - "symfony/twig-bundle": "<4.4" + "php": ">=8.1" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/ldap": "^5.3|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/filesystem": "^6.0" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\SecurityBundle\\": "" + "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8812,10 +4906,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.4.2" + "source": "https://github.com/symfony/finder/tree/v6.3.5" }, "funding": [ { @@ -8831,65 +4925,41 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:58:21+00:00" + "time": "2023-09-26T12:56:25+00:00" }, { - "name": "symfony/security-core", - "version": "v5.4.2", + "name": "symfony/flex", + "version": "v2.4.1", "source": { "type": "git", - "url": "https://github.com/symfony/security-core.git", - "reference": "11d87d17650a5b8b21da8b6df208bfc8a9b918c7" + "url": "https://github.com/symfony/flex.git", + "reference": "ae6dea68771c5fca9d172e0c0910bdd06199f6f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/11d87d17650a5b8b21da8b6df208bfc8a9b918c7", - "reference": "11d87d17650a5b8b21da8b6df208bfc8a9b918c7", + "url": "https://api.github.com/repos/symfony/flex/zipball/ae6dea68771c5fca9d172e0c0910bdd06199f6f4", + "reference": "ae6dea68771c5fca9d172e0c0910bdd06199f6f4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^1.1|^2|^3", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2|^3" - }, - "conflict": { - "symfony/event-dispatcher": "<4.4", - "symfony/http-foundation": "<5.3", - "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.4", - "symfony/validator": "<5.2" + "composer-plugin-api": "^2.1", + "php": ">=8.0" }, "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "psr/container": "^1.0|^2.0", - "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/ldap": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.2|^6.0" + "composer/composer": "^2.1", + "symfony/dotenv": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, - "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/ldap": "For using LDAP integration", - "symfony/validator": "For using the user password constraint" + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Core\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Flex\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8898,17 +4968,13 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "email": "fabien.potencier@gmail.com" } ], - "description": "Symfony Security Component - Core Library", - "homepage": "https://symfony.com", + "description": "Composer plugin for Symfony", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.4.2" + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v2.4.1" }, "funding": [ { @@ -8924,40 +4990,112 @@ "type": "tidelift" } ], - "time": "2021-12-28T17:15:56+00:00" + "time": "2023-10-30T18:35:17+00:00" }, { - "name": "symfony/security-csrf", - "version": "v5.4.0", + "name": "symfony/framework-bundle", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/symfony/security-csrf.git", - "reference": "a6bfeedc3fcaafd2eb9ce61f0eb6a95e0316a3e2" + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/a6bfeedc3fcaafd2eb9ce61f0eb6a95e0316a3e2", - "reference": "a6bfeedc3fcaafd2eb9ce61f0eb6a95e0316a3e2", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f83d20092e98c3ae8b5874b8f0787546c5c61cda", + "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4|^5.0|^6.0" + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^6.1", + "symfony/dependency-injection": "^6.3.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.1", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-foundation": "^6.3", + "symfony/http-kernel": "^6.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "^5.4|^6.0" }, "conflict": { - "symfony/http-foundation": "<5.3" - }, - "require-dev": { - "symfony/http-foundation": "^5.3|^6.0" - }, - "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." + "doctrine/annotations": "<1.13.1", + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/asset": "<5.4", + "symfony/clock": "<6.3", + "symfony/console": "<5.4", + "symfony/dom-crawler": "<6.3", + "symfony/dotenv": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<6.3", + "symfony/lock": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<6.3", + "symfony/mime": "<6.2", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4", + "symfony/security-core": "<5.4", + "symfony/security-csrf": "<5.4", + "symfony/serializer": "<6.3", + "symfony/stopwatch": "<5.4", + "symfony/translation": "<6.2.8", + "symfony/twig-bridge": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.3", + "symfony/web-profiler-bundle": "<5.4", + "symfony/workflow": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.13.1|^2", + "doctrine/persistence": "^1.3|^2|^3", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.4|^6.0", + "symfony/asset-mapper": "^6.3", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dom-crawler": "^6.3", + "symfony/dotenv": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/html-sanitizer": "^6.1", + "symfony/http-client": "^6.3", + "symfony/lock": "^5.4|^6.0", + "symfony/mailer": "^5.4|^6.0", + "symfony/messenger": "^6.3", + "symfony/mime": "^6.2", + "symfony/notifier": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/rate-limiter": "^5.4|^6.0", + "symfony/scheduler": "^6.3", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/semaphore": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/string": "^5.4|^6.0", + "symfony/translation": "^6.2.8", + "symfony/twig-bundle": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/web-link": "^5.4|^6.0", + "symfony/workflow": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0", + "twig/twig": "^2.10|^3.0" }, - "type": "library", + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Csrf\\": "" + "Symfony\\Bundle\\FrameworkBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8977,10 +5115,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - CSRF Library", + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.4.0" + "source": "https://github.com/symfony/framework-bundle/tree/v6.3.9" }, "funding": [ { @@ -8996,35 +5134,45 @@ "type": "tidelift" } ], - "time": "2021-11-23T19:07:08+00:00" + "time": "2023-11-24T10:25:33+00:00" }, { - "name": "symfony/security-guard", - "version": "v5.4.0", + "name": "symfony/http-foundation", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/symfony/security-guard.git", - "reference": "5ebbe00731ce0773108116875083a82098ddddcf" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "49a04fd3a21edc9ce503ab78e9f342805fefe780" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/5ebbe00731ce0773108116875083a82098ddddcf", - "reference": "5ebbe00731ce0773108116875083a82098ddddcf", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49a04fd3a21edc9ce503ab78e9f342805fefe780", + "reference": "49a04fd3a21edc9ce503ab78e9f342805fefe780", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15", - "symfony/security-core": "^5.0", - "symfony/security-http": "^5.3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.3" }, "require-dev": { - "psr/log": "^1|^2|^3" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Guard\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9044,10 +5192,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - Guard", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.9" }, "funding": [ { @@ -9063,53 +5211,81 @@ "type": "tidelift" } ], - "time": "2021-11-23T19:07:08+00:00" + "time": "2023-11-20T16:36:29+00:00" }, { - "name": "symfony/security-http", - "version": "v5.4.2", + "name": "symfony/http-kernel", + "version": "v6.3.10", "source": { "type": "git", - "url": "https://github.com/symfony/security-http.git", - "reference": "3682db42fc542ad4b42a2e0d064cb25e13df494a" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/3682db42fc542ad4b42a2e0d064cb25e13df494a", - "reference": "3682db42fc542ad4b42a2e0d064cb25e13df494a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8d8e7aa60593fd0a2e3c1cea08cc687314841b61", + "reference": "8d8e7aa60593fd0a2e3c1cea08cc687314841b61", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.4|^6.0" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/event-dispatcher": "<4.3", - "symfony/security-bundle": "<5.3", - "symfony/security-csrf": "<4.4" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.3.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0" + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, - "suggest": { - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.3.4", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", + "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", + "twig/twig": "^2.13|^3.0.4" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Http\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9129,10 +5305,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - HTTP Integration", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.4.2" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.10" }, "funding": [ { @@ -9148,46 +5324,52 @@ "type": "tidelift" } ], - "time": "2021-12-29T10:10:35+00:00" + "time": "2023-12-01T16:57:27+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.4.1", + "name": "symfony/mailer", + "version": "v6.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "d664541b99d6fb0247ec5ff32e87238582236204" + "url": "https://github.com/symfony/mailer.git", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204", - "reference": "d664541b99d6fb0247ec5ff32e87238582236204", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^6.2", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "ext-psr": "<1.1|>=2" + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, - "suggest": { - "symfony/service-implementation": "" + "require-dev": { + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/messenger": "^6.2", + "symfony/twig-bridge": "^6.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9195,26 +5377,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + } ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.1" + "source": "https://github.com/symfony/mailer/tree/v6.3.5" }, "funding": [ { @@ -9230,30 +5404,48 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:37:19+00:00" + "time": "2023-09-06T09:47:15+00:00" }, { - "name": "symfony/stopwatch", - "version": "v5.4.0", + "name": "symfony/mime", + "version": "v6.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "208ef96122bfed82a8f3a61458a07113a08bdcfe" + "url": "https://github.com/symfony/mime.git", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/208ef96122bfed82a8f3a61458a07113a08bdcfe", - "reference": "208ef96122bfed82a8f3a61458a07113a08bdcfe", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "~6.2.13|^6.3.2" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" + "Symfony\\Component\\Mime\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9273,10 +5465,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a way to profile code", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.0" + "source": "https://github.com/symfony/mime/tree/v6.3.5" }, "funding": [ { @@ -9292,47 +5488,47 @@ "type": "tidelift" } ], - "time": "2021-11-23T10:19:22+00:00" + "time": "2023-09-29T06:59:36+00:00" }, { - "name": "symfony/string", - "version": "v5.4.2", + "name": "symfony/monolog-bridge", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "e6a5d5ecf6589c5247d18e0e74e30b11dfd51a3d" + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "2bbfc8bd9d6f966b69eda20c66762580a0410c78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e6a5d5ecf6589c5247d18e0e74e30b11dfd51a3d", - "reference": "e6a5d5ecf6589c5247d18e0e74e30b11dfd51a3d", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/2bbfc8bd9d6f966b69eda20c66762580a0410c78", + "reference": "2bbfc8bd9d6f966b69eda20c66762580a0410c78", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "monolog/monolog": "^1.25.1|^2|^3", + "php": ">=8.1", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/console": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/security-core": "<6.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/mailer": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/security-core": "^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, - "type": "library", + "type": "symfony-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\String\\": "" + "Symfony\\Bridge\\Monolog\\": "" }, - "files": [ - "Resources/functions.php" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -9343,26 +5539,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.2" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.3.8" }, "funding": [ { @@ -9378,65 +5566,44 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:52:00+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { - "name": "symfony/translation", - "version": "v5.4.2", + "name": "symfony/monolog-bundle", + "version": "v3.10.0", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "ff8bb2107b6a549dc3c5dd9c498dcc82c9c098ca" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ff8bb2107b6a549dc3c5dd9c498dcc82c9c098ca", - "reference": "ff8bb2107b6a549dc3c5dd9c498dcc82c9c098ca", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/console": "<5.3", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" - }, - "provide": { - "symfony/translation-implementation": "2.3" + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } }, - "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\Translation\\": "" + "Symfony\\Bundle\\MonologBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9456,10 +5623,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to internationalize your application", + "description": "Symfony MonologBundle", "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.2" + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -9475,42 +5647,34 @@ "type": "tidelift" } ], - "time": "2021-12-25T19:45:36+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { - "name": "symfony/translation-contracts", - "version": "v2.5.0", + "name": "symfony/options-resolver", + "version": "v6.3.0", "source": { "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9518,26 +5682,23 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to translation", + "description": "Provides an improved replacement for the array_replace PHP function", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "config", + "configuration", + "options" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" }, "funding": [ { @@ -9553,89 +5714,36 @@ "type": "tidelift" } ], - "time": "2021-08-17T14:20:01+00:00" + "time": "2023-05-12T14:21:09+00:00" }, { - "name": "symfony/twig-bridge", - "version": "v5.4.0", + "name": "symfony/password-hasher", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/twig-bridge.git", - "reference": "faed6ad85a2f8e675820422a74c4e0d5858a6821" + "url": "https://github.com/symfony/password-hasher.git", + "reference": "82161c4bebf77900372083ec6e484b5f055b0cba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/faed6ad85a2f8e675820422a74c4e0d5858a6821", - "reference": "faed6ad85a2f8e675820422a74c4e0d5858a6821", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/82161c4bebf77900372083ec6e484b5f055b0cba", + "reference": "82161c4bebf77900372083ec6e484b5f055b0cba", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" + "php": ">=8.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<5.3", - "symfony/form": "<5.3", - "symfony/http-foundation": "<5.3", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<5.2", - "symfony/workflow": "<5.2" + "symfony/security-core": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12", - "egulias/email-validator": "^2.1.10|^3", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/console": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^5.3|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-http": "^4.4|^5.0|^6.0", - "symfony/serializer": "^5.2|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.2|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/cssinliner-extra": "^2.12|^3", - "twig/inky-extra": "^2.12|^3", - "twig/markdown-extra": "^2.12|^3" - }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security-core": "For using the SecurityExtension", - "symfony/security-csrf": "For using the CsrfExtension", - "symfony/security-http": "For using the LogoutUrlExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" + "symfony/console": "^5.4|^6.0", + "symfony/security-core": "^5.4|^6.0" }, - "type": "symfony-bridge", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bridge\\Twig\\": "" + "Symfony\\Component\\PasswordHasher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9647,18 +5755,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides integration for Twig with various Symfony components", + "description": "Provides password hashing utilities", "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.4.0" + "source": "https://github.com/symfony/password-hasher/tree/v6.3.8" }, "funding": [ { @@ -9674,61 +5786,45 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:30:56+00:00" + "time": "2023-11-06T10:58:05+00:00" }, { - "name": "symfony/twig-bundle", - "version": "v5.4.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/twig-bundle.git", - "reference": "de8634b8c604a42277c6cc7e4f0d1e9e30c5ec7f" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/de8634b8c604a42277c6cc7e4f0d1e9e30c5ec7f", - "reference": "de8634b8c604a42277c6cc7e4f0d1e9e30c5ec7f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3|^6.0", - "twig/twig": "^2.13|^3.0.4" + "php": ">=7.1" }, - "conflict": { - "symfony/dependency-injection": "<5.3", - "symfony/framework-bundle": "<5.0", - "symfony/service-contracts": ">=3.0", - "symfony/translation": "<5.0" + "suggest": { + "ext-intl": "For best performance" }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.0|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, - "type": "symfony-bundle", "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Bundle\\TwigBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9736,18 +5832,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of Twig into the Symfony full-stack framework", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -9763,84 +5867,47 @@ "type": "tidelift" } ], - "time": "2021-11-23T21:36:27+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/validator", - "version": "v5.4.2", + "name": "symfony/polyfill-intl-idn", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "6ad607e0bb8f3a8b04bf56fecb9a95ac55cea9a3" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/6ad607e0bb8f3a8b04bf56fecb9a95ac55cea9a3", - "reference": "6ad607e0bb8f3a8b04bf56fecb9a95ac55cea9a3", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2|^3" - }, - "conflict": { - "doctrine/annotations": "<1.13", - "doctrine/cache": "<1.11", - "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<5.4.3", - "symfony/dependency-injection": "<4.4", - "symfony/expression-language": "<5.1", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.4", - "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.13", - "doctrine/cache": "^1.11|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^5.1|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.3|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" }, "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Validator\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9848,18 +5915,30 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to validate values", - "homepage": "https://symfony.com", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/validator/tree/v5.4.2" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -9875,56 +5954,47 @@ "type": "tidelift" } ], - "time": "2021-12-21T11:59:32+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { - "name": "symfony/var-dumper", - "version": "v5.4.2", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1b56c32c3679002b3a42384a580e16e2600f41c1", - "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "twig/twig": "^2.13|^3.0.4" + "php": ">=7.1" }, "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "ext-intl": "For best performance" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "files": [ - "Resources/functions/dump.php" + "bootstrap.php" ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9941,14 +6011,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ - "debug", - "dump" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.2" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -9964,37 +6038,48 @@ "type": "tidelift" } ], - "time": "2021-12-29T10:10:35+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/var-exporter", - "version": "v5.4.2", + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "2360c8525815b8535caac27cbc1994e2fa8644ba" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2360c8525815b8535caac27cbc1994e2fa8644ba", - "reference": "2360c8525815b8535caac27cbc1994e2fa8644ba", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.1" }, - "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10010,18 +6095,17 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.2" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -10037,46 +6121,44 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:58:21+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { - "name": "symfony/yaml", - "version": "v5.4.2", + "name": "symfony/polyfill-php80", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/b9eb163846a61bb32dfc147f7859e274fab38b58", - "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" - }, - "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "php": ">=7.1" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -10085,18 +6167,28 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.2" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -10112,45 +6204,46 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:58:21+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "thecodingmachine/cache-utils", - "version": "v1.0.0", + "name": "symfony/polyfill-php83", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/cache-utils.git", - "reference": "e691d29893efb7452cf5b2f3f648ca22cfc3ead2" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/cache-utils/zipball/e691d29893efb7452cf5b2f3f648ca22cfc3ead2", - "reference": "e691d29893efb7452cf5b2f3f648ca22cfc3ead2", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/simple-cache": "^1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.5.9", - "satooshi/php-coveralls": "^1.0", - "symfony/cache": "^4.1.4", - "thecodingmachine/phpstan-strict-rules": "^0.11.2" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "TheCodingMachine\\CacheUtils\\": "src/" - } + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10158,57 +6251,71 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Store file related cache items easily", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/thecodingmachine/cache-utils/issues", - "source": "https://github.com/thecodingmachine/cache-utils/tree/v1.0.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, - "time": "2019-06-20T09:02:32+00:00" + "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": "2023-08-16T06:22:46+00:00" }, { - "name": "thecodingmachine/class-explorer", - "version": "v1.1.0", + "name": "symfony/property-access", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/class-explorer.git", - "reference": "433e3d058e1c971ee30e2e8b9537b2999fae0876" + "url": "https://github.com/symfony/property-access.git", + "reference": "2dc4f9da444b8f8ff592e95d570caad67924f1d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/class-explorer/zipball/433e3d058e1c971ee30e2e8b9537b2999fae0876", - "reference": "433e3d058e1c971ee30e2e8b9537b2999fae0876", + "url": "https://api.github.com/repos/symfony/property-access/zipball/2dc4f9da444b8f8ff592e95d570caad67924f1d0", + "reference": "2dc4f9da444b8f8ff592e95d570caad67924f1d0", "shasum": "" }, "require": { - "ext-hash": "*", - "mouf/classname-mapper": "^1", - "php": ">=7.1", - "psr/simple-cache": "^1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/property-info": "^5.4|^6.0" }, "require-dev": { - "maglnet/composer-require-checker": "^1.0", - "php-coveralls/php-coveralls": "^2.1", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.2.7", - "squizlabs/php_codesniffer": "^3.2.3", - "symfony/cache": "^4.1.4", - "thecodingmachine/phpstan-strict-rules": "^0.12" + "symfony/cache": "^5.4|^6.0" }, "type": "library", - "extra": { - "class": "TheCodingMachine\\ClassExplorer\\ClassExplorerPlugin", - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "autoload": { "psr-4": { - "TheCodingMachine\\ClassExplorer\\": "src/" - } + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10216,56 +6323,85 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Find the list of all your classes and more.", - "homepage": "https://github.com/thecodingmachine/class-explorer", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", "keywords": [ - "classes", + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", "reflection" ], "support": { - "issues": "https://github.com/thecodingmachine/class-explorer/issues", - "source": "https://github.com/thecodingmachine/class-explorer/tree/master" + "source": "https://github.com/symfony/property-access/tree/v6.3.2" }, - "time": "2020-01-13T08:49:12+00:00" + "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": "2023-07-13T15:26:11+00:00" }, { - "name": "thecodingmachine/dbal-fluid-schema-builder", - "version": "v1.6.1", + "name": "symfony/property-info", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/dbal-fluid-schema-builder.git", - "reference": "152c958f7093d72741835f38f6d5f77183948b43" + "url": "https://github.com/symfony/property-info.git", + "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/dbal-fluid-schema-builder/zipball/152c958f7093d72741835f38f6d5f77183948b43", - "reference": "152c958f7093d72741835f38f6d5f77183948b43", + "url": "https://api.github.com/repos/symfony/property-info/zipball/664ae7ad443d7cc591ff3e15496b954e4cefe729", + "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729", "shasum": "" }, "require": { - "doctrine/dbal": "^2.3", - "doctrine/inflector": "^1.0", - "php": ">=7.1" + "php": ">=8.1", + "symfony/string": "^5.4|^6.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<5.4" }, "require-dev": { - "phpunit/phpunit": "^6.1", - "satooshi/php-coveralls": "^1.0" + "doctrine/annotations": "^1.10.4|^2", + "phpdocumentor/reflection-docblock": "^5.2", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { "psr-4": { - "TheCodingMachine\\FluidSchema\\": "src/" - } + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10273,79 +6409,74 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com" + "name": "KΓ©vin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Build and modify your database schema using Doctrine DBAL and a fluid syntax.", + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], "support": { - "issues": "https://github.com/thecodingmachine/dbal-fluid-schema-builder/issues", - "source": "https://github.com/thecodingmachine/dbal-fluid-schema-builder/tree/v1.6.1" + "source": "https://github.com/symfony/property-info/tree/v6.3.9" }, - "time": "2021-01-06T15:22:29+00:00" + "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": "2023-11-24T11:57:32+00:00" }, { - "name": "thecodingmachine/graphqlite", - "version": "v5.0.2", + "name": "symfony/proxy-manager-bridge", + "version": "v6.3.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/graphqlite.git", - "reference": "21bc850eb24c056106f66a58137d2a1680dde801" + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/graphqlite/zipball/21bc850eb24c056106f66a58137d2a1680dde801", - "reference": "21bc850eb24c056106f66a58137d2a1680dde801", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39", + "reference": "7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.13", - "ext-json": "*", - "php": ">=7.2", - "phpdocumentor/reflection-docblock": "^4.3 || ^5.0", - "phpdocumentor/type-resolver": "^1.4", - "psr/container": "^1", - "psr/http-factory": "^1", - "psr/http-message": "^1.0.1", - "psr/http-server-handler": "^1", - "psr/http-server-middleware": "^1", - "psr/simple-cache": "^1.0.1", - "symfony/cache": "^4.3 | ^5", - "symfony/expression-language": "^4 | ^5", - "thecodingmachine/cache-utils": "^1", - "thecodingmachine/class-explorer": "^1.1.0", - "webmozart/assert": "^1.10", - "webonyx/graphql-php": "^v14.9.0" + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=8.1", + "symfony/dependency-injection": "^6.3", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "beberlei/porpaginas": "^1.2", - "doctrine/coding-standard": "^9.0", - "ecodev/graphql-upload": "^4.0 || ^5.0 || ^6.0", - "laminas/laminas-diactoros": "^2", - "mouf/picotainer": "^1.1", - "myclabs/php-enum": "^1.6.6", - "php-coveralls/php-coveralls": "^2.1", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^0.12.94", - "phpstan/phpstan-webmozart-assert": "^0.12.15", - "phpunit/phpunit": "^8.5.19||^9.5.8", - "thecodingmachine/phpstan-strict-rules": "^0.12.1" - }, - "suggest": { - "beberlei/porpaginas": "If you want automatic pagination in your GraphQL types", - "ecodev/graphql-upload": "If you want to support file upload inside GraphQL input types" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } + "symfony/config": "^6.1" }, + "type": "symfony-bridge", "autoload": { "psr-4": { - "TheCodingMachine\\GraphQLite\\": "src/" - } + "Symfony\\Bridge\\ProxyManager\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10353,78 +6484,76 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Write your GraphQL queries in simple to write controllers (using webonyx/graphql-php).", + "description": "Provides integration for ProxyManager with various Symfony components", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thecodingmachine/graphqlite/issues", - "source": "https://github.com/thecodingmachine/graphqlite/tree/v5.0.2" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.3.0" }, - "time": "2021-11-13T20:17:35+00:00" + "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": "2023-05-26T07:49:33+00:00" }, { - "name": "thecodingmachine/graphqlite-bundle", - "version": "v5.0.0", + "name": "symfony/routing", + "version": "v6.3.10", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/graphqlite-bundle.git", - "reference": "b7682aa13ccec13f8eb0073b8ed89f7a757d831f" + "url": "https://github.com/symfony/routing.git", + "reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/graphqlite-bundle/zipball/b7682aa13ccec13f8eb0073b8ed89f7a757d831f", - "reference": "b7682aa13ccec13f8eb0073b8ed89f7a757d831f", + "url": "https://api.github.com/repos/symfony/routing/zipball/cb7404232d49dd11cc971b832fcbd49e7c22b049", + "reference": "cb7404232d49dd11cc971b832fcbd49e7c22b049", "shasum": "" }, "require": { - "doctrine/annotations": "^1.13", - "ext-json": "*", - "laminas/laminas-diactoros": "^2.2.2", - "nyholm/psr7": "^1.1", - "overblog/graphiql-bundle": "^0.1.2 | ^0.2", - "php": ">=7.2", - "symfony/console": "^4.1.9 | ^5", - "symfony/framework-bundle": "^4.2 || ^5", - "symfony/psr-http-message-bridge": "^2.0", - "symfony/translation": "^4.2 || ^5", - "symfony/validator": "^4.2 || ^5", - "thecodingmachine/cache-utils": "^1", - "thecodingmachine/graphqlite": "^5.0", - "thecodingmachine/graphqlite-symfony-validator-bridge": "^5.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "mouf/classname-mapper": "<1.0.2", - "phpdocumentor/type-resolver": "<1.4", - "symfony/event-dispatcher": "<4.3", - "symfony/routing": "<4.3", - "symfony/security-core": "<4.3" + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "beberlei/porpaginas": "^1.2", - "composer/package-versions-deprecated": "^1.8", - "php-coveralls/php-coveralls": "^2.1.0", - "phpstan/phpstan": "^0.12.90", - "phpstan/phpstan-webmozart-assert": "^0.12.12", - "symfony/phpunit-bridge": "^5.3", - "symfony/security-bundle": "^4.2 || ^5", - "symfony/yaml": "^4.2 || ^5", - "thecodingmachine/phpstan-strict-rules": "^v0.12.1" - }, - "suggest": { - "symfony/security-bundle": "To use @Logged or @Right annotations" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, + "type": "library", "autoload": { "psr-4": { - "TheCodingMachine\\GraphQLite\\Bundle\\": "" - } + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10432,62 +6561,81 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Symfony bundle for thecodingmachine/graphqlite.", - "homepage": "https://github.com/thecodingmachine/graphqlite", + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", "keywords": [ - "bundle", - "graphql", - "symfony" + "router", + "routing", + "uri", + "url" ], "support": { - "issues": "https://github.com/thecodingmachine/graphqlite-bundle/issues", - "source": "https://github.com/thecodingmachine/graphqlite-bundle/tree/v5.0.0" + "source": "https://github.com/symfony/routing/tree/v6.3.10" }, - "time": "2021-11-09T14:07:36+00:00" + "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": "2023-12-01T14:25:58+00:00" }, { - "name": "thecodingmachine/graphqlite-symfony-validator-bridge", - "version": "v5.0.0", + "name": "symfony/runtime", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/graphqlite-symfony-validator-bridge.git", - "reference": "a2a9ae187d5069f8b4cfff3d250ede7e61fa3d95" + "url": "https://github.com/symfony/runtime.git", + "reference": "d5c09493647a0c1a16e6c8da308098e840d1164f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/graphqlite-symfony-validator-bridge/zipball/a2a9ae187d5069f8b4cfff3d250ede7e61fa3d95", - "reference": "a2a9ae187d5069f8b4cfff3d250ede7e61fa3d95", + "url": "https://api.github.com/repos/symfony/runtime/zipball/d5c09493647a0c1a16e6c8da308098e840d1164f", + "reference": "d5c09493647a0c1a16e6c8da308098e840d1164f", "shasum": "" }, "require": { - "doctrine/annotations": "^1.6", - "php": ">=7.2", - "symfony/validator": "^4.2 | ^5", - "thecodingmachine/graphqlite": "^5.0" + "composer-plugin-api": "^1.0|^2.0", + "php": ">=8.1" + }, + "conflict": { + "symfony/dotenv": "<5.4" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "mouf/picotainer": "^1.1", - "php-coveralls/php-coveralls": "^2.1.0", - "phpstan/phpstan": "^0.12.14", - "phpunit/phpunit": "^8.4.1", - "symfony/translation": "^4" + "composer/composer": "^1.0.2|^2.0", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/dotenv": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0" }, - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } + "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" }, "autoload": { "psr-4": { - "TheCodingMachine\\GraphQLite\\Validator\\": "src/" - } + "Symfony\\Component\\Runtime\\": "", + "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10495,228 +6643,198 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A bridge to use Symfony validator with GraphQLite.", - "homepage": "https://graphqlite.thecodingmachine.io/", + "description": "Enables decoupling PHP applications from global state", + "homepage": "https://symfony.com", "keywords": [ - "GraphQLite", - "graphql", - "symfony", - "validator" + "runtime" ], "support": { - "issues": "https://github.com/thecodingmachine/graphqlite-symfony-validator-bridge/issues", - "source": "https://github.com/thecodingmachine/graphqlite-symfony-validator-bridge/tree/v5.0.0" + "source": "https://github.com/symfony/runtime/tree/v6.3.2" }, - "time": "2021-10-29T10:54:36+00:00" + "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": "2023-07-16T17:05:46+00:00" }, { - "name": "thecodingmachine/safe", - "version": "v1.3.3", + "name": "symfony/security-bundle", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/safe.git", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "57889ebb1ac3403d550c787c4fde127261abacb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/57889ebb1ac3403d550c787c4fde127261abacb6", + "reference": "57889ebb1ac3403d550c787c4fde127261abacb6", "shasum": "" }, "require": { - "php": ">=7.2" + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.1", + "symfony/clock": "^6.3", + "symfony/config": "^6.1", + "symfony/dependency-injection": "^6.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.2", + "symfony/http-kernel": "^6.2", + "symfony/password-hasher": "^5.4|^6.0", + "symfony/security-core": "^6.2", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/security-http": "^6.3.6", + "symfony/service-contracts": "^2.5|^3" }, - "require-dev": { - "phpstan/phpstan": "^0.12", - "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^0.12" + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/console": "<5.4", + "symfony/framework-bundle": "<6.3", + "symfony/http-client": "<5.4", + "symfony/ldap": "<5.4", + "symfony/twig-bundle": "<5.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.1-dev" - } + "require-dev": { + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^5.4|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/framework-bundle": "^6.3", + "symfony/http-client": "^5.4|^6.0", + "symfony/ldap": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/rate-limiter": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/twig-bridge": "^5.4|^6.0", + "symfony/twig-bundle": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1", + "web-token/jwt-signature-algorithm-eddsa": "^3.1", + "web-token/jwt-signature-algorithm-hmac": "^3.1", + "web-token/jwt-signature-algorithm-none": "^3.1", + "web-token/jwt-signature-algorithm-rsa": "^3.1" }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Safe\\": [ - "lib/", - "deprecated/", - "generated/" - ] + "Symfony\\Bundle\\SecurityBundle\\": "" }, - "files": [ - "deprecated/apc.php", - "deprecated/libevent.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "lib/special_cases.php", - "generated/apache.php", - "generated/apcu.php", - "generated/array.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gmp.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/ingres-ii.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/msql.php", - "generated/mysql.php", - "generated/mysqli.php", - "generated/mysqlndMs.php", - "generated/mysqlndQc.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/password.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pdf.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/simplexml.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v1.3.3" + "source": "https://github.com/symfony/security-bundle/tree/v6.3.8" }, - "time": "2020-10-28T17:51:34+00:00" + "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": "2023-11-09T09:33:10+00:00" }, { - "name": "thecodingmachine/tdbm", - "version": "v5.3.1", + "name": "symfony/security-core", + "version": "v6.3.7", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/tdbm.git", - "reference": "2847c6654cd495eeb976e0a80d55f8c0417ebb05" + "url": "https://github.com/symfony/security-core.git", + "reference": "7ceb30fed93f5ea40ccde3173d1f7712527c0d62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/tdbm/zipball/2847c6654cd495eeb976e0a80d55f8c0417ebb05", - "reference": "2847c6654cd495eeb976e0a80d55f8c0417ebb05", + "url": "https://api.github.com/repos/symfony/security-core/zipball/7ceb30fed93f5ea40ccde3173d1f7712527c0d62", + "reference": "7ceb30fed93f5ea40ccde3173d1f7712527c0d62", "shasum": "" }, "require": { - "beberlei/porpaginas": "~1.0", - "brain-diminished/schema-version-control": "dev-master", - "doctrine/annotations": "^1.10", - "doctrine/cache": "^1.6", - "doctrine/dbal": "^2.9.2", - "doctrine/inflector": "^1.4.3 || ^2", - "ext-filter": "*", - "ext-hash": "*", - "ext-intl": "*", - "ext-json": "*", - "ext-pdo": "*", - "greenlion/php-sql-parser": "^4.3.0", - "laminas/laminas-code": "^4.0", - "mouf/classname-mapper": "~1.0", - "mouf/magic-query": "^1.4.3", - "mouf/schema-analyzer": "^1.1.4", - "mouf/utils.log.psr.multi-logger": "^1.0", - "php": "^7.4 || ^8.0", - "psr/container": "^1 || ^2", - "psr/log": "~1.0", - "ramsey/uuid": "^3.7 || ^4.0", - "symfony/console": "^2 || ^3 || ^4 || ^5", - "symfony/filesystem": "^2.7 || ^3 || ^4 || ^5" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/password-hasher": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "mouf/database.tdbm": "~5.0.0" + "symfony/event-dispatcher": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/ldap": "<5.4", + "symfony/security-guard": "<5.4", + "symfony/validator": "<5.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "friendsofphp/php-cs-fixer": "^2.16.4", - "php-coveralls/php-coveralls": "^2.1", - "phpbench/phpbench": "^1.1", - "phpstan/phpstan": "^0.12.81", - "phpunit/phpunit": "^9.5", - "symfony/process": "^3 || ^4 || ^5", - "thecodingmachine/phpstan-strict-rules": "^0.12.1", - "thecodingmachine/tdbm-fluid-schema-builder": "^1.0.0", - "wa72/simplelogger": "^1.0" + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.1|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/ldap": "^5.4|^6.0", + "symfony/string": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.3.x-dev" - } - }, "autoload": { "psr-4": { - "TheCodingMachine\\TDBM\\": "src/" - } + "Symfony\\Component\\Security\\Core\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10724,66 +6842,67 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The Database Machine is a PHP ORM that requires no configuration. The object model is deduced from the database model.", - "homepage": "https://thecodingmachine.github.io/tdbm/", - "keywords": [ - "bean", - "dao", - "model", - "orm", - "persistence" - ], + "description": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thecodingmachine/tdbm/issues", - "source": "https://github.com/thecodingmachine/tdbm/tree/v5.3.1" + "source": "https://github.com/symfony/security-core/tree/v6.3.7" }, - "time": "2021-12-29T17:14:13+00:00" + "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": "2023-10-28T23:11:45+00:00" }, { - "name": "thecodingmachine/tdbm-bundle", - "version": "v5.3.1", + "name": "symfony/security-csrf", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/tdbm-bundle.git", - "reference": "dd0ba3c6debb7a5be4569d585770cb90c1a6a742" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "63d7b098c448cbddb46ea5eda33b68c1ece6eb5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/tdbm-bundle/zipball/dd0ba3c6debb7a5be4569d585770cb90c1a6a742", - "reference": "dd0ba3c6debb7a5be4569d585770cb90c1a6a742", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/63d7b098c448cbddb46ea5eda33b68c1ece6eb5b", + "reference": "63d7b098c448cbddb46ea5eda33b68c1ece6eb5b", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "^2", - "doctrine/orm": "^2", - "php": "^7.4 || ^8.0", - "symfony/http-kernel": "^4.1.9 || ^5", - "thecodingmachine/tdbm": "~5.3.0" + "php": ">=8.1", + "symfony/security-core": "^5.4|^6.0" }, - "require-dev": { - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9.5", - "roave/security-advisories": "dev-master", - "symfony/framework-bundle": "^5.2", - "symfony/security-bundle": "^4.1.9 || ^5", - "symfony/yaml": "^4.1.9 || ^5", - "thecodingmachine/tdbm-fluid-schema-builder": "^1.0.0" + "conflict": { + "symfony/http-foundation": "<5.4" }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "5.3.x-dev" - } + "require-dev": { + "symfony/http-foundation": "^5.4|^6.0" }, + "type": "library", "autoload": { "psr-4": { - "TheCodingMachine\\TDBM\\Bundle\\": "" - } + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10791,62 +6910,87 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Symfony bundle for TDBM.", - "homepage": "https://thecodingmachine.github.io/tdbm", - "keywords": [ - "TDBM", - "bean", - "bundle", - "dao", - "model", - "orm", - "persistence", - "symfony" - ], + "description": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thecodingmachine/tdbm-bundle/issues", - "source": "https://github.com/thecodingmachine/tdbm-bundle/tree/v5.3.1" + "source": "https://github.com/symfony/security-csrf/tree/v6.3.2" }, - "time": "2021-10-13T09:45:12+00:00" + "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": "2023-07-05T08:41:27+00:00" }, { - "name": "thecodingmachine/tdbm-fluid-schema-builder", - "version": "v1.1.1", + "name": "symfony/security-http", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/tdbm-fluid-schema-builder.git", - "reference": "1aacb60bb1eae49a4c2726222e391b78bc16d927" + "url": "https://github.com/symfony/security-http.git", + "reference": "19f7b5f5d20879a976d6d376e359bc975dfc6002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/tdbm-fluid-schema-builder/zipball/1aacb60bb1eae49a4c2726222e391b78bc16d927", - "reference": "1aacb60bb1eae49a4c2726222e391b78bc16d927", + "url": "https://api.github.com/repos/symfony/security-http/zipball/19f7b5f5d20879a976d6d376e359bc975dfc6002", + "reference": "19f7b5f5d20879a976d6d376e359bc975dfc6002", "shasum": "" }, "require": { - "doctrine/dbal": "^2.5", - "php": ">=7.1", - "thecodingmachine/dbal-fluid-schema-builder": "^1.6.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^6.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/security-core": "^6.3", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/clock": "<6.3", + "symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9", + "symfony/http-client-contracts": "<3.0", + "symfony/security-bundle": "<5.4", + "symfony/security-csrf": "<5.4" }, "require-dev": { - "phpunit/phpunit": "^7.5.6", - "satooshi/php-coveralls": "^1.1" + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/clock": "^6.3", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-client-contracts": "^3.0", + "symfony/rate-limiter": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "TheCodingMachine\\FluidSchema\\": "src/" - } + "Symfony\\Component\\Security\\Http\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10854,56 +6998,93 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Build and modify your database schema used by TDBM using a fluid syntax.", + "description": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thecodingmachine/tdbm-fluid-schema-builder/issues", - "source": "https://github.com/thecodingmachine/tdbm-fluid-schema-builder/tree/v1.1.1" + "source": "https://github.com/symfony/security-http/tree/v6.3.8" }, - "time": "2021-01-06T15:31:18+00:00" + "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": "2023-11-09T21:20:12+00:00" }, { - "name": "thecodingmachine/tdbm-graphql", - "version": "dev-master", + "name": "symfony/serializer", + "version": "v6.3.10", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/tdbm-graphql.git", - "reference": "5a0da877f8755a263d435c27f0ce5a4173cff54a" + "url": "https://github.com/symfony/serializer.git", + "reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/tdbm-graphql/zipball/5a0da877f8755a263d435c27f0ce5a4173cff54a", - "reference": "5a0da877f8755a263d435c27f0ce5a4173cff54a", + "url": "https://api.github.com/repos/symfony/serializer/zipball/6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f", + "reference": "6eee0fd95f5caa1e77cab29552620ebf8e5b1a5f", "shasum": "" }, "require": { - "doctrine/dbal": "^2.9.2", - "psr/container": "^1", - "symfony/filesystem": "^2.0 || ^3.0 || ^4.0 || ^5.0", - "thecodingmachine/graphqlite": "^5", - "thecodingmachine/tdbm": "~5.3.0", - "thecodingmachine/tdbm-fluid-schema-builder": "^1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<5.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "mouf/picotainer": "^1.1", - "phpunit/phpunit": "^6.5.14", - "satooshi/php-coveralls": "^1.1", - "symfony/cache": "^4.2.4 || ^5" + "doctrine/annotations": "^1.12|^2", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0", + "symfony/var-exporter": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, - "default-branch": true, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { - "TheCodingMachine\\Tdbm\\GraphQL\\": "src/" - } + "Symfony\\Component\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10911,56 +7092,73 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A class generator that will generate GraphQL types from your database schema (using thecodingmachine/graphqlite).", + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thecodingmachine/tdbm-graphql/issues", - "source": "https://github.com/thecodingmachine/tdbm-graphql/tree/v5.0.x" + "source": "https://github.com/symfony/serializer/tree/v6.3.10" }, - "time": "2021-12-16T11:05:25+00:00" + "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": "2023-12-01T14:25:58+00:00" }, { - "name": "thecodingmachine/tdbm-graphql-bundle", - "version": "dev-master", + "name": "symfony/service-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/tdbm-graphql-bundle.git", - "reference": "bd87931fe65831451658ccea7752b174b91b9fe8" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/tdbm-graphql-bundle/zipball/bd87931fe65831451658ccea7752b174b91b9fe8", - "reference": "bd87931fe65831451658ccea7752b174b91b9fe8", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", "shasum": "" }, "require": { - "php": ">=7.2", - "symfony/framework-bundle": "^4.1.9 | ^5", - "thecodingmachine/graphqlite-bundle": "^5", - "thecodingmachine/tdbm-bundle": "^5.2", - "thecodingmachine/tdbm-graphql": "^5.0" + "php": ">=8.1", + "psr/container": "^2.0" }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpstan/phpstan": "^1", - "phpunit/phpunit": "^8.0.4", - "symfony/security-bundle": "^4.1.9 | ^5", - "symfony/yaml": "^4.1.9 | ^5" + "conflict": { + "ext-psr": "<1.1|>=2" }, - "default-branch": true, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "TheCodingMachine\\Tdbm\\GraphQL\\Bundle\\": "" - } + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10968,109 +7166,143 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com", - "homepage": "http://mouf-php.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Symfony bundle for thecodingmachine/tdbm-graphql.", - "homepage": "https://thecodingmachine.github.io/tdbm/", + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", "keywords": [ - "TDBM", - "bundle", - "graphql", - "symfony" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/thecodingmachine/tdbm-graphql-bundle/issues", - "source": "https://github.com/thecodingmachine/tdbm-graphql-bundle/tree/v5.0.x" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" }, - "time": "2021-12-16T11:03:38+00:00" + "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": "2023-07-30T20:28:31+00:00" }, { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", + "name": "symfony/stopwatch", + "version": "v6.3.0", "source": { "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + "url": "https://github.com/symfony/stopwatch.git", + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, "autoload": { "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" }, - "time": "2021-12-08T09:12:39+00:00" + "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": "2023-02-16T10:14:28+00:00" }, { - "name": "twig/cssinliner-extra", - "version": "v3.3.5", + "name": "symfony/string", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/twigphp/cssinliner-extra.git", - "reference": "1fe012dcae6b04fc37715296c10a72f8d941bc65" + "url": "https://github.com/symfony/string.git", + "reference": "56427887aeaf540e9bbd121ad6c43f14ad3ce136" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/1fe012dcae6b04fc37715296c10a72f8d941bc65", - "reference": "1fe012dcae6b04fc37715296c10a72f8d941bc65", + "url": "https://api.github.com/repos/symfony/string/zipball/56427887aeaf540e9bbd121ad6c43f14ad3ce136", + "reference": "56427887aeaf540e9bbd121ad6c43f14ad3ce136", "shasum": "" }, "require": { - "php": ">=7.1.3", - "tijsverkoyen/css-to-inline-styles": "^2.0", - "twig/twig": "^2.7|^3.0" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Twig\\Extra\\CssInliner\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -11082,74 +7314,98 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Twig extension to allow inlining CSS", - "homepage": "https://twig.symfony.com", + "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": [ - "css", - "inlining", - "twig" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.3.5" + "source": "https://github.com/symfony/string/tree/v6.3.9" }, "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2022-01-02T10:02:25+00:00" + "time": "2023-11-28T20:40:29+00:00" }, { - "name": "twig/extra-bundle", - "version": "v3.3.7", + "name": "symfony/translation", + "version": "v6.3.7", "source": { "type": "git", - "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "e0cc9c35a0650006b0da232a3f749cc060c65d3b" + "url": "https://github.com/symfony/translation.git", + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/e0cc9c35a0650006b0da232a3f749cc060c65d3b", - "reference": "e0cc9c35a0650006b0da232a3f749cc060c65d3b", + "url": "https://api.github.com/repos/symfony/translation/zipball/30212e7c87dcb79c83f6362b00bde0e0b1213499", + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "twig/twig": "^2.7|^3.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" }, - "require-dev": { - "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", - "twig/cache-extra": "^3.0", - "twig/cssinliner-extra": "^2.12|^3.0", - "twig/html-extra": "^2.12|^3.0", - "twig/inky-extra": "^2.12|^3.0", - "twig/intl-extra": "^2.12|^3.0", - "twig/markdown-extra": "^2.12|^3.0", - "twig/string-extra": "^2.12|^3.0" + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" }, + "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Twig\\Extra\\TwigExtraBundle\\": "" + "Symfony\\Component\\Translation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -11161,68 +7417,68 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Symfony bundle for extra Twig extensions", - "homepage": "https://twig.symfony.com", - "keywords": [ - "bundle", - "extra", - "twig" - ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.3.7" + "source": "https://github.com/symfony/translation/tree/v6.3.7" }, "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2022-01-03T21:04:59+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { - "name": "twig/inky-extra", - "version": "v3.3.5", + "name": "symfony/translation-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/twigphp/inky-extra.git", - "reference": "b515e6f7c1fede76f9f507dbd1bb369f46aa726b" + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/inky-extra/zipball/b515e6f7c1fede76f9f507dbd1bb369f46aa726b", - "reference": "b515e6f7c1fede76f9f507dbd1bb369f46aa726b", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", "shasum": "" }, "require": { - "lorenzo/pinky": "^1.0.5", - "php": ">=7.1.3", - "twig/twig": "^2.7|^3.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Twig\\Extra\\Inky\\": "" + "Symfony\\Contracts\\Translation\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -11231,146 +7487,200 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A Twig extension for the inky email templating engine", - "homepage": "https://twig.symfony.com", + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", "keywords": [ - "email", - "emails", - "inky", - "twig" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/twigphp/inky-extra/tree/v3.3.5" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" }, "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2022-01-02T10:02:25+00:00" + "time": "2023-07-25T15:08:44+00:00" }, { - "name": "twig/twig", - "version": "v3.3.7", + "name": "symfony/twig-bridge", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "8f168c6ffa3ce76d1786b3cd52275424a3fc675b" + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "c51407623959a626784ff302419026f56dc4e1ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/8f168c6ffa3ce76d1786b3cd52275424a3fc675b", - "reference": "8f168c6ffa3ce76d1786b3cd52275424a3fc675b", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/c51407623959a626784ff302419026f56dc4e1ba", + "reference": "c51407623959a626784ff302419026f56dc4e1ba", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "php": ">=8.1", + "symfony/translation-contracts": "^2.5|^3", + "twig/twig": "^2.13|^3.0.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<5.4", + "symfony/form": "<6.3", + "symfony/http-foundation": "<5.4", + "symfony/http-kernel": "<6.2", + "symfony/mime": "<6.2", + "symfony/translation": "<5.4", + "symfony/workflow": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.4|^6.0", + "symfony/asset-mapper": "^6.3", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/form": "^6.3", + "symfony/html-sanitizer": "^6.1", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^6.2", + "symfony/intl": "^5.4|^6.0", + "symfony/mime": "^6.2", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/security-http": "^5.4|^6.0", + "symfony/serializer": "^6.2", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^6.1", + "symfony/web-link": "^5.4|^6.0", + "symfony/workflow": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" }, + "type": "symfony-bridge", "autoload": { "psr-4": { - "Twig\\": "src/" - } + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" + "email": "fabien@symfony.com" }, { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], + "description": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.3.7" + "source": "https://github.com/symfony/twig-bridge/tree/v6.3.8" }, "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, { "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2022-01-03T21:15:37+00:00" + "time": "2023-11-09T21:20:12+00:00" }, { - "name": "webmozart/assert", - "version": "1.10.0", + "name": "symfony/twig-bundle", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "82429320fe931dd50825ec08140c54b3a315bf79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/82429320fe931dd50825ec08140c54b3a315bf79", + "reference": "82429320fe931dd50825ec08140c54b3a315bf79", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "composer-runtime-api": ">=2.1", + "php": ">=8.1", + "symfony/config": "^6.1", + "symfony/dependency-injection": "^6.1", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^6.2", + "symfony/twig-bridge": "^6.3", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } + "symfony/framework-bundle": "<5.4", + "symfony/translation": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/framework-bundle": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/web-link": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Webmozart\\Assert\\": "src/" - } + "Symfony\\Bundle\\TwigBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11378,122 +7688,175 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], + "description": "Provides a tight integration of Twig into the Symfony full-stack framework", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/symfony/twig-bundle/tree/v6.3.8" }, - "time": "2021-03-09T10:59:23+00:00" + "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": "2023-10-31T08:07:48+00:00" }, { - "name": "webonyx/graphql-php", - "version": "v14.11.3", + "name": "symfony/validator", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/webonyx/graphql-php.git", - "reference": "a7192e7a2b0487dc5e185feb4f4df1fc24d35d86" + "url": "https://github.com/symfony/validator.git", + "reference": "c118889931856af47b0732b609f3ac2ddccd1da6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/a7192e7a2b0487dc5e185feb4f4df1fc24d35d86", - "reference": "a7192e7a2b0487dc5e185feb4f4df1fc24d35d86", + "url": "https://api.github.com/repos/symfony/validator/zipball/c118889931856af47b0732b609f3ac2ddccd1da6", + "reference": "c118889931856af47b0732b609f3ac2ddccd1da6", "shasum": "" }, "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^7.1 || ^8.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" }, - "require-dev": { - "amphp/amp": "^2.3", - "doctrine/coding-standard": "^6.0", - "nyholm/psr7": "^1.2", - "phpbench/phpbench": "^0.16.10", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "0.12.82", - "phpstan/phpstan-phpunit": "0.12.18", - "phpstan/phpstan-strict-rules": "0.12.9", - "phpunit/phpunit": "^7.2 || ^8.5", - "psr/http-message": "^1.0", - "react/promise": "2.*", - "simpod/php-coveralls-mirror": "^3.0", - "squizlabs/php_codesniffer": "3.5.4" + "conflict": { + "doctrine/annotations": "<1.13", + "doctrine/lexer": "<1.1", + "symfony/dependency-injection": "<5.4", + "symfony/expression-language": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/intl": "<5.4", + "symfony/property-info": "<5.4", + "symfony/translation": "<5.4", + "symfony/yaml": "<5.4" }, - "suggest": { - "psr/http-message": "To use standard GraphQL server", - "react/promise": "To leverage async resolving on React PHP platform" + "require-dev": { + "doctrine/annotations": "^1.13|^2", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "GraphQL\\": "src/" - } + "Symfony\\Component\\Validator\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A PHP port of GraphQL reference implementation", - "homepage": "https://github.com/webonyx/graphql-php", - "keywords": [ - "api", - "graphql" + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], + "description": "Provides tools to validate values", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v14.11.3" + "source": "https://github.com/symfony/validator/tree/v6.3.9" }, "funding": [ { - "url": "https://opencollective.com/webonyx-graphql-php", - "type": "open_collective" + "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": "2021-11-19T09:42:02+00:00" - } - ], - "packages-dev": [ + "time": "2023-11-29T07:44:47+00:00" + }, { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.1", + "name": "symfony/var-dumper", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" }, - "require-dev": { - "composer/composer": "*", - "phpcompatibility/php-compatibility": "^9.0", - "sensiolabs/security-checker": "^4.1.0" + "conflict": { + "symfony/console": "<5.4" }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11501,136 +7864,149 @@ ], "authors": [ { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" + "debug", + "dump" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" }, - "time": "2020-12-07T18:04:37+00:00" + "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": "2023-11-08T10:42:36+00:00" }, { - "name": "doctrine/coding-standard", - "version": "9.0.0", + "name": "symfony/var-exporter", + "version": "v6.3.10", "source": { "type": "git", - "url": "https://github.com/doctrine/coding-standard.git", - "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/35a2452c6025cb739c3244b3348bcd1604df07d1", - "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7bfcf232a9c7e4acad00e96774e340eb86d10bf0", + "reference": "7bfcf232a9c7e4acad00e96774e340eb86d10bf0", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "slevomat/coding-standard": "^7.0.0", - "squizlabs/php_codesniffer": "^3.6.0" + "php": ">=8.1" + }, + "require-dev": { + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Steve MΓΌller", - "email": "st.mueller@dzh-online.de" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The Doctrine Coding Standard is a set of PHPCS rules applied to all Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/coding-standard.html", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", "keywords": [ - "checks", - "code", - "coding", - "cs", - "doctrine", - "rules", - "sniffer", - "sniffs", - "standard", - "style" + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" ], "support": { - "issues": "https://github.com/doctrine/coding-standard/issues", - "source": "https://github.com/doctrine/coding-standard/tree/9.0.0" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.10" }, - "time": "2021-04-12T15:11:14+00:00" + "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": "2023-11-29T16:00:50+00:00" }, { - "name": "ergebnis/composer-normalize", - "version": "2.23.0", + "name": "symfony/yaml", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "8139e8efbdb481e8907e03fca09c2507fe560751" + "url": "https://github.com/symfony/yaml.git", + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/8139e8efbdb481e8907e03fca09c2507fe560751", - "reference": "8139e8efbdb481e8907e03fca09c2507fe560751", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3493af8a8dad7fa91c77fa473ba23ecd95334a92", + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92", "shasum": "" }, "require": { - "composer-plugin-api": "^2.0.0", - "ergebnis/json-normalizer": "^2.1.0", - "ergebnis/json-printer": "^3.2.0", - "justinrainbow/json-schema": "^5.2.11", - "localheinz/diff": "^1.1.1", - "php": "^7.4 || ^8.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" }, - "require-dev": { - "composer/composer": "^2.2.3", - "ergebnis/license": "^1.2.0", - "ergebnis/php-cs-fixer-config": "^3.4.0", - "fakerphp/faker": "^1.17.0", - "phpunit/phpunit": "^9.5.11", - "psalm/plugin-phpunit": "~0.16.1", - "symfony/filesystem": "^5.4.0", - "vimeo/psalm": "^4.17.0" + "conflict": { + "symfony/console": "<5.4" }, - "type": "composer-plugin", - "extra": { - "class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin", - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" - } + "require-dev": { + "symfony/console": "^5.4|^6.0" }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", "autoload": { "psr-4": { - "Ergebnis\\Composer\\Normalize\\": "src/" - } + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11638,127 +8014,147 @@ ], "authors": [ { - "name": "Andreas MΓΆller", - "email": "am@localheinz.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a composer plugin for normalizing composer.json.", - "homepage": "https://github.com/ergebnis/composer-normalize", - "keywords": [ - "composer", - "normalize", - "normalizer", - "plugin" - ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/ergebnis/composer-normalize/issues", - "source": "https://github.com/ergebnis/composer-normalize" + "source": "https://github.com/symfony/yaml/tree/v6.3.8" }, "funding": [ { - "url": "https://github.com/localheinz", + "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": "2022-01-04T11:37:51+00:00" + "time": "2023-11-06T10:58:05+00:00" }, { - "name": "ergebnis/json-normalizer", - "version": "2.1.0", + "name": "twig/twig", + "version": "v3.8.0", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "2039eb11131a243b9204bf51219baa08935e6b1d" + "url": "https://github.com/twigphp/Twig.git", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/2039eb11131a243b9204bf51219baa08935e6b1d", - "reference": "2039eb11131a243b9204bf51219baa08935e6b1d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { - "ergebnis/json-printer": "^3.2.0", - "ergebnis/json-schema-validator": "^2.0.0", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2.11", - "php": "^7.4 || ^8.0" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "ergebnis/data-provider": "^1.0.0", - "ergebnis/license": "^1.2.0", - "ergebnis/php-cs-fixer-config": "^3.4.0", - "fakerphp/faker": "^1.17.0", - "infection/infection": "~0.25.5", - "phpunit/phpunit": "^9.5.11", - "psalm/plugin-phpunit": "~0.16.1", - "vimeo/psalm": "^4.17.0" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Ergebnis\\Json\\Normalizer\\": "src/" + "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Andreas MΓΆller", - "email": "am@localheinz.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" } ], - "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.", - "homepage": "https://github.com/ergebnis/json-normalizer", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", "keywords": [ - "json", - "normalizer" + "templating" ], "support": { - "issues": "https://github.com/ergebnis/json-normalizer/issues", - "source": "https://github.com/ergebnis/json-normalizer" + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { - "url": "https://github.com/localheinz", + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" } ], - "time": "2022-01-04T11:19:55+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { - "name": "ergebnis/json-printer", - "version": "3.2.0", + "name": "ua-parser/uap-php", + "version": "v3.9.14", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-printer.git", - "reference": "651cab2b7604a6b338d0d16749f5ea0851a68005" + "url": "https://github.com/ua-parser/uap-php.git", + "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/651cab2b7604a6b338d0d16749f5ea0851a68005", - "reference": "651cab2b7604a6b338d0d16749f5ea0851a68005", + "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", + "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", "shasum": "" }, "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^7.4 || ^8.0" + "composer/ca-bundle": "^1.1", + "php": "^7.2 || ^8.0" }, "require-dev": { - "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "^3.4.0", - "fakerphp/faker": "^1.17.0", - "infection/infection": "~0.25.5", - "phpunit/phpunit": "^9.5.11", - "psalm/plugin-phpunit": "~0.16.1", - "vimeo/psalm": "^4.16.1" + "phpstan/phpstan": "^0.12.33", + "phpunit/phpunit": "^8 || ^9", + "symfony/console": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/filesystem": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/finder": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/yaml": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "vimeo/psalm": "^3.12" + }, + "suggest": { + "symfony/console": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/filesystem": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/finder": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/yaml": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0" }, + "bin": [ + "bin/uaparser" + ], "type": "library", "autoload": { "psr-4": { - "Ergebnis\\Json\\Printer\\": "src/" + "UAParser\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -11767,69 +8163,55 @@ ], "authors": [ { - "name": "Andreas MΓΆller", - "email": "am@localheinz.com" + "name": "Dave Olsen", + "email": "dmolsen@gmail.com" + }, + { + "name": "Lars Strojny", + "email": "lars@strojny.net" } ], - "description": "Provides a JSON printer, allowing for flexible indentation.", - "homepage": "https://github.com/ergebnis/json-printer", - "keywords": [ - "formatter", - "json", - "printer" - ], + "description": "A multi-language port of Browserscope's user agent parser.", "support": { - "issues": "https://github.com/ergebnis/json-printer/issues", - "source": "https://github.com/ergebnis/json-printer" + "issues": "https://github.com/ua-parser/uap-php/issues", + "source": "https://github.com/ua-parser/uap-php/tree/v3.9.14" }, - "funding": [ - { - "url": "https://github.com/localheinz", - "type": "github" - } - ], - "time": "2021-12-27T12:39:13+00:00" + "time": "2020-10-02T23:36:20+00:00" }, { - "name": "ergebnis/json-schema-validator", - "version": "2.0.0", + "name": "webmozart/assert", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-schema-validator.git", - "reference": "dacd8a47c1cc2c426ec71e952da3609ebe901fac" + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/dacd8a47c1cc2c426ec71e952da3609ebe901fac", - "reference": "dacd8a47c1cc2c426ec71e952da3609ebe901fac", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "ext-json": "*", - "justinrainbow/json-schema": "^5.2.10", - "php": "^7.4 || ^8.0" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "ergebnis/composer-normalize": "^2.18.0", - "ergebnis/data-provider": "^1.0.0", - "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "~3.4.0", - "fakerphp/faker": "^1.17.0", - "infection/infection": "~0.25.3", - "phpunit/phpunit": "~9.5.10", - "psalm/plugin-phpunit": "~0.16.1", - "vimeo/psalm": "^4.15.0" + "phpunit/phpunit": "^8.5.13" }, "type": "library", "extra": { - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" + "branch-alias": { + "dev-master": "1.10-dev" } }, "autoload": { "psr-4": { - "Ergebnis\\Json\\SchemaValidator\\": "src/" + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -11838,55 +8220,55 @@ ], "authors": [ { - "name": "Andreas MΓΆller", - "email": "am@localheinz.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Provides a JSON schema validator, building on top of justinrainbow/json-schema.", - "homepage": "https://github.com/ergebnis/json-schema-validator", + "description": "Assertions to validate method input/output with nice error messages.", "keywords": [ - "json", - "schema", - "validator" + "assert", + "check", + "validate" ], "support": { - "issues": "https://github.com/ergebnis/json-schema-validator/issues", - "source": "https://github.com/ergebnis/json-schema-validator" + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "funding": [ - { - "url": "https://github.com/localheinz", - "type": "github" - } - ], - "time": "2021-12-13T16:54:56+00:00" - }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ { - "name": "facade/ignition-contracts", - "version": "1.0.2", + "name": "composer/pcre", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + "url": "https://github.com/composer/pcre.git", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { - "php": "^7.3|^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Facade\\IgnitionContracts\\": "src" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -11895,67 +8277,66 @@ ], "authors": [ { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.1" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { - "name": "fakerphp/faker", - "version": "v1.17.0", + "name": "composer/xdebug-handler", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "b85e9d44eae8c52cca7aa0939483611f7232b669" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/b85e9d44eae8c52cca7aa0939483611f7232b669", - "reference": "b85e9d44eae8c52cca7aa0939483611f7232b669", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" - }, - "suggest": { - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.17-dev" - } - }, "autoload": { "psr-4": { - "Faker\\": "src/Faker/" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -11964,57 +8345,77 @@ ], "authors": [ { - "name": "FranΓ§ois Zaninotto" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "Restarts a process without Xdebug.", "keywords": [ - "data", - "faker", - "fixtures" + "Xdebug", + "performance" ], "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.17.0" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, - "time": "2021-12-05T17:14:47+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T21:32:43+00:00" }, { - "name": "filp/whoops", - "version": "2.14.4", + "name": "dama/doctrine-test-bundle", + "version": "v7.3.0", "source": { "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "f056f1fe935d9ed86e698905a957334029899895" + "url": "https://github.com/dmaicher/doctrine-test-bundle.git", + "reference": "688eea6529ea894b83deada10c83662d7804f34b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", - "reference": "f056f1fe935d9ed86e698905a957334029899895", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/688eea6529ea894b83deada10c83662d7804f34b", + "reference": "688eea6529ea894b83deada10c83662d7804f34b", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "doctrine/dbal": "^3.3", + "doctrine/doctrine-bundle": "^2.2.2", + "ext-json": "*", + "php": "^7.3 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" + "behat/behat": "^3.0", + "doctrine/cache": "^1.12", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0", + "symfony/phpunit-bridge": "^6.0", + "symfony/process": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "7.x-dev" } }, "autoload": { "psr-4": { - "Whoops\\": "src/Whoops/" + "DAMA\\DoctrineTestBundle\\": "src/DAMA/DoctrineTestBundle" } }, "notification-url": "https://packagist.org/downloads/", @@ -12023,67 +8424,55 @@ ], "authors": [ { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" + "name": "David Maicher", + "email": "mail@dmaicher.de" } ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", + "description": "Symfony bundle to isolate doctrine database tests and improve test performance", "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" + "doctrine", + "isolation", + "performance", + "symfony", + "tests" ], "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.4" + "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v7.3.0" }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2021-10-03T12:00:00+00:00" + "time": "2023-11-27T21:29:42+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "5.2.11", + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.2", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", "shasum": "" }, "require": { - "php": ">=5.3.3" + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" + "composer/composer": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" }, - "bin": [ - "bin/validate-json" - ], - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -12092,247 +8481,298 @@ ], "authors": [ { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" }, { - "name": "Robert SchΓΆnthal", - "email": "seroscho@googlemail.com" + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", "keywords": [ - "json", - "schema" + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" }, - "time": "2021-07-22T09:24:00+00:00" + "time": "2022-02-04T12:51:07+00:00" }, { - "name": "localheinz/diff", - "version": "1.1.1", + "name": "doctrine/coding-standard", + "version": "10.0.0", "source": { "type": "git", - "url": "https://github.com/localheinz/diff.git", - "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c" + "url": "https://github.com/doctrine/coding-standard.git", + "reference": "7903671d7d33c231c8921058b7c14b8f57cbacb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/diff/zipball/851bb20ea8358c86f677f5f111c4ab031b1c764c", - "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c", + "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/7903671d7d33c231c8921058b7c14b8f57cbacb7", + "reference": "7903671d7d33c231c8921058b7c14b8f57cbacb7", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.2 || ^8.0", + "slevomat/coding-standard": "^8.2", + "squizlabs/php_codesniffer": "^3.7" }, + "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" }, { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "Steve MΓΌller", + "email": "st.mueller@dzh-online.de" } ], - "description": "Fork of sebastian/diff for use with ergebnis/composer-normalize", - "homepage": "https://github.com/localheinz/diff", + "description": "The Doctrine Coding Standard is a set of PHPCS rules applied to all Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/coding-standard.html", "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" + "checks", + "code", + "coding", + "cs", + "doctrine", + "rules", + "sniffer", + "sniffs", + "standard", + "style" ], "support": { - "source": "https://github.com/localheinz/diff/tree/main" + "issues": "https://github.com/doctrine/coding-standard/issues", + "source": "https://github.com/doctrine/coding-standard/tree/10.0.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-07-06T04:49:32+00:00" + "time": "2022-08-26T10:53:05+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.10.2", + "name": "doctrine/data-fixtures", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "conflict": { + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", + "doctrine/phpcr-odm": "<1.3.0" + }, + "require-dev": { + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", + "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", + "doctrine/orm": "^2.14 || ^3", + "ext-sqlite3": "*", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" }, "type": "library", "autoload": { "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] + "Doctrine\\Common\\DataFixtures\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "https://www.doctrine-project.org", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "database" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "issues": "https://github.com/doctrine/data-fixtures/issues", + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures", "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2023-11-24T11:18:31+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.13.2", + "name": "doctrine/doctrine-fixtures-bundle", + "version": "3.5.1", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/c808a0c85c38c8ee265cc8405b456c1d2b38567d", + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "doctrine/data-fixtures": "^1.3", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4|^3.0", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "conflict": { + "doctrine/dbal": "< 3" }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10.39", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6", + "vimeo/psalm": "^5.15" }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Doctrine\\Bundle\\FixturesBundle\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP parser written in PHP", + "description": "Symfony DoctrineFixturesBundle", + "homepage": "https://www.doctrine-project.org", "keywords": [ - "parser", - "php" + "Fixture", + "persistence" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.5.1" }, - "time": "2021-11-30T19:35:32+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle", + "type": "tidelift" + } + ], + "time": "2023-11-19T12:48:54+00:00" }, { - "name": "nunomaduro/collision", - "version": "v5.10.0", + "name": "masterminds/html5", + "version": "2.8.1", "source": { "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00" + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/3004cfa49c022183395eabc6d0e5207dfe498d00", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", "shasum": "" }, "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" + "ext-dom": "*", + "php": ">=5.3.0" }, "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" }, "type": "library", "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] + "branch-alias": { + "dev-master": "2.7-dev" } }, "autoload": { "psr-4": { - "NunoMaduro\\Collision\\": "src/" + "Masterminds\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -12341,284 +8781,213 @@ ], "authors": [ { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" + "name": "Matt Butcher", + "email": "technosophos@gmail.com" }, { - "url": "https://github.com/nunomaduro", - "type": "github" + "name": "Matt Farina", + "email": "matt@mattfarina.com" }, { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" } ], - "time": "2021-09-20T15:06:32+00:00" + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + }, + "time": "2023-05-10T11:58:31+00:00" }, { - "name": "pepakriz/phpstan-exception-rules", - "version": "v0.12.0", + "name": "myclabs/deep-copy", + "version": "1.11.1", "source": { "type": "git", - "url": "https://github.com/pepakriz/phpstan-exception-rules.git", - "reference": "c5f3fe501e5a6c57c33fb678ad9278131bc1b9bd" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pepakriz/phpstan-exception-rules/zipball/c5f3fe501e5a6c57c33fb678ad9278131bc1b9bd", - "reference": "c5f3fe501e5a6c57c33fb678ad9278131bc1b9bd", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { - "nikic/php-parser": "^4.13", - "php": ">=7.1", - "phpstan/phpstan": "^1.0" + "php": "^7.1 || ^8.0" }, - "require-dev": { - "nette/utils": "^3.0", - "php-parallel-lint/php-console-highlighter": "^0.4.0", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-nette": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^7.5.6 || ^9.4.2", - "slevomat/coding-standard": "^6.4.1", - "squizlabs/php_codesniffer": "~3.5.2" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, + "type": "library", "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], "psr-4": { - "Pepakriz\\PHPStanExceptionRules\\": "src" + "DeepCopy\\": "src/DeepCopy/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Exception rules for PHPStan", + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], "support": { - "issues": "https://github.com/pepakriz/phpstan-exception-rules/issues", - "source": "https://github.com/pepakriz/phpstan-exception-rules/tree/v0.12.0" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, - "time": "2021-11-07T19:03:56+00:00" + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" }, { - "name": "pestphp/pest", - "version": "v1.21.1", + "name": "nikic/php-parser", + "version": "v4.17.1", "source": { "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "92b8d32ef78c54c915641999e0c4167d7202b2d9" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/92b8d32ef78c54c915641999e0c4167d7202b2d9", - "reference": "92b8d32ef78c54c915641999e0c4167d7202b2d9", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { - "nunomaduro/collision": "^5.4.0|^6.0", - "pestphp/pest-plugin": "^1.0.0", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^9.5.5" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "illuminate/console": "^8.47.0", - "illuminate/support": "^8.47.0", - "laravel/dusk": "^6.15.0", - "pestphp/pest-dev-tools": "dev-master", - "pestphp/pest-plugin-parallel": "^1.0" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ - "bin/pest" + "bin/php-parse" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" - }, - "pest": { - "plugins": [ - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Environment" - ] - }, - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" - ] + "dev-master": "4.9-dev" } }, "autoload": { "psr-4": { - "Pest\\": "src/" - }, - "files": [ - "src/Functions.php", - "src/Pest.php" - ] + "PhpParser\\": "lib/PhpParser" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" + "name": "Nikita Popov" } ], - "description": "An elegant PHP Testing Framework.", + "description": "A PHP parser written in PHP", "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" + "parser", + "php" ], "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v1.21.1" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/lukeraymonddowning", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/octoper", - "type": "github" - }, - { - "url": "https://github.com/olivernybroe", - "type": "github" - }, - { - "url": "https://github.com/owenvoke", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2021-11-25T16:44:17+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { - "name": "pestphp/pest-plugin", - "version": "v1.0.0", + "name": "pdepend/pdepend", + "version": "2.16.0", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa" + "url": "https://github.com/pdepend/pdepend.git", + "reference": "8dfc0c46529e2073fa97986552f80646eedac562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/fc8519de148699fe612d9c669be60554cd2db4fa", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562", + "reference": "8dfc0c46529e2073fa97986552f80646eedac562", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "pestphp/pest": "<1.0" + "php": ">=5.3.7", + "symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0", + "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0", + "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0", + "symfony/polyfill-mbstring": "^1.19" }, "require-dev": { - "composer/composer": "^1.10.19", - "pestphp/pest": "^1.0", - "pestphp/pest-dev-tools": "dev-master" + "easy-doc/easy-doc": "0.0.0|^1.2.3", + "gregwar/rst": "^1.0", + "phpunit/phpunit": "^4.8.36|^5.7.27", + "squizlabs/php_codesniffer": "^2.0.0" }, - "type": "composer-plugin", + "bin": [ + "src/bin/pdepend" + ], + "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" - }, - "class": "Pest\\Plugin\\Manager" + "dev-master": "2.x-dev" + } }, "autoload": { "psr-4": { - "Pest\\Plugin\\": "src/" + "PDepend\\": "src/main/php/PDepend" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "The Pest plugin manager", + "description": "Official version of pdepend to be handled with Composer", "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" + "PHP Depend", + "PHP_Depend", + "dev", + "pdepend" ], "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v1.0.0" + "issues": "https://github.com/pdepend/pdepend/issues", + "source": "https://github.com/pdepend/pdepend/tree/2.16.0" }, "funding": [ { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" + "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend", + "type": "tidelift" } ], - "time": "2021-01-03T15:53:42+00:00" + "time": "2023-11-29T08:52:35+00:00" }, { "name": "phar-io/manifest", @@ -12682,16 +9051,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -12727,142 +9096,110 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.15.0", + "name": "phpmd/phpmd", + "version": "2.14.1", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "url": "https://github.com/phpmd/phpmd.git", + "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8", + "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0", + "ext-xml": "*", + "pdepend/pdepend": "^2.15.1", + "php": ">=5.3.9" }, "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "easy-doc/easy-doc": "0.0.0 || ^1.3.2", + "ext-json": "*", + "ext-simplexml": "*", + "gregwar/rst": "^1.0", + "mikey179/vfsstream": "^1.6.8", + "phpunit/phpunit": "^4.8.36 || ^5.7.27", + "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2" }, + "bin": [ + "src/bin/phpmd" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" + "psr-0": { + "PHPMD\\": "src/main/php" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Manuel Pichler", + "email": "github@manuel-pichler.de", + "homepage": "https://github.com/manuelpichler", + "role": "Project Founder" + }, + { + "name": "Marc WΓΌrth", + "email": "ravage@bluewin.ch", + "homepage": "https://github.com/ravage84", + "role": "Project Maintainer" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Other contributors", + "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", + "role": "Contributors" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", + "homepage": "https://phpmd.org/", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "dev", + "mess detection", + "mess detector", + "pdepend", + "phpmd", + "pmd" ], "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/dbc093d7af60eff5cd575d2ed761b15ed40bd08e", - "reference": "dbc093d7af60eff5cd575d2ed761b15ed40bd08e", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "irc": "irc://irc.freenode.org/phpmd", + "issues": "https://github.com/phpmd/phpmd/issues", + "source": "https://github.com/phpmd/phpmd/tree/2.14.1" }, - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd", + "type": "tidelift" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.2.0" - }, - "time": "2021-09-16T20:46:02+00:00" + "time": "2023-09-28T13:07:44+00:00" }, { "name": "phpstan/phpstan", - "version": "1.3.1", + "version": "1.10.47", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c3e7a5837829b3cd5907b895da73a4da084a9f8f" + "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c3e7a5837829b3cd5907b895da73a4da084a9f8f", - "reference": "c3e7a5837829b3cd5907b895da73a4da084a9f8f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", + "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -12872,11 +9209,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -12887,9 +9219,16 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.3.1" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -12901,35 +9240,173 @@ "type": "github" }, { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-12-01T15:19:17+00:00" + }, + { + "name": "phpstan/phpstan-doctrine", + "version": "1.3.53", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-doctrine.git", + "reference": "85def57e5db6ac6c8a512200c0cfadf7b6621b10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/85def57e5db6ac6c8a512200c0cfadf7b6621b10", + "reference": "85def57e5db6ac6c8a512200c0cfadf7b6621b10", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.10.12" + }, + "conflict": { + "doctrine/collections": "<1.0", + "doctrine/common": "<2.7", + "doctrine/mongodb-odm": "<1.2", + "doctrine/orm": "<2.5", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "composer/semver": "^3.3.2", + "doctrine/annotations": "^1.11.0", + "doctrine/collections": "^1.6", + "doctrine/common": "^2.7 || ^3.0", + "doctrine/dbal": "^2.13.8 || ^3.3.3", + "doctrine/lexer": "^1.2.1", + "doctrine/mongodb-odm": "^1.3 || ^2.1", + "doctrine/orm": "^2.11.0", + "doctrine/persistence": "^1.3.8 || ^2.2.1", + "gedmo/doctrine-extensions": "^3.8", + "nesbot/carbon": "^2.49", + "nikic/php-parser": "^4.13.2", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^1.3.13", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^9.5.10", + "ramsey/uuid-doctrine": "^1.5.0", + "symfony/cache": "^4.4.35" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Doctrine extensions for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-doctrine/issues", + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.53" + }, + "time": "2023-11-21T10:31:58+00:00" + }, + { + "name": "phpstan/phpstan-symfony", + "version": "1.3.5", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-symfony.git", + "reference": "27ff6339f83796a7e0dd963cf445cd3c456fc620" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/27ff6339f83796a7e0dd963cf445cd3c456fc620", + "reference": "27ff6339f83796a7e0dd963cf445cd3c456fc620", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.10.36" + }, + "conflict": { + "symfony/framework-bundle": "<3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^1.3.11", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^8.5.29 || ^9.5", + "psr/container": "1.0 || 1.1.1", + "symfony/config": "^5.4 || ^6.1", + "symfony/console": "^5.4 || ^6.1", + "symfony/dependency-injection": "^5.4 || ^6.1", + "symfony/form": "^5.4 || ^6.1", + "symfony/framework-bundle": "^5.4 || ^6.1", + "symfony/http-foundation": "^5.4 || ^6.1", + "symfony/messenger": "^5.4", + "symfony/polyfill-php80": "^1.24", + "symfony/serializer": "^5.4", + "symfony/service-contracts": "^2.2.0" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" + "name": "LukΓ‘Ε‘ Unger", + "email": "looky.msc@gmail.com", + "homepage": "https://lookyman.net" } ], - "time": "2022-01-04T17:12:37+00:00" + "description": "Symfony Framework extensions and rules for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-symfony/issues", + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.5" + }, + "time": "2023-10-30T14:52:15+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.10", + "version": "9.2.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -12944,8 +9421,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -12978,7 +9455,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" }, "funding": [ { @@ -12986,7 +9464,7 @@ "type": "github" } ], - "time": "2021-12-05T09:12:13+00:00" + "time": "2023-09-19T04:57:46+00:00" }, { "name": "phpunit/php-file-iterator", @@ -13231,20 +9709,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.11", + "version": "9.6.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2406855036db1102126125537adb1406f7242fdd" + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd", - "reference": "2406855036db1102126125537adb1406f7242fdd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -13255,31 +9733,26 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -13287,15 +9760,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -13318,7 +9791,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" }, "funding": [ { @@ -13328,57 +9802,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" - } - ], - "time": "2021-12-25T07:07:57+00:00" - }, - { - "name": "qossmic/deptrac-shim", - "version": "0.11.1", - "source": { - "type": "git", - "url": "https://github.com/qossmic/deptrac-shim.git", - "reference": "286d048ef23f23579d92940d069b429b134b102d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/qossmic/deptrac-shim/zipball/286d048ef23f23579d92940d069b429b134b102d", - "reference": "286d048ef23f23579d92940d069b429b134b102d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "ext-zlib": "*", - "php": "^7.2 || 8.0.*" - }, - "replace": { - "qossmic/deptrac": "self.version" - }, - "suggest": { - "ext-dom": "For using the JUnit output formatter" - }, - "bin": [ - "deptrac" - ], - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + }, { - "name": "Simon MΓΆnch", - "email": "simon.moench@qossmic.com", - "role": "maintainer" + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "description": "deptrac phar distribution", - "support": { - "issues": "https://github.com/qossmic/deptrac-shim/issues", - "source": "https://github.com/qossmic/deptrac-shim/tree/0.11.1" - }, - "time": "2021-02-09T07:29:49+00:00" + "time": "2023-12-01T16:55:19+00:00" }, { "name": "sebastian/cli-parser", @@ -13549,16 +9979,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -13611,7 +10041,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -13619,7 +10049,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -13680,16 +10110,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -13734,7 +10164,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -13742,20 +10172,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -13797,7 +10227,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -13805,20 +10235,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -13874,7 +10304,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -13882,20 +10312,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -13938,7 +10368,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" }, "funding": [ { @@ -13946,7 +10376,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", @@ -14119,16 +10549,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -14167,10 +10597,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -14178,7 +10608,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -14237,28 +10667,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -14281,7 +10711,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -14289,7 +10719,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -14346,42 +10776,42 @@ }, { "name": "slevomat/coding-standard", - "version": "7.0.18", + "version": "8.14.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "b81ac84f41a4797dc25c8ede1b0718e2a74be0fc" + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b81ac84f41a4797dc25c8ede1b0718e2a74be0fc", - "reference": "b81ac84f41a4797dc25c8ede1b0718e2a74be0fc", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "phpstan/phpdoc-parser": "^1.0.0", - "squizlabs/php_codesniffer": "^3.6.1" + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.7.1" }, "require-dev": { - "phing/phing": "2.17.0", - "php-parallel-lint/php-parallel-lint": "1.3.1", - "phpstan/phpstan": "1.2.0", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0", - "phpstan/phpstan-strict-rules": "1.1.0", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.10" + "phing/phing": "2.17.4", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.10.37", + "phpstan/phpstan-deprecation-rules": "1.1.4", + "phpstan/phpstan-phpunit": "1.3.14", + "phpstan/phpstan-strict-rules": "1.5.1", + "phpunit/phpunit": "8.5.21|9.6.8|10.3.5" }, "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" } }, "notification-url": "https://packagist.org/downloads/", @@ -14389,9 +10819,13 @@ "MIT" ], "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.0.18" + "source": "https://github.com/slevomat/coding-standard/tree/8.14.1" }, "funding": [ { @@ -14403,20 +10837,20 @@ "type": "tidelift" } ], - "time": "2021-12-07T17:19:06+00:00" + "time": "2023-10-08T07:28:08+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.2", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -14452,54 +10886,44 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-12-12T21:44:58+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { - "name": "symfony/debug-bundle", - "version": "v5.4.2", + "name": "symfony/browser-kit", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/debug-bundle.git", - "reference": "3f3e9c9f77c9b1813d07181975a8c154fb4eb215" + "url": "https://github.com/symfony/browser-kit.git", + "reference": "e270297dbee59168274c2b535ab1bccd593e6ffe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/3f3e9c9f77c9b1813d07181975a8c154fb4eb215", - "reference": "3f3e9c9f77c9b1813d07181975a8c154fb4eb215", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e270297dbee59168274c2b535ab1bccd593e6ffe", + "reference": "e270297dbee59168274c2b535ab1bccd593e6ffe", "shasum": "" }, "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.2" + "php": ">=8.1", + "symfony/dom-crawler": "^5.4|^6.0" }, "require-dev": { - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For service container configuration", - "symfony/dependency-injection": "For using as a service from the container" + "symfony/css-selector": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\DebugBundle\\": "" + "Symfony\\Component\\BrowserKit\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -14519,10 +10943,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v5.4.2" + "source": "https://github.com/symfony/browser-kit/tree/v6.3.8" }, "funding": [ { @@ -14538,51 +10962,29 @@ "type": "tidelift" } ], - "time": "2021-12-11T13:33:37+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { - "name": "symfony/phpunit-bridge", - "version": "v6.0.0", + "name": "symfony/css-selector", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "5d6cc6720085084f504d2482fc4a2f268784006b" + "url": "https://github.com/symfony/css-selector.git", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/5d6cc6720085084f504d2482fc4a2f268784006b", - "reference": "5d6cc6720085084f504d2482fc4a2f268784006b", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3.0", - "symfony/error-handler": "^5.4|^6.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" - }, - "bin": [ - "bin/simple-phpunit" - ], - "type": "symfony-bridge", - "extra": { - "thanks": { - "name": "phpunit/phpunit", - "url": "https://github.com/sebastianbergmann/phpunit" - } + "php": ">=8.1" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Bridge\\PhpUnit\\": "" + "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -14594,18 +10996,22 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-FranΓ§ois Simon", + "email": "jeanfrancois.simon@sensiolabs.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides utilities for PHPUnit, especially user deprecation notices management", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.0.0" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { @@ -14621,48 +11027,35 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:32:57+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { - "name": "symfony/web-profiler-bundle", - "version": "v5.4.2", + "name": "symfony/dom-crawler", + "version": "v6.3.9", "source": { "type": "git", - "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "c779222d5a87b7d947e56ac09b02adb34cf8b610" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "b7065c123ae977a008568a3d016a17a110df7a8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c779222d5a87b7d947e56ac09b02adb34cf8b610", - "reference": "c779222d5a87b7d947e56ac09b02adb34cf8b610", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b7065c123ae977a008568a3d016a17a110df7a8e", + "reference": "b7065c123ae977a008568a3d016a17a110df7a8e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "conflict": { - "symfony/dependency-injection": "<5.2", - "symfony/form": "<4.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<4.4" + "masterminds/html5": "^2.6", + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/css-selector": "^5.4|^6.0" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\WebProfilerBundle\\": "" + "Symfony\\Component\\DomCrawler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -14682,10 +11075,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a development tool that gives detailed information about the execution of any request", + "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.2" + "source": "https://github.com/symfony/dom-crawler/tree/v6.3.9" }, "funding": [ { @@ -14701,46 +11094,59 @@ "type": "tidelift" } ], - "time": "2021-12-21T21:22:06+00:00" + "time": "2023-11-20T16:36:29+00:00" }, { - "name": "thecodingmachine/phpstan-safe-rule", - "version": "v1.1.0", + "name": "symfony/maker-bundle", + "version": "v1.52.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/phpstan-safe-rule.git", - "reference": "71bd8c11aee95a79d2cf3f03200d38605bde2930" + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "112f9466c94a46ca33dc441eee59a12cd1790757" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/phpstan-safe-rule/zipball/71bd8c11aee95a79d2cf3f03200d38605bde2930", - "reference": "71bd8c11aee95a79d2cf3f03200d38605bde2930", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/112f9466c94a46ca33dc441eee59a12cd1790757", + "reference": "112f9466c94a46ca33dc441eee59a12cd1790757", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^1.0", - "thecodingmachine/safe": "^1.0" + "doctrine/inflector": "^2.0", + "nikic/php-parser": "^4.11", + "php": ">=8.1", + "symfony/config": "^6.3|^7.0", + "symfony/console": "^6.3|^7.0", + "symfony/dependency-injection": "^6.3|^7.0", + "symfony/deprecation-contracts": "^2.2|^3", + "symfony/filesystem": "^6.3|^7.0", + "symfony/finder": "^6.3|^7.0", + "symfony/framework-bundle": "^6.3|^7.0", + "symfony/http-kernel": "^6.3|^7.0", + "symfony/process": "^6.3|^7.0" + }, + "conflict": { + "doctrine/doctrine-bundle": "<2.4", + "doctrine/orm": "<2.10" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^7.5.2", - "squizlabs/php_codesniffer": "^3.4" + "composer/semver": "^3.0", + "doctrine/doctrine-bundle": "^2.5.0", + "doctrine/orm": "^2.10.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/phpunit-bridge": "^6.3|^7.0", + "symfony/security-core": "^6.3|^7.0", + "symfony/yaml": "^6.3|^7.0", + "twig/twig": "^2.0|^3.0" }, - "type": "phpstan-extension", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.1-dev" - }, - "phpstan": { - "includes": [ - "phpstan-safe-rule.neon" - ] + "dev-main": "1.x-dev" } }, "autoload": { "psr-4": { - "TheCodingMachine\\Safe\\PHPStan\\": "src/" + "Symfony\\Bundle\\MakerBundle\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -14749,54 +11155,145 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHPStan rule to detect safety issues. Must be used in conjunction with thecodingmachine/safe", + "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", + "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", + "keywords": [ + "code generator", + "dev", + "generator", + "scaffold", + "scaffolding" + ], "support": { - "issues": "https://github.com/thecodingmachine/phpstan-safe-rule/issues", - "source": "https://github.com/thecodingmachine/phpstan-safe-rule/tree/v1.1.0" + "issues": "https://github.com/symfony/maker-bundle/issues", + "source": "https://github.com/symfony/maker-bundle/tree/v1.52.0" }, - "time": "2021-11-17T11:21:46+00:00" + "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": "2023-10-31T18:23:49+00:00" }, { - "name": "thecodingmachine/phpstan-strict-rules", - "version": "v1.0.0", + "name": "symfony/phpunit-bridge", + "version": "v6.4.1", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/phpstan-strict-rules.git", - "reference": "2ba8fa8b328c45f3b149c05def5bf96793c594b6" + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/phpstan-strict-rules/zipball/2ba8fa8b328c45f3b149c05def5bf96793c594b6", - "reference": "2ba8fa8b328c45f3b149c05def5bf96793c594b6", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cca5373a41d45edbeaf38b7b67f376da2205ff95", + "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95", "shasum": "" }, "require": { - "php": "^7.1|^8.0", - "phpstan/phpstan": "^1.0" + "php": ">=7.1.3" + }, + "conflict": { + "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^7.1" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/polyfill-php81": "^1.27" }, - "type": "phpstan-extension", + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "phpstan": { - "includes": [ - "phpstan-strict-rules.neon" - ] + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "TheCodingMachine\\PHPStan\\": "src/" + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.1" + }, + "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": "2023-12-01T09:25:07+00:00" + }, + { + "name": "symfony/process", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -14804,29 +11301,47 @@ ], "authors": [ { - "name": "David NΓ©grier", - "email": "d.negrier@thecodingmachine.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A set of additional rules for PHPStan based on best practices followed at TheCodingMachine", + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/thecodingmachine/phpstan-strict-rules/issues", - "source": "https://github.com/thecodingmachine/phpstan-strict-rules/tree/v1.0.0" + "source": "https://github.com/symfony/process/tree/v6.3.4" }, - "time": "2021-11-08T09:10:49+00:00" + "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": "2023-08-07T10:39:22+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -14855,7 +11370,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.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -14863,19 +11378,19 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" } ], "aliases": [], - "minimum-stability": "dev", + "minimum-stability": "stable", "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.0", + "php": ">=8.1", "ext-ctype": "*", "ext-iconv": "*" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.6.0" } diff --git a/apps/back/config/bundles.php b/apps/back/config/bundles.php new file mode 100644 index 00000000..b2b4fec9 --- /dev/null +++ b/apps/back/config/bundles.php @@ -0,0 +1,15 @@ + ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + Nelmio\SecurityBundle\NelmioSecurityBundle::class => ['all' => true], + League\FlysystemBundle\FlysystemBundle::class => ['all' => true], +]; diff --git a/src/api/config/packages/cache.yaml b/apps/back/config/packages/cache.yaml similarity index 100% rename from src/api/config/packages/cache.yaml rename to apps/back/config/packages/cache.yaml diff --git a/apps/back/config/packages/doctrine.yaml b/apps/back/config/packages/doctrine.yaml new file mode 100644 index 00000000..ef65aada --- /dev/null +++ b/apps/back/config/packages/doctrine.yaml @@ -0,0 +1,41 @@ +doctrine: + dbal: + url: '%env(resolve:DATABASE_URL)%' + + # IMPORTANT: You MUST configure your server version, + # either here or in the DATABASE_URL env var (see .env file) + #server_version: '13' + orm: + auto_generate_proxy_classes: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + auto_mapping: true + mappings: + App: + is_bundle: false + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App + +when@test: + doctrine: + dbal: + url: '%env(resolve:TESTS_DATABASE_URL)%' + +when@prod: + doctrine: + orm: + auto_generate_proxy_classes: false + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + + framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/src/api/config/packages/doctrine_migrations.yaml b/apps/back/config/packages/doctrine_migrations.yaml similarity index 89% rename from src/api/config/packages/doctrine_migrations.yaml rename to apps/back/config/packages/doctrine_migrations.yaml index 61e66124..29231d94 100644 --- a/src/api/config/packages/doctrine_migrations.yaml +++ b/apps/back/config/packages/doctrine_migrations.yaml @@ -3,3 +3,4 @@ doctrine_migrations: # namespace is arbitrary but should be different from App\Migrations # as migrations classes should NOT be autoloaded 'DoctrineMigrations': '%kernel.project_dir%/migrations' + enable_profiler: false diff --git a/apps/back/config/packages/flysystem.yaml b/apps/back/config/packages/flysystem.yaml new file mode 100644 index 00000000..2dff6b12 --- /dev/null +++ b/apps/back/config/packages/flysystem.yaml @@ -0,0 +1,43 @@ +# Read the documentation at https://github.com/thephpleague/flysystem-bundle/blob/master/docs/1-getting-started.md + +services: + Aws\S3\S3MultiRegionClient: + arguments: + - version: 'latest' + use_path_style_endpoint: true + endpoint: '%env(STORAGE_S3_ENDPOINT)%' + credentials: + key: '%env(STORAGE_S3_KEY)%' + secret: '%env(STORAGE_S3_SECRET)%' +flysystem: + storages: + # Private Storage + private.storage.s3: + adapter: 'aws' + options: + client: 'Aws\S3\S3MultiRegionClient' + bucket: '%env(STORAGE_PRIVATE_BUCKET_NAME)%' + + private.storage.memory: + adapter: 'memory' + + private.storage: + adapter: 'lazy' + options: + source: '%env(STORAGE_PRIVATE_SOURCE)%' + + public.storage.s3: + adapter: 'aws' + visibility: public + options: + client: 'Aws\S3\S3MultiRegionClient' + bucket: '%env(STORAGE_PUBLIC_BUCKET_NAME)%' + + public.storage.memory: + adapter: 'memory' + + public.storage: + adapter: 'lazy' + options: + source: '%env(STORAGE_PUBLIC_SOURCE)%' + diff --git a/src/api/config/packages/framework.yaml b/apps/back/config/packages/framework.yaml similarity index 57% rename from src/api/config/packages/framework.yaml rename to apps/back/config/packages/framework.yaml index 76f5c194..7853e9ed 100644 --- a/src/api/config/packages/framework.yaml +++ b/apps/back/config/packages/framework.yaml @@ -2,18 +2,23 @@ framework: secret: '%env(APP_SECRET)%' #csrf_protection: true - #http_method_override: true + http_method_override: false # Enables session support. Note that the session will ONLY be started if you read or write from it. # Remove or comment this section to explicitly disable session support. session: - handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler + handler_id: null cookie_secure: auto - #cookie_samesite: lax # CORS requests and SameSite cookies issue: https://github.com/whatwg/fetch/issues/769. - cookie_samesite: null - cookie_domain: '%env(COOKIE_DOMAIN)%' + cookie_samesite: lax + storage_factory_id: session.storage.factory.native #esi: true #fragments: true php_errors: log: true + +when@test: + framework: + test: true + session: + storage_factory_id: session.storage.factory.mock_file diff --git a/apps/back/config/packages/mailer.yaml b/apps/back/config/packages/mailer.yaml new file mode 100644 index 00000000..5ce0ec31 --- /dev/null +++ b/apps/back/config/packages/mailer.yaml @@ -0,0 +1,3 @@ +framework: + mailer: + dsn: '%env(MAILER_DSN)%' \ No newline at end of file diff --git a/apps/back/config/packages/monolog.yaml b/apps/back/config/packages/monolog.yaml new file mode 100644 index 00000000..ca75d6fc --- /dev/null +++ b/apps/back/config/packages/monolog.yaml @@ -0,0 +1,79 @@ +services: + monolog.formatter.json.stacktraces: + class: Monolog\Formatter\JsonFormatter + calls: + - [includeStacktraces] + monolog.formatter.line.stacktraces: + class: Monolog\Formatter\LineFormatter + calls: + - [includeStacktraces] + monolog.formatter.default: + alias: monolog.formatter.line.stacktraces +monolog: + channels: + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists + +when@dev: + monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + formatter: monolog.formatter.default + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + stdout: + type: stream + path: php://stdout + level: debug + channels: ['!event'] + formatter: monolog.formatter.default + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] + +when@test: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + +when@prod: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + buffer_size: 100 # How many messages should be saved? Prevent memory leaks + nested: + type: stream + path: "php://stderr" + level: debug + formatter: monolog.formatter.default + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] + deprecation: + type: stream + channels: [deprecation] + path: php://stderr diff --git a/apps/back/config/packages/nelmio_security.yaml b/apps/back/config/packages/nelmio_security.yaml new file mode 100644 index 00000000..39ec28d1 --- /dev/null +++ b/apps/back/config/packages/nelmio_security.yaml @@ -0,0 +1,82 @@ +# config/packages/nelmio_security.yaml +nelmio_security: + # signs/verifies all cookies + # FIXME : + # - PHPSESSID cookie is not correctly passed into the signing process, so we cannot use '*'. But additional cookies could be set a signed here + # - see https://github.com/nelmio/NelmioSecurityBundle/issues/154 + signed_cookie: + names: [] + # prevents framing of the entire site + clickjacking: + paths: + '^/.*': DENY + hosts: +# - '^foo\.com$' +# - '\.example\.org$' + + # prevents redirections outside the website's domain + external_redirects: + abort: true + log: true + + # prevents inline scripts, unsafe eval, external scripts/images/styles/frames, etc + csp: + hosts: [] + content_types: [] + enforce: + level1_fallback: false + browser_adaptive: + enabled: false +# report-uri: '%router.request_context.base_url%/nelmio/csp/report' + default-src: + - 'none' + script-src: + - 'self' + block-all-mixed-content: true # defaults to false, blocks HTTP content over HTTPS transport + # upgrade-insecure-requests: true # defaults to false, upgrades HTTP requests to HTTPS transport + + # disables content type sniffing for script resources + content_type: + nosniff: true + + # forces Microsoft's XSS-Protection with + # its block mode + xss_protection: + enabled: true + mode_block: true +# report_uri: '%router.request_context.base_url%/nelmio/xss/report' + + # Send a full URL in the ``Referer`` header when performing a same-origin request, + # only send the origin of the document to secure destination (HTTPS->HTTPS), + # and send no header to a less secure destination (HTTPS->HTTP). + # If ``strict-origin-when-cross-origin`` is not supported, use ``no-referrer`` policy, + # no referrer information is sent along with requests. + referrer_policy: + enabled: true + policies: + - 'no-referrer' + - 'strict-origin-when-cross-origin' + + # forces HTTPS handling, don't combine with flexible mode + # and make sure you have SSL working on your site before enabling this + # forced_ssl: + # hsts_max_age: 2592000 # 30 days + # hsts_subdomains: true + # redirect_status_code: 302 # default, switch to 301 for permanent redirects + + # flexible HTTPS handling, read the detailed config info + # and make sure you have SSL working on your site before enabling this + + +when@prod: + nelmio_security: + # depends if you have a reverse proxy that will handle HTTPS, uncomment if you deploy with ansible for instance +# forced_ssl: +# hsts_max_age: 2592000 # 30 days +# hsts_subdomains: true +# redirect_status_code: 302 # default, switch to 301 for permanent redirects + +# Seems unnecessary because we are'nt using any insecure page in prod +# flexible_ssl: +# cookie_name: auth +# unsecured_logout: false diff --git a/src/api/config/packages/routing.yaml b/apps/back/config/packages/routing.yaml similarity index 75% rename from src/api/config/packages/routing.yaml rename to apps/back/config/packages/routing.yaml index b45c1cec..4b766ce5 100644 --- a/src/api/config/packages/routing.yaml +++ b/apps/back/config/packages/routing.yaml @@ -5,3 +5,8 @@ framework: # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands #default_uri: http://localhost + +when@prod: + framework: + router: + strict_requirements: null diff --git a/apps/back/config/packages/security.yaml b/apps/back/config/packages/security.yaml new file mode 100644 index 00000000..d0a54809 --- /dev/null +++ b/apps/back/config/packages/security.yaml @@ -0,0 +1,67 @@ +security: + # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords + password_hashers: + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' + # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider + providers: + # used to reload user from session & other features (e.g. switch_user) + app_user_provider: + entity: + class: App\Entity\User + property: email + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + security: true + lazy: true + provider: app_user_provider + logout: + path: app_logout + json_login: + check_path: api_login + # custom_authenticators: + # - 'App\Authenticator\Saml2Authenticator' + + # activate differents ways to authenticate + # https://symfony.com/doc/current/security.html#the-firewall + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + - { path: '^/%app.api.url.prefix%/login$', roles: PUBLIC_ACCESS } + - { path: '^/%app.api.url.prefix%/auth/sso/', roles: PUBLIC_ACCESS } + - { path: '^/%app.api.url.prefix%/healthcheck$', roles: PUBLIC_ACCESS } + - { path: '^/%app.api.url.prefix%/', roles: IS_AUTHENTICATED_FULLY } + + role_hierarchy: + ROLE_ADMIN: + - ROLE_RIGHT_ACCESS + - ROLE_RIGHT_USER_READ + - ROLE_RIGHT_USER_CREATE + - ROLE_RIGHT_USER_DELETE + - ROLE_RIGHT_USER_UPDATE + - ROLE_RIGHT_COMPANY_READ + - ROLE_RIGHT_COMPANY_CREATE + - ROLE_RIGHT_COMPANY_DELETE + - ROLE_RIGHT_COMPANY_UPDATE + ROLE_USER: + - ROLE_RIGHT_ACCESS + + +when@test: + security: + password_hashers: + # By default, password hashers are resource intensive and take time. This is + # important to generate secure password hashes. In tests however, secure hashes + # are not important, waste resources and increase test times. The following + # reduces the work factor to the lowest possible values. + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: + algorithm: auto + cost: 4 # Lowest possible value for bcrypt + time_cost: 3 # Lowest possible value for argon + memory_cost: 10 # Lowest possible value for argon diff --git a/apps/back/config/packages/test/dama_doctrine_test_bundle.yaml b/apps/back/config/packages/test/dama_doctrine_test_bundle.yaml new file mode 100644 index 00000000..80b00911 --- /dev/null +++ b/apps/back/config/packages/test/dama_doctrine_test_bundle.yaml @@ -0,0 +1,4 @@ +dama_doctrine_test: + enable_static_connection: true + enable_static_meta_data_cache: true + enable_static_query_cache: true diff --git a/apps/back/config/packages/translation.yaml b/apps/back/config/packages/translation.yaml new file mode 100644 index 00000000..abb76aae --- /dev/null +++ b/apps/back/config/packages/translation.yaml @@ -0,0 +1,13 @@ +framework: + default_locale: en + translator: + default_path: '%kernel.project_dir%/translations' + fallbacks: + - en +# providers: +# crowdin: +# dsn: '%env(CROWDIN_DSN)%' +# loco: +# dsn: '%env(LOCO_DSN)%' +# lokalise: +# dsn: '%env(LOKALISE_DSN)%' diff --git a/apps/back/config/packages/twig.yaml b/apps/back/config/packages/twig.yaml new file mode 100644 index 00000000..f9f4cc53 --- /dev/null +++ b/apps/back/config/packages/twig.yaml @@ -0,0 +1,6 @@ +twig: + default_path: '%kernel.project_dir%/templates' + +when@test: + twig: + strict_variables: true diff --git a/src/api/config/packages/validator.yaml b/apps/back/config/packages/validator.yaml similarity index 74% rename from src/api/config/packages/validator.yaml rename to apps/back/config/packages/validator.yaml index 350786a1..0201281d 100644 --- a/src/api/config/packages/validator.yaml +++ b/apps/back/config/packages/validator.yaml @@ -6,3 +6,8 @@ framework: # For instance, basic validation constraints will be inferred from Doctrine's metadata. #auto_mapping: # App\Entity\: [] + +when@test: + framework: + validation: + not_compromised_password: false diff --git a/src/api/config/preload.php b/apps/back/config/preload.php similarity index 100% rename from src/api/config/preload.php rename to apps/back/config/preload.php diff --git a/src/api/config/routes.yaml b/apps/back/config/routes.yaml similarity index 52% rename from src/api/config/routes.yaml rename to apps/back/config/routes.yaml index c3283aa2..ec427661 100644 --- a/src/api/config/routes.yaml +++ b/apps/back/config/routes.yaml @@ -1,3 +1,6 @@ #index: # path: / # controller: App\Controller\DefaultController::index +app_logout: + path: "%app.api.url.prefix%/auth/logout" + methods: POST diff --git a/src/api/config/routes/annotations.yaml b/apps/back/config/routes/annotations.yaml similarity index 57% rename from src/api/config/routes/annotations.yaml rename to apps/back/config/routes/annotations.yaml index c685c71c..cf55b8bc 100644 --- a/src/api/config/routes/annotations.yaml +++ b/apps/back/config/routes/annotations.yaml @@ -1,6 +1,7 @@ controllers: - resource: ../../src/Infrastructure/Controller/ + resource: ../../src/Controller/ type: annotation + prefix: '/%app.api.url.prefix%/' kernel: resource: ../../src/Kernel.php diff --git a/apps/back/config/routes/framework.yaml b/apps/back/config/routes/framework.yaml new file mode 100644 index 00000000..0fc74bba --- /dev/null +++ b/apps/back/config/routes/framework.yaml @@ -0,0 +1,4 @@ +when@dev: + _errors: + resource: '@FrameworkBundle/Resources/config/routing/errors.xml' + prefix: /_error diff --git a/apps/back/config/services.yaml b/apps/back/config/services.yaml new file mode 100644 index 00000000..ef9621b9 --- /dev/null +++ b/apps/back/config/services.yaml @@ -0,0 +1,83 @@ +# This file is the entry point to configure your own services. +# Files in the packages/ subdirectory configure your dependencies. + +# Put parameters here that don't need to change on each machine where the app is deployed +# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration +parameters: + app.mail.host: "%env(MAIL_HOST)%" + app.url.base: "%env(APP_URL)%" + app.api.version: "1.0" + app.api.url.prefix: "%env(API_PREFIX)%/%app.api.version%" + # app.url.webapp: "%env(APP_URL_WEBAPP)%" + # OUR APP + app.sso.serviceprovider.x509cert: "%env(APP_SSO_SERVICEPROVIDER_X509CERT)%" + app.sso.serviceprovider.privateKey: "%env(APP_SSO_SERVICEPROVIDER_PRIVATEKEY)%" + # THE SSO APP + app.sso.identityprovider.x509cert: "%env(APP_SSO_IDENTITYPROVIDER_X509CERT)%" + app.sso.identityprovider.entityId: "%env(APP_SSO_IDENTITYPROVIDER_ENTITYID)%" + app.sso.identityprovider.loginurl: "%env(APP_SSO_IDENTITYPROVIDER_LOGINURL)%" + app.sso.identityprovider.logouturl: "%env(APP_SSO_IDENTITYPROVIDER_LOGOUTURL)%" + app.sso.configuration: + strict: true + debug: true + sp: + entityId: '%app.url.base%' + assertionConsumerService: { url: '%app.url.base%/%app.api.url.prefix%/auth/sso/saml2/login' } + singleLogoutService: { url: "%app.url.base%/%app.api.url.prefix%/auth/sso/saml2/logout" } + NameIDFormat: "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" + x509cert: "%app.sso.serviceprovider.x509cert%" + privateKey: "%app.sso.serviceprovider.privateKey%" + idp: + entityId: "%app.sso.identityprovider.entityId%" + singleSignOnService: { url: "%app.sso.identityprovider.loginurl%" } + singleLogoutService: { url: "%app.sso.identityprovider.logouturl%" } + x509cert: "%app.sso.identityprovider.x509cert%" + security: + wantAssertionsEncrypted: true + +services: + # default configuration for services in *this* file + _defaults: + autowire: true # Automatically injects dependencies in your services. + autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. + bind: + $mailHost: "%app.mail.host%" + # makes classes in src/ available to be used as services + # this creates a service per class whose id is the fully-qualified class name + App\: + resource: '../src/' + exclude: + - '../src/DependencyInjection/' + - '../src/Entity/' + - '../src/Kernel.php' + + # controllers are imported separately to make sure services can be injected + # as action arguments even if you don't extend any base controller class + App\Controller\: + resource: '../src/Controller/' + tags: [ 'controller.service_arguments' ] + + # add more service definitions when explicit configuration is needed + # please note that last definitions always *replace* previous ones + + App\Authenticator\Saml2Authenticator: + class: App\Authenticator\Saml2Authenticator + arguments: + $checkPath: 'api_login_saml2' + + + OneLogin\Saml2\Auth: + class: OneLogin\Saml2\Auth + arguments: + $settings: "%app.sso.configuration%" + + App\Controller\AuthController: + tags: + - {name: controller.service_arguments} + arguments: + $appUrl: "%app.url.base%" + + App\Command\InitS3Buckets: + arguments: + $publicBucketName: "%env(STORAGE_PUBLIC_BUCKET_NAME)%" + $privateBucketName: "%env(STORAGE_PRIVATE_BUCKET_NAME)%" diff --git a/apps/back/dump/dump.sql b/apps/back/dump/dump.sql new file mode 100644 index 00000000..6a0611b0 --- /dev/null +++ b/apps/back/dump/dump.sql @@ -0,0 +1,43 @@ +-- MariaDB dump 10.19 Distrib 10.7.3-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Host: localhost Database: analysec_db +-- ------------------------------------------------------ +-- Server version 10.7.3-MariaDB-1:10.7.3+maria~focal + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `doctrine_migration_versions` +-- + +DROP TABLE IF EXISTS `doctrine_migration_versions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `doctrine_migration_versions` ( + `version` varchar(191) COLLATE utf8mb3_unicode_ci NOT NULL, + `executed_at` datetime DEFAULT NULL, + `execution_time` int(11) DEFAULT NULL, + PRIMARY KEY (`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2022-11-21 10:24:13 diff --git a/src/api/migrations/.gitignore b/apps/back/migrations/.gitignore similarity index 100% rename from src/api/migrations/.gitignore rename to apps/back/migrations/.gitignore diff --git a/apps/back/migrations/Version20221228151327.php b/apps/back/migrations/Version20221228151327.php new file mode 100644 index 00000000..d2454b15 --- /dev/null +++ b/apps/back/migrations/Version20221228151327.php @@ -0,0 +1,38 @@ +addSql('CREATE TABLE user ( + id INT AUTO_INCREMENT NOT NULL, + email VARCHAR(180) NOT NULL, + roles LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\', + password VARCHAR(180) NOT NULL, + UNIQUE INDEX UNIQ_8D93D649E7927C74 (email), + PRIMARY KEY(id) + ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP TABLE user'); + } +} diff --git a/apps/back/migrations/Version20231005121328.php b/apps/back/migrations/Version20231005121328.php new file mode 100644 index 00000000..28435165 --- /dev/null +++ b/apps/back/migrations/Version20231005121328.php @@ -0,0 +1,37 @@ +addSql('CREATE TABLE company (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('ALTER TABLE user ADD company_id INT DEFAULT NULL'); + $this->addSql('ALTER TABLE user ADD CONSTRAINT FK_8D93D649979B1AD6 FOREIGN KEY (company_id) REFERENCES company (id)'); + $this->addSql('CREATE INDEX IDX_8D93D649979B1AD6 ON user (company_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE user DROP FOREIGN KEY FK_8D93D649979B1AD6'); + $this->addSql('DROP TABLE company'); + $this->addSql('DROP INDEX IDX_8D93D649979B1AD6 ON user'); + $this->addSql('ALTER TABLE user DROP company_id'); + } +} diff --git a/apps/back/migrations/Version20231006041542.php b/apps/back/migrations/Version20231006041542.php new file mode 100644 index 00000000..e2794099 --- /dev/null +++ b/apps/back/migrations/Version20231006041542.php @@ -0,0 +1,33 @@ +addSql('ALTER TABLE company ADD identity_file VARCHAR(255) DEFAULT NULL'); + $this->addSql('ALTER TABLE user ADD profile_picture VARCHAR(255) DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE company DROP identity_file'); + $this->addSql('ALTER TABLE user DROP profile_picture'); + } +} diff --git a/apps/back/migrations/Version20231015065234.php b/apps/back/migrations/Version20231015065234.php new file mode 100644 index 00000000..6928d786 --- /dev/null +++ b/apps/back/migrations/Version20231015065234.php @@ -0,0 +1,43 @@ +addSql('CREATE TABLE file (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, private TINYINT(1) NOT NULL, storage_path VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('ALTER TABLE company ADD indentity_file_id INT NOT NULL'); + $this->addSql('ALTER TABLE company ADD CONSTRAINT FK_4FBF094FDB804B4A FOREIGN KEY (indentity_file_id) REFERENCES file (id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_4FBF094FDB804B4A ON company (indentity_file_id)'); + $this->addSql('ALTER TABLE user ADD profile_picture_id INT DEFAULT NULL, DROP profile_picture, CHANGE roles roles JSON NOT NULL COMMENT \'(DC2Type:json)\''); + $this->addSql('ALTER TABLE user ADD CONSTRAINT FK_8D93D649292E8AE2 FOREIGN KEY (profile_picture_id) REFERENCES file (id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649292E8AE2 ON user (profile_picture_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE company DROP FOREIGN KEY FK_4FBF094FDB804B4A'); + $this->addSql('ALTER TABLE user DROP FOREIGN KEY FK_8D93D649292E8AE2'); + $this->addSql('DROP TABLE file'); + $this->addSql('DROP INDEX UNIQ_4FBF094FDB804B4A ON company'); + $this->addSql('ALTER TABLE company ADD identity_file VARCHAR(255) DEFAULT NULL, DROP indentity_file_id'); + $this->addSql('DROP INDEX UNIQ_8D93D649292E8AE2 ON user'); + $this->addSql('ALTER TABLE user ADD profile_picture VARCHAR(255) DEFAULT NULL, DROP profile_picture_id, CHANGE roles roles JSON NOT NULL COMMENT \'(DC2Type:json)\''); + } +} diff --git a/apps/back/migrations/Version20231022121013.php b/apps/back/migrations/Version20231022121013.php new file mode 100644 index 00000000..b322847c --- /dev/null +++ b/apps/back/migrations/Version20231022121013.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE company CHANGE indentity_file_id indentity_file_id INT DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE company CHANGE indentity_file_id indentity_file_id INT NOT NULL'); + } +} diff --git a/apps/back/phpcs.xml.dist b/apps/back/phpcs.xml.dist new file mode 100644 index 00000000..c83152ae --- /dev/null +++ b/apps/back/phpcs.xml.dist @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + src + + src/Kernel.php + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/back/phpmd.xml b/apps/back/phpmd.xml new file mode 100644 index 00000000..317c462a --- /dev/null +++ b/apps/back/phpmd.xml @@ -0,0 +1,122 @@ + + + + My custom rule set that checks my code... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + e,url,log,id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \Ramsey\Uuid\Uuid,\App\Exception + + + + + + \ No newline at end of file diff --git a/apps/back/phpstan.neon b/apps/back/phpstan.neon new file mode 100644 index 00000000..74a6ee72 --- /dev/null +++ b/apps/back/phpstan.neon @@ -0,0 +1,27 @@ +parameters: + level: 8 +# autoload_files: +# - application/bootstrap_phpstan.php + treatPhpDocTypesAsCertain: false + parallel: + processTimeout: 360.0 + # Check with PHPCS + checkMissingIterableValueType: false + paths: + - src + doctrine: + objectManagerLoader: phpstan/entity-manager.php + symfony: + containerXmlPath: var/cache/dev/App_KernelDevDebugContainer.xml + excludePaths: + - src/Kernel.php +includes: + - vendor/phpstan/phpstan-doctrine/extension.neon + - vendor/phpstan/phpstan-doctrine/rules.neon + - vendor/phpstan/phpstan-symfony/extension.neon + - vendor/phpstan/phpstan-symfony/rules.neon + +rules: + - App\DevTools\PHPStan\RouteSecurityChecker + +## May have to add static forbidden \ No newline at end of file diff --git a/apps/back/phpstan/entity-manager.php b/apps/back/phpstan/entity-manager.php new file mode 100644 index 00000000..a622a2ff --- /dev/null +++ b/apps/back/phpstan/entity-manager.php @@ -0,0 +1,14 @@ +bootEnv(__DIR__ . '/../.env'); + +$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); +$kernel->boot(); +return $kernel->getContainer()->get('doctrine')->getManager(); diff --git a/apps/back/phpunit.xml.dist b/apps/back/phpunit.xml.dist new file mode 100644 index 00000000..2162e93c --- /dev/null +++ b/apps/back/phpunit.xml.dist @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + tests + + + + + + src + + + + + + + + + + + + + + diff --git a/src/api/public/.htaccess b/apps/back/public/.htaccess similarity index 93% rename from src/api/public/.htaccess rename to apps/back/public/.htaccess index 2776637c..3853fa97 100644 --- a/src/api/public/.htaccess +++ b/apps/back/public/.htaccess @@ -18,6 +18,10 @@ DirectoryIndex index.php + # This Option needs to be enabled for RewriteRule, otherwise it will show an error like + # 'Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden' + Options +FollowSymlinks + RewriteEngine On # Determine the RewriteBase automatically and set it as environment variable. diff --git a/apps/back/public/index.php b/apps/back/public/index.php new file mode 100644 index 00000000..9982c218 --- /dev/null +++ b/apps/back/public/index.php @@ -0,0 +1,9 @@ +httpUtils->checkRequestPath($request, $this->checkPath); + } + + public function authenticate(Request $request): Passport + { + $session = $request->getSession(); + $authNRequestId = $session->get('AuthNRequestID'); + if (! \is_string($authNRequestId)) { + throw new SsoConsumerAuthNException(); + } + + $auth = $this->auth; + $auth->setStrict(false); + $auth->processResponse($authNRequestId); + $errors = $auth->getErrors(); + if (! empty($errors)) { + throw new SsoConsumerException($auth); + } + $email = $auth->getNameId(); + $emails = $auth->getAttribute('email'); + + if ($emails) { + $email = $emails[0]; + } + $this->userProvider->loadUserByIdentifier($email); // Check user existence + + return new SelfValidatingPassport(new UserBadge($email)); + } + + /** This is kept as example */ + public function basicAuthenticate(Request $request): Passport + { + $data = \json_decode((string) $request->getContent(), true, 512, JSON_THROW_ON_ERROR); + + $username = $data['username']; + + $this->userProvider->loadUserByIdentifier($username); + + return new SelfValidatingPassport(new UserBadge($username)); + } + + public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): Response|null + { + // on success, let the request continue + return null; + } + + public function onAuthenticationFailure(Request $request, AuthenticationException $exception): Response|null + { + $data = [ + // you may want to customize or obfuscate the message first + 'message' => strtr($exception->getMessageKey(), $exception->getMessageData()), + ]; + + return new JsonResponse($data, Response::HTTP_UNAUTHORIZED); + } + + /** @inheritDoc */ + public function start(Request $request, AuthenticationException|null $authException = null) + { + $session = $request->getSession(); + $auth = $this->auth; + $url = $auth->login(null, [], false, false, true); + $authNRequestId = $auth->getLastRequestID(); + $session->set('AuthNRequestID', $authNRequestId); + + return new JsonResponse(['url' => $url], Response::HTTP_UNAUTHORIZED); + } +} diff --git a/src/api/translations/.gitignore b/apps/back/src/Collection/.gitignore similarity index 100% rename from src/api/translations/.gitignore rename to apps/back/src/Collection/.gitignore diff --git a/apps/back/src/Command/InitS3Buckets.php b/apps/back/src/Command/InitS3Buckets.php new file mode 100644 index 00000000..77eaa59a --- /dev/null +++ b/apps/back/src/Command/InitS3Buckets.php @@ -0,0 +1,102 @@ +info('Initializing buckets...'); + $this->createBucket($this->privateBucketName, $style); + + if ($this->createBucket($this->publicBucketName, $style)) { + //Add DL rights for public bucket + $policyReadOnly = '{ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "s3:GetBucketLocation", + "s3:ListBucket" + ], + "Effect": "Allow", + "Principal": { + "AWS": [ + "*" + ] + }, + "Resource": [ + "arn:aws:s3:::%s" + ], + "Sid": "" + }, + { + "Action": [ + "s3:GetObject" + ], + "Effect": "Allow", + "Principal": { + "AWS": [ + "*" + ] + }, + "Resource": [ + "arn:aws:s3:::%s/*" + ], + "Sid": "" + } + ] + } + '; + + $this->client->putBucketPolicy([ + 'Bucket' => $this->publicBucketName, + 'Policy' => sprintf( + $policyReadOnly, + $this->publicBucketName, + $this->publicBucketName, + ), + ]); + } + + $style->success('Buckets init done !'); + + return Command::SUCCESS; + } + + public function createBucket(string $bucketName, SymfonyStyle $style): bool + { + $buckets = $this->client->listBuckets(); + if (is_iterable($buckets->get('Buckets'))) { + foreach ($buckets->get('Buckets') as $bucket) { + if ($bucket['Name'] === $bucketName) { + $style->info(sprintf("Bucket '%s' exists, skipping...", $bucketName)); + + return false; + } + } + } + + $this->client->createBucket(['Bucket' => $bucketName]); + $style->success(sprintf("Bucket '%s' created !", $bucketName)); + + return true; + } +} diff --git a/docs/static/.nojekyll b/apps/back/src/Controller/.gitignore similarity index 100% rename from docs/static/.nojekyll rename to apps/back/src/Controller/.gitignore diff --git a/apps/back/src/Controller/AuthController.php b/apps/back/src/Controller/AuthController.php new file mode 100644 index 00000000..ed16430e --- /dev/null +++ b/apps/back/src/Controller/AuthController.php @@ -0,0 +1,54 @@ +appUrl); + } + + #[Route('/login', name: 'api_login', methods: ['POST'])] + public function login(#[CurrentUser] User|null $user): JsonResponse + { + return new JsonResponse($user); + } + + #[Route('/auth/me', name: 'api_me')] + #[IsGranted('IS_AUTHENTICATED_FULLY')] + public function getLoggedUser(#[CurrentUser] User $user): JsonResponse + { + return new JsonResponse($user); + } + + /** @Route("/auth/sso/saml2/metadata", name="getSsoMetadata", methods={"GET"}) */ + public function getMetadata(): Response + { + $auth = $this->auth; + $settings = $auth->getSettings(); + $metadata = $settings->getSPMetadata(true); + + return new Response(content: $metadata, headers: ['content-type' => 'xml']); + } +} diff --git a/apps/back/src/Controller/CompanyController.php b/apps/back/src/Controller/CompanyController.php new file mode 100644 index 00000000..ed45a382 --- /dev/null +++ b/apps/back/src/Controller/CompanyController.php @@ -0,0 +1,75 @@ +companyRepository->findAll(); + + return $this->json($companies, 200, [], ['groups' => Company::GROUP_LIST]); + } + + #[Route('/companies/{id}', name: 'get_company', methods: ['GET'])] + #[IsGranted('ROLE_RIGHT_COMPANY_READ')] + public function get(Company $company): JsonResponse + { + return $this->json($company, 200, [], ['groups' => Company::GROUP_DETAILS]); + } + + #[Route('/companies', name: 'create_company', methods: ['POST'])] + #[IsGranted('ROLE_RIGHT_COMPANY_CREATE')] + public function create(#[MapRequestPayload] CompanyRequestDto $companyRequestDto, Request $request): JsonResponse + { + $identityFile = $request->files->get('identityFile'); + if ($identityFile !== null) { + \assert($identityFile instanceof UploadedFile); + $companyRequestDto->setIndentityFile($identityFile); + } + $company = $this->createCompany->create($companyRequestDto); + $this->entityManager->flush(); + + return $this->json($company, 200, [], ['groups' => Company::GROUP_DETAILS]); + } + + #[Route('/companies/{id}', name: 'update_company', methods: ['POST'])] + #[IsGranted('ROLE_RIGHT_COMPANY_UPDATE')] + public function update(Company $company, #[MapRequestPayload] CompanyRequestDto $companyRequestDto, Request $request): JsonResponse + { + $identityFile = $request->files->get('identityFile'); + if ($identityFile !== null) { + \assert($identityFile instanceof UploadedFile); + $companyRequestDto->setIndentityFile($identityFile); + } + $company = $this->updateCompany->update($company, $companyRequestDto); + $this->entityManager->flush(); + + return $this->json($company, 200, [], ['groups' => Company::GROUP_DETAILS]); + } +} diff --git a/apps/back/src/Controller/HealthCheckController.php b/apps/back/src/Controller/HealthCheckController.php new file mode 100644 index 00000000..1e93b459 --- /dev/null +++ b/apps/back/src/Controller/HealthCheckController.php @@ -0,0 +1,25 @@ + 'ok']); + } + + #[Route('/healthcheck/logged', name: 'app_health_check_logged')] + #[IsGranted('IS_AUTHENTICATED_FULLY')] + public function logged(): JsonResponse + { + return new JsonResponse(['success' => 'ok']); + } +} diff --git a/apps/back/src/Controller/UserController.php b/apps/back/src/Controller/UserController.php new file mode 100644 index 00000000..cb4c4754 --- /dev/null +++ b/apps/back/src/Controller/UserController.php @@ -0,0 +1,107 @@ +denyAccessUnlessGranted(UserVoter::CREATE_USER); + $profilePicture = $request->files->get('profilePictureFile'); + if ($profilePicture !== null) { + \assert($profilePicture instanceof UploadedFile); + $userDto->setProfilePicture($profilePicture); + } + $user = $this->createUser->createUser($userDto); + + $this->entityManager->flush(); + + return $this->json($user, 200, [], ["groups" => [User::GROUP_USER_DETAILS]]); + } + + #[Route('/users', name: 'list_users', methods: ['GET'])] + #[IsGranted(UserVoter::VIEW_ANY_USER)] + public function listUsers(\Symfony\Bundle\SecurityBundle\Security $security): JsonResponse + { + $users = $this->userRepository->findAll(); + + return $this->json($users, 200, [], ["groups" => [User::GROUP_USER_LIST]]); + } + + #[Route('/users/{id}', name: 'get_user', methods: ['GET'])] + #[IsGranted(UserVoter::VIEW_ANY_USER)] + public function getUserEntity(User $user): JsonResponse + { + return $this->json($user, 200, [], ["groups" => [User::GROUP_USER_DETAILS]]); + } + + #[Route('/users/{id}', name: 'update_user', methods: ['POST'])] + #[IsGranted('ROLE_RIGHT_USER_UPDATE')] + public function updateUser(User $user, #[MapRequestPayload] UpdateUserDto $userDto, Request $request): JsonResponse + { + // phpcs:disable Generic.Commenting.Fixme.TaskFound + // FIXME: Using POST instead of PUT here because PUT does not handle multipart form data correctly + $profilePicture = $request->files->get('profilePictureFile'); + if ($profilePicture !== null) { + \assert($profilePicture instanceof UploadedFile); + $userDto->setProfilePicture($profilePicture); + } + $user = $this->updateUser->updateUser($user, $userDto); + + $this->entityManager->flush(); + + return $this->json($user, 200, [], ["groups" => User::GROUP_USER_DETAILS]); + } + + #[Route('/users/{id}', name: 'delete_user', methods: ['DELETE'])] + #[IsGranted(UserVoter::DELETE_ANY_USER, subject: 'user')] + public function deleteUser(User $user): JsonResponse + { + $this->entityManager->remove($user); + $this->entityManager->flush(); + + return new JsonResponse(true); + } + + #[Route('/users/{id}/picture', name:'delete_user_picture', methods: ['DELETE'])] + #[IsGranted(UserVoter::EDIT_ANY_USER, subject: 'user')] + public function deleteUserPicture(User $user): JsonResponse + { + $this->deleteUserPicture->delete($user); + + $this->entityManager->flush(); + return new JsonResponse(true); + } +} diff --git a/apps/back/src/DataFixtures/UserFixtures.php b/apps/back/src/DataFixtures/UserFixtures.php new file mode 100644 index 00000000..70e66d11 --- /dev/null +++ b/apps/back/src/DataFixtures/UserFixtures.php @@ -0,0 +1,28 @@ +setPassword($this->passwordHasher->hashPassword($user, 'admin')); + $user->setRoles(['ROLE_ADMIN']); + + $manager->persist($user); + $manager->flush(); + } +} diff --git a/apps/back/src/DevTools/PHPStan/IKnowWhatImDoingThisIsAPublicRoute.php b/apps/back/src/DevTools/PHPStan/IKnowWhatImDoingThisIsAPublicRoute.php new file mode 100644 index 00000000..6c74532b --- /dev/null +++ b/apps/back/src/DevTools/PHPStan/IKnowWhatImDoingThisIsAPublicRoute.php @@ -0,0 +1,19 @@ + */ +class RouteSecurityChecker implements Rule +{ + public function getNodeType(): string + { + return InClassMethodNode::class; + } + + /** @inheritdoc */ + public function processNode(Node $node, Scope $scope): array + { + \assert($node instanceof InClassMethodNode); + $className = $scope->getClassReflection()?->getName(); + $functionName = $scope->getFunctionName(); + if (! $className || ! $functionName) { + return []; + } + + try { + $reflection = new ReflectionMethod($className, $functionName); + } catch (ReflectionException) { + return []; + } + + $attributes = $reflection->getAttributes(); + + // Parse only Routes + $routeAttribute = $this->getAttribute(Route::class, $attributes); + if (! $routeAttribute) { + return []; + } + + if ($this->functionAttributesContain(IKnowWhatImDoingThisIsAPublicRoute::class, $attributes)) { + return []; + } + + $isGrantedAttribute = $this->getAttribute(IsGranted::class, $attributes); + + // LVL 1 NO PROTECTION AT ALL :: Missing vertical controls : no IsGranted and no denyAccessUnlessGranted (even without subject) + if ($isGrantedAttribute === null && ! $this->isDenyAccessUnlessGrantedCalledInRouteFunction($node, false)) { + return $this->buildError( + sprintf('πŸ›‘πŸ”“ SECURITY: Route %s::%s is public !', $className, $functionName), + "Add an #[IsGranted] attribute or use the `denyAccessUnlessGranted` function. + If you are sure that this route should remain public, add the " . IKnowWhatImDoingThisIsAPublicRoute::class . ' attribute', + ); + } + + if ($this->functionAttributesContain(ThisRouteDoesntNeedAVoter::class, $attributes)){ + return []; + } + + // LVL 2 VERTICAL ACCESS ONLY :: IsGranted is present BUT no voter is called + if ($isGrantedAttribute === null && ! $this->isDenyAccessUnlessGrantedCalledInRouteFunction($node, true)) { + return $this->buildError( + sprintf('πŸ›‘πŸ”“ SECURITY: Route %s::%s is insufficiently protected !', $className, $functionName), + "Pass the 'subject' argument to the \$this->denyAccessUnlessGranted() call. + If you are sure that this route's protection should only on user's permissions, add a ".ThisRouteDoesntNeedAVoter::class." attribute.", + ); + } + if ($isGrantedAttribute !== null){ + $isGrantedAttributeInstance = $isGrantedAttribute->newInstance(); + \assert($isGrantedAttributeInstance instanceof IsGranted); + if ($isGrantedAttributeInstance->subject === null) { + return $this->buildError( + sprintf('πŸ›‘πŸ”“ SECURITY: Route %s::%s is insufficiently protected !', $className, $functionName), + "Pass the 'subject' argument to the 'IsGranted' attribute. + If you are sure that this route's protection should only on user's permissions, add a ".ThisRouteDoesntNeedAVoter::class.' attribute.', + ); + } + } + return []; + } + + /** @param array> $attributes */ + private function functionAttributesContain(string $attributeClass, array $attributes): bool + { + return \count($this->getAttributes($attributeClass, $attributes)) > 0; + } + + /** + * @param array> $attributes + * + * @return ReflectionAttribute|null + */ + private function getAttribute(string $attributeClass, array $attributes): ReflectionAttribute|null + { + $attributes = $this->getAttributes($attributeClass, $attributes); + + return \count($attributes) > 0 ? $attributes[0] : null; + } + + /** + * @param array> $attributes + * + * @return array> + */ + private function getAttributes(string $attributeClass, array $attributes): array + { + return array_values(array_filter( + $attributes, + static fn (ReflectionAttribute $attr) => $attr->getName() === $attributeClass + )); + } + + /** + * @return array + */ + private function buildError(string $message, string $tip): array + { + return [ + RuleErrorBuilder::message($message . "\n") + ->tip($tip) + ->build(), + ]; + } + + private function isDenyAccessUnlessGrantedCalledInRouteFunction(InClassMethodNode $node, bool $requireSubject): bool + { + $visitor = new class ($requireSubject) extends NodeVisitorAbstract { + private bool $isSecurityCheckFunctionCalled = false; + + public function __construct(private readonly bool $requireSubject) + { + } + + public function enterNode(Node $node): int|null + { + if ( + $node instanceof MethodCall && $node->name instanceof Node\Identifier + && $node->name->toString() === 'denyAccessUnlessGranted' + && (!$this->requireSubject || isset($node->args[1])) + ) { + $this->isSecurityCheckFunctionCalled = true; + + return NodeTraverser::STOP_TRAVERSAL; + } + + return null; + } + + public function isIsSecurityCheckFunctionCalled(): bool + { + return $this->isSecurityCheckFunctionCalled; + } + }; + + $traverser = new NodeTraverser(); + $traverser->addVisitor($visitor); + + $traverser->traverse($node->getOriginalNode()->stmts ?? []); + + return $visitor->isIsSecurityCheckFunctionCalled(); + } +} diff --git a/apps/back/src/DevTools/PHPStan/ThisRouteDoesntNeedAVoter.php b/apps/back/src/DevTools/PHPStan/ThisRouteDoesntNeedAVoter.php new file mode 100644 index 00000000..ede7ee24 --- /dev/null +++ b/apps/back/src/DevTools/PHPStan/ThisRouteDoesntNeedAVoter.php @@ -0,0 +1,17 @@ +name; + } + + public function getIndentityFile(): UploadedFile|null + { + return $this->indentityFile; + } + + public function setIndentityFile(UploadedFile|null $indentityFile): void + { + $this->indentityFile = $indentityFile; + } +} diff --git a/apps/back/src/Dto/Request/User/CreateUserDto.php b/apps/back/src/Dto/Request/User/CreateUserDto.php new file mode 100644 index 00000000..63948115 --- /dev/null +++ b/apps/back/src/Dto/Request/User/CreateUserDto.php @@ -0,0 +1,44 @@ + Assert\PasswordStrength::STRENGTH_WEAK])] + private string $password, + ) { + } + + public function getEmail(): string + { + return $this->email; + } + + public function getPassword(): string + { + return $this->password; + } + + public function getProfilePicture(): ?UploadedFile + { + return $this->profilePicture; + } + + public function setProfilePicture(?UploadedFile $profilePicture): void + { + $this->profilePicture = $profilePicture; + } +} diff --git a/apps/back/src/Dto/Request/User/UpdateUserDto.php b/apps/back/src/Dto/Request/User/UpdateUserDto.php new file mode 100644 index 00000000..72b39199 --- /dev/null +++ b/apps/back/src/Dto/Request/User/UpdateUserDto.php @@ -0,0 +1,46 @@ + Assert\PasswordStrength::STRENGTH_WEAK]), +// ], message: 'The password strength is too low', includeInternalMessages: false)] + private string|null $password, + ) { + } + + public function getEmail(): string + { + return $this->email; + } + + public function getPassword(): string|null + { + return $this->password; + } + + public function getProfilePicture(): ?UploadedFile + { + return $this->profilePicture; + } + + public function setProfilePicture(?UploadedFile $profilePicture): void + { + $this->profilePicture = $profilePicture; + } +} diff --git a/apps/back/src/Entity/.gitignore b/apps/back/src/Entity/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/apps/back/src/Entity/Company.php b/apps/back/src/Entity/Company.php new file mode 100644 index 00000000..de155561 --- /dev/null +++ b/apps/back/src/Entity/Company.php @@ -0,0 +1,98 @@ + */ + #[ORM\OneToMany(mappedBy: 'company', targetEntity: User::class)] + private Collection $users; + + #[ORM\OneToOne(cascade: ['persist', 'remove'])] + #[ORM\JoinColumn] + private File|null $indentityFile = null; + + public function __construct() + { + $this->users = new ArrayCollection(); + } + + #[Groups([self::GROUP_LIST, self::GROUP_DETAILS])] + public function getId(): int|null + { + return $this->id; + } + + #[Groups([self::GROUP_LIST, self::GROUP_DETAILS])] + public function getName(): string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + /** @return Collection */ + public function getUsers(): Collection + { + return $this->users; + } + + public function addUser(User $user): static + { + if (!$this->users->contains($user)) { + $this->users->add($user); + $user->setCompany($this); + } + + return $this; + } + + public function removeUser(User $user): static + { + if ($this->users->removeElement($user)) { + // set the owning side to null (unless already changed) + if ($user->getCompany() === $this) { + $user->setCompany(null); + } + } + + return $this; + } + + public function getIndentityFile(): File|null + { + return $this->indentityFile; + } + + public function setIndentityFile(File $indentityFile): static + { + $this->indentityFile = $indentityFile; + + return $this; + } +} diff --git a/apps/back/src/Entity/File.php b/apps/back/src/Entity/File.php new file mode 100644 index 00000000..b92211ea --- /dev/null +++ b/apps/back/src/Entity/File.php @@ -0,0 +1,67 @@ +id; + } + + public function getName(): string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function isPrivate(): bool + { + return $this->private; + } + + public function setPrivate(bool $private): static + { + $this->private = $private; + + return $this; + } + + public function getStoragePath(): string + { + return $this->storagePath; + } + + public function setStoragePath(string $storagePath): static + { + $this->storagePath = $storagePath; + + return $this; + } +} diff --git a/apps/back/src/Entity/User.php b/apps/back/src/Entity/User.php new file mode 100644 index 00000000..f19441fe --- /dev/null +++ b/apps/back/src/Entity/User.php @@ -0,0 +1,159 @@ + $roles */ + public function __construct( + #[ORM\Column(length: 180, unique: true)] + private string $email, + #[ORM\Column] + private array $roles = ['ROLE_USER'], + ) { + } + + #[Groups([self::GROUP_USER_DETAILS, self::GROUP_USER_LIST])] + public function getId(): int|null + { + return $this->id; + } + + #[Groups([self::GROUP_USER_DETAILS, self::GROUP_USER_LIST])] + public function getEmail(): string + { + return $this->email; + } + + public function setEmail(string $email): void + { + $this->email = $email; + } + + public function getUserIdentifier(): string + { + return $this->email; + } + + /** @deprecated since Symfony 5.3, use getUserIdentifier instead */ + public function getUsername(): string + { + return $this->email; + } + + /** + * This is "primary" role + * + * @see UserInterface + * + * @return array + */ + public function getRoles(): array + { + return $this->roles; + } + + /** @param array $roles */ + public function setRoles(array $roles): void + { + $this->roles = $roles; + } + + /** + * DO NOT USE this method, it is required for the interface UserInterface + * This method can be removed in Symfony 6.0 - is not needed for apps that do not check user passwords. + * + * @see PasswordAuthenticatedUserInterface + */ + public function getPassword(): string + { + return $this->password; + } + + public function setPassword(string $password): void + { + $this->password = $password; + } + + /** + * DO NOT USE this method, it is required for the interface UserInterface + * This method can be removed in Symfony 6.0 - is not needed for apps that do not check user passwords. + * + * @see UserInterface + */ + public function getSalt(): string|null + { + return null; + } + + /** + * called after authentication + * + * @see UserInterface + */ + public function eraseCredentials(): void + { + // If you store any temporary, sensitive data on the user, clear it here + // $this->plainPassword = null; + } + + public function hasRole(string $role): bool + { + return \in_array($role, $this->getRoles()); + } + + public function getCompany(): Company|null + { + return $this->company; + } + + public function setCompany(Company|null $company): static + { + $this->company = $company; + + return $this; + } + + public function getProfilePicture(): File|null + { + return $this->profilePicture; + } + + public function setProfilePicture(File|null $profilePicture): void + { + $this->profilePicture = $profilePicture; + } + + #[Groups([self::GROUP_USER_DETAILS])] + public function getProfilePictureUrl(){ + + return $this->getProfilePicture()?->getStoragePath(); + } +} diff --git a/apps/back/src/Exception/SsoConsumerAuthNException.php b/apps/back/src/Exception/SsoConsumerAuthNException.php new file mode 100644 index 00000000..6646c0ae --- /dev/null +++ b/apps/back/src/Exception/SsoConsumerAuthNException.php @@ -0,0 +1,9 @@ +getLastErrorReason() . '. Errors: ' + . implode(', ', $auth->getErrors()); + parent::__construct($message, $code, $previous); + } +} diff --git a/apps/back/src/Kernel.php b/apps/back/src/Kernel.php new file mode 100644 index 00000000..779cd1f2 --- /dev/null +++ b/apps/back/src/Kernel.php @@ -0,0 +1,11 @@ +from($this->mailHost) + ->to($user->getEmail()) + ->subject('Registration') + ->htmlTemplate('emails/register.html.twig'); + + $this->mailer->send($email); + } +} diff --git a/apps/back/src/Repository/.gitignore b/apps/back/src/Repository/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/apps/back/src/Repository/CompanyRepository.php b/apps/back/src/Repository/CompanyRepository.php new file mode 100644 index 00000000..502c3ae4 --- /dev/null +++ b/apps/back/src/Repository/CompanyRepository.php @@ -0,0 +1,24 @@ + + * @method Company|null find($id, $lockMode = null, $lockVersion = null) + * @method Company|null findOneBy(array $criteria, array $orderBy = null) + * @method array findAll() + * @method array findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class CompanyRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Company::class); + } +} diff --git a/apps/back/src/Repository/FileRepository.php b/apps/back/src/Repository/FileRepository.php new file mode 100644 index 00000000..6fe235ff --- /dev/null +++ b/apps/back/src/Repository/FileRepository.php @@ -0,0 +1,24 @@ + + * @method File|null find($id, $lockMode = null, $lockVersion = null) + * @method File|null findOneBy(array $criteria, array $orderBy = null) + * @method array findAll() + * @method array findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class FileRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, File::class); + } +} diff --git a/apps/back/src/Repository/UserRepository.php b/apps/back/src/Repository/UserRepository.php new file mode 100644 index 00000000..caf43407 --- /dev/null +++ b/apps/back/src/Repository/UserRepository.php @@ -0,0 +1,36 @@ + + * @method User|null find($id, $lockMode = null, $lockVersion = null) + * @method User|null findOneBy(array $criteria, array $orderBy = null) + * @method array findAll() + * @method array findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class UserRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, User::class); + } + + public function createUser(string $identitier): User + { + return new User($identitier, ['ROLE_USER']); + } + + public function createAdmin(string $identitier): User + { + return new User($identitier, ['ROLE_ADMIN']); + } + + +} diff --git a/apps/back/src/Security/Enum/Right.php b/apps/back/src/Security/Enum/Right.php new file mode 100644 index 00000000..bc13d22b --- /dev/null +++ b/apps/back/src/Security/Enum/Right.php @@ -0,0 +1,14 @@ + */ +class UserVoter extends Voter +{ + public const CREATE_USER = 'CREATE_USER'; + public const EDIT_ANY_USER = 'EDIT_ANY_USER'; + public const VIEW_ANY_USER = 'VIEW_ANY_USER'; + public const DELETE_ANY_USER = 'DELETE_ANY_USER'; + + public function __construct(private readonly Security $security) + { + } + + protected function supports(string $attribute, mixed $subject): bool + { + return \in_array($attribute, [ + self::CREATE_USER, + self::VIEW_ANY_USER, + self::EDIT_ANY_USER, + self::DELETE_ANY_USER, + ]); + } + + protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool + { + $user = $token->getUser(); + // if the user is anonymous, do not grant access + if (!$user instanceof UserInterface) { + return false; + } + + return match ($attribute) { + self::CREATE_USER => $this->canCreate(), + self::EDIT_ANY_USER, self::DELETE_ANY_USER => $this->canEdit($subject), + self::VIEW_ANY_USER => $this->canView(), + default => false + }; + } + + private function canCreate(): bool + { + return $this->security->isGranted(Right::ROLE_RIGHT_USER_CREATE->value); + } + + private function canEdit(mixed $subject): bool + { + if (! $subject instanceof User) { + throw new \RuntimeException('Subject of voter should be a ' . User::class); + } + + return $this->security->isGranted(Right::ROLE_RIGHT_USER_UPDATE->value) + && ! $subject->hasRole('ROLE_ADMIN'); + } + + private function canView(): bool + { + return $this->security->isGranted(Right::ROLE_RIGHT_USER_READ->value); + } +} diff --git a/apps/back/src/UseCase/.gitignore b/apps/back/src/UseCase/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/apps/back/src/UseCase/Company/CreateCompany.php b/apps/back/src/UseCase/Company/CreateCompany.php new file mode 100644 index 00000000..ae415c6b --- /dev/null +++ b/apps/back/src/UseCase/Company/CreateCompany.php @@ -0,0 +1,27 @@ +updateCompany->update($company, $companyRequestDto); + $this->entityManager->persist($company); + + return $company; + } +} diff --git a/apps/back/src/UseCase/Company/UpdateCompany.php b/apps/back/src/UseCase/Company/UpdateCompany.php new file mode 100644 index 00000000..bfece823 --- /dev/null +++ b/apps/back/src/UseCase/Company/UpdateCompany.php @@ -0,0 +1,27 @@ +setName($companyRequestDto->getName()); + if ($companyRequestDto->getIndentityFile() !== null) { + $identityFile = $this->storeFile->storeUploadedCompanyIdentityFile($companyRequestDto->getIndentityFile(), $company); + $company->setIndentityFile($identityFile); + } + + return $company; + } +} diff --git a/apps/back/src/UseCase/Storage/DeleteFile.php b/apps/back/src/UseCase/Storage/DeleteFile.php new file mode 100644 index 00000000..eb2814e0 --- /dev/null +++ b/apps/back/src/UseCase/Storage/DeleteFile.php @@ -0,0 +1,28 @@ +entityManager->remove($file); + + $storage = $file->isPrivate() ? $this->privateStorage : $this->publicStorage; + $storage->delete($file->getStoragePath()); + } +} \ No newline at end of file diff --git a/apps/back/src/UseCase/Storage/StoreFile.php b/apps/back/src/UseCase/Storage/StoreFile.php new file mode 100644 index 00000000..4cf427b3 --- /dev/null +++ b/apps/back/src/UseCase/Storage/StoreFile.php @@ -0,0 +1,79 @@ +storeUploadedFile( + $uploadedUserPicture, + false, + $user->getProfilePicture(), + self::STORAGE_PREFIX_USER_PROFILE_PICTURES, + ); + } + + public function storeUploadedCompanyIdentityFile( + UploadedFile $uploadedCompanyIdentityFile, + Company $company, + ): File { + return $this->storeUploadedFile( + $uploadedCompanyIdentityFile, + true, + $company->getIndentityFile(), + self::STORAGE_PREFIX_COMPANY_IDENTITY_FILES, + ); + } + + private function storeUploadedFile( + UploadedFile $uploadedFile, + bool $isPrivate, + File|null $replaceFile = null, + string|null $storagePrefix = null, + ): File { + $storage = $isPrivate ? $this->privateStorage : $this->publicStorage; + $fileName = Uuid::uuid4()->toString() . '.' . $uploadedFile->getClientOriginalExtension(); + $filePath = ($storagePrefix ? $storagePrefix . '/' : '') . $fileName; + + $file = new File(); + if ($replaceFile !== null) { + $file = $replaceFile; + if ($storage->fileExists($replaceFile->getStoragePath())) { + $storage->delete($replaceFile->getStoragePath()); + } + } + + $file + ->setName($uploadedFile->getClientOriginalName()) + ->setPrivate($isPrivate) + ->setStoragePath($filePath); + + $this->entityManager->persist($file); + $storage->write($filePath, $uploadedFile->getContent()); + + return $file; + } +} diff --git a/apps/back/src/UseCase/User/CreateUser.php b/apps/back/src/UseCase/User/CreateUser.php new file mode 100644 index 00000000..236d51f8 --- /dev/null +++ b/apps/back/src/UseCase/User/CreateUser.php @@ -0,0 +1,41 @@ +userRepository->findOneBy(['email' => $userDto->getEmail()])) { + throw new BadRequestHttpException('Email already exists'); + } + + $user = new User($userDto->getEmail()); + $userUpdateDto = new UpdateUserDto($userDto->getEmail(), $userDto->getPassword()); + $userUpdateDto->setProfilePicture($userDto->getProfilePicture()); + $this->updateUser->updateUser($user, $userUpdateDto); + $this->entityManager->persist($user); + + $this->userMailer->sendRegistrationMail($user); + + return $user; + } +} diff --git a/apps/back/src/UseCase/User/DeleteUserPicture.php b/apps/back/src/UseCase/User/DeleteUserPicture.php new file mode 100644 index 00000000..496411f5 --- /dev/null +++ b/apps/back/src/UseCase/User/DeleteUserPicture.php @@ -0,0 +1,34 @@ +entityManager->beginTransaction(); + + $profilePicture = $user->getProfilePicture(); + if (null !== $profilePicture){ + $user->setProfilePicture(null); + $this->deleteFile->delete($profilePicture); + } + + $this->entityManager->commit(); + } + +} diff --git a/apps/back/src/UseCase/User/UpdateUser.php b/apps/back/src/UseCase/User/UpdateUser.php new file mode 100644 index 00000000..2e787cec --- /dev/null +++ b/apps/back/src/UseCase/User/UpdateUser.php @@ -0,0 +1,35 @@ +setEmail($userDto->getEmail()); + + if ($userDto->getPassword()) { + $user->setPassword($this->passwordHasher->hashPassword($user, $userDto->getPassword())); + } + + if ($userDto->getProfilePicture() !== null) { + $pictureFile = $this->storeFile->storeUploadedUserPicture($userDto->getProfilePicture(), $user); + $user->setProfilePicture($pictureFile); + } + + return $user; + } +} diff --git a/apps/back/symfony.lock b/apps/back/symfony.lock new file mode 100644 index 00000000..599b2f49 --- /dev/null +++ b/apps/back/symfony.lock @@ -0,0 +1,282 @@ +{ + "dama/doctrine-test-bundle": { + "version": "7.2", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "4.0", + "ref": "2c920f73a217f30bd4a37833c91071f4d3dc1ecd" + } + }, + "doctrine/annotations": { + "version": "1.14", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.10", + "ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05" + } + }, + "doctrine/doctrine-bundle": { + "version": "2.10", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.10", + "ref": "f0d8c9a4da17815830aac0d63e153a940ae176bb" + }, + "files": [ + "config/packages/doctrine.yaml", + "src/Entity/.gitignore", + "src/Repository/.gitignore" + ] + }, + "doctrine/doctrine-fixtures-bundle": { + "version": "3.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.0", + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" + }, + "files": [ + "src/DataFixtures/AppFixtures.php" + ] + }, + "doctrine/doctrine-migrations-bundle": { + "version": "3.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.1", + "ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33" + }, + "files": [ + "config/packages/doctrine_migrations.yaml", + "migrations/.gitignore" + ] + }, + "nelmio/security-bundle": { + "version": "3.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.4", + "ref": "65726efb67ff51d89de38195bc0d230fa811f64d" + }, + "files": [ + "config/packages/nelmio_security.yaml" + ] + }, + "league/flysystem-bundle": { + "version": "3.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "913dc3d7a5a1af0d2b044c5ac3a16e2f851d7380" + }, + "files": [ + "config/packages/flysystem.yaml", + "var/storage/.gitignore" + ] + }, + "phpstan/phpstan": { + "version": "1.10", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.0", + "ref": "d74d4d719d5f53856c9c13544aa22d44144b1819" + } + }, + "phpunit/phpunit": { + "version": "9.6", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "9.6", + "ref": "7364a21d87e658eb363c5020c072ecfdc12e2326" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "squizlabs/php_codesniffer": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "3.6", + "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" + } + }, + "symfony/apache-pack": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.0", + "ref": "efb318193e48384eb5c5aadff15396ed698f8ffc" + }, + "files": [ + "public/.htaccess" + ] + }, + "symfony/console": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.3", + "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047" + }, + "files": [ + "bin/console" + ] + }, + "symfony/flex": { + "version": "2.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "146251ae39e06a95be0fe3d13c807bcf3938b172" + }, + "files": [ + ".env" + ] + }, + "symfony/framework-bundle": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.2", + "ref": "af47254c5e4cd543e6af3e4508298ffebbdaddd3" + }, + "files": [ + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/preload.php", + "config/routes/framework.yaml", + "config/services.yaml", + "public/index.php", + "src/Controller/.gitignore", + "src/Kernel.php" + ] + }, + "symfony/mailer": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "4.3", + "ref": "2bf89438209656b85b9a49238c4467bff1b1f939" + }, + "files": [ + "config/packages/mailer.yaml" + ] + }, + "symfony/maker-bundle": { + "version": "1.50", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" + } + }, + "symfony/monolog-bundle": { + "version": "3.8", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.7", + "ref": "213676c4ec929f046dfde5ea8e97625b81bc0578" + }, + "files": [ + "config/packages/monolog.yaml" + ] + }, + "symfony/phpunit-bridge": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.3", + "ref": "01dfaa98c58f7a7b5a9b30e6edb7074af7ed9819" + }, + "files": [ + ".env.test", + "bin/phpunit", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "symfony/routing": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.2", + "ref": "e0a11b4ccb8c9e70b574ff5ad3dfdcd41dec5aa6" + }, + "files": [ + "config/packages/routing.yaml", + "config/routes.yaml" + ] + }, + "symfony/security-bundle": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.0", + "ref": "8a5b112826f7d3d5b07027f93786ae11a1c7de48" + }, + "files": [ + "config/packages/security.yaml" + ] + }, + "symfony/translation": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.3", + "ref": "da64f5a2b6d96f5dc24914517c0350a5f91dee43" + }, + "files": [ + "config/packages/translation.yaml", + "translations/.gitignore" + ] + }, + "symfony/twig-bundle": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.3", + "ref": "b7772eb20e92f3fb4d4fe756e7505b4ba2ca1a2c" + }, + "files": [ + "config/packages/twig.yaml", + "templates/base.html.twig" + ] + }, + "symfony/validator": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.3", + "ref": "c32cfd98f714894c4f128bb99aa2530c1227603c" + }, + "files": [ + "config/packages/validator.yaml" + ] + } +} diff --git a/apps/back/templates/emails/register.html.twig b/apps/back/templates/emails/register.html.twig new file mode 100644 index 00000000..e7b76ce2 --- /dev/null +++ b/apps/back/templates/emails/register.html.twig @@ -0,0 +1,5 @@ +

Welcome !

+ +

+ You're registered ! +

\ No newline at end of file diff --git a/apps/back/tests/Controller/UserControllerTest.php b/apps/back/tests/Controller/UserControllerTest.php new file mode 100644 index 00000000..01b103b4 --- /dev/null +++ b/apps/back/tests/Controller/UserControllerTest.php @@ -0,0 +1,29 @@ +get(UserRepository::class); + + // Login with a user to access the route + $testUser = $userRepository->findOneBy(['email' => 'admin@tcm.com']); + $client->loginUser($testUser); + + $client->request( + 'POST', + getenv('APP_PREFIX') . '/users', + [ + 'email' => 'test1@email.com', + 'password' => 'test1password' + ], + ); + self::assertResponseIsSuccessful(); + } +} \ No newline at end of file diff --git a/apps/back/tests/UseCase/CreateUserTest.php b/apps/back/tests/UseCase/CreateUserTest.php new file mode 100644 index 00000000..9005464c --- /dev/null +++ b/apps/back/tests/UseCase/CreateUserTest.php @@ -0,0 +1,26 @@ +get(CreateUser::class); + $passwordHasher = static::getContainer()->get(UserPasswordHasherInterface::class); + + $userDto = new CreateUserDto('test1@email.com', 'test1password'); + + $userTest = new User($userDto->getEmail()); + $userTest->setPassword($passwordHasher->hashPassword($userTest, $userDto->getPassword())); + + self::assertEquals($userTest->getEmail(), $createUser->createUser($userDto)->getEmail()); + self::assertEmailCount(1); + } +} \ No newline at end of file diff --git a/apps/back/tests/bootstrap.php b/apps/back/tests/bootstrap.php new file mode 100644 index 00000000..fc9341ca --- /dev/null +++ b/apps/back/tests/bootstrap.php @@ -0,0 +1,28 @@ +bootEnv(dirname(__DIR__).'/.env'); +} + +if ($_SERVER['APP_DEBUG']) { + umask(0000); +} + +$processes = [ + new Process(['php', 'bin/console', '--env=test', 'doctrine:database:create']), + new Process(['php', 'bin/console', '--env=test', 'doctrine:schema:create']), + new Process(['php', 'bin/console', '--env=test', 'doctrine:fixtures:load']), +]; + +foreach ($processes as $process) { + $process->run(); +} + + diff --git a/apps/back/translations/.gitignore b/apps/back/translations/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/apps/front/.dockerignore b/apps/front/.dockerignore new file mode 100644 index 00000000..4032ec6b --- /dev/null +++ b/apps/front/.dockerignore @@ -0,0 +1 @@ +.git/ \ No newline at end of file diff --git a/apps/front/.eslintrc.cjs b/apps/front/.eslintrc.cjs new file mode 100644 index 00000000..703adb10 --- /dev/null +++ b/apps/front/.eslintrc.cjs @@ -0,0 +1,12 @@ +require("@rushstack/eslint-patch/modern-module-resolution") +module.exports = { + root: true, + extends: [ + "@nuxt/eslint-config", + 'plugin:prettier/recommended' + // "plugin:vue/vue3-recommended" + ], + rules: { + 'semi': ["error", "always"] + } +}; \ No newline at end of file diff --git a/apps/front/.gitignore b/apps/front/.gitignore new file mode 100644 index 00000000..438cb086 --- /dev/null +++ b/apps/front/.gitignore @@ -0,0 +1,8 @@ +node_modules +*.log* +.nuxt +.nitro +.cache +.output +.env +dist diff --git a/apps/front/Dockerfile b/apps/front/Dockerfile new file mode 100644 index 00000000..0ea6a0ec --- /dev/null +++ b/apps/front/Dockerfile @@ -0,0 +1,27 @@ +# syntax=docker.io/docker/dockerfile:1.4 +ARG IMAGE_VERSION=node:18 + +# This is stage copy buildings file +FROM ${IMAGE_VERSION} as dev +ENV NODE_ENV=dev +USER node + +FROM ${IMAGE_VERSION} as prepare-common-front-file +ENV NODE_ENV=production + +COPY --link --chown=node:node ./src/ /home/node/app/src/ +COPY --link --chown=node:node ./nuxt.config.ts /home/node/app/nuxt.config.ts +COPY --link --chown=node:node ./package.json /home/node/app/package.json +COPY --link --chown=node:node ./yarn.lock /home/node/app/yarn.lock +COPY --link --chown=node:node ./.eslintrc.cjs /home/node/app/.eslintrc.cjs +COPY --link --chown=node:node ./tsconfig.json /home/node/app/tsconfig.json +WORKDIR /home/node/app +RUN yarn install +RUN yarn build + +FROM ${IMAGE_VERSION} as stable +COPY --chown=node:node --from=prepare-common-front-file /home/node/app/.output /home/node/app/.output + +CMD node .output/server/index.mjs +WORKDIR /home/node/app +USER node \ No newline at end of file diff --git a/apps/front/README.md b/apps/front/README.md new file mode 100644 index 00000000..0252117e --- /dev/null +++ b/apps/front/README.md @@ -0,0 +1,13 @@ +# Nuxt 3 Minimal Starter + +Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. + +# How to use + +## Production + +A default dockerfile is provided, the image expose the builded nuxt app on the port 80 + +## Dev + +Expose the port 24678 of the container, mount the root front directory into /home/node/app and run `yarn install && yarn dev -- -o` as the start command diff --git a/apps/front/modules_config/nuxt/i18n.config.ts b/apps/front/modules_config/nuxt/i18n.config.ts new file mode 100644 index 00000000..97d8d32d --- /dev/null +++ b/apps/front/modules_config/nuxt/i18n.config.ts @@ -0,0 +1,10 @@ +import localeFr from "../../src/locales/fr"; +import localeEn from "../../src/locales/en"; +export default defineI18nConfig(() => ({ + legacy: false, + locale: "fr", + messages: { + en: localeEn, + fr: localeFr, + }, +})); diff --git a/apps/front/nuxt.config.ts b/apps/front/nuxt.config.ts new file mode 100644 index 00000000..d6e7577e --- /dev/null +++ b/apps/front/nuxt.config.ts @@ -0,0 +1,56 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +import svgLoader from "vite-svg-loader"; + +export default defineNuxtConfig({ + srcDir: "src/", + modules: ["@pinia/nuxt", "@nuxtjs/i18n", "nuxt-primevue"], + runtimeConfig: { + API_URL: process.env.API_URL || "", + PUBLIC_STORAGE_URL: process.env.PUBLIC_STORAGE_URL, + public: { + publicStorageUrl: process.env.PUBLIC_STORAGE_URL, + }, + }, + primevue: { + /* Options */ + }, + i18n: { + vueI18n: "./modules_config/nuxt/i18n.config.ts", + }, + app: { + head: { + // @see https://getbootstrap.com/docs/5.0/getting-started/introduction/#starter-template + charset: "utf-8", + viewport: "width=device-width, initial-scale=1", + title: "Boilerplate TCM v2", + meta: [ + // + // { name: 'description', content: 'My amazing site.' } + ], + }, + }, + css: [ + "primeflex/primeflex.css", + "primeicons/primeicons.css", + "primevue/resources/themes/lara-light-blue/theme.css", + "@/assets/styles/main.scss", + ], + vite: { + plugins: [svgLoader()], + css: { + preprocessorOptions: { + scss: { + additionalData: + '@import "@/assets/styles/_functions.scss";@import "@/assets/styles/_variables.scss";@import "@/assets/styles/_mixins.scss";', + }, + }, + }, + }, + watch: [ + "src/assets/styles/_functions.scss", + "src/assets/styles/_variables.scss", + "src/assets/styles/_mixins.scss", + "src/assets/styles/main.scss", + ], + // ssr: false +}); diff --git a/apps/front/package.json b/apps/front/package.json new file mode 100644 index 00000000..f4d7f36b --- /dev/null +++ b/apps/front/package.json @@ -0,0 +1,44 @@ +{ + "private": true, + + "scripts": { + "build": "nuxt build", + "dev": "rm -rf /tmp/nitro/worker-* && nuxt dev | pino-pretty -c", + "generate": "nuxt generate", + "preview": "nuxt preview", + "postinstall": "nuxt prepare", + "lint": "eslint nuxt.config.ts --fix ; nuxi typecheck && eslint ./src/" + }, + "devDependencies": { + "@nuxt/eslint-config": "^0.1.1", + "@rushstack/eslint-patch": "^1.3.0", + "@types/http-proxy": "^1.17.11", + "@types/lodash": "^4.14.195", + "eslint": "^8.41.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^4.2.1", + "pino-pretty": "^10.0.0", + "typescript": "~5.1.6", + "nuxt-primevue": "^0.0.3", + "vue-tsc": "^1.6.5" + }, + "dependencies": { + "@nuxtjs/i18n": "^8.0.0-rc.5", + "@pinia/nuxt": "^0.4.11", + "defu": "^6.1.2", + "h3": "^1.8.2", + "nitropack": "^2.4.1", + "nuxt": "3.8.0", + "ofetch": "^1.3.3", + "ohash": "^1.1.2", + "pinia": "^2.1.7", + "pino": "^8.8.0", + "prettier": "^2.8.8", + "primeflex": "^3.3.1", + "primeicons": "^6.0.1", + "primevue": "^3.37.0", + "sass": "^1.57.1", + "vite-svg-loader": "^4.0.0", + "vue": "^3.3.6" + } +} diff --git a/apps/front/src/app.vue b/apps/front/src/app.vue new file mode 100644 index 00000000..cd576325 --- /dev/null +++ b/apps/front/src/app.vue @@ -0,0 +1,45 @@ + + diff --git a/apps/front/src/assets/images/icon-1-square.svg b/apps/front/src/assets/images/icon-1-square.svg new file mode 100644 index 00000000..17fdca4f --- /dev/null +++ b/apps/front/src/assets/images/icon-1-square.svg @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/apps/front/src/assets/images/icon-2-square.svg b/apps/front/src/assets/images/icon-2-square.svg new file mode 100644 index 00000000..3168b2b0 --- /dev/null +++ b/apps/front/src/assets/images/icon-2-square.svg @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/apps/front/src/assets/images/icon-3-square.svg b/apps/front/src/assets/images/icon-3-square.svg new file mode 100644 index 00000000..75805ae9 --- /dev/null +++ b/apps/front/src/assets/images/icon-3-square.svg @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/apps/front/src/assets/images/panda.webp b/apps/front/src/assets/images/panda.webp new file mode 100644 index 00000000..a1e3b908 Binary files /dev/null and b/apps/front/src/assets/images/panda.webp differ diff --git a/apps/front/src/assets/images/true-panda.jpeg b/apps/front/src/assets/images/true-panda.jpeg new file mode 100644 index 00000000..cd9ecaa3 Binary files /dev/null and b/apps/front/src/assets/images/true-panda.jpeg differ diff --git a/apps/front/src/assets/styles/_functions.scss b/apps/front/src/assets/styles/_functions.scss new file mode 100644 index 00000000..e69de29b diff --git a/apps/front/src/assets/styles/_mixins.scss b/apps/front/src/assets/styles/_mixins.scss new file mode 100644 index 00000000..e69de29b diff --git a/apps/front/src/assets/styles/_variables.scss b/apps/front/src/assets/styles/_variables.scss new file mode 100644 index 00000000..104ca9bc --- /dev/null +++ b/apps/front/src/assets/styles/_variables.scss @@ -0,0 +1 @@ +$white: #FFF; \ No newline at end of file diff --git a/apps/front/src/assets/styles/main.scss b/apps/front/src/assets/styles/main.scss new file mode 100644 index 00000000..cb5f75c5 --- /dev/null +++ b/apps/front/src/assets/styles/main.scss @@ -0,0 +1,27 @@ +// Weird issue, probably because the theme is loaded after primevue +// So the divider style did not apply +// This shall be removed after further update of the prime module +.p-divider-solid.p-divider-horizontal:before { + border-top-style: solid; +} +.p-divider-dashed.p-divider-horizontal:before { + border-top-style: dashed; +} +.p-divider-solid.p-divider-vertical:before { + border-left-style: solid; +} +.p-divider-dashed.p-divider-vertical:before { + border-left-style: dashed; +} +.appear-on-hover{ + + > *{ + opacity: 0; + } + + &:hover > *{ + opacity: 1; + background: rgba(255, 0, 0, 0.7); + + } +} \ No newline at end of file diff --git a/apps/front/src/components/company/CompanyForm.vue b/apps/front/src/components/company/CompanyForm.vue new file mode 100644 index 00000000..beab44c4 --- /dev/null +++ b/apps/front/src/components/company/CompanyForm.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/apps/front/src/components/form/RegisterPasswordInput.vue b/apps/front/src/components/form/RegisterPasswordInput.vue new file mode 100644 index 00000000..1cd2fbd9 --- /dev/null +++ b/apps/front/src/components/form/RegisterPasswordInput.vue @@ -0,0 +1,63 @@ + + diff --git a/apps/front/src/components/form/SimpleFileUpload.vue b/apps/front/src/components/form/SimpleFileUpload.vue new file mode 100644 index 00000000..4d7d10cd --- /dev/null +++ b/apps/front/src/components/form/SimpleFileUpload.vue @@ -0,0 +1,107 @@ + + diff --git a/apps/front/src/components/layout/AppHeader.vue b/apps/front/src/components/layout/AppHeader.vue new file mode 100644 index 00000000..7a7ec47d --- /dev/null +++ b/apps/front/src/components/layout/AppHeader.vue @@ -0,0 +1,19 @@ + + diff --git a/apps/front/src/components/layout/menu/AppMenu.vue b/apps/front/src/components/layout/menu/AppMenu.vue new file mode 100644 index 00000000..110cb8a1 --- /dev/null +++ b/apps/front/src/components/layout/menu/AppMenu.vue @@ -0,0 +1,70 @@ + + diff --git a/apps/front/src/components/user/UserCreateForm.vue b/apps/front/src/components/user/UserCreateForm.vue new file mode 100644 index 00000000..306bd14a --- /dev/null +++ b/apps/front/src/components/user/UserCreateForm.vue @@ -0,0 +1,33 @@ + + + + diff --git a/apps/front/src/components/user/UserForm.vue b/apps/front/src/components/user/UserForm.vue new file mode 100644 index 00000000..795ce92d --- /dev/null +++ b/apps/front/src/components/user/UserForm.vue @@ -0,0 +1,162 @@ + + + + diff --git a/apps/front/src/components/user/UserUpdateForm.vue b/apps/front/src/components/user/UserUpdateForm.vue new file mode 100644 index 00000000..878333ed --- /dev/null +++ b/apps/front/src/components/user/UserUpdateForm.vue @@ -0,0 +1,68 @@ + + + + diff --git a/apps/front/src/composables/api/company/useDeleteCompany.ts b/apps/front/src/composables/api/company/useDeleteCompany.ts new file mode 100644 index 00000000..60dfaceb --- /dev/null +++ b/apps/front/src/composables/api/company/useDeleteCompany.ts @@ -0,0 +1,17 @@ +import { User } from "~/types/user"; +import { DELETE } from "~/constants/http"; + +export default function useDeleteCompany() { + const { $appFetch } = useNuxtApp(); + return { + deleteCompany: async (company: Company) => { + const response = await $appFetch("/companies/" + company.id, { + method: DELETE, + }); + if (!response) { + throw createError("Error while deleting company"); + } + return response; + }, + }; +} diff --git a/apps/front/src/composables/api/company/useGetCompany.ts b/apps/front/src/composables/api/company/useGetCompany.ts new file mode 100644 index 00000000..6d8f66df --- /dev/null +++ b/apps/front/src/composables/api/company/useGetCompany.ts @@ -0,0 +1,10 @@ +import { GET } from "~/constants/http"; +import {Company} from "~/types/Company"; +import useAppFetch from "~/composables/useAppFetch"; + +export default async function useGetCompany(companyId: string) { + return useAppFetch(() => "/companies/" + companyId, { + key: "getCompany", + method: GET, + }); +} diff --git a/apps/front/src/composables/api/company/useListCompanies.ts b/apps/front/src/composables/api/company/useListCompanies.ts new file mode 100644 index 00000000..27dc081c --- /dev/null +++ b/apps/front/src/composables/api/company/useListCompanies.ts @@ -0,0 +1,10 @@ +import { Company } from "~/types/Company"; +import { GET } from "~/constants/http"; +import useAppFetch from "~/composables/useAppFetch"; + +export default async function useListUsers() { + return useAppFetch>(() => "/companies", { + key: "listCompanies", + method: GET, + }); +} diff --git a/apps/front/src/composables/api/company/useSaveCompany.ts b/apps/front/src/composables/api/company/useSaveCompany.ts new file mode 100644 index 00000000..fffb76c4 --- /dev/null +++ b/apps/front/src/composables/api/company/useSaveCompany.ts @@ -0,0 +1,28 @@ +import useBasicError from "~/composables/useBasicError"; +import { Company } from "~/types/Company"; +import { POST } from "~/constants/http"; + +export default function useSaveCompany() { + const { $appFetch } = useNuxtApp(); + const { setError, resetError, errorMessage } = useBasicError(); + return { + errorMessage, + async saveCompany(company: Company) { + try { + resetError(); + const formData = new FormData(); + formData.append("name", company.name); + formData.append("identityFile", company.identityFile); + const url = "/companies" + (company.id ? "/" + company.id : ""); + const response = await $appFetch(url, { + method: POST, + body: formData, + }); + return response; + } catch (e) { + setError(e); + throw e; + } + }, + }; +} diff --git a/apps/front/src/composables/api/constants.ts b/apps/front/src/composables/api/constants.ts new file mode 100644 index 00000000..e69de29b diff --git a/apps/front/src/composables/api/healthCheck/useHealthCheckFetch.ts b/apps/front/src/composables/api/healthCheck/useHealthCheckFetch.ts new file mode 100644 index 00000000..a689215e --- /dev/null +++ b/apps/front/src/composables/api/healthCheck/useHealthCheckFetch.ts @@ -0,0 +1,15 @@ +import { FetchError } from "ofetch"; +import type { AsyncData } from "#app"; +import useAppFetch from "~/composables/useAppFetch"; + +interface LoggedHealthCheckResponse { + success: string; +} +export function useHealthCheckFetch(): AsyncData< + LoggedHealthCheckResponse | null, + FetchError | null +> { + return useAppFetch( + () => "/api/1.0/healthcheck/logged" + ); +} diff --git a/apps/front/src/composables/api/user/useCreateUser.ts b/apps/front/src/composables/api/user/useCreateUser.ts new file mode 100644 index 00000000..08afdb21 --- /dev/null +++ b/apps/front/src/composables/api/user/useCreateUser.ts @@ -0,0 +1,38 @@ +import { POST } from "~/constants/http"; +import type { User } from "~/types/User"; +import type { UserInput } from "~/types/UserInput"; +import type { Ref } from "vue"; +import useBasicError from "~/composables/useBasicError"; + +export default function useCreateUser(): { + errorMessage: Readonly>; + createUser(user: UserInput): Promise; +} { + const { $appFetch } = useNuxtApp(); + + const { setError, resetError, errorMessage } = useBasicError(); + + return { + errorMessage, + async createUser(user: UserInput): Promise { + try { + resetError(); + const formData = new FormData(); + formData.append("email", user.email); + formData.append("password", user.password); + formData.append("profilePictureFile", user.profilePicture); + const response = await $appFetch("/users", { + method: POST, + body: formData, + }); + if (!response) { + throw createError("Error while registering user"); + } + return response; + } catch (e: any) { + setError(e); + throw e; + } + }, + }; +} diff --git a/apps/front/src/composables/api/user/useDeleteUser.ts b/apps/front/src/composables/api/user/useDeleteUser.ts new file mode 100644 index 00000000..eec389f0 --- /dev/null +++ b/apps/front/src/composables/api/user/useDeleteUser.ts @@ -0,0 +1,27 @@ +import type { User } from "~/types/User"; +import { DELETE } from "~/constants/http"; +import useBasicError from "~/composables/useBasicError"; + +export default function useDeleteUser() { + const { $appFetch } = useNuxtApp(); + + const { setError, resetError, errorMessage } = useBasicError(); + return { + errorMessage, + deleteUser: async (user: User) => { + try { + resetError(); + const response = await $appFetch("/users/" + user.id, { + method: DELETE, + }); + if (!response) { + throw createError("Error while deleting user"); + } + return response; + } catch (e: any) { + await setError(e); + throw e; + } + }, + }; +} diff --git a/apps/front/src/composables/api/user/useDeleteUserPicture.ts b/apps/front/src/composables/api/user/useDeleteUserPicture.ts new file mode 100644 index 00000000..6389088d --- /dev/null +++ b/apps/front/src/composables/api/user/useDeleteUserPicture.ts @@ -0,0 +1,26 @@ +import { DELETE } from "~/constants/http"; +import type { User, UserId } from "~/types/User"; +import useBasicError from "~/composables/useBasicError"; + +export default function useDeleteUserPicture() { + const { $appFetch } = useNuxtApp(); + const { setError, resetError, errorMessage } = useBasicError(); + return { + errorMessage, + deleteUserPicture: async (userId: UserId) => { + try { + resetError(); + const response = await $appFetch("/users/" + userId + "/picture", { + method: DELETE, + }); + if (!response) { + throw createError("Error while deleting user"); + } + return response; + } catch (e: any) { + await setError(e); + throw e; + } + }, + }; +} diff --git a/apps/front/src/composables/api/user/useGetUser.ts b/apps/front/src/composables/api/user/useGetUser.ts new file mode 100644 index 00000000..3109218c --- /dev/null +++ b/apps/front/src/composables/api/user/useGetUser.ts @@ -0,0 +1,10 @@ +import { GET } from "~/constants/http"; +import type { User } from "~/types/User"; +import useAppFetch from "~/composables/useAppFetch"; + +export default async function useGetUser(userId: string) { + return useAppFetch(() => "/users/" + userId, { + key: "getUser" + userId, + method: GET, + }); +} diff --git a/apps/front/src/composables/api/user/useListUsers.ts b/apps/front/src/composables/api/user/useListUsers.ts new file mode 100644 index 00000000..1cb70698 --- /dev/null +++ b/apps/front/src/composables/api/user/useListUsers.ts @@ -0,0 +1,11 @@ +import type { User } from "~/types/User"; +import { GET } from "~/constants/http"; +import useAppFetch from "~/composables/useAppFetch"; + +export default async function useListUsers() { + return useAppFetch>(() => "/users", { + key: "listUsers", + method: GET, + lazy: true, + }); +} diff --git a/apps/front/src/composables/api/user/useUpdateUser.ts b/apps/front/src/composables/api/user/useUpdateUser.ts new file mode 100644 index 00000000..81e8c68d --- /dev/null +++ b/apps/front/src/composables/api/user/useUpdateUser.ts @@ -0,0 +1,32 @@ +import { POST } from "~/constants/http"; +import type { User, UserId } from "~/types/User"; +import type { UserInput } from "~/types/UserInput"; +import useBasicError from "~/composables/useBasicError"; + +export default function useUpdateUser() { + const { $appFetch } = useNuxtApp(); + const { setError, resetError, errorMessage } = useBasicError(); + return { + errorMessage, + async updateUser(userId: UserId, user: UserInput) { + try { + resetError(); + const formData = new FormData(); + formData.append("email", user.email); + formData.append("password", user.password); + formData.append("profilePictureFile", user.profilePicture); + const response = await $appFetch("/users/" + userId, { + method: POST, + body: formData, + }); + if (!response) { + throw createError("Error while updating user"); + } + return response; + } catch (e: any) { + setError(e); + throw e; + } + }, + }; +} diff --git a/apps/front/src/composables/storage/storage.ts b/apps/front/src/composables/storage/storage.ts new file mode 100644 index 00000000..5a690c36 --- /dev/null +++ b/apps/front/src/composables/storage/storage.ts @@ -0,0 +1,4 @@ +export const publicFileURL = (filePath: string) => { + const config = useRuntimeConfig(); + return config.public.publicStorageUrl + filePath; +}; diff --git a/apps/front/src/composables/useAppFetch.ts b/apps/front/src/composables/useAppFetch.ts new file mode 100644 index 00000000..7b22bb73 --- /dev/null +++ b/apps/front/src/composables/useAppFetch.ts @@ -0,0 +1,22 @@ +import type { UseFetchOptions } from "nuxt/app"; +import { defu } from "defu"; +import type { $Fetch, NitroFetchRequest } from "nitropack"; +import type { AsyncData } from "#app"; +import { FetchError } from "ofetch"; + +export default function useAppFetch( + url: string | Request | Ref | (() => string | Request), + options: UseFetchOptions = {} +) { + const { $appFetch } = useNuxtApp(); + const defaults: UseFetchOptions = { + $fetch: $appFetch as $Fetch, + }; + // for nice deep defaults, please use unjs/defu + const params = defu(options, defaults); + + return useFetch(url, params) as AsyncData< + T, + FetchError + >; +} diff --git a/apps/front/src/composables/useBasicError.ts b/apps/front/src/composables/useBasicError.ts new file mode 100644 index 00000000..c02d6019 --- /dev/null +++ b/apps/front/src/composables/useBasicError.ts @@ -0,0 +1,45 @@ +import type { Ref } from "vue"; +import type { BasicError } from "~/types/BasicError"; + +export default function useBasicError() { + const error: Ref = ref(null); + const errorMessage = computed(() => { + // Dont display message on 500 (handled via toasters) + if ( + error.value?.status && + (error.value.status > 500 || error.value.status === 403) + ) { + return ""; + } + if (error.value?.detail) { + return error.value?.detail; + } + if (error.value?.message) { + return Array.isArray(error.value.message) + ? error.value.message.join(".") + : error.value.message; + } + + if (error.value?.title) { + return error.value?.title; + } + if (error.value?.error) { + return error.value.error; + } + return ""; + }); + const setError = async (e: any) => { + error.value = e; + if (e.response && e.response._data) { + error.value = await e.response._data; + } + }; + return { + setError, + resetError: () => { + error.value = null; + }, + error: readonly(error), + errorMessage, + }; +} diff --git a/apps/front/src/composables/user/useUser.ts b/apps/front/src/composables/user/useUser.ts new file mode 100644 index 00000000..3de3a553 --- /dev/null +++ b/apps/front/src/composables/user/useUser.ts @@ -0,0 +1,27 @@ +import type { User } from "~/types/User"; + +export default function useUser(user: Ref | undefined = undefined) { + const password = ref(""); + const passwordConfirm = ref(""); + // This wont be kept in sync if user is modified! (to resolve) + const email = user ? toRef(user?.value?.email) : ref(""); + const isPasswordConfirmed = computed( + () => password.value === passwordConfirm.value + ); + const profilePictureUrl = user ? toRef(user?.value?.profilePictureUrl) : ref(""); + const profilePictureFile = ref() + + const isPasswordEmpty = computed(() => !password.value); + const securedPassword = computed(() => + isPasswordConfirmed && isPasswordEmpty ? password.value : "" + ); + return { + password, + passwordConfirm, + email: email, + profilePictureUrl, + profilePictureFile, + isPasswordConfirmed, + securedPassword, + }; +} diff --git a/apps/front/src/constants/http.ts b/apps/front/src/constants/http.ts new file mode 100644 index 00000000..6ae11401 --- /dev/null +++ b/apps/front/src/constants/http.ts @@ -0,0 +1,9 @@ +export const HTTP_UNAUTHORIZED = 401; +export const HTTP_NOTFOUND = 404; + +export const GET = "GET"; +export const POST = "POST"; +export const PUT = "PUT"; +export const DELETE = "DELETE"; + +export const API_URL = "/api/1.0"; diff --git a/apps/front/src/layouts/anonymous.vue b/apps/front/src/layouts/anonymous.vue new file mode 100644 index 00000000..ab19bfb2 --- /dev/null +++ b/apps/front/src/layouts/anonymous.vue @@ -0,0 +1,6 @@ + +; diff --git a/apps/front/src/layouts/default.vue b/apps/front/src/layouts/default.vue new file mode 100644 index 00000000..c773d46e --- /dev/null +++ b/apps/front/src/layouts/default.vue @@ -0,0 +1,18 @@ + + diff --git a/apps/front/src/locales/en.ts b/apps/front/src/locales/en.ts new file mode 100644 index 00000000..b77cad62 --- /dev/null +++ b/apps/front/src/locales/en.ts @@ -0,0 +1,95 @@ +export default { + components: { + form: { + registerPasswordInput: { + password: "Password", + suggestions: "With:", + suggestionsLowercase: "At least 2 lowercase", + suggestionsUppercase: "At least 2 uppercase", + suggestionsNumber: "At least 2 numbers", + suggestionsSymbol: "At least 1 symbol", + suggestionsSize: "Minimum 8", + suggestionsUnicity: "Unique character", + }, + }, + user: { + createForm: { + title: "Create a new user", + ok: "Create", + buttonCancel: "Cancel", + }, + updateForm: { + pending: "Loading user", + title: "Update {email}", + ok: "Update", + }, + form: { + email: "Email", + passwordConfirm: "Confirm your password", + errorPasswordConfirm: "The confirmation of the password is invalid", + confirmDeleteUserPicture: "Do you confirm ?", + buttonCancel: "Cancel", + ok: "Save", + }, + }, + layout: { + appHeader: { + welcome: "Welcome {username}", + }, + menu: { + appMenu: { + users: "Users", + page1: "page1", + page2: "page2", + page3: "page3", + quit: "Quit", + }, + }, + }, + }, + pages: { + page1: { + altPanda: "This is to discover images", + background: "This is to discover background", + }, + auth: { + login: { + username: "Email", + password: "Password", + title: "Please log-in", + ok: "Submit", + }, + }, + user: { + index: { + createButton: "New user", + pending: "Loading users", + title: "Users", + edit: "Edit", + delete: "Delete", + }, + }, + }, + plugins: { + appFetch: { + toasterUnauthorizedDetail: "Unauthorized", + toasterUnauthorizedSummary: "Unauthorized", + + toasterForbiddenDetail: "Forbidden", + toasterForbiddenSummary: "Forbidden", + + toasterCatchAllDetail: "Error", + toasterCatchAllSummary: "Error", + }, + error: { + toasterCatchAllDetail: "Error", + toasterCatchAllSummary: "Error", + }, + }, + misc: { + confirmPopup: { + accept: "Confirm", + reject: "Cancel", + }, + }, +}; diff --git a/apps/front/src/locales/fr.ts b/apps/front/src/locales/fr.ts new file mode 100644 index 00000000..df91036b --- /dev/null +++ b/apps/front/src/locales/fr.ts @@ -0,0 +1,96 @@ +export default { + components: { + toast: {}, + form: { + registerPasswordInput: { + password: "Mot de passe", + suggestions: "Avec:", + suggestionsLowercase: "Au moins 2 lettres minuscule", + suggestionsUppercase: "Au moins 2 lettres majuscule", + suggestionsNumber: "Au moins 2 chiffres", + suggestionsSymbol: "Au moins 1 symbole", + suggestionsSize: "Minimum 8 caractΓ¨res", + suggestionsUnicity: "Des caractΓ¨res unique", + }, + }, + user: { + createForm: { + title: "CrΓ©er un nouvel utilisateur", + ok: "CrΓ©er", + buttonCancel: "Annuler la crΓ©ation", + }, + updateForm: { + pending: "Chargement de l'utilisateur", + title: "Mise Γ  jour de {email}", + }, + form: { + email: "Email", + passwordConfirm: "Confirmez mot de passe", + errorPasswordConfirm: "La confirmation du mot de passe est invalide", + confirmDeleteUserPicture: + "Confirmez-vous la suppression de la photo de profil ?", + buttonCancel: "Annuler", + ok: "Sauvegarder", + }, + }, + layout: { + appHeader: { + welcome: "Bienvenue {username}", + }, + menu: { + appMenu: { + users: "Utilisateurs", + page1: "page1", + page2: "page2", + page3: "page3", + quit: "Quitter", + }, + }, + }, + }, + pages: { + page1: { + altPanda: "DΓ©couvrez les images", + background: "DΓ©couvrez les fonds d'Γ©crans", + }, + auth: { + login: { + username: "email", + password: "mot de passe", + title: "Connectez-vous", + ok: "Connexion", + }, + }, + user: { + index: { + createButton: "CrΓ©er un utilisateur", + pending: "Chargement des utilisateurs", + title: "Utilisateurs", + edit: "Editer", + delete: "Supprimer", + }, + }, + }, + plugins: { + appFetch: { + toasterUnauthorizedDetail: "Vous n'Γͺtes pas authentifiΓ©", + toasterUnauthorizedSummary: "Erreur d'authentification", + + toasterForbiddenDetail: "Vous n'Γͺtes pas autorisΓ©", + toasterForbiddenSummary: "Erreur d'autorisation", + + toasterCatchAllDetail: "Erreur", + toasterCatchAllSummary: "Une erreur est survenue", + }, + error: { + toasterCatchAllDetail: "Erreur", + toasterCatchAllSummary: "Une erreur est survenue", + }, + }, + misc: { + confirmPopup: { + accept: "Confirmer", + reject: "Anuler", + }, + }, +}; diff --git a/apps/front/src/middleware/auth.global.ts b/apps/front/src/middleware/auth.global.ts new file mode 100644 index 00000000..df0b750c --- /dev/null +++ b/apps/front/src/middleware/auth.global.ts @@ -0,0 +1,24 @@ +import { useAuthUser } from "~/store/auth"; + +export default defineNuxtRouteMiddleware(async () => { + const { $appFetch } = useNuxtApp(); + const app = usePinia(); + const authStore = useAuthUser(app); + // We refresh the data information + // If the syncMe result in a 401, the component RedirectToLogin will be triggered, + // so no need to wait the sync + const mePromise = authStore.refresh($appFetch); + /** + * We still wait if the user is not authenticated because that may mean + * the client has not retrieved user information + * + * If we want to speed up a bit the process, we could check the status of the syncMe request, + * to know if it has been done once aka if (authStore.hasBeenLoadedOnce) + * */ + const shouldWait = + process.server || (!authStore.isAuthenticated && process.client); + if (!shouldWait) { + return; + } + await mePromise; +}); diff --git a/apps/front/src/pages/auth/login.vue b/apps/front/src/pages/auth/login.vue new file mode 100644 index 00000000..e4bb43b5 --- /dev/null +++ b/apps/front/src/pages/auth/login.vue @@ -0,0 +1,64 @@ + + diff --git a/apps/front/src/pages/auth/register.vue b/apps/front/src/pages/auth/register.vue new file mode 100644 index 00000000..19697f9a --- /dev/null +++ b/apps/front/src/pages/auth/register.vue @@ -0,0 +1,6 @@ + + + + diff --git a/apps/front/src/pages/companies/[id].vue b/apps/front/src/pages/companies/[id].vue new file mode 100644 index 00000000..5e31cd8a --- /dev/null +++ b/apps/front/src/pages/companies/[id].vue @@ -0,0 +1,31 @@ + + + + + diff --git a/apps/front/src/pages/companies/create.vue b/apps/front/src/pages/companies/create.vue new file mode 100644 index 00000000..388740fb --- /dev/null +++ b/apps/front/src/pages/companies/create.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/apps/front/src/pages/companies/index.vue b/apps/front/src/pages/companies/index.vue new file mode 100644 index 00000000..b3faa8ed --- /dev/null +++ b/apps/front/src/pages/companies/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/apps/front/src/pages/demo/page1.vue b/apps/front/src/pages/demo/page1.vue new file mode 100644 index 00000000..7c9ce8f1 --- /dev/null +++ b/apps/front/src/pages/demo/page1.vue @@ -0,0 +1,20 @@ + + + diff --git a/apps/front/src/pages/demo/page2.vue b/apps/front/src/pages/demo/page2.vue new file mode 100644 index 00000000..142f01ef --- /dev/null +++ b/apps/front/src/pages/demo/page2.vue @@ -0,0 +1,13 @@ + + diff --git a/apps/front/src/pages/demo/page3.vue b/apps/front/src/pages/demo/page3.vue new file mode 100644 index 00000000..656fa2ba --- /dev/null +++ b/apps/front/src/pages/demo/page3.vue @@ -0,0 +1,4 @@ + +; diff --git a/apps/front/src/pages/index.vue b/apps/front/src/pages/index.vue new file mode 100644 index 00000000..e0a32041 --- /dev/null +++ b/apps/front/src/pages/index.vue @@ -0,0 +1,10 @@ + + diff --git a/apps/front/src/pages/users/[id].vue b/apps/front/src/pages/users/[id].vue new file mode 100644 index 00000000..13548b9c --- /dev/null +++ b/apps/front/src/pages/users/[id].vue @@ -0,0 +1,17 @@ + + + + + diff --git a/apps/front/src/pages/users/index.vue b/apps/front/src/pages/users/index.vue new file mode 100644 index 00000000..82697a00 --- /dev/null +++ b/apps/front/src/pages/users/index.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/apps/front/src/plugins/10-appFetch.ts b/apps/front/src/plugins/10-appFetch.ts new file mode 100644 index 00000000..3e5d1029 --- /dev/null +++ b/apps/front/src/plugins/10-appFetch.ts @@ -0,0 +1,73 @@ +import { useAuthUser } from "~/store/auth"; +import { API_URL } from "~/constants/http"; +import type { ComposerTranslation } from "vue-i18n"; +import type { ToastServiceMethods } from "primevue/toastservice"; + +export default defineNuxtPlugin((nuxtApp) => { + //const pinia = usePinia(); + const pinia = nuxtApp.vueApp.config.globalProperties.$pinia; + const event = useRequestEvent(); + const headers: { + [key: string]: string; + } = useRequestHeaders(["cookie"]) as { + [key: string]: string; + }; + const appFetch = $fetch.create({ + baseURL: API_URL, + headers: { + Accept: "application/json", + // Send to API custom headers + specific cookies + ...headers, + }, + //ignoreResponseError: true, + onResponse(context) { + const store = useAuthUser(pinia); + const t = nuxtApp.vueApp.config.globalProperties + .$t as ComposerTranslation; + const toast = nuxtApp.vueApp.config.globalProperties + .$toast as ToastServiceMethods; + const res = context.response; + const cookies = res.headers.get("set-cookie") || ""; + if (process.server && cookies) { + // Send to browser cookies + event.node.res.setHeader("set-cookie", cookies); + } + if (res.status === 401 && store.isAuthenticated) { + logger.error("401 error, removing authentication informations"); + toast.add({ + severity: "error", + summary: t("plugins.appFetch.toasterUnauthorizedSummary"), + detail: t("plugins.appFetch.toasterUnauthorizedDetail"), + life: 3000, + }); + store.resetAuth(); + return; + } + if (res?.status && res.status === 403) { + logger.error("Unauthorized"); + toast.add({ + severity: "error", + summary: t("plugins.appFetch.toasterForbiddenSummary"), + detail: t("plugins.appFetch.toasterForbiddenDetail"), + life: 0, + }); + return; + } + if (!res?.status || res?.status >= 500) { + toast.add({ + severity: "error", + summary: t("plugins.appFetch.toasterCatchAllSummary"), + detail: t("plugins.appFetch.toasterCatchAllDetail"), + life: 3000, + }); + return; + } + }, + }); + return { + provide: { + // // https://nuxt.com/docs/getting-started/data-fetching#example-pass-client-headers-to-the-api + appFetch, + }, + }; +}); diff --git a/apps/front/src/plugins/20-error.ts b/apps/front/src/plugins/20-error.ts new file mode 100644 index 00000000..9640abed --- /dev/null +++ b/apps/front/src/plugins/20-error.ts @@ -0,0 +1,38 @@ +import type { BasicError } from "~/types/BasicError"; + +export default defineNuxtPlugin((nuxtApp) => { + // Here you can handle your errors globally + nuxtApp.hook("vue:error", (..._args) => { + logger.error("vue:error", _args); + // if (process.client) { + // console.log(..._args) + // } + }); + + nuxtApp.hook("app:error", (..._args) => { + logger.error("app:error"); + logger.error(_args); + // if (process.client) { + // console.log(..._args) + // } + }); + + nuxtApp.vueApp.config.errorHandler = (..._args) => { + logger.info("global error handler"); + const err: BasicError = _args[0] as BasicError; + logger.error(err); + + const t = nuxtApp.vueApp.config.globalProperties.$t; + if (err.name !== "FetchError") { + nuxtApp.vueApp.config.globalProperties.$toast.add({ + severity: "error", + summary: t("plugins.error.toasterCatchAllSummary"), + detail: t("plugins.error.toasterCatchAllDetail"), + life: 3000, + }); + } + // if (process.client) { + // console.log(..._args) + // } + }; +}); diff --git a/apps/front/src/server/api/[...].ts b/apps/front/src/server/api/[...].ts new file mode 100644 index 00000000..d9900476 --- /dev/null +++ b/apps/front/src/server/api/[...].ts @@ -0,0 +1,45 @@ +import { defineEventHandler, H3Event, proxyRequest } from "h3"; + +/** + * Beware + * Using the SSR, cookies are transmitted to the proxy BUT + * the browser may not know which cookie to send, so you can end with + * cookie: "PHPSESSIONID= deleted; PHPSESSIONID= SUPERID" + * + * During the SSR, nuxt has no way to know which cookie to send to SF, + * because he can not route the cookie based on the cookiePath + * + * So the proxy may send the request only with cookie: "PHPSESSIONID= deleted;", + * loosing the session in the process during the SSR + * + * This behavior may impact cookie and any specific headers + * (nuxt SSR and the browser does not have access to + * the same info depending on the api route called, the browser having more context) + * + * It is not possible to be sure to have an isometric behavior during SSR and browser rendering + * + * A good way to prevent this would be to handle cookie in nuxt (session for example) + * and retrive the cookie from nuxt. Then retrive and store API cookie in/from the nuxt cookie, + * then use this retrived cookie in the proxy + */ + +import logger from "~/utils/logger"; + +export default defineEventHandler(async (event: H3Event) => { + const { API_URL } = useRuntimeConfig(); + const target = new URL(event.req.url as string, API_URL); + logger.info("----API Proxy"); + const ret = await proxyRequest(event, target.toString(), { + headers: { + host: target.host, + }, + cookiePathRewrite: { + "/*": "/", + }, + sendStream: true, + fetchOptions: { + redirect: "manual", + }, + }); + return ret; +}); diff --git a/apps/front/src/store/auth.ts b/apps/front/src/store/auth.ts new file mode 100644 index 00000000..4b09b58b --- /dev/null +++ b/apps/front/src/store/auth.ts @@ -0,0 +1,84 @@ +import { defineStore } from "pinia"; +import { HTTP_UNAUTHORIZED, POST } from "~/constants/http"; +import type { User } from "~/types/User"; +import type { AppFetch } from "~/types/AppFetch"; +import useBasicError from "~/composables/useBasicError"; + +const login = (fetcher: AppFetch, username: string, password: string) => { + return fetcher("/login", { + method: POST, + body: { + username, + password, + }, + }); +}; + +const logout = (fetcher: AppFetch) => { + return fetcher("/auth/logout", { + method: POST, + }) as Promise; +}; + +export const useAuthUser = defineStore("auth-store", () => { + const me: Ref = ref(null); + const { error, resetError, setError } = useBasicError(); + const isMePending = ref(false); + const authUrl = ref("/auth/login"); + const refresh = async ($appFetch: AppFetch) => { + resetError(); + isMePending.value = true; + try { + const res = await $appFetch("auth/me", { + // This override the default behavior of onResponse interceptor from $appFetch + // Because when logout, the next /me gonna answer 401 but you dont want to display any errors + onResponse: () => {}, + }); + if (!res) { + throw createError("res expect a value"); + } + me.value = res; + } catch (exception: any) { + isMePending.value = false; + const is401 = exception?.response?.status === HTTP_UNAUTHORIZED; + if (!is401) { + return setError(exception); + } + const ret = await exception.response._data; + authUrl.value = ret?.url || "/auth/login"; + } + isMePending.value = false; + }; + + const resetAuth = () => { + me.value = null; + }; + const logoutUser = async (fetch: AppFetch) => { + await logout(fetch); + await refresh(fetch); + }; + + return { + me, + meError: computed(() => error), + isMePending, + authUrl, + + isAuthenticated: computed(() => !!me.value), + + isAuthUser: (user: User) => me.value?.id === user.id, + resetAuth, + refresh, + logoutUser, + async authenticateUser( + username: string, + password: string, + fetch: AppFetch + ) { + const user = await login(fetch, username, password); + me.value = user; + return user; + }, + }; +}); +export default useAuthUser; diff --git a/apps/front/src/types/AppFetch.d.ts b/apps/front/src/types/AppFetch.d.ts new file mode 100644 index 00000000..289608c7 --- /dev/null +++ b/apps/front/src/types/AppFetch.d.ts @@ -0,0 +1,4 @@ +export type AppFetch = ( + request: NitroFetchRequest, + opts?: NitroFetchOptions<"json"> +) => Promise; diff --git a/apps/front/src/types/BasicError.d.ts b/apps/front/src/types/BasicError.d.ts new file mode 100644 index 00000000..a6db7e59 --- /dev/null +++ b/apps/front/src/types/BasicError.d.ts @@ -0,0 +1,8 @@ +export interface BasicError { + message: string; + name?: string; + detail?: string; + error?: string; + title?: string; + status?: number; +} diff --git a/apps/front/src/types/Company.d.ts b/apps/front/src/types/Company.d.ts new file mode 100644 index 00000000..34af93e8 --- /dev/null +++ b/apps/front/src/types/Company.d.ts @@ -0,0 +1,9 @@ +import {User} from "~/types/User"; + +export type CompanyId = number; +export interface Company { + id: CompanyId; + name: string; + users: Array; + identityFile: File|null; +} diff --git a/apps/front/src/types/User.d.ts b/apps/front/src/types/User.d.ts new file mode 100644 index 00000000..b660d999 --- /dev/null +++ b/apps/front/src/types/User.d.ts @@ -0,0 +1,6 @@ +export type UserId = number; +export interface User { + id: UserId; + email: string; + profilePictureUrl: string | null; +} diff --git a/apps/front/src/types/UserInput.d.ts b/apps/front/src/types/UserInput.d.ts new file mode 100644 index 00000000..4f047e46 --- /dev/null +++ b/apps/front/src/types/UserInput.d.ts @@ -0,0 +1,6 @@ +import { User } from "~/types/User"; +// This is used for form communication +type UserInput = Omit & { + password: string; + profilePicture: File | null; +}; diff --git a/apps/front/src/utils/logger.ts b/apps/front/src/utils/logger.ts new file mode 100644 index 00000000..60f14f5f --- /dev/null +++ b/apps/front/src/utils/logger.ts @@ -0,0 +1,3 @@ +import pino from "pino"; + +export default pino(); diff --git a/apps/front/tsconfig.json b/apps/front/tsconfig.json new file mode 100644 index 00000000..a746f2a7 --- /dev/null +++ b/apps/front/tsconfig.json @@ -0,0 +1,4 @@ +{ + // https://nuxt.com/docs/guide/concepts/typescript + "extends": "./.nuxt/tsconfig.json" +} diff --git a/apps/front/yarn.lock b/apps/front/yarn.lock new file mode 100644 index 00000000..b90f8987 --- /dev/null +++ b/apps/front/yarn.lock @@ -0,0 +1,6690 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@antfu/utils@^0.7.6": + version "0.7.6" + resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.6.tgz" + integrity sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w== + +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.9": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== + +"@babel/core@^7.22.10", "@babel/core@^7.22.9", "@babel/core@^7.23.0": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.22.14", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16", "@babel/parser@^7.22.7", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/plugin-proposal-decorators@^7.23.0": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz" + integrity sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/plugin-syntax-decorators" "^7.22.10" + +"@babel/plugin-syntax-decorators@^7.22.10": + version "7.22.10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz" + integrity sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.10", "@babel/plugin-transform-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/standalone@^7.22.9": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/standalone/-/standalone-7.23.2.tgz" + integrity sha512-VJNw7OS26JvB6rE9XpbT6uQeQIEBWU5eeHGS4VR/+/4ZoKdLBXLcy66ZVJ/9IBkK1RMp8B0cohvhzdKWtJAGmg== + +"@babel/template@^7.22.15", "@babel/template@^7.22.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.22.5", "@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@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.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.22.15", "@babel/types@^7.22.17", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@cloudflare/kv-asset-handler@^0.3.0": + version "0.3.0" + resolved "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.0.tgz" + integrity sha512-9CB/MKf/wdvbfkUdfrj+OkEwZ5b7rws0eogJ4293h+7b6KX5toPwym+VQKmILafNB9YiehqY0DlNrDcDhdWHSQ== + dependencies: + mime "^3.0.0" + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz#276c5f99604054d3dbb733577e09adae944baa90" + integrity sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-arm@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.5.tgz#4a3cbf14758166abaae8ba9c01a80e68342a4eec" + integrity sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/android-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.5.tgz#21a3d11cd4613d2d3c5ccb9e746c254eb9265b0a" + integrity sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz#714cb839f467d6a67b151ee8255886498e2b9bf6" + integrity sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/darwin-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz#2c553e97a6d2b4ae76a884e35e6cbab85a990bbf" + integrity sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz#d554f556718adb31917a0da24277bf84b6ee87f3" + integrity sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/freebsd-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz#288f7358a3bb15d99e73c65c9adaa3dabb497432" + integrity sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz#95933ae86325c93cb6b5e8333d22120ecfdc901b" + integrity sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-arm@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz#0acef93aa3e0579e46d33b666627bddb06636664" + integrity sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-ia32@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz#b6e5c9e80b42131cbd6b1ddaa48c92835f1ed67f" + integrity sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-loong64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz#e5f0cf95a180158b01ff5f417da796a1c09dfbea" + integrity sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-mips64el@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz#ae36fb86c7d5f641f3a0c8472e83dcb6ea36a408" + integrity sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-ppc64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz#7960cb1666f0340ddd9eef7b26dcea3835d472d0" + integrity sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-riscv64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz#32207df26af60a3a9feea1783fc21b9817bade19" + integrity sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-s390x@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz#b38d5681db89a3723862dfa792812397b1510a7d" + integrity sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/linux-x64@0.19.5": + version "0.19.5" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz" + integrity sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/netbsd-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz#3b5c1fb068f26bfc681d31f682adf1bea4ef0702" + integrity sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/openbsd-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz#ca6830316ca68056c5c88a875f103ad3235e00db" + integrity sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/sunos-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz#9efc4eb9539a7be7d5a05ada52ee43cda0d8e2dd" + integrity sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz#29f8184afa7a02a956ebda4ed638099f4b8ff198" + integrity sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-ia32@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz#f3de07afb292ecad651ae4bb8727789de2d95b05" + integrity sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + +"@esbuild/win32-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz#faad84c41ba12e3a0acb52571df9bff37bee75f6" + integrity sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.9.1" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== + +"@fastify/busboy@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz" + integrity sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ== + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== + dependencies: + "@humanwhocodes/object-schema" "^2.0.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== + +"@intlify/bundle-utils@^7.4.0": + version "7.4.0" + resolved "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-7.4.0.tgz" + integrity sha512-AQfjBe2HUxzyN8ignIk3WhhSuVcSuirgzOzkd17nb337rCbI4Gv/t1R60UUyIqFoFdviLb/wLcDUzTD/xXjv9w== + dependencies: + "@intlify/message-compiler" "^9.4.0" + "@intlify/shared" "^9.4.0" + acorn "^8.8.2" + escodegen "^2.0.0" + estree-walker "^2.0.2" + jsonc-eslint-parser "^2.3.0" + magic-string "^0.30.0" + mlly "^1.2.0" + source-map-js "^1.0.1" + yaml-eslint-parser "^1.2.2" + +"@intlify/core-base@9.5.0": + version "9.5.0" + resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.5.0.tgz" + integrity sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w== + dependencies: + "@intlify/message-compiler" "9.5.0" + "@intlify/shared" "9.5.0" + +"@intlify/message-compiler@9.5.0", "@intlify/message-compiler@^9.4.0": + version "9.5.0" + resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.5.0.tgz" + integrity sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g== + dependencies: + "@intlify/shared" "9.5.0" + source-map-js "^1.0.2" + +"@intlify/shared@9.5.0", "@intlify/shared@^9.4.0", "@intlify/shared@^9.4.1": + version "9.5.0" + resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.5.0.tgz" + integrity sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA== + +"@intlify/unplugin-vue-i18n@^1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-1.4.0.tgz" + integrity sha512-RGDchCRBlDTyVVFgPA1C1XC1uD4xYN81Ma+3EnU6GQ8pBEreraX/PWdPXXzOB6k9GWCQHuqii3atYXhcH3rpSg== + dependencies: + "@intlify/bundle-utils" "^7.4.0" + "@intlify/shared" "^9.4.0" + "@rollup/pluginutils" "^5.0.2" + "@vue/compiler-sfc" "^3.2.47" + debug "^4.3.3" + fast-glob "^3.2.12" + js-yaml "^4.1.0" + json5 "^2.2.3" + pathe "^1.0.0" + picocolors "^1.0.0" + source-map-js "^1.0.2" + unplugin "^1.1.0" + +"@intlify/vue-i18n-bridge@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@intlify/vue-i18n-bridge/-/vue-i18n-bridge-1.0.1.tgz" + integrity sha512-MJ1uC39/P8sCsvSs8pdXClbBCKYp5g+DbvNyIPvsKdAH/yBXP4r0s4GIsrOgxrvAO6wABZIIZ/glHAZJZfj4nw== + +"@intlify/vue-router-bridge@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@intlify/vue-router-bridge/-/vue-router-bridge-1.0.1.tgz" + integrity sha512-P8XjgUZ7dYXhDpGGXmAA/l9VEG4LHIt0mESd0377tRBupDLIEhmZ1IahG8Al1VzG+5yHmwb568pGIJoFEJZEMA== + dependencies: + vue-demi "^0.13.5" + +"@ioredis/commands@^1.1.1": + version "1.2.0" + resolved "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz" + integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@kwsites/file-exists@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz" + integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + dependencies: + debug "^4.1.1" + +"@kwsites/promise-deferred@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz" + integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== + +"@mapbox/node-pre-gyp@^1.0.5": + version "1.0.11" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz" + integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + +"@mizchi/sucrase@^4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@mizchi/sucrase/-/sucrase-4.1.0.tgz" + integrity sha512-AaN8HSGdXmNqEqIb0IQPIQL+MI/8Xr1QTOcVnA6k0u2afqfYhlre05hSxRybOFpq34oF8EqMTrYovYZxEV1FLw== + dependencies: + lines-and-columns "^1.1.6" + +"@netlify/functions@^2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@netlify/functions/-/functions-2.3.0.tgz" + integrity sha512-E3kzXPWMP/r1rAWhjTaXcaOT47dhEvg/eQUJjRLhD9Zzp0WqkdynHr+bqff4rFNv6tuXrtFZrpbPJFKHH0c0zw== + dependencies: + "@netlify/serverless-functions-api" "1.9.0" + is-promise "^4.0.0" + +"@netlify/node-cookies@^0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz" + integrity sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g== + +"@netlify/serverless-functions-api@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.9.0.tgz" + integrity sha512-Jq4uk1Mwa5vyxImupJYXPP+I5yYcp3PtguvXtJRutKdm9DPALXfZVtCQzBWMNdZiqVWCM3La9hvaBsPjSMfeug== + dependencies: + "@netlify/node-cookies" "^0.1.0" + urlpattern-polyfill "8.0.2" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/agent@^2.0.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz" + integrity sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.1" + +"@npmcli/fs@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz" + integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== + dependencies: + semver "^7.3.5" + +"@npmcli/git@^5.0.0": + version "5.0.3" + resolved "https://registry.npmjs.org/@npmcli/git/-/git-5.0.3.tgz" + integrity sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw== + dependencies: + "@npmcli/promise-spawn" "^7.0.0" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^3.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^4.0.0" + +"@npmcli/installed-package-contents@^2.0.1": + version "2.0.2" + resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz" + integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/promise-spawn@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.0.tgz" + integrity sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ== + dependencies: + which "^4.0.0" + +"@npmcli/run-script@^7.0.0": + version "7.0.1" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.1.tgz" + integrity sha512-Od/JMrgkjZ8alyBE0IzeqZDiF1jgMez9Gkc/OYrCkHHiXNwM0wc6s7+h+xM7kYDZkS0tAoOLr9VvygyE5+2F7g== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^3.0.0" + which "^4.0.0" + +"@nuxt/devalue@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@nuxt/devalue/-/devalue-2.0.2.tgz" + integrity sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA== + +"@nuxt/devtools-kit@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-1.0.0.tgz" + integrity sha512-cNloBepQYCBW6x/ctfCvyYRZudxhfgh5w5JDswpCzn7KXmm8U6abG2jyT0FXIaceW1d5QYMpGCN1RUw24wSvOA== + dependencies: + "@nuxt/kit" "^3.7.4" + "@nuxt/schema" "^3.7.4" + execa "^7.2.0" + +"@nuxt/devtools-wizard@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-1.0.0.tgz" + integrity sha512-9OeZM2/Y4VuI06gdlDjmYM8yUzdfnywy4t2u2VAEfA2Lk7vk3U1lYn51IAqr+Gits9tp/Q9OiktMWmPLLNGgFw== + dependencies: + consola "^3.2.3" + diff "^5.1.0" + execa "^7.2.0" + global-dirs "^3.0.1" + magicast "^0.3.0" + pathe "^1.1.1" + pkg-types "^1.0.3" + prompts "^2.4.2" + rc9 "^2.1.1" + semver "^7.5.4" + +"@nuxt/devtools@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@nuxt/devtools/-/devtools-1.0.0.tgz" + integrity sha512-pM5AvystXlFPYOsGbH8PBxEYkttiEWHsZnGw660iMw8QedB6mAweT21XX9LDS69cqnRY5uTFqVOmO9Y4EYL3hg== + dependencies: + "@antfu/utils" "^0.7.6" + "@nuxt/devtools-kit" "1.0.0" + "@nuxt/devtools-wizard" "1.0.0" + "@nuxt/kit" "^3.7.4" + birpc "^0.2.14" + consola "^3.2.3" + destr "^2.0.1" + error-stack-parser-es "^0.1.1" + execa "^7.2.0" + fast-glob "^3.3.1" + flatted "^3.2.9" + get-port-please "^3.1.1" + global-dirs "^3.0.1" + h3 "^1.8.2" + hookable "^5.5.3" + image-meta "^0.1.1" + is-installed-globally "^0.4.0" + launch-editor "^2.6.1" + local-pkg "^0.5.0" + magicast "^0.3.0" + nitropack "^2.6.3" + nypm "^0.3.3" + ofetch "^1.3.3" + ohash "^1.1.3" + pacote "^17.0.4" + pathe "^1.1.1" + perfect-debounce "^1.0.0" + pkg-types "^1.0.3" + rc9 "^2.1.1" + scule "^1.0.0" + semver "^7.5.4" + simple-git "^3.20.0" + sirv "^2.0.3" + unimport "^3.4.0" + vite-plugin-inspect "^0.7.40" + vite-plugin-vue-inspector "^4.0.0" + which "^3.0.1" + ws "^8.14.2" + +"@nuxt/eslint-config@^0.1.1": + version "0.1.1" + resolved "https://registry.npmjs.org/@nuxt/eslint-config/-/eslint-config-0.1.1.tgz" + integrity sha512-znm1xlbhldUubB2XGx6Ca5uarwlIieKf0o8CtxtF6eEauDbpa3T2p3JnTcdguMW2nj1YPneoGmhshANfOlghiQ== + dependencies: + "@rushstack/eslint-patch" "^1.2.0" + "@typescript-eslint/eslint-plugin" "^5.45.1" + "@typescript-eslint/parser" "^5.45.1" + eslint-plugin-vue "^9.8.0" + typescript "^4.9.3" + +"@nuxt/kit@3.8.0", "@nuxt/kit@^3.5.0", "@nuxt/kit@^3.7.3", "@nuxt/kit@^3.7.4": + version "3.8.0" + resolved "https://registry.npmjs.org/@nuxt/kit/-/kit-3.8.0.tgz" + integrity sha512-oIthQxeMIVs4ESVP5FqLYn8tj0S1sLd+eYreh+dNYgnJ2pTi7+THR12ONBNHjk668jqEe7ErUJ8UlGwqBzgezg== + dependencies: + "@nuxt/schema" "3.8.0" + c12 "^1.5.1" + consola "^3.2.3" + defu "^6.1.2" + globby "^13.2.2" + hash-sum "^2.0.0" + ignore "^5.2.4" + jiti "^1.20.0" + knitwork "^1.0.0" + mlly "^1.4.2" + pathe "^1.1.1" + pkg-types "^1.0.3" + scule "^1.0.0" + semver "^7.5.4" + ufo "^1.3.1" + unctx "^2.3.1" + unimport "^3.4.0" + untyped "^1.4.0" + +"@nuxt/schema@3.8.0", "@nuxt/schema@^3.7.4": + version "3.8.0" + resolved "https://registry.npmjs.org/@nuxt/schema/-/schema-3.8.0.tgz" + integrity sha512-VEDVeCjdVowhoY5vIBSz94+SSwmM204jN6TNe/ShBJ2d/vZiy9EtLbhOwqaPNFHwnN1fl/XFHThwJiexdB9D1w== + dependencies: + "@nuxt/ui-templates" "^1.3.1" + consola "^3.2.3" + defu "^6.1.2" + hookable "^5.5.3" + pathe "^1.1.1" + pkg-types "^1.0.3" + postcss-import-resolver "^2.0.0" + std-env "^3.4.3" + ufo "^1.3.1" + unimport "^3.4.0" + untyped "^1.4.0" + +"@nuxt/telemetry@^2.5.2": + version "2.5.2" + resolved "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-2.5.2.tgz" + integrity sha512-kZ+rWq/5MZonMhp8KGFI5zMaR2VsiWpnlkOLJIuIX2WoJl0DkHvtxCtuFq2erAqMVruWLpKU+tgMC+1cno/QmA== + dependencies: + "@nuxt/kit" "^3.7.4" + ci-info "^3.8.0" + consola "^3.2.3" + create-require "^1.1.1" + defu "^6.1.2" + destr "^2.0.1" + dotenv "^16.3.1" + git-url-parse "^13.1.0" + is-docker "^3.0.0" + jiti "^1.20.0" + mri "^1.2.0" + nanoid "^4.0.2" + ofetch "^1.3.3" + parse-git-config "^3.0.0" + pathe "^1.1.1" + rc9 "^2.1.1" + std-env "^3.4.3" + +"@nuxt/ui-templates@^1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/@nuxt/ui-templates/-/ui-templates-1.3.1.tgz" + integrity sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA== + +"@nuxt/vite-builder@3.8.0": + version "3.8.0" + resolved "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.8.0.tgz" + integrity sha512-F9BfH+c/Idp6sBGVHR4QJSuoO42evtE4D0OelD45NgkqVvmBmOawlj0Oz5fDKoV64LDPI2+yE+xnBdQtsNv/VA== + dependencies: + "@nuxt/kit" "3.8.0" + "@rollup/plugin-replace" "^5.0.4" + "@vitejs/plugin-vue" "^4.4.0" + "@vitejs/plugin-vue-jsx" "^3.0.2" + autoprefixer "^10.4.16" + clear "^0.1.0" + consola "^3.2.3" + cssnano "^6.0.1" + defu "^6.1.2" + esbuild "^0.19.5" + escape-string-regexp "^5.0.0" + estree-walker "^3.0.3" + externality "^1.0.2" + fs-extra "^11.1.1" + get-port-please "^3.1.1" + h3 "^1.8.2" + knitwork "^1.0.0" + magic-string "^0.30.5" + mlly "^1.4.2" + ohash "^1.1.3" + pathe "^1.1.1" + perfect-debounce "^1.0.0" + pkg-types "^1.0.3" + postcss "^8.4.31" + postcss-import "^15.1.0" + postcss-url "^10.1.3" + rollup-plugin-visualizer "^5.9.2" + std-env "^3.4.3" + strip-literal "^1.3.0" + ufo "^1.3.1" + unplugin "^1.5.0" + vite "^4.5.0" + vite-node "^0.33.0" + vite-plugin-checker "^0.6.2" + vue-bundle-renderer "^2.0.0" + +"@nuxtjs/i18n@^8.0.0-rc.5": + version "8.0.0-rc.5" + resolved "https://registry.npmjs.org/@nuxtjs/i18n/-/i18n-8.0.0-rc.5.tgz" + integrity sha512-iNOh9erVx8/sKtQcz/YZIPTGT/xcf/fmAHbGLb20qecRGOWFMsRb62n9T9taS4WtJwUn1AFc0S7395xqpRkJHw== + dependencies: + "@intlify/shared" "9.5.0" + "@intlify/unplugin-vue-i18n" "^1.4.0" + "@mizchi/sucrase" "^4.1.0" + "@nuxt/kit" "^3.7.4" + "@vue/compiler-sfc" "^3.3.4" + cookie-es "^1.0.0" + debug "^4.3.4" + defu "^6.1.2" + estree-walker "^3.0.3" + is-https "^4.0.0" + js-cookie "^3.0.5" + knitwork "^1.0.0" + magic-string "^0.30.4" + mlly "^1.4.2" + pathe "^1.1.1" + pkg-types "^1.0.3" + ufo "^1.3.1" + unplugin "^1.5.0" + unstorage "^1.9.0" + vue-i18n "9.5.0" + vue-i18n-routing "^1.1.1" + +"@parcel/watcher-android-arm64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz#d82e74bb564ebd4d8a88791d273a3d2bd61e27ab" + integrity sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA== + +"@parcel/watcher-darwin-arm64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz#c9cd03f8f233d512fcfc873d5b4e23f1569a82ad" + integrity sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw== + +"@parcel/watcher-darwin-x64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz#83c902994a2a49b9e1ab5050dba24876fdc2c219" + integrity sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow== + +"@parcel/watcher-freebsd-x64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz#7a0f4593a887e2752b706aff2dae509aef430cf6" + integrity sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw== + +"@parcel/watcher-linux-arm-glibc@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz#3fc90c3ebe67de3648ed2f138068722f9b1d47da" + integrity sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ== + +"@parcel/watcher-linux-arm64-glibc@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz#f7bbbf2497d85fd11e4c9e9c26ace8f10ea9bcbc" + integrity sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA== + +"@parcel/watcher-linux-arm64-musl@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz#de131a9fcbe1fa0854e9cbf4c55bed3b35bcff43" + integrity sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw== + +"@parcel/watcher-linux-x64-glibc@2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz" + integrity sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow== + +"@parcel/watcher-linux-x64-musl@2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz" + integrity sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g== + +"@parcel/watcher-wasm@2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz" + integrity sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA== + dependencies: + is-glob "^4.0.3" + micromatch "^4.0.5" + napi-wasm "^1.1.0" + +"@parcel/watcher-win32-arm64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz#59da26a431da946e6c74fa6b0f30b120ea6650b6" + integrity sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw== + +"@parcel/watcher-win32-ia32@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz#3ee6a18b08929cd3b788e8cc9547fd9a540c013a" + integrity sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow== + +"@parcel/watcher-win32-x64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz#14e7246289861acc589fd608de39fe5d8b4bb0a7" + integrity sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA== + +"@parcel/watcher@^2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz" + integrity sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.3.0" + "@parcel/watcher-darwin-arm64" "2.3.0" + "@parcel/watcher-darwin-x64" "2.3.0" + "@parcel/watcher-freebsd-x64" "2.3.0" + "@parcel/watcher-linux-arm-glibc" "2.3.0" + "@parcel/watcher-linux-arm64-glibc" "2.3.0" + "@parcel/watcher-linux-arm64-musl" "2.3.0" + "@parcel/watcher-linux-x64-glibc" "2.3.0" + "@parcel/watcher-linux-x64-musl" "2.3.0" + "@parcel/watcher-win32-arm64" "2.3.0" + "@parcel/watcher-win32-ia32" "2.3.0" + "@parcel/watcher-win32-x64" "2.3.0" + +"@pinia/nuxt@^0.4.11": + version "0.4.11" + resolved "https://registry.npmjs.org/@pinia/nuxt/-/nuxt-0.4.11.tgz" + integrity sha512-bhuNFngJpmBCdAqWguezNJ/oJFR7wvKieqiZrmmdmPR07XjsidAw8RLXHMZE9kUm32M9E6T057OBbG/22jERTg== + dependencies: + "@nuxt/kit" "^3.5.0" + pinia ">=2.1.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.23" + resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz" + integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg== + +"@rollup/plugin-alias@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.0.1.tgz" + integrity sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q== + dependencies: + slash "^4.0.0" + +"@rollup/plugin-commonjs@^25.0.7": + version "25.0.7" + resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz" + integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + commondir "^1.0.1" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.30.3" + +"@rollup/plugin-inject@^5.0.5": + version "5.0.5" + resolved "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz" + integrity sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + estree-walker "^2.0.2" + magic-string "^0.30.3" + +"@rollup/plugin-json@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.1.tgz" + integrity sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw== + dependencies: + "@rollup/pluginutils" "^5.0.1" + +"@rollup/plugin-node-resolve@^15.2.3": + version "15.2.3" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-builtin-module "^3.2.1" + is-module "^1.0.0" + resolve "^1.22.1" + +"@rollup/plugin-replace@^5.0.4": + version "5.0.4" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.4.tgz" + integrity sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + magic-string "^0.30.3" + +"@rollup/plugin-terser@^0.4.4": + version "0.4.4" + resolved "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz" + integrity sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A== + dependencies: + serialize-javascript "^6.0.1" + smob "^1.0.0" + terser "^5.17.4" + +"@rollup/plugin-wasm@^6.2.2": + version "6.2.2" + resolved "https://registry.npmjs.org/@rollup/plugin-wasm/-/plugin-wasm-6.2.2.tgz" + integrity sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ== + dependencies: + "@rollup/pluginutils" "^5.0.2" + +"@rollup/pluginutils@^4.0.0": + version "4.2.1" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2", "@rollup/pluginutils@^5.0.4", "@rollup/pluginutils@^5.0.5": + version "5.0.5" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz" + integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@rushstack/eslint-patch@^1.2.0", "@rushstack/eslint-patch@^1.3.0": + version "1.5.1" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== + +"@sigstore/bundle@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.0.tgz" + integrity sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng== + dependencies: + "@sigstore/protobuf-specs" "^0.2.1" + +"@sigstore/protobuf-specs@^0.2.1": + version "0.2.1" + resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz" + integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== + +"@sigstore/sign@^2.1.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.0.tgz" + integrity sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA== + dependencies: + "@sigstore/bundle" "^2.1.0" + "@sigstore/protobuf-specs" "^0.2.1" + make-fetch-happen "^13.0.0" + +"@sigstore/tuf@^2.1.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.2.0.tgz" + integrity sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA== + dependencies: + "@sigstore/protobuf-specs" "^0.2.1" + tuf-js "^2.1.0" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + +"@tufjs/models@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz" + integrity sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.3" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz" + integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== + +"@types/http-proxy@^1.17.11", "@types/http-proxy@^1.17.13": + version "1.17.13" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.13.tgz" + integrity sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw== + dependencies: + "@types/node" "*" + +"@types/json-schema@^7.0.9": + version "7.0.14" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== + +"@types/lodash@^4.14.195": + version "4.14.200" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.200.tgz" + integrity sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q== + +"@types/node@*": + version "20.8.7" + resolved "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== + dependencies: + undici-types "~5.25.1" + +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + +"@types/semver@^7.3.12": + version "7.5.4" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== + +"@typescript-eslint/eslint-plugin@^5.45.1": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.45.1": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@unhead/dom@1.7.4", "@unhead/dom@^1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@unhead/dom/-/dom-1.7.4.tgz" + integrity sha512-xanQMtGmgikqTvDtuyJy6GXgqvUXOdrdnIyqAabpeS8goD8udxo0stzjtbT8ERbMQibzPGSGcN+Ux+MKoWzrjQ== + dependencies: + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" + +"@unhead/schema@1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@unhead/schema/-/schema-1.7.4.tgz" + integrity sha512-wUL4CK0NSEm3KH4kYsiqVYQw5xBk1hpBi5tiNj0BTZgpQVrRufICdK5EHA9Fh7OIAR6tOTWwTvsf5+nK0BgQDA== + dependencies: + hookable "^5.5.3" + zhead "^2.1.1" + +"@unhead/shared@1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@unhead/shared/-/shared-1.7.4.tgz" + integrity sha512-YUNA2UxAuDPnDps41BQ8aEIY5hdyvruSB1Vs3AALhRo07MxMivSq5DjNKfYr/JvRN6593RtfI1NHnP9x5M57xA== + dependencies: + "@unhead/schema" "1.7.4" + +"@unhead/ssr@^1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.7.4.tgz" + integrity sha512-2QqaHdC48XJGP9Pd0F2fblPv9/6G4IU04iZ5qLRAs6MFFmFEzrdvoooFlcwdcoH/WDGRnpYBmo+Us2nzQz1MMQ== + dependencies: + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" + +"@unhead/vue@^1.7.4": + version "1.7.4" + resolved "https://registry.npmjs.org/@unhead/vue/-/vue-1.7.4.tgz" + integrity sha512-ZfgzOhg1Bxo9xwp3upawqerw4134hc9Lhz6t005ixcBwPX+39Wpgc9dC3lf+owFQEVuWkf8F+eAwK2sghVBK4A== + dependencies: + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" + hookable "^5.5.3" + unhead "1.7.4" + +"@vercel/nft@^0.24.3": + version "0.24.3" + resolved "https://registry.npmjs.org/@vercel/nft/-/nft-0.24.3.tgz" + integrity sha512-IyBdIxmFAeGZnEfMgt4QrGK7XX4lWazlQj34HEi9dw04/WeDBJ7r1yaOIO5tTf9pbfvwUFodj9b0H+NDGGoOMg== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.5" + "@rollup/pluginutils" "^4.0.0" + acorn "^8.6.0" + async-sema "^3.1.1" + bindings "^1.4.0" + estree-walker "2.0.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + micromatch "^4.0.2" + node-gyp-build "^4.2.2" + resolve-from "^5.0.0" + +"@vitejs/plugin-vue-jsx@^3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.2.tgz" + integrity sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw== + dependencies: + "@babel/core" "^7.22.10" + "@babel/plugin-transform-typescript" "^7.22.10" + "@vue/babel-plugin-jsx" "^1.1.5" + +"@vitejs/plugin-vue@^4.4.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz" + integrity sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg== + +"@volar/language-core@1.10.4", "@volar/language-core@~1.10.4": + version "1.10.4" + resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.4.tgz" + integrity sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ== + dependencies: + "@volar/source-map" "1.10.4" + +"@volar/source-map@1.10.4", "@volar/source-map@~1.10.4": + version "1.10.4" + resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.4.tgz" + integrity sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg== + dependencies: + muggle-string "^0.3.1" + +"@volar/typescript@~1.10.4": + version "1.10.4" + resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.4.tgz" + integrity sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg== + dependencies: + "@volar/language-core" "1.10.4" + +"@vue-macros/common@^1.8.0": + version "1.8.0" + resolved "https://registry.npmjs.org/@vue-macros/common/-/common-1.8.0.tgz" + integrity sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA== + dependencies: + "@babel/types" "^7.22.17" + "@rollup/pluginutils" "^5.0.4" + "@vue/compiler-sfc" "^3.3.4" + ast-kit "^0.11.2" + local-pkg "^0.4.3" + magic-string-ast "^0.3.0" + +"@vue/babel-helper-vue-transform-on@^1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz" + integrity sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w== + +"@vue/babel-plugin-jsx@^1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz" + integrity sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.5" + "@babel/types" "^7.22.5" + "@vue/babel-helper-vue-transform-on" "^1.1.5" + camelcase "^6.3.0" + html-tags "^3.3.1" + svg-tags "^1.0.0" + +"@vue/compiler-core@3.3.6": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.6.tgz" + integrity sha512-2JNjemwaNwf+MkkatATVZi7oAH1Hx0B04DdPH3ZoZ8vKC1xZVP7nl4HIsk8XYd3r+/52sqqoz9TWzYc3yE9dqA== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/shared" "3.3.6" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.3.6", "@vue/compiler-dom@^3.3.0", "@vue/compiler-dom@^3.3.4": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.6.tgz" + integrity sha512-1MxXcJYMHiTPexjLAJUkNs/Tw2eDf2tY3a0rL+LfuWyiKN2s6jvSwywH3PWD8bKICjfebX3GWx2Os8jkRDq3Ng== + dependencies: + "@vue/compiler-core" "3.3.6" + "@vue/shared" "3.3.6" + +"@vue/compiler-sfc@3.3.6", "@vue/compiler-sfc@^3.2.20", "@vue/compiler-sfc@^3.2.47", "@vue/compiler-sfc@^3.3.4": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.6.tgz" + integrity sha512-/Kms6du2h1VrXFreuZmlvQej8B1zenBqIohP0690IUBkJjsFvJxY0crcvVRJ0UhMgSR9dewB+khdR1DfbpArJA== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.6" + "@vue/compiler-dom" "3.3.6" + "@vue/compiler-ssr" "3.3.6" + "@vue/reactivity-transform" "3.3.6" + "@vue/shared" "3.3.6" + estree-walker "^2.0.2" + magic-string "^0.30.5" + postcss "^8.4.31" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.3.6": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.6.tgz" + integrity sha512-QTIHAfDCHhjXlYGkUg5KH7YwYtdUM1vcFl/FxFDlD6d0nXAmnjizka3HITp8DGudzHndv2PjKVS44vqqy0vP4w== + dependencies: + "@vue/compiler-dom" "3.3.6" + "@vue/shared" "3.3.6" + +"@vue/devtools-api@^6.5.0": + version "6.5.1" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz" + integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== + +"@vue/language-core@1.8.20": + version "1.8.20" + resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.20.tgz" + integrity sha512-vNJaqjCTSrWEr+erSq6Rq0CqDC8MOAwyxirxwK8esOxd+1LmAUJUTG2p7I84Mj1Izy5uHiHQAkRTVR2QxMBY+A== + dependencies: + "@volar/language-core" "~1.10.4" + "@volar/source-map" "~1.10.4" + "@vue/compiler-dom" "^3.3.0" + "@vue/shared" "^3.3.0" + computeds "^0.0.1" + minimatch "^9.0.3" + muggle-string "^0.3.1" + vue-template-compiler "^2.7.14" + +"@vue/reactivity-transform@3.3.6": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.6.tgz" + integrity sha512-RlJl4dHfeO7EuzU1iJOsrlqWyJfHTkJbvYz/IOJWqu8dlCNWtxWX377WI0VsbAgBizjwD+3ZjdnvSyyFW1YVng== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.6" + "@vue/shared" "3.3.6" + estree-walker "^2.0.2" + magic-string "^0.30.5" + +"@vue/reactivity@3.3.6": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.6.tgz" + integrity sha512-gtChAumfQz5lSy5jZXfyXbKrIYPf9XEOrIr6rxwVyeWVjFhJwmwPLtV6Yis+M9onzX++I5AVE9j+iPH60U+B8Q== + dependencies: + "@vue/shared" "3.3.6" + +"@vue/runtime-core@3.3.6": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.6.tgz" + integrity sha512-qp7HTP1iw1UW2ZGJ8L3zpqlngrBKvLsDAcq5lA6JvEXHmpoEmjKju7ahM9W2p/h51h0OT5F2fGlP/gMhHOmbUA== + dependencies: + "@vue/reactivity" "3.3.6" + "@vue/shared" "3.3.6" + +"@vue/runtime-dom@3.3.6": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.6.tgz" + integrity sha512-AoX3Cp8NqMXjLbIG9YR6n/pPLWE9TiDdk6wTJHFnl2GpHzDFH1HLBC9wlqqQ7RlnvN3bVLpzPGAAH00SAtOxHg== + dependencies: + "@vue/runtime-core" "3.3.6" + "@vue/shared" "3.3.6" + csstype "^3.1.2" + +"@vue/server-renderer@3.3.6": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.6.tgz" + integrity sha512-kgLoN43W4ERdZ6dpyy+gnk2ZHtcOaIr5Uc/WUP5DRwutgvluzu2pudsZGoD2b7AEJHByUVMa9k6Sho5lLRCykw== + dependencies: + "@vue/compiler-ssr" "3.3.6" + "@vue/shared" "3.3.6" + +"@vue/shared@3.3.6", "@vue/shared@^3.3.0", "@vue/shared@^3.3.4": + version "3.3.6" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.6.tgz" + integrity sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ== + +"@vue/typescript@1.8.20": + version "1.8.20" + resolved "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.20.tgz" + integrity sha512-F0XX1wK71Fo9ewtzLSCSo5dfOuwKrSi/dR2AlI00iTJ4Bfk0wq1BNTRgnlvfx4kz/vQovaGXqwpIkif14W9KrA== + dependencies: + "@volar/typescript" "~1.10.4" + "@vue/language-core" "1.8.20" + +abbrev@1, abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@8.10.0, acorn@^8.10.0, acorn@^8.5.0, acorn@^8.6.0, acorn@^8.8.2, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + +agentkeepalive@^4.2.1: + version "4.5.0" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@^3.1.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + +archiver-utils@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz" + integrity sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg== + dependencies: + glob "^8.0.0" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash "^4.17.15" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +archiver@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz" + integrity sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ== + dependencies: + archiver-utils "^4.0.1" + async "^3.2.4" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.1.2" + tar-stream "^3.0.0" + zip-stream "^5.0.1" + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +ast-kit@^0.11.2: + version "0.11.2" + resolved "https://registry.npmjs.org/ast-kit/-/ast-kit-0.11.2.tgz" + integrity sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ== + dependencies: + "@babel/parser" "^7.22.14" + "@rollup/pluginutils" "^5.0.4" + pathe "^1.1.1" + +ast-kit@^0.9.4: + version "0.9.5" + resolved "https://registry.npmjs.org/ast-kit/-/ast-kit-0.9.5.tgz" + integrity sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg== + dependencies: + "@babel/parser" "^7.22.7" + "@rollup/pluginutils" "^5.0.2" + pathe "^1.1.1" + +ast-walker-scope@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.5.0.tgz" + integrity sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q== + dependencies: + "@babel/parser" "^7.22.7" + ast-kit "^0.9.4" + +async-sema@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz" + integrity sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg== + +async@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +autoprefixer@^10.4.16: + version "10.4.16" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== + dependencies: + browserslist "^4.21.10" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +b4a@^1.6.4: + version "1.6.4" + resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz" + integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.4.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +birpc@^0.2.14: + version "0.2.14" + resolved "https://registry.npmjs.org/birpc/-/birpc-0.2.14.tgz" + integrity sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: + version "4.22.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +buffer-crc32@^0.2.1: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +builtins@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + dependencies: + run-applescript "^5.0.0" + +c12@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/c12/-/c12-1.5.1.tgz" + integrity sha512-BWZRJgDEveT8uI+cliCwvYSSSSvb4xKoiiu5S0jaDbKBopQLQF7E+bq9xKk1pTcG+mUa3yXuFO7bD9d8Lr9Xxg== + dependencies: + chokidar "^3.5.3" + defu "^6.1.2" + dotenv "^16.3.1" + giget "^1.1.3" + jiti "^1.20.0" + mlly "^1.4.2" + ohash "^1.1.3" + pathe "^1.1.1" + perfect-debounce "^1.0.0" + pkg-types "^1.0.3" + rc9 "^2.1.1" + +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +cacache@^17.0.0: + version "17.1.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^7.0.3" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacache@^18.0.0: + version "18.0.0" + resolved "https://registry.npmjs.org/cacache/-/cacache-18.0.0.tgz" + integrity sha512-I7mVOPl3PUCeRub1U8YoGz2Lqv9WOBpobZ8RyWFXmReuILz+3OAyTa5oH3QPdtKZD7N0Yk00aLfzn0qvp8dZ1w== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: + version "1.0.30001553" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz" + integrity sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.1, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^3.8.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +citty@^0.1.3, citty@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/citty/-/citty-0.1.4.tgz" + integrity sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ== + dependencies: + consola "^3.2.3" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +clear@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz" + integrity sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw== + +clipboardy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz" + integrity sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg== + dependencies: + arch "^2.2.0" + execa "^5.1.1" + is-wsl "^2.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +cluster-key-slot@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz" + integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.2, color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.20, colorette@^2.0.7: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.0.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compress-commons@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz" + integrity sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag== + dependencies: + crc-32 "^1.2.0" + crc32-stream "^5.0.0" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +computeds@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz" + integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +consola@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz" + integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-es@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/cookie-es/-/cookie-es-1.0.0.tgz" + integrity sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz" + integrity sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +create-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^2.2.1: + version "2.3.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz" + integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^4.0.0" + postcss-calc "^9.0.0" + postcss-colormin "^6.0.0" + postcss-convert-values "^6.0.0" + postcss-discard-comments "^6.0.0" + postcss-discard-duplicates "^6.0.0" + postcss-discard-empty "^6.0.0" + postcss-discard-overridden "^6.0.0" + postcss-merge-longhand "^6.0.0" + postcss-merge-rules "^6.0.1" + postcss-minify-font-values "^6.0.0" + postcss-minify-gradients "^6.0.0" + postcss-minify-params "^6.0.0" + postcss-minify-selectors "^6.0.0" + postcss-normalize-charset "^6.0.0" + postcss-normalize-display-values "^6.0.0" + postcss-normalize-positions "^6.0.0" + postcss-normalize-repeat-style "^6.0.0" + postcss-normalize-string "^6.0.0" + postcss-normalize-timing-functions "^6.0.0" + postcss-normalize-unicode "^6.0.0" + postcss-normalize-url "^6.0.0" + postcss-normalize-whitespace "^6.0.0" + postcss-ordered-values "^6.0.0" + postcss-reduce-initial "^6.0.0" + postcss-reduce-transforms "^6.0.0" + postcss-svgo "^6.0.0" + postcss-unique-selectors "^6.0.0" + +cssnano-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz" + integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== + +cssnano@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz" + integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== + dependencies: + cssnano-preset-default "^6.0.1" + lilconfig "^2.1.0" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +csstype@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz" + integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw== + +dateformat@^4.6.3: + version "4.6.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +defu@^6.0.0, defu@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/defu/-/defu-6.1.2.tgz" + integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destr@^2.0.0, destr@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/destr/-/destr-2.0.1.tgz" + integrity sha512-M1Ob1zPSIvlARiJUkKqvAZ3VAqQY6Jcuth/pBKQ2b1dX/Qx0OnJ8Vux6J2H5PTMQeRzWrrbTu70VxBfv/OPDJA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +devalue@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz" + integrity sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg== + +diff@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-prop@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz" + integrity sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ== + dependencies: + type-fest "^3.8.0" + +dotenv@^16.3.1: + version "16.3.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.535: + version "1.4.563" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz" + integrity sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.1: + version "4.5.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enhanced-resolve@^5.14.1: + version "5.15.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +errno@^0.1.3: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-stack-parser-es@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.1.tgz" + integrity sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA== + +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +esbuild@^0.19.5: + version "0.19.5" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz" + integrity sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ== + optionalDependencies: + "@esbuild/android-arm" "0.19.5" + "@esbuild/android-arm64" "0.19.5" + "@esbuild/android-x64" "0.19.5" + "@esbuild/darwin-arm64" "0.19.5" + "@esbuild/darwin-x64" "0.19.5" + "@esbuild/freebsd-arm64" "0.19.5" + "@esbuild/freebsd-x64" "0.19.5" + "@esbuild/linux-arm" "0.19.5" + "@esbuild/linux-arm64" "0.19.5" + "@esbuild/linux-ia32" "0.19.5" + "@esbuild/linux-loong64" "0.19.5" + "@esbuild/linux-mips64el" "0.19.5" + "@esbuild/linux-ppc64" "0.19.5" + "@esbuild/linux-riscv64" "0.19.5" + "@esbuild/linux-s390x" "0.19.5" + "@esbuild/linux-x64" "0.19.5" + "@esbuild/netbsd-x64" "0.19.5" + "@esbuild/openbsd-x64" "0.19.5" + "@esbuild/sunos-x64" "0.19.5" + "@esbuild/win32-arm64" "0.19.5" + "@esbuild/win32-ia32" "0.19.5" + "@esbuild/win32-x64" "0.19.5" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^8.8.0: + version "8.10.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz" + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== + +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-vue@^9.8.0: + version "9.17.0" + resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz" + integrity sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + natural-compare "^1.4.0" + nth-check "^2.1.1" + postcss-selector-parser "^6.0.13" + semver "^7.5.4" + vue-eslint-parser "^9.3.1" + xml-name-validator "^4.0.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1, eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.41.0: + version "8.52.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.0.0, espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0, esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@2.0.2, estree-walker@^2.0.1, estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@^1.8.1, etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0, execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.1.1, execa@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + 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" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +externality@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/externality/-/externality-1.0.2.tgz" + integrity sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw== + dependencies: + enhanced-resolve "^5.14.1" + mlly "^1.3.0" + pathe "^1.1.1" + ufo "^1.1.2" + +fast-copy@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz" + integrity sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-fifo@^1.1.0, fast-fifo@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + +fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-redact@^3.1.1: + version "3.3.0" + resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz" + integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== + +fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.1.1" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fraction.js@^4.3.6: + version "4.3.7" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^11.1.0, fs-extra@^11.1.1: + version "11.1.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-port-please@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz" + integrity sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +giget@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/giget/-/giget-1.1.3.tgz" + integrity sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q== + dependencies: + colorette "^2.0.20" + defu "^6.1.2" + https-proxy-agent "^7.0.2" + mri "^1.2.0" + node-fetch-native "^1.4.0" + pathe "^1.1.1" + tar "^6.2.0" + +git-config-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/git-config-path/-/git-config-path-2.0.0.tgz" + integrity sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA== + +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== + dependencies: + is-ssh "^1.4.0" + parse-url "^8.1.0" + +git-url-parse@^13.1.0: + version "13.1.1" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz" + integrity sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ== + dependencies: + git-up "^7.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.2.2: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.0.0, glob@^8.0.3: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +global-dirs@^3.0.0, global-dirs@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== + dependencies: + ini "2.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^13.2.2: + version "13.2.2" + resolved "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.3.0" + ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +gzip-size@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz" + integrity sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA== + dependencies: + duplexer "^0.1.2" + +h3@^1.7.1, h3@^1.8.1, h3@^1.8.2: + version "1.8.2" + resolved "https://registry.npmjs.org/h3/-/h3-1.8.2.tgz" + integrity sha512-1Ca0orJJlCaiFY68BvzQtP2lKLk46kcLAxVM8JgYbtm2cUg6IY7pjpYgWMwUvDO9QI30N5JAukOKoT8KD3Q0PQ== + dependencies: + cookie-es "^1.0.0" + defu "^6.1.2" + destr "^2.0.1" + iron-webcrypto "^0.10.1" + radix3 "^1.1.0" + ufo "^1.3.0" + uncrypto "^0.1.3" + unenv "^1.7.4" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +help-me@^4.0.1: + version "4.2.0" + resolved "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz" + integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== + dependencies: + glob "^8.0.0" + readable-stream "^3.6.0" + +hookable@^5.5.3: + version "5.5.3" + resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz" + integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== + +hosted-git-info@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz" + integrity sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== + dependencies: + lru-cache "^10.0.1" + +html-tags@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz" + integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== + +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +http-shutdown@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz" + integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz" + integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== + dependencies: + agent-base "^7.0.2" + debug "4" + +httpxy@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/httpxy/-/httpxy-0.1.5.tgz" + integrity sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-walk@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz" + integrity sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA== + dependencies: + minimatch "^9.0.0" + +ignore@^5.2.0, ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +image-meta@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/image-meta/-/image-meta-0.1.1.tgz" + integrity sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw== + +immutable@^4.0.0: + version "4.3.4" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ioredis@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz" + integrity sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA== + dependencies: + "@ioredis/commands" "^1.1.1" + cluster-key-slot "^1.1.0" + debug "^4.3.4" + denque "^2.1.0" + lodash.defaults "^4.2.0" + lodash.isarguments "^3.1.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + +iron-webcrypto@^0.10.1: + version "0.10.1" + resolved "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-0.10.1.tgz" + integrity sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + +is-core-module@^2.13.0, is-core-module@^2.8.1: + version "2.13.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-https@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-https/-/is-https-4.0.0.tgz" + integrity sha512-FeMLiqf8E5g6SdiVJsPcNZX8k4h2fBs1wp5Bb6uaNxn58ufK1axBqQZdmAQsqh0t9BuwFObybrdVJh6MKyPlyg== + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.2, is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-primitive@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz" + integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== + +is-promise@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + +is-reference@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== + dependencies: + protocols "^2.0.1" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.19.1, jiti@^1.20.0: + version "1.20.0" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== + +joycon@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz" + integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-eslint-parser@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.3.0.tgz" + integrity sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ== + dependencies: + acorn "^8.5.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + semver "^7.3.5" + +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +knitwork@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/knitwork/-/knitwork-1.0.0.tgz" + integrity sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q== + +kolorist@^1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz" + integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== + +launch-editor@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +listhen@^1.2.2, listhen@^1.5.5: + version "1.5.5" + resolved "https://registry.npmjs.org/listhen/-/listhen-1.5.5.tgz" + integrity sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA== + dependencies: + "@parcel/watcher" "^2.3.0" + "@parcel/watcher-wasm" "2.3.0" + citty "^0.1.4" + clipboardy "^3.0.0" + consola "^3.2.3" + defu "^6.1.2" + get-port-please "^3.1.1" + h3 "^1.8.1" + http-shutdown "^1.2.2" + jiti "^1.20.0" + mlly "^1.4.2" + node-forge "^1.3.1" + pathe "^1.1.1" + std-env "^3.4.3" + ufo "^1.3.0" + untun "^0.1.2" + uqr "^0.1.2" + +local-pkg@^0.4.3: + version "0.4.3" + resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz" + integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== + +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" + integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz" + integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lru-cache@^10.0.0, lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": + version "10.0.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +magic-string-ast@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.3.0.tgz" + integrity sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA== + dependencies: + magic-string "^0.30.2" + +magic-string@^0.30.0, magic-string@^0.30.2, magic-string@^0.30.3, magic-string@^0.30.4, magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +magicast@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/magicast/-/magicast-0.3.0.tgz" + integrity sha512-ZsEzw35h7xYoFlWHIyxU6zmH4sdwzdmY0DY4s/Lie/qKimeijz2jRw8/OV2248kt/y6FbvoTvGRKyB7y/Mpx8w== + dependencies: + "@babel/parser" "^7.22.16" + "@babel/types" "^7.22.19" + source-map-js "^1.0.2" + +make-dir@^3.1.0, make-dir@~3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-fetch-happen@^11.0.3: + version "11.1.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + +make-fetch-happen@^13.0.0: + version "13.0.0" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz" + integrity sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A== + dependencies: + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" + is-lambda "^1.0.1" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + ssri "^10.0.0" + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mime@~2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@~3.0.4: + version "3.0.8" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" + integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz" + integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3: + version "7.0.4" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mlly@^1.2.0, mlly@^1.3.0, mlly@^1.4.0, mlly@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz" + integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== + dependencies: + acorn "^8.10.0" + pathe "^1.1.1" + pkg-types "^1.0.3" + ufo "^1.3.0" + +mri@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +muggle-string@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz" + integrity sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +nanoid@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz" + integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== + +napi-wasm@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/napi-wasm/-/napi-wasm-1.1.0.tgz" + integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +nitropack@^2.4.1, nitropack@^2.6.3, nitropack@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/nitropack/-/nitropack-2.7.0.tgz" + integrity sha512-U5/Uq0k4PO3/yDM1Sao6JZc/i1DhiI2Eq/AMm92idgQ6B3NbwD0A3u9SZNIHyqEyFogOgi3qsdnRo9KWc5jgVg== + dependencies: + "@cloudflare/kv-asset-handler" "^0.3.0" + "@netlify/functions" "^2.3.0" + "@rollup/plugin-alias" "^5.0.1" + "@rollup/plugin-commonjs" "^25.0.7" + "@rollup/plugin-inject" "^5.0.5" + "@rollup/plugin-json" "^6.0.1" + "@rollup/plugin-node-resolve" "^15.2.3" + "@rollup/plugin-replace" "^5.0.4" + "@rollup/plugin-terser" "^0.4.4" + "@rollup/plugin-wasm" "^6.2.2" + "@rollup/pluginutils" "^5.0.5" + "@types/http-proxy" "^1.17.13" + "@vercel/nft" "^0.24.3" + archiver "^6.0.1" + c12 "^1.5.1" + chalk "^5.3.0" + chokidar "^3.5.3" + citty "^0.1.4" + consola "^3.2.3" + cookie-es "^1.0.0" + defu "^6.1.2" + destr "^2.0.1" + dot-prop "^8.0.2" + esbuild "^0.19.5" + escape-string-regexp "^5.0.0" + etag "^1.8.1" + fs-extra "^11.1.1" + globby "^13.2.2" + gzip-size "^7.0.0" + h3 "^1.8.2" + hookable "^5.5.3" + httpxy "^0.1.5" + is-primitive "^3.0.1" + jiti "^1.20.0" + klona "^2.0.6" + knitwork "^1.0.0" + listhen "^1.5.5" + magic-string "^0.30.5" + mime "^3.0.0" + mlly "^1.4.2" + mri "^1.2.0" + node-fetch-native "^1.4.0" + ofetch "^1.3.3" + ohash "^1.1.3" + openapi-typescript "^6.7.0" + pathe "^1.1.1" + perfect-debounce "^1.0.0" + pkg-types "^1.0.3" + pretty-bytes "^6.1.1" + radix3 "^1.1.0" + rollup "^3.29.4" + rollup-plugin-visualizer "^5.9.2" + scule "^1.0.0" + semver "^7.5.4" + serve-placeholder "^2.0.1" + serve-static "^1.15.0" + std-env "^3.4.3" + ufo "^1.3.1" + uncrypto "^0.1.3" + unctx "^2.3.1" + unenv "^1.7.4" + unimport "^3.4.0" + unstorage "^1.9.0" + +node-addon-api@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz" + integrity sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA== + +node-fetch-native@^1.2.0, node-fetch-native@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.0.tgz" + integrity sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA== + +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.2.2: + version "4.6.1" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== + +node-gyp@^9.0.0: + version "9.4.0" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz" + integrity sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^11.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +normalize-package-data@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz" + integrity sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg== + dependencies: + hosted-git-info "^7.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-bundled@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz" + integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + +npm-install-checks@^6.0.0: + version "6.3.0" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@^11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz" + integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-packlist@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.0.tgz" + integrity sha512-ErAGFB5kJUciPy1mmx/C2YFbvxoJ0QJ9uwkCZOeR6CqLLISPZBOiFModAbSXnjjlwW5lOhuhXva+fURsSGJqyw== + dependencies: + ignore-walk "^6.0.0" + +npm-pick-manifest@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz" + integrity sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" + +npm-registry-fetch@^16.0.0: + version "16.1.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.1.0.tgz" + integrity sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw== + dependencies: + make-fetch-happen "^13.0.0" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^11.0.0" + proc-log "^3.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +nth-check@^2.0.1, nth-check@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nuxi@^3.9.1: + version "3.9.1" + resolved "https://registry.npmjs.org/nuxi/-/nuxi-3.9.1.tgz" + integrity sha512-4R4tcC2uQ5QCnHxyKoX5nZm/YUesCcQM3bZBKYU/8ZWrWjK6aPG6Q5zOQG1aLPkAotyahNsqtSiU/CrRoenEgA== + optionalDependencies: + fsevents "~2.3.3" + +nuxt-primevue@^0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/nuxt-primevue/-/nuxt-primevue-0.0.3.tgz" + integrity sha512-0k9i+whs+gNNua6WOc75QTfgRaG0MUP4WHX8QjUaWHFxjUzEUiuzQlbeCmiPRnf/LG2YnxsqyPzz+mNCrOa7/A== + dependencies: + "@nuxt/kit" "^3.7.3" + +nuxt@3.8.0: + version "3.8.0" + resolved "https://registry.npmjs.org/nuxt/-/nuxt-3.8.0.tgz" + integrity sha512-ZnisJYx5AcUl7xlw18m6zfINBpNhld+ZF+jdTLRZxkLjKSFZeFMGqKxOR1jNVSmxfIXM/guK0uV9GPm6HK/z7g== + dependencies: + "@nuxt/devalue" "^2.0.2" + "@nuxt/devtools" "^1.0.0" + "@nuxt/kit" "3.8.0" + "@nuxt/schema" "3.8.0" + "@nuxt/telemetry" "^2.5.2" + "@nuxt/ui-templates" "^1.3.1" + "@nuxt/vite-builder" "3.8.0" + "@unhead/dom" "^1.7.4" + "@unhead/ssr" "^1.7.4" + "@unhead/vue" "^1.7.4" + "@vue/shared" "^3.3.4" + acorn "8.10.0" + c12 "^1.5.1" + chokidar "^3.5.3" + cookie-es "^1.0.0" + defu "^6.1.2" + destr "^2.0.1" + devalue "^4.3.2" + esbuild "^0.19.5" + escape-string-regexp "^5.0.0" + estree-walker "^3.0.3" + fs-extra "^11.1.1" + globby "^13.2.2" + h3 "^1.8.2" + hookable "^5.5.3" + jiti "^1.20.0" + klona "^2.0.6" + knitwork "^1.0.0" + magic-string "^0.30.5" + mlly "^1.4.2" + nitropack "^2.7.0" + nuxi "^3.9.1" + nypm "^0.3.3" + ofetch "^1.3.3" + ohash "^1.1.3" + pathe "^1.1.1" + perfect-debounce "^1.0.0" + pkg-types "^1.0.3" + radix3 "^1.1.0" + scule "^1.0.0" + std-env "^3.4.3" + strip-literal "^1.3.0" + ufo "^1.3.1" + ultrahtml "^1.5.2" + uncrypto "^0.1.3" + unctx "^2.3.1" + unenv "^1.7.4" + unimport "^3.4.0" + unplugin "^1.5.0" + unplugin-vue-router "^0.7.0" + untyped "^1.4.0" + vue "^3.3.4" + vue-bundle-renderer "^2.0.0" + vue-devtools-stub "^0.1.0" + vue-router "^4.2.5" + +nypm@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/nypm/-/nypm-0.3.3.tgz" + integrity sha512-FHoxtTscAE723e80d2M9cJRb4YVjL82Ra+ZV+YqC6rfNZUWahi+ZhPF+krnR+bdMvibsfHCtgKXnZf5R6kmEPA== + dependencies: + citty "^0.1.4" + execa "^8.0.1" + pathe "^1.1.1" + ufo "^1.3.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +ofetch@^1.1.1, ofetch@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz" + integrity sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg== + dependencies: + destr "^2.0.1" + node-fetch-native "^1.4.0" + ufo "^1.3.0" + +ohash@^1.1.2, ohash@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz" + integrity sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== + +on-exit-leak-free@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz" + integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +open@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/open/-/open-9.1.0.tgz" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + +openapi-typescript@^6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.7.0.tgz" + integrity sha512-eoUfJwhnMEug7euZ1dATG7iRiDVsEROwdPkhLUDiaFjcClV4lzft9F0Ii0fYjULCPNIiWiFi0BqMpSxipuvAgQ== + dependencies: + ansi-colors "^4.1.3" + fast-glob "^3.3.1" + js-yaml "^4.1.0" + supports-color "^9.4.0" + undici "^5.23.0" + yargs-parser "^21.1.1" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +pacote@^17.0.4: + version "17.0.4" + resolved "https://registry.npmjs.org/pacote/-/pacote-17.0.4.tgz" + integrity sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg== + dependencies: + "@npmcli/git" "^5.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^7.0.0" + "@npmcli/run-script" "^7.0.0" + cacache "^18.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^11.0.0" + npm-packlist "^8.0.0" + npm-pick-manifest "^9.0.0" + npm-registry-fetch "^16.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^7.0.0" + read-package-json-fast "^3.0.0" + sigstore "^2.0.0" + ssri "^10.0.0" + tar "^6.1.11" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-git-config@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/parse-git-config/-/parse-git-config-3.0.0.tgz" + integrity sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA== + dependencies: + git-config-path "^2.0.0" + ini "^1.3.5" + +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== + dependencies: + protocols "^2.0.0" + +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== + dependencies: + parse-path "^7.0.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathe@^1.0.0, pathe@^1.1.0, pathe@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz" + integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== + +perfect-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz" + integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pinia@>=2.1.0, pinia@^2.1.7: + version "2.1.7" + resolved "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz" + integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ== + dependencies: + "@vue/devtools-api" "^6.5.0" + vue-demi ">=0.14.5" + +pino-abstract-transport@^1.0.0, pino-abstract-transport@v1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz" + integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + +pino-pretty@^10.0.0: + version "10.2.3" + resolved "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.2.3.tgz" + integrity sha512-4jfIUc8TC1GPUfDyMSlW1STeORqkoxec71yhxIpLDQapUu8WOuoz2TTCoidrIssyz78LZC69whBMPIKCMbi3cw== + dependencies: + colorette "^2.0.7" + dateformat "^4.6.3" + fast-copy "^3.0.0" + fast-safe-stringify "^2.1.1" + help-me "^4.0.1" + joycon "^3.1.1" + minimist "^1.2.6" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.0.0" + pump "^3.0.0" + readable-stream "^4.0.0" + secure-json-parse "^2.4.0" + sonic-boom "^3.0.0" + strip-json-comments "^3.1.1" + +pino-std-serializers@^6.0.0: + version "6.2.2" + resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz" + integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== + +pino@^8.8.0: + version "8.16.1" + resolved "https://registry.npmjs.org/pino/-/pino-8.16.1.tgz" + integrity sha512-3bKsVhBmgPjGV9pyn4fO/8RtoVDR8ssW1ev819FsRXlRNgW8gR/9Kx+gCK4UPWd4JjrRDLWpzd/pb1AyWm3MGA== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport v1.1.0 + pino-std-serializers "^6.0.0" + process-warning "^2.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^3.7.0" + thread-stream "^2.0.0" + +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + +postcss-calc@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + dependencies: + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + +postcss-colormin@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz" + integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz" + integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz" + integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== + +postcss-discard-duplicates@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz" + integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== + +postcss-discard-empty@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz" + integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== + +postcss-discard-overridden@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz" + integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== + +postcss-import-resolver@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-import-resolver/-/postcss-import-resolver-2.0.0.tgz" + integrity sha512-y001XYgGvVwgxyxw9J1a5kqM/vtmIQGzx34g0A0Oy44MFcy/ZboZw1hu/iN3VYFjSTRzbvd7zZJJz0Kh0AGkTw== + dependencies: + enhanced-resolve "^4.1.1" + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-merge-longhand@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz" + integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^6.0.0" + +postcss-merge-rules@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz" + integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^4.0.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz" + integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz" + integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== + dependencies: + colord "^2.9.1" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz" + integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz" + integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-normalize-charset@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz" + integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== + +postcss-normalize-display-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz" + integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz" + integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz" + integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz" + integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz" + integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz" + integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz" + integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz" + integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz" + integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== + dependencies: + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz" + integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz" + integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: + version "6.0.13" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz" + integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^3.0.2" + +postcss-unique-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz" + integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-url@^10.1.3: + version "10.1.3" + resolved "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz" + integrity sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw== + dependencies: + make-dir "~3.1.0" + mime "~2.5.2" + minimatch "~3.0.4" + xxhashjs "~0.2.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.27, postcss@^8.4.31: + version "8.4.31" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.8.8: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-bytes@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz" + integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== + +primeflex@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/primeflex/-/primeflex-3.3.1.tgz" + integrity sha512-zaOq3YvcOYytbAmKv3zYc+0VNS9Wg5d37dfxZnveKBFPr7vEIwfV5ydrpiouTft8MVW6qNjfkaQphHSnvgQbpQ== + +primeicons@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz" + integrity sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA== + +primevue@^3.37.0: + version "3.42.0" + resolved "https://registry.npmjs.org/primevue/-/primevue-3.42.0.tgz" + integrity sha512-vY/nHBInl/k2MFfgx+5dGI3tH1P6OmO2Oj6eOLwtHk000yopPxLBUP/enALoElriy5EaPzfv02upOrsQqd+nJA== + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process-warning@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz" + integrity sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue-tick@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz" + integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== + +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +radix3@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz" + integrity sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +rc9@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/rc9/-/rc9-2.1.1.tgz" + integrity sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q== + dependencies: + defu "^6.1.2" + destr "^2.0.0" + flat "^5.0.2" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +read-package-json-fast@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +read-package-json@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz" + integrity sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg== + dependencies: + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + npm-normalize-package-bin "^3.0.0" + +readable-stream@^2.0.1, readable-stream@^2.0.5: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^4.0.0: + version "4.4.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz" + integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + +readdir-glob@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz" + integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== + dependencies: + minimatch "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +real-require@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz" + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz" + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== + dependencies: + redis-errors "^1.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.1.7, resolve@^1.22.1: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-visualizer@^5.9.2: + version "5.9.2" + resolved "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz" + integrity sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A== + dependencies: + open "^8.4.0" + picomatch "^2.3.1" + source-map "^0.7.4" + yargs "^17.5.1" + +rollup@^3.27.1, rollup@^3.29.4: + version "3.29.4" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.57.1: + version "1.69.4" + resolved "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz" + integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +scule@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/scule/-/scule-1.0.0.tgz" + integrity sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ== + +secure-json-parse@^2.4.0: + version "2.7.0" + resolved "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz" + integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== + +semver@^6.0.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.5.0, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-placeholder@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.1.tgz" + integrity sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ== + dependencies: + defu "^6.0.0" + +serve-static@^1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sigstore@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/sigstore/-/sigstore-2.1.0.tgz" + integrity sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw== + dependencies: + "@sigstore/bundle" "^2.1.0" + "@sigstore/protobuf-specs" "^0.2.1" + "@sigstore/sign" "^2.1.0" + "@sigstore/tuf" "^2.1.0" + +simple-git@^3.20.0: + version "3.20.0" + resolved "https://registry.npmjs.org/simple-git/-/simple-git-3.20.0.tgz" + integrity sha512-ozK8tl2hvLts8ijTs18iFruE+RoqmC/mqZhjs/+V7gS5W68JpJ3+FCTmLVqmR59MaUQ52MfGQuWsIqfsTbbJ0Q== + dependencies: + "@kwsites/file-exists" "^1.1.1" + "@kwsites/promise-deferred" "^1.1.1" + debug "^4.3.4" + +sirv@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz" + integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA== + dependencies: + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^3.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +smob@^1.0.0: + version "1.4.1" + resolved "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz" + integrity sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ== + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks-proxy-agent@^8.0.1: + version "8.0.2" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz" + integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.6.2, socks@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +sonic-boom@^3.0.0, sonic-boom@^3.7.0: + version "3.7.0" + resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz" + integrity sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg== + dependencies: + atomic-sleep "^1.0.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.16" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +ssri@^10.0.0: + version "10.0.5" + resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz" + integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== + dependencies: + minipass "^7.0.3" + +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +std-env@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz" + integrity sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q== + +streamx@^2.15.0: + version "2.15.1" + resolved "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz" + integrity sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA== + dependencies: + fast-fifo "^1.1.0" + queue-tick "^1.0.1" + +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1, string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-literal@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz" + integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg== + dependencies: + acorn "^8.10.0" + +stylehacks@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz" + integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^9.4.0: + version "9.4.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz" + integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz" + integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== + +svgo@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" + integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + csso "^5.0.5" + picocolors "^1.0.0" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar-stream@^3.0.0: + version "3.1.6" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz" + integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== + dependencies: + b4a "^1.6.4" + fast-fifo "^1.2.0" + streamx "^2.15.0" + +tar@^6.1.11, tar@^6.1.2, tar@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +terser@^5.17.4: + version "5.22.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz" + integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thread-stream@^2.0.0: + version "2.4.1" + resolved "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz" + integrity sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg== + dependencies: + real-require "^0.2.0" + +tiny-invariant@^1.1.0: + version "1.3.1" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tuf-js@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-2.1.0.tgz" + integrity sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA== + dependencies: + "@tufjs/models" "2.0.0" + debug "^4.3.4" + make-fetch-happen "^13.0.0" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^3.8.0: + version "3.13.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + +typescript@^4.9.3: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@~5.1.6: + version "5.1.6" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz" + integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== + +ufo@^1.1.2, ufo@^1.2.0, ufo@^1.3.0, ufo@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz" + integrity sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw== + +ultrahtml@^1.5.2: + version "1.5.2" + resolved "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.2.tgz" + integrity sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw== + +uncrypto@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz" + integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + +unctx@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/unctx/-/unctx-2.3.1.tgz" + integrity sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A== + dependencies: + acorn "^8.8.2" + estree-walker "^3.0.3" + magic-string "^0.30.0" + unplugin "^1.3.1" + +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + +undici@^5.23.0: + version "5.26.5" + resolved "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz" + integrity sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw== + dependencies: + "@fastify/busboy" "^2.0.0" + +unenv@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/unenv/-/unenv-1.7.4.tgz" + integrity sha512-fjYsXYi30It0YCQYqLOcT6fHfMXsBr2hw9XC7ycf8rTG7Xxpe3ZssiqUnD0khrjiZEmkBXWLwm42yCSCH46fMw== + dependencies: + consola "^3.2.3" + defu "^6.1.2" + mime "^3.0.0" + node-fetch-native "^1.4.0" + pathe "^1.1.1" + +unhead@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/unhead/-/unhead-1.7.4.tgz" + integrity sha512-oOv+9aQS85DQUd0f1uJBtb2uG3SKwCURSTuUWp9WKKzANCb1TjW2dWp5TFmJH5ILF6urXi4uUQfjK+SawzBJAA== + dependencies: + "@unhead/dom" "1.7.4" + "@unhead/schema" "1.7.4" + "@unhead/shared" "1.7.4" + hookable "^5.5.3" + +unimport@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/unimport/-/unimport-3.4.0.tgz" + integrity sha512-M/lfFEgufIT156QAr/jWHLUn55kEmxBBiQsMxvRSIbquwmeJEyQYgshHDEvQDWlSJrVOOTAgnJ3FvlsrpGkanA== + dependencies: + "@rollup/pluginutils" "^5.0.4" + escape-string-regexp "^5.0.0" + fast-glob "^3.3.1" + local-pkg "^0.4.3" + magic-string "^0.30.3" + mlly "^1.4.2" + pathe "^1.1.1" + pkg-types "^1.0.3" + scule "^1.0.0" + strip-literal "^1.3.0" + unplugin "^1.5.0" + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unplugin-vue-router@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.7.0.tgz" + integrity sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw== + dependencies: + "@babel/types" "^7.22.19" + "@rollup/pluginutils" "^5.0.4" + "@vue-macros/common" "^1.8.0" + ast-walker-scope "^0.5.0" + chokidar "^3.5.3" + fast-glob "^3.3.1" + json5 "^2.2.3" + local-pkg "^0.4.3" + mlly "^1.4.2" + pathe "^1.1.1" + scule "^1.0.0" + unplugin "^1.5.0" + yaml "^2.3.2" + +unplugin@^1.1.0, unplugin@^1.3.1, unplugin@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz" + integrity sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A== + dependencies: + acorn "^8.10.0" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.5.0" + +unstorage@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/unstorage/-/unstorage-1.9.0.tgz" + integrity sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ== + dependencies: + anymatch "^3.1.3" + chokidar "^3.5.3" + destr "^2.0.1" + h3 "^1.7.1" + ioredis "^5.3.2" + listhen "^1.2.2" + lru-cache "^10.0.0" + mri "^1.2.0" + node-fetch-native "^1.2.0" + ofetch "^1.1.1" + ufo "^1.2.0" + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +untun@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/untun/-/untun-0.1.2.tgz" + integrity sha512-wLAMWvxfqyTiBODA1lg3IXHQtjggYLeTK7RnSfqtOXixWJ3bAa2kK/HHmOOg19upteqO3muLvN6O/icbyQY33Q== + dependencies: + citty "^0.1.3" + consola "^3.2.3" + pathe "^1.1.1" + +untyped@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/untyped/-/untyped-1.4.0.tgz" + integrity sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q== + dependencies: + "@babel/core" "^7.22.9" + "@babel/standalone" "^7.22.9" + "@babel/types" "^7.22.5" + defu "^6.1.2" + jiti "^1.19.1" + mri "^1.2.0" + scule "^1.0.0" + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uqr@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz" + integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urlpattern-polyfill@8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz" + integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== + dependencies: + builtins "^5.0.0" + +vite-node@^0.33.0: + version "0.33.0" + resolved "https://registry.npmjs.org/vite-node/-/vite-node-0.33.0.tgz" + integrity sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw== + dependencies: + cac "^6.7.14" + debug "^4.3.4" + mlly "^1.4.0" + pathe "^1.1.1" + picocolors "^1.0.0" + vite "^3.0.0 || ^4.0.0" + +vite-plugin-checker@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.2.tgz" + integrity sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ== + dependencies: + "@babel/code-frame" "^7.12.13" + ansi-escapes "^4.3.0" + chalk "^4.1.1" + chokidar "^3.5.1" + commander "^8.0.0" + fast-glob "^3.2.7" + fs-extra "^11.1.0" + lodash.debounce "^4.0.8" + lodash.pick "^4.4.0" + npm-run-path "^4.0.1" + semver "^7.5.0" + strip-ansi "^6.0.0" + tiny-invariant "^1.1.0" + vscode-languageclient "^7.0.0" + vscode-languageserver "^7.0.0" + vscode-languageserver-textdocument "^1.0.1" + vscode-uri "^3.0.2" + +vite-plugin-inspect@^0.7.40: + version "0.7.40" + resolved "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.7.40.tgz" + integrity sha512-tsfva6MCg0ch6ckReWHvJ/9xf/zjTuJvakONf2qcMBB/iu9JqiRixfxMa/yLGrlNaBe6fUZHOVhtN2Me3Kthow== + dependencies: + "@antfu/utils" "^0.7.6" + "@rollup/pluginutils" "^5.0.4" + debug "^4.3.4" + error-stack-parser-es "^0.1.1" + fs-extra "^11.1.1" + open "^9.1.0" + picocolors "^1.0.0" + sirv "^2.0.3" + +vite-plugin-vue-inspector@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-4.0.0.tgz" + integrity sha512-xNjMbRj3YrebuuInTvlC8ghPtzT+3LjMIQPeeR/5CaFd+WcbA9wBnECZmlcP3GITCVED0SxGmTyoJ3iVKsK4vQ== + dependencies: + "@babel/core" "^7.23.0" + "@babel/plugin-proposal-decorators" "^7.23.0" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.22.15" + "@vue/babel-plugin-jsx" "^1.1.5" + "@vue/compiler-dom" "^3.3.4" + kolorist "^1.8.0" + magic-string "^0.30.4" + +vite-svg-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-4.0.0.tgz" + integrity sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA== + dependencies: + "@vue/compiler-sfc" "^3.2.20" + svgo "^3.0.2" + +"vite@^3.0.0 || ^4.0.0", vite@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz" + integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" + +vscode-jsonrpc@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz" + integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg== + +vscode-languageclient@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz" + integrity sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg== + dependencies: + minimatch "^3.0.4" + semver "^7.3.4" + vscode-languageserver-protocol "3.16.0" + +vscode-languageserver-protocol@3.16.0: + version "3.16.0" + resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz" + integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A== + dependencies: + vscode-jsonrpc "6.0.0" + vscode-languageserver-types "3.16.0" + +vscode-languageserver-textdocument@^1.0.1: + version "1.0.11" + resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz" + integrity sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA== + +vscode-languageserver-types@3.16.0: + version "3.16.0" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz" + integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== + +vscode-languageserver@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz" + integrity sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw== + dependencies: + vscode-languageserver-protocol "3.16.0" + +vscode-uri@^3.0.2: + version "3.0.8" + resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz" + integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== + +vue-bundle-renderer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-2.0.0.tgz" + integrity sha512-oYATTQyh8XVkUWe2kaKxhxKVuuzK2Qcehe+yr3bGiaQAhK3ry2kYE4FWOfL+KO3hVFwCdLmzDQTzYhTi9C+R2A== + dependencies: + ufo "^1.2.0" + +vue-demi@>=0.14.5, vue-demi@^0.14.5: + version "0.14.6" + resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz" + integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== + +vue-demi@^0.13.5: + version "0.13.11" + resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz" + integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== + +vue-devtools-stub@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz" + integrity sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ== + +vue-eslint-parser@^9.3.1: + version "9.3.2" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz" + integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== + dependencies: + debug "^4.3.4" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.6" + +vue-i18n-routing@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/vue-i18n-routing/-/vue-i18n-routing-1.1.2.tgz" + integrity sha512-3PY32vT9DT7RXfhiZkFIvn6AIJE+z3cy0Uzgliue+0lTJHadc+sm5T4WoGEaO/pit32IYODvCiuA4B8XNsf4vA== + dependencies: + "@intlify/shared" "^9.4.1" + "@intlify/vue-i18n-bridge" "^1.0.1" + "@intlify/vue-router-bridge" "^1.0.1" + ufo "^1.2.0" + vue-demi "^0.14.5" + +vue-i18n@9.5.0: + version "9.5.0" + resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.5.0.tgz" + integrity sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg== + dependencies: + "@intlify/core-base" "9.5.0" + "@intlify/shared" "9.5.0" + "@vue/devtools-api" "^6.5.0" + +vue-router@^4.2.5: + version "4.2.5" + resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz" + integrity sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw== + dependencies: + "@vue/devtools-api" "^6.5.0" + +vue-template-compiler@^2.7.14: + version "2.7.15" + resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz" + integrity sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og== + dependencies: + de-indent "^1.0.2" + he "^1.2.0" + +vue-tsc@^1.6.5: + version "1.8.20" + resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.20.tgz" + integrity sha512-bIADlyxJl+1ZWQQHAi47NZoi2iTiw/lBwQLL98wXROcQlUuGVtyroAIiqvto9pJotcyhtU0JbGvsHN6JN0fYfg== + dependencies: + "@vue/language-core" "1.8.20" + "@vue/typescript" "1.8.20" + semver "^7.5.4" + +vue@^3.3.4, vue@^3.3.6: + version "3.3.6" + resolved "https://registry.npmjs.org/vue/-/vue-3.3.6.tgz" + integrity sha512-jJIDETeWJnoY+gfn4ZtMPMS5KtbP4ax+CT4dcQFhTnWEk8xMupFyQ0JxL28nvT/M4+p4a0ptxaV2WY0LiIxvRg== + dependencies: + "@vue/compiler-dom" "3.3.6" + "@vue/compiler-sfc" "3.3.6" + "@vue/runtime-dom" "3.3.6" + "@vue/server-renderer" "3.3.6" + "@vue/shared" "3.3.6" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz" + integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/which/-/which-3.0.1.tgz" + integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== + dependencies: + isexe "^2.0.0" + +which@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/which/-/which-4.0.0.tgz" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + +wide-align@^1.1.2, wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.14.2: + version "8.14.2" + resolved "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xxhashjs@~0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-eslint-parser@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz" + integrity sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg== + dependencies: + eslint-visitor-keys "^3.0.0" + lodash "^4.17.21" + yaml "^2.0.0" + +yaml@^2.0.0, yaml@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz" + integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.5.1: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + 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.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zhead@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/zhead/-/zhead-2.2.0.tgz" + integrity sha512-NzynJDdbRD5CIMZEoWd6esLlUwm4PzjbHVEu7qpLNpi32DY0wd1a83XZP86hkW8HPqjjaYBuMfapx1iahMF46g== + +zip-stream@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz" + integrity sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA== + dependencies: + archiver-utils "^4.0.1" + compress-commons "^5.0.1" + readable-stream "^3.6.0" diff --git a/apps/ssoidp/idpUser.php b/apps/ssoidp/idpUser.php new file mode 100644 index 00000000..24945292 --- /dev/null +++ b/apps/ssoidp/idpUser.php @@ -0,0 +1,23 @@ + array( + 'core:AdminPassword', + ), + + 'example-userpass' => array( + 'exampleauth:UserPass', + 'user1:user1pass' => array( + 'uid' => array('1'), + 'eduPersonAffiliation' => array('group1'), + 'email' => 'user1@example.com', + ), + 'user2:user2pass' => array( + 'uid' => array('2'), + 'eduPersonAffiliation' => array('group2'), + 'email' => 'admin@tcm.com', + ), + ), + +); diff --git a/deployments/README.md b/deployments/README.md deleted file mode 100644 index 5b9651d1..00000000 --- a/deployments/README.md +++ /dev/null @@ -1 +0,0 @@ -> Put here your deployments' guidelines. \ No newline at end of file diff --git a/deployments/kubernetes/README.md b/deployments/kubernetes/README.md new file mode 100644 index 00000000..7ecce739 --- /dev/null +++ b/deployments/kubernetes/README.md @@ -0,0 +1,31 @@ +# Deploy with kubernetes + +To deploy this project onto kubenetes, follow theses instructions. + +## include `gitlab-ci/deploy-k8s.gitlab-ci.yml` + +In the root file `/gitlab-ci.yml` unsure you have this part : +```yaml +include: + - local: gitlab-ci/deploy-k8s.gitlab-ci.yml +``` + +## Assign secrets variables to your gilab-ci + +1. Assign `KUBE_CONFIG` with the kube config file of your remote cluster (assign with good rights managements) +2. Assign `KUBERNETES_PASSWORD_SECRET` with a strong password (it's will be used for all secrets related to your deployment : APP_SECRET, MYSQL_PASSWORD, htpasswd, etc) + +Tips: Protects theses secrets to be available only for protected branches (if it relevant in your workflow) + +## Assign publics variables to your local gilab-ci + +Edit `gitlab-ci/deploy-k8s.gitlab-ci.yml` and adjust the variables : +1. Assign `KUBERNETES_URL_SUFFIX` to the suffix of the url +2. + +## Adjust rules + +Edit `gitlab-ci/deploy-k8s.gitlab-ci.yml` and adjust the rules : +```yaml + +``` \ No newline at end of file diff --git a/deployments/kubernetes/deployment.yaml b/deployments/kubernetes/deployment.yaml new file mode 100644 index 00000000..ea9b70f2 --- /dev/null +++ b/deployments/kubernetes/deployment.yaml @@ -0,0 +1,240 @@ +--- +apiVersion: "networking.k8s.io/v1" +kind: Ingress +metadata: + name: ingress + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + kubernetes.io/ingress.global-static-ip-name: web-static-ip + nginx.ingress.kubernetes.io/proxy-body-size: 1024m + nginx.ingress.kubernetes.io/force-ssl-redirect: "false" + nginx.ingress.kubernetes.io/ssl-redirect: "false" +spec: + tls: + - hosts: + - #ENVIRONMENT#.#URL_SUFFIX# + - api.#ENVIRONMENT#.#URL_SUFFIX# + - phpmyadmin.#ENVIRONMENT#.#URL_SUFFIX# + secretName: tls-certificate + rules: + - host: #ENVIRONMENT#.#URL_SUFFIX# + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: front + port: + number: 3000 + - host: api.#ENVIRONMENT#.#URL_SUFFIX# + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: back + port: + number: 80 + - host: phpmyadmin.#ENVIRONMENT#.#URL_SUFFIX# + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: phpmyadmin + port: + number: 80 +--- +apiVersion: "apps/v1" +kind: "Deployment" +metadata: + name: "mariadb" + labels: + app: "mariadb" +spec: + replicas: 1 + selector: + matchLabels: + app: "mariadb" + template: + metadata: + labels: + app: "mariadb" + spec: + containers: + - name: "mariadb" + image: "mariadb:10.11" + imagePullPolicy: Always + envFrom: + - secretRef: + name: mariadb-secrets + optional: false + args: + - --ignore-db-dir=lost+found + - --max_allowed_packet=1024M +--- +apiVersion: v1 +kind: Service +metadata: + name: "mariadb" +spec: + selector: + app: "mariadb" + ports: + - name: mariadb + port: 3306 + targetPort: 3306 +--- +apiVersion: v1 +stringData: + MYSQL_ROOT_PASSWORD: "#PASSWORD_SECRET#" + MYSQL_DATABASE: "api" + MYSQL_USER: "user" + MYSQL_PASSWORD: "#PASSWORD_SECRET#" +kind: Secret +metadata: + name: mariadb-secrets +type: Opaque +--- +apiVersion: "apps/v1" +kind: "Deployment" +metadata: + name: "phpmyadmin" + labels: + app: "phpmyadmin" +spec: + replicas: 1 + selector: + matchLabels: + app: "phpmyadmin" + template: + metadata: + labels: + app: "phpmyadmin" + spec: + containers: + - name: "phpmyadmin" + image: "phpmyadmin/phpmyadmin:4.8" + env: + - name: PMA_HOST + value: mariadb +--- +apiVersion: v1 +kind: Service +metadata: + name: "phpmyadmin" +spec: + selector: + app: "phpmyadmin" + ports: + - name: http + port: 80 + targetPort: 80 + type: ClusterIP +--- +apiVersion: "apps/v1" +kind: "Deployment" +metadata: + name: "back" + labels: + app: "back" +spec: + replicas: 1 + selector: + matchLabels: + app: "back" + template: + metadata: + labels: + app: "back" + spec: + initContainers: + - name: "fixture" + image: "#CI_REGISTRY_IMAGE#/back:#ENVIRONMENT#" + imagePullPolicy: Always + command: ["/bin/bash", "-c", "composer install && bin/console d:s:u --force -n && bin/console d:f:l -n"] + envFrom: + - secretRef: + name: back-secrets + optional: false + env: + - name: APP_ENV + value: "dev" + containers: + - name: "back" + image: "#CI_REGISTRY_IMAGE#/back:#ENVIRONMENT#" + imagePullPolicy: Always + envFrom: + - secretRef: + name: back-secrets + optional: false + env: + - name: APP_ENV + value: "prod" + - name: APP_URL + value: "https://#ENVIRONMENT#.#URL_SUFFIX#" + imagePullSecrets: + - name: "tcmregistry" +--- +apiVersion: v1 +kind: Service +metadata: + name: "back" +spec: + selector: + app: "back" + ports: + - name: http + port: 80 + targetPort: 80 + type: ClusterIP +--- +apiVersion: v1 +stringData: + DATABASE_URL: "mysql://user:#PASSWORD_SECRET#@mariadb:3306/api?serverVersion=mariadb-10.11.3" +kind: Secret +metadata: + name: back-secrets +type: Opaque +--- +apiVersion: "apps/v1" +kind: "Deployment" +metadata: + name: "front" + labels: + app: "front" +spec: + replicas: 1 + selector: + matchLabels: + app: "front" + template: + metadata: + labels: + app: "front" + spec: + containers: + - name: "front" + image: "#CI_REGISTRY_IMAGE#/front:#ENVIRONMENT#" + imagePullPolicy: Always + env: + - name: NUXT_API_URL + value: "https://api.#ENVIRONMENT#.#URL_SUFFIX#" + imagePullSecrets: + - name: "tcmregistry" +--- +apiVersion: v1 +kind: Service +metadata: + name: "front" +spec: + selector: + app: "front" + ports: + - name: http + port: 3000 + targetPort: 3000 + type: ClusterIP diff --git a/docker-compose.override.yml.template b/docker-compose.override.yml.template new file mode 100644 index 00000000..78057e46 --- /dev/null +++ b/docker-compose.override.yml.template @@ -0,0 +1,96 @@ +#version: "3" +services: + back: + build: + context: ./apps/back/ + target: dev + volumes: + - ./apps/back:/var/www/html/:delegated + + + front: + build: + context: ./apps/front/ + #target: stable + target: dev + environment: + NODE_ENV: development + # NODE_ENV: production + ports: + - "24678:24678" + volumes: + - ./apps/front/:/home/node/app + command: + - /bin/sh + - -c + - | + yarn install && yarn dev -- -o + + initback: + extends: + service: back + file: docker-compose.yml + restart: "no" + volumes: + - ./apps/back:/var/www/html/:delegated + command: + - /bin/sh + - -c + - | + composer install + composer run console -- doctrine:migrations:migrate -n + composer run console -- app:storage:init-buckets + + phpmyadmin: + image: phpmyadmin + ports: + - 8086:80 + labels: + - traefik.enable=true + - traefik.http.routers.phpmyadmin_router.rule=${PHPMYADMIN_ROUTER_RULE} + - traefik.http.routers.phpmyadmin_router.service=phpmyadmin_service + - traefik.http.services.phpmyadmin_service.loadbalancer.server.port=80 + environment: + PMA_HOSTS: "mysql, mysql_tests" + UPLOAD_LIMIT: "100M" + + mysql: + volumes: + - ./apps/back/dump/dump.sql:/docker-entrypoint-initdb.d/001-dump.sql + + mysql_tests: + extends: + service: mysql + file: docker-compose.yml + tmpfs: + - /var/lib/mysql + + samltest: + image: kristophjunge/test-saml-idp + labels: + - traefik.enable=true + - traefik.http.routers.samltest.rule=Host(`samltest.$BASE_DOMAIN`) + - traefik.http.routers.samltest.service=samltest + - traefik.http.services.samltest.loadbalancer.server.port=8080 + environment: + - SIMPLESAMLPHP_SP_ENTITY_ID=http://$BASE_DOMAIN + - SIMPLESAMLPHP_SP_ASSERTION_CONSUMER_SERVICE=http://$BASE_DOMAIN/api/1.0/auth/sso/saml2/login + - SIMPLESAMLPHP_SP_SINGLE_LOGOUT_SERVICE=http://$API_DOMAIN/api/1.0/auth/sso/saml2/logout + volumes: + - ./apps/ssoidp/idpUser.php:/var/www/simplesamlphp/config/authsources.php + + mail: + image: mailhog/mailhog + restart: on-failure + labels: + - traefik.enable=true + - traefik.http.routers.mail.rule=Host(`mail.$BASE_DOMAIN`) + - traefik.http.routers.mail.service=mail + - traefik.http.services.mail.loadbalancer.server.port=8025 + +networks: + # This could be very usefull to run multiple project on the same machine + tcm_network: + name: tcm_network + default: + name: tcm_network \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 7dacd333..85af19d9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,204 +1,103 @@ -# This Docker Compose file should only be used for your development environment! -version: '3.4' - +#version: "3" services: - traefik: - image: traefik:2.4 - command: - - --providers.docker - - --providers.docker.exposedByDefault=false - - --api.dashboard=true - - --api.insecure=true - labels: - - traefik.enable=true - - traefik.http.routers.traefik_dashboard_router.rule=Host(`traefik.${DOMAIN}`) - - traefik.http.routers.traefik_dashboard_router.service=traefik_dashboard_service - - traefik.http.services.traefik_dashboard_service.loadbalancer.server.port=8080 - ports: - - "80:80" - volumes: - - /var/run/docker.sock:/var/run/docker.sock - networks: - default: - aliases: - # Required so that the web application is able to call the same endpoint - # from both the browser and the server. - - "$API_SUBDOMAIN.$DOMAIN" - - webapp: - image: thecodingmachine/nodejs:14 - labels: - - traefik.enable=true - - traefik.http.routers.webapp_router.rule=Host(`${DOMAIN}`) - - traefik.http.routers.webapp_router.service=webapp_service - - traefik.http.services.webapp_service.loadbalancer.server.port=3000 - expose: - - "3000" - command: yarn dev - environment: - # Docker image. - # --------------------- - STARTUP_COMMAND_1: "yarn" - # Nuxt.js dev. - # --------------------- - # Either Vagrant or Docker requires the usage of polling, otherwise Nuxt.js does not recompile our code - # as fast as we would like. - CHOKIDAR_USEPOLLING: "1" - CHOKIDAR_INTERVAL: "3000" # Lower values might increase CPU usage. - # Host 0.0.0.0 is designated to tell Nuxt.js to resolve a host address, which is accessible to connections outside - # of the host machine. - HOST: "0.0.0.0" - # Nuxt.js - # --------------------- - APP_NAME: "${APP_NAME}" - # API. - API_URL: "http://${API_SUBDOMAIN}.${DOMAIN}/" - # GraphQL. - GRAPHQL_URL: "http://${API_SUBDOMAIN}.${DOMAIN}/graphql" - # Public storage. - # Access to these files is done via URLs created using: - # "PUBLIC_STORAGE_URL" + folder + "/" + filename. - PUBLIC_STORAGE_URL: "http://${STORAGE_SUBDOMAIN}.${DOMAIN}/public/" - # i18n. - DEFAULT_LOCALE: "${DEFAULT_LOCALE}" - # LogRocket. - # LOGROCKET_ID - # LOGROCKET_DEV_MODE_ALLOWED - volumes: - - ./src/webapp:/usr/src/app - - api: - image: thecodingmachine/php:8.0-v4-apache + back: + image: ${BACK_IMAGE_NAME}:${DEPLOYMENT_TAG} + restart: on-failure labels: - traefik.enable=true - - traefik.http.routers.api_router.rule=Host(`${API_SUBDOMAIN}.${DOMAIN}`) + - traefik.http.routers.back_router.rule=${BACK_ROUTER_RULE} + - traefik.http.routers.back_router.service=back_service + - traefik.http.services.back_service.loadbalancer.server.port=80 environment: - # Docker image. - # --------------------- - APACHE_DOCUMENT_ROOT: "public/" - PHP_EXTENSION_XDEBUG: "1" - PHP_EXTENSION_REDIS: "1" - PHP_EXTENSION_INTL: "1" - PHP_EXTENSION_GD: "1" - PHP_INI_MEMORY_LIMIT: "1G" - STARTUP_COMMAND_1: "composer install" - STARTUP_COMMAND_2: "php bin/console doctrine:migrations:migrate -n --allow-no-migration" #FIXME: if no flag --allow-no-migration, the command fails. Why? - STARTUP_COMMAND_3: "php bin/console app:init-storage:s3" - # Symfony. - # --------------------- - APP_NAME: "${APP_NAME}" - APP_ENV: "dev" - APP_DEBUG: "1" - # Note: in your remote environments, make sure you do not change - # the value of APP_SECRET between deployments. Otherwise, password - # verification will not work anymore. - APP_SECRET: "${APP_SECRET}" - COOKIE_DOMAIN: ".${DOMAIN}" # The "." is important here; it tells that the cookie is available for $DOMAIN and its subdomains. - # CORS. - CORS_ALLOW_ORIGIN: "http://${DOMAIN}" # Never use "*": https://stackoverflow.com/questions/52060784/graphql-and-csrf-protection. - # Logging. - MONOLOG_LOGGING_PATH: "php://stderr" - # Database. - DATABASE_URL: "mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql:3306/${MYSQL_DATABASE}?server_version=8.0" - TESTS_DATABASE_URL: "mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql_tests:3306/${MYSQL_DATABASE}?server_version=8.0" - # Messenger. - MESSENGER_TRANSPORT_DSN: "redis://${REDIS_PASSWORD}@redis:6379/messages" - # Storage. - # Note: in other environments, the following values/variables might differ according - # to your storage sources (see src/api/config/packages/flysystem.yaml). - STORAGE_PUBLIC_SOURCE: "public.storage.s3" - STORAGE_PRIVATE_SOURCE: "private.storage.s3" - STORAGE_ENDPOINT: "http://minio:9000" - STORAGE_PUBLIC_BUCKET: "${STORAGE_PUBLIC_BUCKET}" - STORAGE_PRIVATE_BUCKET: "${STORAGE_PRIVATE_BUCKET}" - STORAGE_ACCESS_KEY: "${STORAGE_ACCESS_KEY}" - STORAGE_SECRET_KEY: "${STORAGE_SECRET_KEY}" - # i18n. - DEFAULT_LOCALE: "${DEFAULT_LOCALE}" - # Mailer. - MAILER_DSN: "smtp://null:null@mailhog:1025" - MAIL_FROM_ADDRESS: "no-reply@${DOMAIN}" - MAIL_FROM_NAME: "$APP_NAME" - MAIL_WEBAPP_URL: "http://${DOMAIN}/" - MAIL_WEBAPP_UPDATE_PASSWORD_ROUTE_FORMAT: "%s/update-password/%s/%s" # {locale}/update-password/{resetPasswordTokenId}/{plainToken} - # Debug - XDEBUG_MODE: ${XDEBUG_MODE:-debug} - volumes: - - ./src/api:/var/www/html - depends_on: - - mysql + DATABASE_URL: "mysql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@mysql:3306/${DATABASE_NAME}?serverVersion=11.1.2-MariaDB" + TESTS_DATABASE_URL: "mysql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@mysql_tests:3306/${DATABASE_NAME}?serverVersion=11.1.2-MariaDB" + APP_SSO_SERVICEPROVIDER_X509CERT: ${APP_SSO_SERVICEPROVIDER_X509CERT} + APP_SSO_SERVICEPROVIDER_PRIVATEKEY: ${APP_SSO_SERVICEPROVIDER_PRIVATEKEY} + APP_SSO_IDENTITYPROVIDER_X509CERT: ${APP_SSO_IDENTITYPROVIDER_X509CERT} + APP_SSO_IDENTITYPROVIDER_ENTITYID: ${APP_SSO_IDENTITYPROVIDER_ENTITYID} + APP_SSO_IDENTITYPROVIDER_LOGINURL: ${APP_SSO_IDENTITYPROVIDER_LOGINURL} + APP_SSO_IDENTITYPROVIDER_LOGOUTURL: ${APP_SSO_IDENTITYPROVIDER_LOGOUTURL} + APP_URL: ${PROTOCOL}://${BASE_DOMAIN} + API_PREFIX: ${API_PREFIX} + MAILER_DSN: ${MAILER_DSN} + MAIL_HOST: ${MAIL_HOST} + APP_SECRET: "secretforapp" + STORAGE_S3_ENDPOINT: ${STORAGE_S3_ENDPOINT} + STORAGE_S3_KEY: ${STORAGE_S3_KEY} + STORAGE_S3_SECRET: ${STORAGE_S3_SECRET} + STORAGE_PUBLIC_SOURCE: ${STORAGE_PUBLIC_SOURCE} + STORAGE_PRIVATE_SOURCE: ${STORAGE_PRIVATE_SOURCE} + STORAGE_PUBLIC_BUCKET_NAME: ${STORAGE_PUBLIC_BUCKET_NAME} + STORAGE_PRIVATE_BUCKET_NAME: ${STORAGE_PRIVATE_BUCKET_NAME} + # APP_URL_WEBAPP: "${PROTOCOL}://${DOMAIN}" - # For business data and user sessions. mysql: - image: mysql:8.0 - command: --default-authentication-plugin=mysql_native_password + image: 'mariadb:11.1' + restart: on-failure environment: - MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" - MYSQL_DATABASE: "${MYSQL_DATABASE}" - MYSQL_USER: "${MYSQL_USER}" - MYSQL_PASSWORD: "${MYSQL_PASSWORD}" + MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD} + MYSQL_DATABASE: ${DATABASE_NAME} + MYSQL_USER: ${DATABASE_USERNAME} + MYSQL_PASSWORD: ${DATABASE_PASSWORD} volumes: - - mysql_data:/var/lib/mysql - - # For API testing. - mysql_tests: - image: mysql:8.0 - command: --default-authentication-plugin=mysql_native_password - environment: - MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" - MYSQL_DATABASE: "${MYSQL_DATABASE}" - MYSQL_USER: "${MYSQL_USER}" - MYSQL_PASSWORD: "${MYSQL_PASSWORD}" - tmpfs: - - /var/lib/mysql + - mysql_db:/var/lib/mysql - phpmyadmin: - image: phpmyadmin/phpmyadmin:5 + front: + image: ${FRONT_IMAGE_NAME}:${DEPLOYMENT_TAG} + user: "node" labels: - traefik.enable=true - - traefik.http.routers.phpmyadmin_router.rule=Host(`phpmyadmin.$DOMAIN`) - environment: - PMA_HOSTS: "mysql, mysql_tests" - PMA_USER: "${MYSQL_USER}" - PMA_PASSWORD: "${MYSQL_PASSWORD}" - - # For asynchronous tasks and emails. - redis: - image: bitnami/redis:6.0 + - traefik.http.routers.front_router.rule=${FRONT_ROUTER_RULE} + - traefik.http.routers.front_router.service=front_service + - traefik.http.services.front_service.loadbalancer.server.port=3000 + working_dir: /home/node/app environment: - REDIS_PASSWORD: "${REDIS_PASSWORD}" - tmpfs: - - /bitnami/redis/data - - # For catching and displaying emails. - mailhog: - image: mailhog/mailhog:latest + # This is used only per the proxy + NUXT_API_URL: "${PROTOCOL}://${API_DOMAIN}/" + PUBLIC_STORAGE_URL: "${PROTOCOL}://${MINIO_DOMAIN}/${STORAGE_PUBLIC_BUCKET_NAME}/" + proxy: + image: traefik:3.0 + container_name: tcm_proxy + command: + - --providers.docker + - --providers.docker.exposedByDefault=false labels: - - traefik.enable=true - - traefik.http.routers.mailhog_router.rule=Host(`mailhog.${DOMAIN}`) - - traefik.http.routers.mailhog_router.service=mailhog_service - - traefik.http.services.mailhog_service.loadbalancer.server.port=8025 + - traefik.enable=false + ports: + - "80:80" + restart: on-failure + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + default: + aliases: + - "${API_DOMAIN}" + - "${BASE_DOMAIN}" - # For uploads. minio: image: minio/minio:latest - command: server /data + command: server /data --console-address ":9001" labels: - traefik.enable=true - - traefik.http.routers.minio_router.rule=Host(`${STORAGE_SUBDOMAIN}.${DOMAIN}`) - - traefik.http.routers.minio_router.service=minio_service - - traefik.http.services.minio_service.loadbalancer.server.port=9000 + - traefik.http.routers.minio_console_router.rule=${MINIO_CONSOLE_ROUTER_RULE} + - traefik.http.routers.minio_console_router.service=minio_console_service + - traefik.http.services.minio_console_service.loadbalancer.server.port=9001 + - traefik.http.routers.minio_s3_router.rule=${MINIO_ROUTER_RULE} + - traefik.http.routers.minio_s3_router.service=minio_s3_service + - traefik.http.services.minio_s3_service.loadbalancer.server.port=9000 environment: - MINIO_ACCESS_KEY: "${STORAGE_ACCESS_KEY}" - MINIO_SECRET_KEY: "${STORAGE_SECRET_KEY}" + MINIO_ROOT_USER: ${STORAGE_S3_KEY} + MINIO_ROOT_PASSWORD: ${STORAGE_S3_SECRET} volumes: - minio_data:/data volumes: - - mysql_data: - driver: local - + mysql_db: minio_data: - driver: local \ No newline at end of file +networks: + # This could be very usefull to run multiple project on the same machine + tcm_network: + name: tcm_network + default: + name: tcm_network \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index b2d6de30..00000000 --- a/docs/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/docs/01_getting_started.md b/docs/01_getting_started.md new file mode 100644 index 00000000..14a3ddb8 --- /dev/null +++ b/docs/01_getting_started.md @@ -0,0 +1,17 @@ +// prepare dev env +``` +cp docker-compose.override.yml.template docker-compose.override.yml +cp .env.dist .env +``` + +// start project +``` +DOCKER_BUILDKIT=1 docker-compose up -d --build\n +``` + +// update /etc/hosts +``` +127.0.0.1 boilerplatev2.localhost +``` + + diff --git a/docs/CICD.md b/docs/CICD.md new file mode 100644 index 00000000..358f48fb --- /dev/null +++ b/docs/CICD.md @@ -0,0 +1,58 @@ +# Prod Deployment +@see [here](../gitlab-ci/gitlab-ci-tags-prod.yml) + +This happen only when tag are pushed with format x.x.x + +A production image is pushed to the tag then the gitlabci deploy it on the server + +In gitlab, a variable named PROD_SSH_PRIVATE_KEY shall be added. It shall be encoded as base64 +The public key shall be added into the server + +``` +TMPDIR="$(mktemp -d)" && ssh-keygen -t ed25519 -q -N "" -C "gitlab@git.thecodingmachine.com" -f "${TMPDIR}/id_ed25519" && echo -e "Private as base64 :\n$(cat "${TMPDIR}/id_ed25519" | base64)\nPublic :\n$(cat "${TMPDIR}/id_ed25519.pub")" && rm -f "${TMPDIR}/id_ed25519"* && rmdir "${TMPDIR}" +``` + +As best practice, add the public key into gitlab variable so it is not lost + +## Prepare a demo server + +Theses steps are basis steps, it should be good enough for a demonstration environnement + +``` +cd / +sudo mkdir tcm_deployment +sudo chown ubuntu:ubuntu tcm_deployment +cd tcm_deployment/ +ssh-keygen -t ed25519 +cat ~/.ssh/id_ed25519.pub +``` + +Ajouter la clΓ© dans Settings > repository > deploy key + +Install docker dependencies +``` +cd /tcm_deployment +git clone git@git.thecodingmachine.com:tcm-projects/analysec-app.git +sudo apt-get update +sudo apt-get install ca-certificates curl gnupg lsb-release +sudo mkdir -p /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin +sudo docker run hello-world +sudo apt install docker-compose +sudo apt install make +cp .env.dist .env +cp docker-compose.override.yml.template docker-compose.override.yml + +sudo groupadd docker +sudo usermod -aG docker $USER +``` + +To finish, Create a deploy token (NOT a key) named gitlab-deploy-token + +After that, add the server IP into the gitlab-ci.yml + +Then, on GIT tag, it should deploy \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 8960fa2a..00000000 --- a/docs/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Website - -This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. - -## Installation - -```console -yarn install -``` - -## Local Development - -```console -yarn start -``` - -This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. - -## Build - -```console -yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -## Deployment - -```console -GIT_USER= USE_SSH=true yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docs/babel.config.js b/docs/babel.config.js deleted file mode 100644 index e00595da..00000000 --- a/docs/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')], -}; diff --git a/docs/docs/01_Get Started/1_Overview.md b/docs/docs/01_Get Started/1_Overview.md deleted file mode 100644 index 0a2f0bb7..00000000 --- a/docs/docs/01_Get Started/1_Overview.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Overview -slug: / ---- - -The Symfony Boilerplate provides a dummy application with core concepts and functionalities to help you build -a modern web application. - -![Users page](/img/users_page.png) - -Many services compose this boilerplate. - -## Application Layer - -This layer has two services: - -1. The GraphQL API, built with [Symfony 5](https://symfony.com/), [TDBM](https://github.com/thecodingmachine/tdbm), and -[GraphQLite](https://graphqlite.thecodingmachine.io/). -2. The Web Application, built with [Nuxt.js](https://nuxtjs.org). - -## Data Layer - -This layer has 3 services: - -1. MySQL for storing sessions and business data. -2. Redis for queueing asynchronous tasks (e.g., emails). -3. [MinIO](https://min.io/) for storing files (e.g., uploads). - -:::note - -πŸ“£  In production, you may externalize them to the equivalent services from your provider. - -::: - -## Additional Services - -These services are mostly useful in development: - -1. [Traefik](https://doc.traefik.io/traefik/), a reverse proxy. -2. [MailHog](https://github.com/mailhog/MailHog), an email trapper with a web UI. -3. phpMyAdmin, a web UI for displaying your database's data. - -:::note - -πŸ“£  In production, you may externalize them to the equivalent services from your provider. - -::: \ No newline at end of file diff --git a/docs/docs/01_Get Started/2_Installation.md b/docs/docs/01_Get Started/2_Installation.md deleted file mode 100644 index 8abcae17..00000000 --- a/docs/docs/01_Get Started/2_Installation.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Installation -slug: /installation ---- - -Create your Git repository on the platform of your choice, then add a new remote to it: - -```bash title="console" -git remote add boilerplate https://github.com/thecodingmachine/symfony-boilerplate.git -``` - -Finally, pull the source code from a [release](https://github.com/thecodingmachine/symfony-boilerplate/tags) to -your current branch: - -```bash title="console" -git pull boilerplate [TAG] -``` - -You may now follow the instructions of the *README*! πŸ˜‹ - -:::note - -πŸ“£  There are comments on the *README* to help you customize its content. - -::: - -:::note - -πŸ“£  If you don't need it, you should remove the *.github* folder. - -::: - - - - - diff --git a/docs/docs/02_Development Environment/1_Docker Compose.md b/docs/docs/02_Development Environment/1_Docker Compose.md deleted file mode 100644 index 10dc31f1..00000000 --- a/docs/docs/02_Development Environment/1_Docker Compose.md +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Docker Compose -slug: /development-environment/docker-compose ---- - -[Docker](https://docs.docker.com) and [Docker Compose](https://docs.docker.com/compose/) are the core technologies that orchestrate the -services of the boilerplate. - -They will help you set up a complete development environment close to your target production infrastructure. - -## Usage - -* πŸš€  `make up` - starts the Docker Compose stack. -* 🚦  `make down` - stops the Docker Compose stack. -* πŸš‡  `make api` - runs `bash` in the `api` service. -* πŸš‡  `make webapp` - runs `bash` in the `webapp` service. -* πŸ“š  `docker-compose logs -f` - displays the logs of **all** your services. -* πŸ“˜  `docker-compose logs -f [SERVICE_NAME]` - displays the logs of one service. - -## Configuration - -Your development environment mostly consists of two files: - -* *docker-compose.yml* -* *.env* file (and its template *.env.dist*) - -The *docker-compose.yml* file lists all the services of the boilerplate and their configuration. -The services use mostly environment variables to configure themselves. -Most of the time, you will set their values directly in the *docker-compose.yml* file. - -However, you don't want to commit your secrets to your Git repository. Also, you may want to reuse some values across -different services. - -Docker Compose provides an easy way for such scenarios; it can read the values from the *.env* file. - -For instance: - -```.env title=".env" -FOO=hello -``` - -```yaml title="docker-compose.yml" -service_foo: - environment: - FOO: "$FOO" -``` - -Becomes at runtime (e.g., when running a Docker Compose command): - -```yaml -service_foo: - environment: - FOO: "hello" -``` - -:::note - -πŸ“£  When adding a new variable in the *.env* file, don't forget to update the template *.env.dist* with it. -It will help other developers to notice this change and update their *.env* files accordingly. - -::: - -:::note - -πŸ“£  You should never commit the *.env* file as it may contain secrets; always use dummy values for your secrets -in the *.env.dist* template. - -::: - -## Add a new service - -The existing services might not be enough for your use cases. -You may therefore add new services to your *docker-compose.yml* file. - -### Application Layer - -```yaml title="docker-compose.yml" -services: - - your_service_name: - image: an_image:a_tag - labels: - - traefik.enable=true - - traefik.http.routers.your_service_name_router.rule=Host(`your_service_subdomain.$DOMAIN`) - # If your service runs on another port than 80. - # - traefik.http.routers.your_service_name_router.service=your_service_name_service - # - traefik.http.services.your_service_name_service.loadbalancer.server.port=3000 - environment: - FOO: "BAR" - volumes: - - src/your_service_source_code_folder:/path/in/the/docker/container -``` - -:::note - -πŸ“£  Always add a service source code in the *src* folder. - -::: - -### Data Layer - -```yaml title="docker-compose.yml" -services: - - your_service_name: - image: an_image:a_tag - environment: - FOO: "BAR" - volumes: - - your_service_name_data:/path/in/the/docker/container - -volumes: - - your_service_name_data: - driver: local -``` - -## Extend a Docker Image - -You might need to extend a Docker image for installing one or more packages. - -For instance, let's say you want to install the `pdftk` package for the API: - -```dockerfile title="src/api/Dockerfile" -FROM thecodingmachine/php:8.0-v4-apache AS extended - -# Always use the root user for installing packages. -USER root - -# Install PDFtk. -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends pdftk &&\ - # Print versions of PDFtk. - pdftk --version - -# Go back to the default Docker image user. -USER docker - -FROM extended -# Your production Docker image instructions. -``` - -```yaml title="docker-compose.yml" -api: - #image: thecodingmachine/php:8.0-v4-apache - build: - context: "./src/api" - target: "extended" -``` - -```makefile title="Makefile" -# Start the Docker Compose stack. -up: - docker-compose up --build -d -``` \ No newline at end of file diff --git a/docs/docs/02_Development Environment/2_Vagrant.md b/docs/docs/02_Development Environment/2_Vagrant.md deleted file mode 100644 index 1d2a6d2f..00000000 --- a/docs/docs/02_Development Environment/2_Vagrant.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Vagrant -slug: /development-environment/vagrant ---- - -On macOS and Windows, Docker currently has substantial performance issues. - -[Vagrant](https://www.vagrantup.com/) will help you to have an almost Linux-like experience regarding performances. - -## Usage - -* πŸ“¦  `make vagrant` - creates the *Vagrantfile*. -* πŸš€  `vagrant up` - installs and starts the virtual machine. -* πŸš‡  `vagrant ssh` - connects to the virtual machine. -* 🚦  `vagrant halt` - stops the virtual machine. -* πŸ’£  `vagrant destroy` - destroys the virtual machine. - -:::note - -πŸ“£  On Windows, consider using a Linux-like terminal to run the `make vagrant` command. - -::: - -:::note - -πŸ“£  With `vagrant ssh`, you may run the *Makefile*'s instructions like a Linux user. - -::: - -## Configuration - -In the *.env* file contains the following variables for Vagrant: - -* `VAGRANT_BOX` - the VM to use. -* `VAGRANT_PROJECT_NAME` - the project name: only use alphanumeric characters (no spaces, distinguish words with `_` or `-`). -* `VAGRANT_MEMORY` - the memory to allocate to the VM. -* `VAGRANT_CPUS` - the CPUs to allocate to the VM. -* `VAGRANT_DOCKER_COMPOSE_VERSION` - the version of Docker Compose to use. - -The command `make vagrant` reads these variables and uses them as arguments -when calling the *scripts/create-vagrantfile-from-template.sh* script. - -This script replaces placeholders from the *Vagrantfile.template* by the variables' values and creates a new *Vagrantfile*. - -:::note - -πŸ“£  You should never commit the *Vagrantfile*. - -::: \ No newline at end of file diff --git a/docs/docs/02_Development Environment/3_Housekeeping.md b/docs/docs/02_Development Environment/3_Housekeeping.md deleted file mode 100644 index 6c86f75e..00000000 --- a/docs/docs/02_Development Environment/3_Housekeeping.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Housekeeping -slug: /development-environment/housekeeping ---- - -πŸ‘‰  The sooner, the better! - -## Docker and Docker compose - -Make sure you always use the latest versions of Docker and Docker Compose. - -See [Docker and Docker Compose releases](https://docs.docker.com/release-notes/). - -### Linux - -For non-Vagrant users, follow the [Docker](https://docs.docker.com/engine/install/#server) -and [Docker Compose](https://docs.docker.com/compose/install/#install-compose-on-linux-systems) official documentation. - -### Vagrant - -For Vagrant users, update the variable `VAGRANT_DOCKER_COMPOSE_VERSION` from the *.env* file and run: - -```bash title="console" -# If the VM is running. -vagrant halt - -# Always. -vagrant destroy -make vagrant -vagrant up - -# Versions check. -vagrant ssh -docker --version -docker-compose --version -``` - -It will re-create the Vagrant VM with the latest versions of Docker and Docker Compose. - -:::note - -πŸ“£  Don't forget to update the *.env.dist* file for your colleagues too πŸ˜‰ - -::: - -### Docker Compose file - -Each service from the *docker-compose.yml* file uses a Docker image and a version number. - -By default, most of the versions should use the `X.Y` format (`X` for major updates, `Y` for minor ones). - -The idea here is that running `docker-compose pull` will only update Docker images with bugs fixes. - -For major and minor updates, read the patch note and the related documentation carefully before updating -your *docker-compose.yml* file. - -Releases: - -* [Traefik](https://github.com/containous/traefik/releases) -* [TheCodingMachine NodeJS](https://github.com/thecodingmachine/docker-images-nodejs#images) -* [TheCodingMachine PHP](https://github.com/thecodingmachine/docker-images-php#images) -* [MySQL](https://hub.docker.com/_/mysql?tab=tags) -* [phpMyAdmin](https://github.com/phpmyadmin/phpmyadmin/releases) -* [Redis](https://hub.docker.com/r/bitnami/redis/tags) -* [MailHog](https://github.com/mailhog/MailHog/releases) -* [MinIO](https://github.com/minio/minio/releases) - -## Vagrant and VirtualBox - -Run `vagrant version` to see your current version and the latest one. -Follow the printed instructions for upgrading Vagrant if required. - -For VirtualBox, open the application, it should tell you to download the newer version (if any). - -:::note - -πŸ“£  From time to time, you may also update the `VAGRANT_BOX` variable from the *.env* file (and from *env.dist*) -with a newer [Ubuntu box](https://app.vagrantup.com/bento). The update process for Vagrant users is the same as updating -the variable `VAGRANT_DOCKER_COMPOSE_VERSION`. - -::: \ No newline at end of file diff --git a/docs/docs/03_API/1_Overview.md b/docs/docs/03_API/1_Overview.md deleted file mode 100644 index 92ebf60e..00000000 --- a/docs/docs/03_API/1_Overview.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Overview -slug: /api ---- - -We built the API with [Symfony 5](https://symfony.com/), [TDBM](https://github.com/thecodingmachine/tdbm), and -[GraphQLite](https://graphqlite.thecodingmachine.io/). - -The API is the backbone of the boilerplate: - -* It centralizes most of the logic (use cases, validations, access control). -* Most of the data from and to the browser and other services transit through it. - -## Architecture - -The API's source code architecture is quite close to other architectures like Clean Architecture, but with shortcuts -to simplify it. - -On the contrary to a classic MVC architecture, the API's architecture will help you with: - -* Testing. -* Separation of concerns. -* Composition. - -We separate the source code into three namespaces: - -* `App\Domain`. -* `App\UseCase`. -* `App\Infrastructure`. - -:::note - -πŸ“£  The boilerplate provides the [Deptrac](https://github.com/sensiolabs-de/deptrac) tool to enforce where you -should put your classes. More on that subject in the [Static Analysis](/docs/static-analysis/api) chapter. - -::: - -### Domain - -The `App\Domain` namespace is where you'll find: - -* Your `Models` (from the database, from the storage, etc.) -* Your `DAOs`, your `Storages`. -* Your `Enumerators`. -* Your base `Throwables`. - -:::note - -πŸ“£  The `App\Domain` namespace can only call classes from its namespace. - -::: - -### UseCase - -The `App\UseCase` namespace is where you'll find your... uses cases! 😁 - -What's a use case? - -Let's say you want to create a `User` and send a reset password email. - -You'll create two classes: - -1. *src/api/src/UseCase/User/CreateUser.php* -2. *src/api/src/UseCase/User/ResetPassword/ResetPassword.php* - -Why two? Because of composition! - -Indeed, your `ResetPassword` use case might be useful for another scenario. - -In your `CreateUser` use case, you'll write the logic for creating a user and saving it in the database. - -Then you'll call your `ResetPassword` use case. - -:::note - -πŸ“£  While developing, it's essential to think use case first. - -::: - -:::note - -πŸ“£  The use cases are also our GraphQL endpoints. See the [GraphQL](/docs/graphql) guide. - -::: - -:::note - -πŸ“£  The `App\Usecase` namespace can only call classes from its namespace and the `App\Domain` namespace. - -::: - -### Infrastructure - -The `App\Infrastructure` namespace is where you'll find any other classes. - -For instance: - -* Your REST controllers. -* Your Symfony Commands. -* Etc. - -:::note - -πŸ“£  The `App\Infrastructure` namespace can call classes from all namespaces. - -::: \ No newline at end of file diff --git a/docs/docs/03_API/2_Configuration.md b/docs/docs/03_API/2_Configuration.md deleted file mode 100644 index d8985869..00000000 --- a/docs/docs/03_API/2_Configuration.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Configuration -slug: /api/configuration ---- - -General documentation on how to configure Symfony. More details are available -in the [official documentation](https://symfony.com/doc/current/configuration.html). - -## Symfony - -The *src/api/config* folder contains Symfony's configuration. - -There are two main parts: - -* *src/api/config/services.yaml*: YAML configuration file for your application. -* *src/api/config/packages* folder: YAML configuration files of the bundles (Symfony packages). - -The *packages* folder root files are the default configurations of the bundles. - -According to the `APP_ENV` value of the `api` service, files from the following folders: - -* *src/api/config/packages/dev* -* *src/api/config/packages/test* -* *src/api/config/packages/prod* - -will extend/override the default configurations. - -You often don't want to extend/override a configuration directly but instead create a variable. For instance, -the `DATABASE_URL` value contains secrets (the database hostname, password, etc.) you should not commit. -Also, you might use `APP_ENV=prod` for different environments (like staging and production), which do not use the same -database. - -That's why Symfony allows doing the following: - -```yaml title="src/api/config/doctrine.yaml" -doctrine: - dbal: - url: '%env(resolve:DATABASE_URL)%' -``` - -This instruction will fetch the value of the given environment variable. -See the [official documentation](https://symfony.com/doc/current/configuration/env_var_processors.html) for more details. - -:::note - -πŸ“£  In your development environment, do not put these environment variables in the *.env* file -from the *src/api* folder, but instead, put them under the `environment` key from the `api` service of -your *docker-compose.yml* file. - -::: - -### Parameters - -If you need the value of an environment variable in your code, use the Symfony parameters. - -For instance: - -```yaml title="src/api/config/services.yaml" -parameters: - app.foo: '%env(FOO)%' - -services: - Your\Class\Foo: - arguments: - $foo: '%app.foo%' -``` - -```php -# A class. -private string $foo; - -public function __construct( - string $foo -) { - $this->foo = foo; -} -``` \ No newline at end of file diff --git a/docs/docs/03_API/3_Composer.md b/docs/docs/03_API/3_Composer.md deleted file mode 100644 index ba3972fa..00000000 --- a/docs/docs/03_API/3_Composer.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Composer -slug: /api/composer ---- - -:::note - -πŸ“£  All commands have to be run in the `api` service (`make api`). - -::: - -When installing a PHP dependency, ask yourself if it is a `dev` dependency or not: - -``` -composer require [--dev] [package] -COMPOSER_MEMORY_LIMIT=-1 composer normalize -``` - -As we're using Symfony, make sure to choose the package with Symfony support (aka bundle) if available. - -:::note - -πŸ“£  Vagrant users might encounter some issues with Composer. -A workaround solution is to add the flag `--prefer-source` to your Composer command. - -::: \ No newline at end of file diff --git a/docs/docs/03_API/4_Housekeeping.md b/docs/docs/03_API/4_Housekeeping.md deleted file mode 100644 index 9c4a80e9..00000000 --- a/docs/docs/03_API/4_Housekeeping.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Housekeeping -slug: /api/housekeeping ---- - -πŸ‘‰  The sooner, the better! - -## Symfony - -You should update to the latest minor/majors version whenever a new version is available. - -See [Symfony releases](https://symfony.com/releases). - -### Minor Versions - -See https://symfony.com/doc/current/setup/upgrade_minor.html. - -### Major Versions - -See https://symfony.com/doc/current/setup/upgrade_major.html. - -:::note - -πŸ“£  Make sure your Symfony bundles are ready before updating. - -::: - -## Composer - -To show the list of direct outdated dependencies, run: - -```bash title="console" -composer outdated --direct -``` \ No newline at end of file diff --git a/docs/docs/04_Web Application/1_Overview.md b/docs/docs/04_Web Application/1_Overview.md deleted file mode 100644 index 4804dfc3..00000000 --- a/docs/docs/04_Web Application/1_Overview.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Overview -slug: /webapp ---- - -We built the web application with [Nuxt.js](https://nuxtjs.org). - -The web application is the frontend of the boilerplate. - -While you may find most of the information in the [official documentation](https://nuxtjs.org/docs/2.x/get-started/installation), -it is essential to note that: - -* Most of the logic (use cases, validations, access control) occurs in the API. -* The web application's primary goal is literally to be a UI for the API. \ No newline at end of file diff --git a/docs/docs/04_Web Application/2_Configuration.md b/docs/docs/04_Web Application/2_Configuration.md deleted file mode 100644 index 7a2fe2cc..00000000 --- a/docs/docs/04_Web Application/2_Configuration.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Configuration -slug: /webapp/configuration ---- - -General documentation on how to configure Nuxt.js. More details are available -in the [official documentation](https://nuxtjs.org/docs/2.x/configuration-glossary/configuration-build). - -### nuxt.config.js - -The *src/webapp/nuxt.config.js* file contains the configuration of Nuxt.js. - -You may use environment variables in this file. They are available through -the instruction `process.env.YOUR_ENVIRONMENT_VARIABLE_NAME`. - -:::note - -πŸ“£  Put them under the `environment` property of your `webapp` service in your *docker-compose.yml* file. - -::: - -If you need the value of an environment variable in your code, put it under the `publicRuntimeConfig` or -`privateRuntimeConfig` section of the *nuxt.config.js* file. - -For instance: - -```js title="src/webapp/nuxt.config.js" -publicRuntimeConfig: { - apiURL: process.env.API_URL, -} -``` - -The value is available in your code thanks to `this.$config.apiURL` (or `$config.apiURL` in your `template` blocks). - -:::note - -πŸ“£  `privateRuntimeConfig` should contain your secrets. Values from -this section **are only available when Nuxt.js executes your code on the server.** - -::: \ No newline at end of file diff --git a/docs/docs/04_Web Application/3_Yarn.md b/docs/docs/04_Web Application/3_Yarn.md deleted file mode 100644 index 17c23b21..00000000 --- a/docs/docs/04_Web Application/3_Yarn.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Yarn -slug: /webapp/yarn ---- - -:::note - -πŸ“£  All commands have to be run in the `webapp` service (`make webapp`). - -::: - -We recommend using [Yarn](https://yarnpkg.com/) as package manager. - -When installing a JavaScript dependency, ask yourself if it is a `dev` dependency or not: - -``` -yarn add [package] [--dev] -``` - -As we're using Nuxt.js, make sure to choose the package with Nuxt.js support (aka module) if available. - -## Hot Reloading - -In your development environment, the `webapp` service run the command `yarn dev`. - -This command watch for file changes, recompile those files and automatically refresh your browser. - -This command may also show ESLint errors and warnings; you can fix them using `yarn lint:fix`. - -:::note - -πŸ“£  You may also configure your IDE to fix the ESLint errors automatically. - -::: \ No newline at end of file diff --git a/docs/docs/04_Web Application/4_Housekeeping.md b/docs/docs/04_Web Application/4_Housekeeping.md deleted file mode 100644 index 552af343..00000000 --- a/docs/docs/04_Web Application/4_Housekeeping.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Housekeeping -slug: /webapp/housekeeping ---- - -πŸ‘‰  The sooner, the better! - -## Nuxt.js - -From time to time: - -1. Remove the file *src/webapp/yarn.lock* and the folder *src/webapp/node_modules*. -2. Recreate the `webapp` service with `docker-compose up -d --force webapp`. -3. (optional) Run `yarn outdated` for additional packages to update. -4. (optional) Update their versions in the *src/webapp/package.json* file. -5. Repeat! πŸ˜„ \ No newline at end of file diff --git a/docs/docs/05_Database/1_ORM.md b/docs/docs/05_Database/1_ORM.md deleted file mode 100644 index b1d8b0f3..00000000 --- a/docs/docs/05_Database/1_ORM.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: ORM -slug: /database/ORM ---- - -The boilerplate uses [TDBM](https://github.com/thecodingmachine/tdbm) as ORM. -It is an alternative to Doctrine or Eloquent, yet it is pretty close. - -The main difference is that with [TDBM](https://github.com/thecodingmachine/tdbm), -you write your database's tables first before generating your models. diff --git a/docs/docs/05_Database/2_Doctrine Migrations.md b/docs/docs/05_Database/2_Doctrine Migrations.md deleted file mode 100644 index 3e8bb6fa..00000000 --- a/docs/docs/05_Database/2_Doctrine Migrations.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Doctrine Migrations -slug: /database/doctrine-migrations ---- - - -[TDBM](https://github.com/thecodingmachine/tdbm) integrates well with Symfony, as you are able to use the -[DoctrineMigrationsBundle](https://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html). - -[TDBM](https://github.com/thecodingmachine/tdbm) provides wrappers around this library for: - -1. Building your database structure with fluid schemas (i.e., `$x->foo()->bar()->baz()`). -2. Defining your GraphQL types and their fields. - -:::note - -πŸ“£  All commands have to be run in the `api` service (`make api`). - -::: - -## Create a migration - -```bash title="console" -php bin/console doctrine:migrations:generate -``` - -This command will generate a new empty migration in the *src/api/migrations* folder. - -Add a meaningful description: - -```php -public function getDescription() : string -{ - return 'Create X, Y and Z tables.'; -} -``` - -And throw the following exception in the `down` method: - -```php -public function down(Schema $schema) : void -{ - throw new RuntimeException('Never rollback a migration!'); -} -``` - -You may now update the `up` method. For instance: - -```php -use TheCodingMachine\FluidSchema\TdbmFluidSchema; - -public function up(Schema $schema): void -{ - $db = new TdbmFluidSchema($schema); - - $db->table('users') - ->column('id')->guid()->primaryKey()->comment('@UUID') - ->column('first_name')->string(255)->notNull() - ->column('last_name')->string(255)->notNull() - ->column('email')->string(255)->notNull()->unique() - ->column('password')->string(255)->null()->default(null) - ->column('locale')->string(2)->notNull() - ->column('profile_picture')->string(255)->null()->default(null) - ->column('role')->string(255)->notNull(); - - $db->table('reset_password_tokens') - ->column('id')->guid()->primaryKey()->comment('@UUID') - ->column('user_id')->references('users')->notNull()->unique() - ->column('token')->string(255)->notNull()->unique() - ->column('valid_until')->datetimeImmutable()->notNull(); -} -``` - -:::note - -πŸ“£  A table name should be plural. - -::: - -If you're updating an existing table, it would be better to edit the corresponding migration instead of creating -a new migration. - -:::note - -πŸ“£  **Do not** edit a migration if a remote environment like your production did apply the migration. - -::: - -## Apply migrations - -```bash title="console" -php bin/console doctrine:migrations:migrate -n -``` - -This command will apply the new migrations to the database. - -:::note - -πŸ“£  In development, the `api` service does it on startup. - -::: - -If you've edited an existing migration, you'll have to reset the database first: - -```bash title="console" -php bin/console doctrine:database:drop -n --force && -php bin/console doctrine:database:create -n && -php bin/console doctrine:migrations:migrate -n -``` - -:::note - -πŸ“£  Reminder: **Do not** edit a migration if a remote environment like your production did apply the migration. - -::: diff --git a/docs/docs/05_Database/3_Models.md b/docs/docs/05_Database/3_Models.md deleted file mode 100644 index cbfc0fb9..00000000 --- a/docs/docs/05_Database/3_Models.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Models -slug: /database/models ---- - -Models are the PHP representation of your database's tables. - -:::note - -πŸ“£  All commands have to be run in the `api` service (`make api`). - -::: - -## Generate - -```bash title="console" -php bin/console tdbm:generate -``` - -This command will regenerate the [TDBM](https://github.com/thecodingmachine/tdbm) -models (and DAOs - more on that in the next chapter). - -Models come in two kinds of classes. For instance: - -* `BaseUser`. -* `User` that extends `BaseUser`. - -[TDBM](https://github.com/thecodingmachine/tdbm) generates the first class, and it contains the default getters and setters. - -You cannot modify it, but instead, edit the second class as [TDBM](https://github.com/thecodingmachine/tdbm) -does not override it. - -:::note - -πŸ“£  There are other kinds of classes in the *src/api/src/Domain/Model* folder, but -they are not related to [TDBM](https://github.com/thecodingmachine/tdbm). - -::: - -## Create an instance - -Let's say you have a model `Foo` with the following properties: - -* `bar`, non-nullable. -* `baz`, nullable. - -```php -$foo = new Foo($bar); -$foo->setBaz($baz); -``` - -:::note - -πŸ“£  A constructor of a model requires non-nullable values. - -::: diff --git a/docs/docs/05_Database/4_DAOs.md b/docs/docs/05_Database/4_DAOs.md deleted file mode 100644 index d9a22a14..00000000 --- a/docs/docs/05_Database/4_DAOs.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: DAOs -slug: /database/daos ---- - -DAOs are classes where you can create, read, update, and delete data in your database according to a model. - -:::note - -πŸ“£  All commands have to be run in the `api` service (`make api`). - -::: - -## Generate - -```bash title="console" -php bin/console tdbm:generate -``` - -This command will regenerate the [TDBM](https://github.com/thecodingmachine/tdbm) -models and DAOs. - -Like models, [TDBM](https://github.com/thecodingmachine/tdbm) generates two kinds of classes. For instance: - -* `BaseUserDao`. -* `UserDao` that extends `BaseDao`. - -The first class contains most of the methods allowing you to interact with the corresponding table in the database. - -You cannot modify it, but instead, edit the second class as [TDBM](https://github.com/thecodingmachine/tdbm) -does not override it. - -## Save / Update - -The base DAO provides a method `save` which takes the model instance as parameter: - -```php -$foo = new Foo($bar); -$this->fooDao->save($foo); - -$foo->setBaz($baz); -$this->fooDao->save($foo); -``` - -:::note - -πŸ“£  [TDBM](https://github.com/thecodingmachine/tdbm) generates the primary key. - -::: - - -## Delete - -The base DAO provides a method `delete` which takes the model instance as parameter: - -``` -$this->foodDao->delete($foo); -``` - -:::note - -πŸ“£  This method also takes a boolean argument for cascade deletion. However, it would be best to handle such -scenarios with Use Cases composition. - -::: - -## Get By - -The base DAO provides methods for retrieving a model from the primary key and unique properties: - -```php -$foo = $this->fooDao->getById($id); -``` - -## Find All - -The base DAO provides the method `findAll`: - -```php -$foos = $this->fooDao->findAll(); -``` - -:::note - -πŸ“£  This method returns a `ResultIterator`, a sort of array of instances. See the [Lists](/docs/lists) -guide for more details. - -::: - -## Find - -The base DAO provides the method `find`: - -```php -$foos = $this->fooDao->find( - [ - // "WHERE". - 'bar LIKE :bar OR baz = :baz', - ], - [ - // Arguments of "WHERE". - 'bar' => '%' . $bar . '%', - 'baz' => $baz, - ], - // Sort column and direction. - 'id ASC' -); -``` - -:::note - -πŸ“£  If a parameter's value is `null`, [TDBM](https://github.com/thecodingmachine/tdbm) -automatically removes the corresponding conditions in the first argument. - -::: - -:::note - -πŸ“£  This method returns a `ResultIterator`, a sort of array of instances. See the [Lists](/docs/lists) -chapter for more details. - -::: \ No newline at end of file diff --git a/docs/docs/05_Database/5_Development Data.md b/docs/docs/05_Database/5_Development Data.md deleted file mode 100644 index 81d62de4..00000000 --- a/docs/docs/05_Database/5_Development Data.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Development Data -slug: /database/development-data ---- - -:::note - -πŸ“£  All commands have to be run in the `api` service (`make api`). - -::: - -The `DevFixturesCommand` class provides a Symfony command for initializing your -development database with dummy data: - -```bash title="console" -php bin/console app:fixtures:dev -``` - -It uses the class `AppFixtures` for that task. You should edit it according to your needs. \ No newline at end of file diff --git a/docs/docs/06_GraphQL/1_Overview.md b/docs/docs/06_GraphQL/1_Overview.md deleted file mode 100644 index 8abe6613..00000000 --- a/docs/docs/06_GraphQL/1_Overview.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Overview -slug: /graphql ---- - -> GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. -> GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask -> for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful -> developer tools. -> -> -- [graphql.org](https://graphql.org/) - - -If you're new to GraphQL, consider reading the [official documentation](https://graphql.org/) for a better understanding -of the concepts. \ No newline at end of file diff --git a/docs/docs/06_GraphQL/2_API.md b/docs/docs/06_GraphQL/2_API.md deleted file mode 100644 index 9d4e46cd..00000000 --- a/docs/docs/06_GraphQL/2_API.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: API -slug: /graphql/api ---- - -The Symfony Boilerplate uses [GraphQLite](https://graphqlite.thecodingmachine.io/) to quickly build a GraphQL API based -on your models and use cases. - -As the documentation of this PHP library covers a lot of aspects, consider reading it to have a better understanding -of its functionalities. - -## Queries - -A GraphQL query is like a REST `GET` request. - -Thanks to the `@Query` annotation, you may transform any method in the `App\UseCase` namespace into a valid GraphQL -endpoint. - -```php title="App\UseCase\HelloWorld.php" -use TheCodingMachine\GraphQLite\Annotations\Query; - -/** - * @Query - */ -public function helloWorld(): string -{ - return "Hello world"; -} -``` - -Of course, this is a simple example. More complex examples are available in the source code of the application and in -the next chapters. - -## Mutations - -A GraphQL mutation is like a REST `POST` request. - -Thanks to the `@Mutation` annotation, you may transform any method in the `App\UseCase` namespace into a valid GraphQL -endpoint. - -```php title="App\UseCase\CreateFoo.php" -use TheCodingMachine\GraphQLite\Annotations\Mutation; - -/** - * @Mutation - */ -public function createFoo(string $bar): Foo -{ - $foo = new Foo($bar); - $this->fooDao->save($foo); - - return $foo; -} -``` - -Of course, this is a simple example. More complex examples are available in the source code of the application and in -the next chapters. - -## Models - -Thanks to `@Type` and `@SourceField` annotations, you may convert any PHP class in the `App\Domain\Model` namespace to -a valid GraphQL type: - -```php title="src/api/src/Domain/Model/User.php" -use TheCodingMachine\GraphQLite\Annotations\SourceField; -use TheCodingMachine\GraphQLite\Annotations\Type; - -/** - * @Type - * @SourceField(name="id", outputType="ID") - * @SourceField(name="firstName") - * @SourceField(name="lastName") - * @SourceField(name="email") - * @SourceField(name="locale") - * @SourceField(name="profilePicture") - * @SourceField(name="role") - * @SourceField(name="activated") - */ -class User extends BaseUser {} -``` - -The `@SourceField` annotation will look for methods named `{name}()`, `is{Name}()` and `get{Name}()` across the current -class or the parents classes. - -:::note - -πŸ“£  Identifiers should have the `outputType="ID"` parameter. - -::: - -To allow [GraphQLite](https://graphqlite.thecodingmachine.io/) to automatically inject an instance of -`User` in a query or mutation, i.e: - -```php -/** - * @Mutation - */ -public function updateUser(User $user, string $firstName, string $lastName): User {} -``` - -You have to create a [GraphQLite](https://graphqlite.thecodingmachine.io/) factory in the DAO: - -```php title="src/api/src/Domain/Dao/UserDao.php" -use TheCodingMachine\GraphQLite\Annotations\Factory; -use TheCodingMachine\GraphQLite\Annotations\HideParameter; - -/** - * @Factory - * @HideParameter(for="$lazyLoading") - */ -public function getById(string $id, bool $lazyLoading = false): User -{ - return parent::getById($id, $lazyLoading); -} -``` - -In your GraphQL client, you may now call this mutation by using the `id` parameter of the factory: - -```title="GraphQL" -mutation updateUser( - $id: String! - $firstName: String! - $lastName: String! -) { - updateUser( - user: { id: $id } - firstName: $firstName - lastName: $lastName - ) { - id - firstName - lastName - } -} -``` - -## Enums - -Classes from the namespace `App\Domain\Enum` which extends `MyCLabs\Enum\Enum` are automatically converted to valid -GraphQL types. - -For instance: - -```php title="src/api/src/Domain/Enum/Role.php" -use MyCLabs\Enum\Enum; - -/** - * @method static Role ADMINISTRATOR() - * @method static Role USER() - */ -final class Role extends Enum -{ - private const ADMINISTRATOR = 'ADMINISTRATOR'; - private const USER = 'USER'; -} -``` - -```php -/** - * @Mutation - */ -public function updateUserRole(User $user, Role $role): User {} -``` - -```title="GraphQL" -mutation updateUserRole( - $id: String! - $role: Role! # "ADMINISTRATOR" or "USER" -) { - updateUserRole( - user: { id: $id } - role: $role - ) { - id - role - } -} -``` - diff --git a/docs/docs/06_GraphQL/3_Web Application.md b/docs/docs/06_GraphQL/3_Web Application.md deleted file mode 100644 index 920ab342..00000000 --- a/docs/docs/06_GraphQL/3_Web Application.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Web Application -slug: /graphql/web-application ---- - -The Symfony Boilerplate uses [graphql-request](https://github.com/prisma-labs/graphql-request) client. - -It is available in a Vue component thanks to `this.$graphql`. - -Queries and mutations are JavaScript files. For instance: - -```js title="src/webapp/graphql/auth/me.query.js" -import { gql } from 'graphql-request' -import { MeFragment } from '@/graphql/auth/me.fragment' - -export const MeQuery = gql` - query me { - me { - ... on User { - ...MeFragment - } - } - } - ${MeFragment} -` -``` - -:::note - -πŸ“£  A fragment is useful is you want to fetch the same data in many queries and mutations. - -::: \ No newline at end of file diff --git a/docs/docs/06_GraphQL/4_Tools.md b/docs/docs/06_GraphQL/4_Tools.md deleted file mode 100644 index e99256df..00000000 --- a/docs/docs/06_GraphQL/4_Tools.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Tools -slug: /graphql/tools ---- - -The API provides the endpoint `/graphiql` (in development) so that you may quickly test a query or a mutation. - -You may also use the [Altair GraphQL Client](https://altair.sirmuel.design/). \ No newline at end of file diff --git a/docs/docs/07_i18n/1_Default Locale.md b/docs/docs/07_i18n/1_Default Locale.md deleted file mode 100644 index 0e6e53d5..00000000 --- a/docs/docs/07_i18n/1_Default Locale.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Default Locale -slug: /i18n/default-locale ---- - -Both the `webapp` and `api` services read the `DEFAULT_LOCALE` environment variable. - -Its value comes from the root *.env* file. - -If you update this value, you will have to restart these services (locally by doing `make down up`). - -:::note - -πŸ“£  Don't forget to update the file *.env.dist* if this change is definitive. - -::: \ No newline at end of file diff --git a/docs/docs/07_i18n/2_API.md b/docs/docs/07_i18n/2_API.md deleted file mode 100644 index 9aa7a865..00000000 --- a/docs/docs/07_i18n/2_API.md +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: API -slug: /i18n/api ---- - -For the API, i18n has three goals: - -1. Translate the validation error messages. -2. Translate the emails. -3. Translate the spreadsheets. - -The [symfony/translation](https://symfony.com/doc/current/translation.html) package helps us for that task. - -:::note - -πŸ“£  It requires the PHP extension `intl`, already configured in the `api` service. - -::: - -## Basic Usage - -Symfony provides a `TranslatorInterface` you can inject in your class, i.e.: - -```php -# A class. -private TranslatorInterface $translator; - -public function __construct( - TranslatorInterface $translator -) { - $this->translator = $translator; -} -``` - -You can then use it as below: - -```php -$translatedSubject = $this->translator - ->trans( - 'translation_key', - [], - 'the_domain', // More on that later. - 'the_locale' - ); -``` - -:::note - -πŸ“£  Most of the time, you don't have to use the `TranslatorInterface` as either Symfony or the parent class call it for you. - -::: - -## Translations Folder - -Folder *src/api/translations* contains one YAML file per locale and domain. - -A domain is a sort of scope. For instance, *src/api/translations/emails.en.yaml* and *src/api/translations/emails.fr.yaml* -are both for the `email` domain (used for translating emails!). - -Each of these files contains translation keys and the associated texts. - -For instance: - -```yaml title="src/api/translations/foo.en.yaml" -foo: - baz: "Hello" -``` - -:::note - -πŸ“£  All files from the same domain should have the same organization (same translations keys, identical sorting, etc.). - -::: - -## Validation - -Let's say you have a class with the following validation annotations: - -```php title="src/api/src/Domain/Model/User.php" -/** - * @Field - * @Assert\NotBlank(message="not_blank") - * @Assert\Length(max=255, maxMessage="max_length_255") - */ -public function getFirstName(): string -{ - return parent::getFirstName(); -} -``` - -The `message` property of each `Assert` annotation is a translation key from the `validators` domain: - -```yaml title="src/api/translations/validators.en.yaml" -not_blank: "This value should not be blank." -max_length_255: "This value is too long. It should have 255 characters or less." -``` - -```yaml title="src/api/translations/validators.fr.yaml" -not_blank: "Cette valeur ne doit pas Γͺtre vide." -max_length_255: "Cette valeur est trop longue. Elle doit avoir 255 caractΓ¨res ou moins." -``` - -The web application implements a mechanism for setting the correct locale to translate these validation error -messages (see [interactions between the web application and the API chapter](/docs/i18n/api-and-web-application-interactions)). - -## Emails - -Emails translation uses the `emails` domain. The corresponding YAML files are: - -* *src/api/translations/emails.en.yaml* -* *src/api/translations/emails.fr.yaml* - -Let's take a look at the `CreateEmail` use case: - -```php title="src/api/src/UseCase/CreateEmail.php" -protected function create(User $user, string $subjectId, string $template, array $context): TemplatedEmail -``` - -The method `create` takes, among other arguments, a `User` instance and the translation key -of the email's subject. The `User` has a `locale` property used for translating both the email's subject and its content. - -See the [Emails](/docs/emails) guide for more details on how to extend this use case. - -The Twig templates of your emails should look like this: - -```twig title="src/api/templates/emails/foo.html.twig" -{% extends 'emails/email.html.twig' %} -{% trans_default_domain domain %} - -{% block body %} - {% apply inky_to_html|inline_css(source('@css/foundation-emails.css'), source('@css/emails.css')) %} -

{% trans into locale %}translation_key{% endtrans %}

- {% endapply %} -{% endblock %} -``` - -The `CreateEmail` use case will provide both `domain` and `locale` values. - -## Spreadsheets - -Spreadsheets translation uses the `spreadsheets` domain. The corresponding YAML files are: - -* *src/api/translations/spreadsheets.en.yaml* -* *src/api/translations/spreadsheets.fr.yaml* - -As you might want to translate the headers and cell values of your XLSX exports, the boilerplate provides examples -on how of do so. - -Let's take a look at the `CreateXLSXExport` use case: - -```php title="src/api/src/UseCase/CreateXLSXExport.php" -public function create(string $locale, array $headerIds, array $values): Xlsx -``` - -The method `create` takes, among other arguments, a locale. It will use it to translate the spreadsheet's headers -accordingly. - -For values, you should translate them directly in your use cases before calling the `create` method. diff --git a/docs/docs/07_i18n/3_Web Application.md b/docs/docs/07_i18n/3_Web Application.md deleted file mode 100644 index 06a98906..00000000 --- a/docs/docs/07_i18n/3_Web Application.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Web Application -slug: /i18n/web-application ---- - -For the web application, i18n has two goals: - -1. Translate the user interface. -2. Tell the API which locale the user has selected (for validations errors, etc.). - -We use the [nuxt/i18n](https://i18n.nuxtjs.org/) module, and we configured it in -the *src/webapp/nuxt.config.js* file. - -## Basic Usage - -```html title="Vue component