From 29a79fd8ddaac9d68dfd524198816ed5d28a0dbb Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 30 Nov 2021 15:17:33 +0100 Subject: [PATCH 01/38] Replacing docker-compose by k3s --- .env.default | 3 +- Makefile | 53 +++++++++----- helm/.helmignore | 23 ++++++ helm/Chart.yaml | 24 +++++++ helm/templates/_helpers.tpl | 62 ++++++++++++++++ helm/templates/configmap.yaml | 9 +++ helm/templates/deployment.yaml | 74 +++++++++++++++++++ helm/templates/ingress.yaml | 24 +++++++ helm/templates/service.yaml | 14 ++++ helm/values.yaml | 15 ++++ kubernetes/sdc.yaml | 126 +++++++++++++++++++++++++++++++++ 11 files changed, 406 insertions(+), 21 deletions(-) create mode 100644 helm/.helmignore create mode 100644 helm/Chart.yaml create mode 100644 helm/templates/_helpers.tpl create mode 100644 helm/templates/configmap.yaml create mode 100644 helm/templates/deployment.yaml create mode 100644 helm/templates/ingress.yaml create mode 100644 helm/templates/service.yaml create mode 100644 helm/values.yaml create mode 100644 kubernetes/sdc.yaml diff --git a/.env.default b/.env.default index 6dee5305b..dfa65d1f7 100644 --- a/.env.default +++ b/.env.default @@ -1,5 +1,4 @@ -COMPOSE_FILE=./docker/docker-compose.yml:./docker/docker-compose.override.yml -COMPOSE_PROJECT_NAME=projectname +PROJECT_NAME=projectname PROFILE_NAME=druxxy THEME_NAME=NA SITE_NAME=Example diff --git a/Makefile b/Makefile index 53c5a6761..ca3ddd3f5 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# Add utility functions and scripts to the container +# Include utility functions and scripts include scripts/makefile/*.mk .PHONY: all fast allfast provision si exec exec0 down clean dev drush info phpcs phpcbf hooksymlink clang cinsp compval watchdogval drupalrectorval upgradestatusval behat sniffers tests front front-install front-build clear-front lintval lint storybook back behatdl behatdi browser_driver browser_driver_stop statusreportval contentgen newlineeof localize local-settings redis-settings content patchval diff @@ -10,9 +10,14 @@ include scripts/makefile/*.mk # Prepare enviroment variables from defaults $(shell false | cp -i \.env.default \.env 2>/dev/null) -$(shell false | cp -i \.\/docker\/docker-compose\.override\.yml\.default \.\/docker\/docker-compose\.override\.yml 2>/dev/null) include .env +# Sanitize PROJECT_NAME input +COMPOSE_PROJECT_NAME := $(shell echo "$(PROJECT_NAME)" | tr -cd '[a-zA-Z0-9]' | tr '[:upper:]' '[:lower:]') + +kk: + helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName=$(COMPOSE_PROJECT_NAME) sdc ./helm/ + # Get user/group id to manage permissions between host and containers LOCAL_UID := $(shell id -u) LOCAL_GID := $(shell id -g) @@ -24,7 +29,7 @@ CGID ?= $(LOCAL_GID) # Define network name. COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front -SDC_SERVICES=$(shell docker-compose config --services) +# SDC_SERVICES=$(shell docker-compose config --services) # TODO: Replace or remove # Determine database data directory if defined DB_MOUNT_DIR=$(shell cd docker && realpath $(DB_DATA_DIR))/ ifeq ($(findstring mysql,$(SDC_SERVICES)),mysql) @@ -38,10 +43,15 @@ endif CURDIR=$(shell pwd) # Execute php container as regular user -php = docker-compose exec -T --user $(CUID):$(CGID) php ${1} +php = kubectl exec -it deploy/sdc -c php -- su -s /bin/ash www-data -c "${1}" # Execute php container as root user -php-0 = docker-compose exec -T --user 0:0 php ${1} +php-0 = kubectl exec -it deploy/sdc -c php -- ${1} + +killall: + /usr/local/bin/k3s-killall.sh + /usr/local/bin/k3s-uninstall.sh +# Variables ADDITIONAL_PHP_PACKAGES := tzdata graphicsmagick # php7-intl php7-redis wkhtmltopdf gnu-libiconv php7-pdo_pgsql postgresql-client postgresql-contrib DC_MODULES := project_default_content better_normalizers default_content hal serialization MG_MODULES := migrate_generator migrate migrate_plus migrate_source_csv migrate_tools @@ -63,7 +73,7 @@ provision: # Check if enviroment variables has been defined ifeq ($(strip $(COMPOSE_PROJECT_NAME)),projectname) $(info Project name can not be default, please enter project name.) - $(eval COMPOSE_PROJECT_NAME = $(strip $(shell read -p "Project name: " REPLY;echo -n $$REPLY))) + $(eval COMPOSE_PROJECT_NAME = $(strip $(shell read -p "Project name: " REPLY;echo -n $$REPLY))) # TODO: Sanitize lowercase/nospecialchar $(shell sed -i -e '/COMPOSE_PROJECT_NAME=/ s/=.*/=$(COMPOSE_PROJECT_NAME)/' .env) $(info Please review your project settings and run `make all` again.) exit 1 @@ -71,9 +81,17 @@ endif ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif - make -s down +# make -s down + @echo "Downloading and installing container orchestrator..." + curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" sh - # TODO: Check behavior if k3s already install + lock version + curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh - # TODO: rm $(which helm) +# kubectl config view --raw >~/.kube/config # TODO: Simlink to /etc/rancher/k3s/k3s.yaml OR use helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml sdc ./kubernetes/sdc-chart @echo "Build and run containers..." - docker-compose up -d --remove-orphans + # TODO: Rename file +# kubectl apply -f kubernetes/sdc.yaml + helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName=$(COMPOSE_PROJECT_NAME) sdc ./helm/ +# helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml sdc ./helm/ # https://github.com/k3s-io/k3s/issues/1126#issuecomment-567591888 + for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/sdc -c php -- "whoami" &> /dev/null && break || sleep 1; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) @@ -157,37 +175,31 @@ localize: info: $(info ) $(info Containers for "$(COMPOSE_PROJECT_NAME)" info:) - $(eval CONTAINERS = $(shell docker ps -f name=$(COMPOSE_PROJECT_NAME) --format "{{ .ID }}" -f 'label=traefik.enable=true')) - $(foreach CONTAINER, $(CONTAINERS),$(info http://$(shell printf '%-19s \n' $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}} {{range $$p, $$conf := .NetworkSettings.Ports}}{{$$p}}{{end}} {{.Name}}' $(CONTAINER) | rev | sed "s/pct\//,pct:/g" | sed "s/,//" | rev | awk '{ print $0}')) )) $(info ) ifdef REVIEW_DOMAIN $(eval BASE_URL := $(MAIN_DOMAIN_NAME)) else - $(eval BASE_URL := $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}}' $(COMPOSE_PROJECT_NAME)_web)) + $(eval BASE_URL := $(shell kubectl get pods -l name=sdc --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}')) endif - $(info Login as System Admin: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(ADMIN_NAME)" /admin/content/ | awk -F "default" '{print $$2}'))))) - $(info Login as Contributor: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(TESTER_NAME)" /admin/content/ | awk -F "default" '{print $$2}'))))) + $(info Login as System Admin: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(ADMIN_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) + $(info Login as Contributor: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(TESTER_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) $(info ) ifneq ($(shell diff .env .env.default -q),) @echo -e "\x1b[33mWARNING\x1b[0m - .env and .env.default files differ. Use 'make diff' to see details." endif -ifneq ($(shell diff docker/docker-compose.override.yml docker/docker-compose.override.yml.default -q),) - @echo -e "\x1b[33mWARNING\x1b[0m - docker/docker-compose.override.yml and docker/docker-compose.override.yml.default files differ. Use 'make diff' to see details." -endif ## Output diff between local and versioned files diff: diff -u0 --color .env .env.default || true; echo "" - diff -u0 --color docker/docker-compose.override.yml docker/docker-compose.override.yml.default || true; echo "" ## Run shell in PHP container as regular user exec: - docker-compose exec --user $(CUID):$(CGID) php ash + kubectl exec -it deploy/sdc -c php -- su -s /bin/ash www-data -c ash ## Run shell in PHP container as root exec0: - docker-compose exec --user 0:0 php ash + kubectl exec -it deploy/sdc -c php -- ash down: @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" @@ -232,3 +244,6 @@ dev: drush: $(call php, $(filter-out "$@",$(MAKECMDGOALS))) $(info "To pass arguments use double dash: "make drush en devel -- -y"") + +logs: + kubectl logs -f deploy/sdc --all-containers=true \ No newline at end of file diff --git a/helm/.helmignore b/helm/.helmignore new file mode 100644 index 000000000..0e8a0eb36 --- /dev/null +++ b/helm/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/helm/Chart.yaml b/helm/Chart.yaml new file mode 100644 index 000000000..19c5b70f8 --- /dev/null +++ b/helm/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: sdc +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl new file mode 100644 index 000000000..c54488b5b --- /dev/null +++ b/helm/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "sdc.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "sdc.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "sdc.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "sdc.labels" -}} +helm.sh/chart: {{ include "sdc.chart" . }} +{{ include "sdc.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "sdc.selectorLabels" -}} +app.kubernetes.io/name: {{ include "sdc.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "sdc.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "sdc.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/helm/templates/configmap.yaml b/helm/templates/configmap.yaml new file mode 100644 index 000000000..851aae478 --- /dev/null +++ b/helm/templates/configmap.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-config +data: + upstream: | + upstream upstream { + server localhost:9000; + } \ No newline at end of file diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml new file mode 100644 index 000000000..5845422ee --- /dev/null +++ b/helm/templates/deployment.yaml @@ -0,0 +1,74 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Values.projectName }} + labels: + name: {{ .Values.projectName }} +spec: + revisionHistoryLimit: 0 + replicas: 1 + selector: + matchLabels: + name: {{ .Values.projectName }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.projectName }} + spec: + volumes: + - name: codebase + hostPath: + path: /home/dferlay/Sources/df-sdc # TODO: Variable for relative path + type: Directory + - name: nginx-config + configMap: + name: nginx-config + - name: cache-js + emptyDir: + medium: Memory + - name: cache-css + emptyDir: + medium: Memory + - name: cache-php + emptyDir: + medium: Memory + containers: + - name: php + image: skilldlabs/php:74-fpm + env: + - name: COMPOSER_MEMORY_LIMIT + value: "-1" + ports: + - containerPort: 9000 + protocol: TCP + volumeMounts: + - mountPath: /var/www/html + name: codebase + - mountPath: /var/www/html/web/sites/default/files/css + name: cache-css + - mountPath: /var/www/html/web/sites/default/files/js + name: cache-js + - mountPath: /var/www/html/web/sites/default/files/php + name: cache-php + - name: nginx + image: skilldlabs/nginx:1.20 + ports: + - containerPort: 80 + protocol: TCP + volumeMounts: + - mountPath: /var/www/html + name: codebase + - mountPath: /etc/nginx/upstream + name: nginx-config + subPath: upstream + - mountPath: /var/www/html/web/sites/default/files/css + name: cache-css + - mountPath: /var/www/html/web/sites/default/files/js + name: cache-js + - name: mail + image: skilldlabs/mailhog + restartPolicy: Always + nodeSelector: + kubernetes.io/hostname: sdc \ No newline at end of file diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml new file mode 100644 index 000000000..dd5d47ba2 --- /dev/null +++ b/helm/templates/ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1beta1 +kind: Ingress +metadata: + name: {{ .Values.projectName }} + labels: + mrn: {{ .Values.projectName }} + annotations: + kubernetes.io/tls-acme: "true" + kubernetes.io/ingress.class: web-ingress + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/from-to-www-redirect: "true" +spec: + rules: + - host: local.skilld.cloud + http: + paths: + - path: / + backend: + serviceName: {{ .Values.projectName }} + servicePort: 80 + tls: + - hosts: + - local.skilld.cloud + secretName: {{ .Values.projectName }}-tls \ No newline at end of file diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml new file mode 100644 index 000000000..6930cad3d --- /dev/null +++ b/helm/templates/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.projectName }} +spec: + ports: + - name: http + port: 80 + protocol: TCP + - name: mailhog + port: 8025 + protocol: TCP + selector: + mrn: {{ .Values.projectName }} \ No newline at end of file diff --git a/helm/values.yaml b/helm/values.yaml new file mode 100644 index 000000000..4177f88be --- /dev/null +++ b/helm/values.yaml @@ -0,0 +1,15 @@ +# Default values for sdc. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +projectName: yay + +image: + +ingress: + enabled: true + +service: + type: ClusterIP + port: 80 + diff --git a/kubernetes/sdc.yaml b/kubernetes/sdc.yaml new file mode 100644 index 000000000..68bdb8cd2 --- /dev/null +++ b/kubernetes/sdc.yaml @@ -0,0 +1,126 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-config +data: + upstream: | + upstream upstream { + server localhost:9000; + } +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sdc + labels: + name: sdc +spec: + revisionHistoryLimit: 0 + replicas: 1 + selector: + matchLabels: + name: sdc + strategy: + type: Recreate + template: + metadata: + labels: + name: sdc + spec: + volumes: + - name: codebase + hostPath: + path: /home/dferlay/Sources/df-sdc # TODO: Variable for relative path + type: Directory + - name: nginx-config + configMap: + name: nginx-config + - name: cache-js + emptyDir: + medium: Memory + - name: cache-css + emptyDir: + medium: Memory + - name: cache-php + emptyDir: + medium: Memory + containers: + - name: php + image: skilldlabs/php:74-fpm + env: + - name: COMPOSER_MEMORY_LIMIT + value: "-1" + ports: + - containerPort: 9000 + protocol: TCP + volumeMounts: + - mountPath: /var/www/html + name: codebase + - mountPath: /var/www/html/web/sites/default/files/css + name: cache-css + - mountPath: /var/www/html/web/sites/default/files/js + name: cache-js + - mountPath: /var/www/html/web/sites/default/files/php + name: cache-php + - name: nginx + image: skilldlabs/nginx:1.20 + ports: + - containerPort: 80 + protocol: TCP + volumeMounts: + - mountPath: /var/www/html + name: codebase + - mountPath: /etc/nginx/upstream + name: nginx-config + subPath: upstream + - mountPath: /var/www/html/web/sites/default/files/css + name: cache-css + - mountPath: /var/www/html/web/sites/default/files/js + name: cache-js + - name: mail + image: skilldlabs/mailhog + restartPolicy: Always + nodeSelector: + kubernetes.io/hostname: sdc +--- +apiVersion: v1 +kind: Service +metadata: + name: sdc +spec: + ports: + - name: http + port: 80 + protocol: TCP + - name: mailhog + port: 8025 + protocol: TCP + selector: + mrn: sdc +--- +apiVersion: networking.k8s.io/v1beta1 +kind: Ingress +metadata: + name: sdc + labels: + mrn: sdc + annotations: + kubernetes.io/tls-acme: "true" + kubernetes.io/ingress.class: web-ingress + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/from-to-www-redirect: "true" + # nginx.ingress.kubernetes.io/auth-url: {{ kb_ingress_auth_url }} + # nginx.ingress.kubernetes.io/proxy-body-size: {{ kb_ingress_proxy_body_size }} +spec: + rules: + - host: local.skilld.cloud + http: + paths: + - path: / + backend: + serviceName: sdc + servicePort: 80 + tls: + - hosts: + - local.skilld.cloud + secretName: sdc-tls From 0f50bb6653467954ca95c4ccfc1a70837c3a94ae Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 10 Jan 2022 17:07:22 +0100 Subject: [PATCH 02/38] Update --- Makefile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ca3ddd3f5..3d195acdc 100644 --- a/Makefile +++ b/Makefile @@ -72,10 +72,9 @@ fast: provision: # Check if enviroment variables has been defined ifeq ($(strip $(COMPOSE_PROJECT_NAME)),projectname) - $(info Project name can not be default, please enter project name.) - $(eval COMPOSE_PROJECT_NAME = $(strip $(shell read -p "Project name: " REPLY;echo -n $$REPLY))) # TODO: Sanitize lowercase/nospecialchar - $(shell sed -i -e '/COMPOSE_PROJECT_NAME=/ s/=.*/=$(COMPOSE_PROJECT_NAME)/' .env) - $(info Please review your project settings and run `make all` again.) + $(eval COMPOSE_PROJECT_NAME = $(strip $(shell read -p "- Please enter project name: " REPLY;echo -n $$REPLY))) + $(shell sed -i -e '/PROJECT_NAME=/ s/=.*/=$(COMPOSE_PROJECT_NAME)/' .env) + $(info - Run `make all` again.) exit 1 endif ifdef DB_MOUNT_DIR @@ -152,8 +151,8 @@ ifneq ("$(wildcard settings/settings.local.php)","") $(call php, drush cr) endif -REDIS_IS_INSTALLED := $(shell grep "redis.connection" web/sites/default/settings.php | tail -1 | wc -l || echo "0") redis-settings: + REDIS_IS_INSTALLED := $(shell grep "redis.connection" web/sites/default/settings.php | tail -1 | wc -l || echo "0") ifeq ($(REDIS_IS_INSTALLED), 1) @echo "Redis settings already installed, nothing to do" else @@ -246,4 +245,4 @@ drush: $(info "To pass arguments use double dash: "make drush en devel -- -y"") logs: - kubectl logs -f deploy/sdc --all-containers=true \ No newline at end of file + kubectl logs -f deploy/sdc --all-containers=true From 36199620486fdfb8a5e730d5a3e4c34e4a862712 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 11 Jan 2022 11:24:44 +0100 Subject: [PATCH 03/38] Update --- Makefile | 17 +- composer.lock | 15752 ++++++++++++++++++++++++++++++++++ helm/templates/ingress.yaml | 15 +- kubernetes/sdc.yaml | 13 +- 4 files changed, 15777 insertions(+), 20 deletions(-) create mode 100644 composer.lock diff --git a/Makefile b/Makefile index 3d195acdc..5e1de68e5 100644 --- a/Makefile +++ b/Makefile @@ -43,9 +43,9 @@ endif CURDIR=$(shell pwd) # Execute php container as regular user -php = kubectl exec -it deploy/sdc -c php -- su -s /bin/ash www-data -c "${1}" +php = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash www-data -c "${1}" # Execute php container as root user -php-0 = kubectl exec -it deploy/sdc -c php -- ${1} +php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} killall: /usr/local/bin/k3s-killall.sh @@ -72,7 +72,7 @@ fast: provision: # Check if enviroment variables has been defined ifeq ($(strip $(COMPOSE_PROJECT_NAME)),projectname) - $(eval COMPOSE_PROJECT_NAME = $(strip $(shell read -p "- Please enter project name: " REPLY;echo -n $$REPLY))) + $(eval COMPOSE_PROJECT_NAME = $(strip $(shell read -p "Please enter project name: " REPLY;echo -n $$REPLY))) $(shell sed -i -e '/PROJECT_NAME=/ s/=.*/=$(COMPOSE_PROJECT_NAME)/' .env) $(info - Run `make all` again.) exit 1 @@ -88,9 +88,8 @@ endif @echo "Build and run containers..." # TODO: Rename file # kubectl apply -f kubernetes/sdc.yaml - helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName=$(COMPOSE_PROJECT_NAME) sdc ./helm/ -# helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml sdc ./helm/ # https://github.com/k3s-io/k3s/issues/1126#issuecomment-567591888 - for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/sdc -c php -- "whoami" &> /dev/null && break || sleep 1; done; echo "Container is up !" + helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName="$(COMPOSE_PROJECT_NAME)" sdc ./helm/ # https://github.com/k3s-io/k3s/issues/1126#issuecomment-567591888 + for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 1; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) @@ -194,11 +193,11 @@ diff: ## Run shell in PHP container as regular user exec: - kubectl exec -it deploy/sdc -c php -- su -s /bin/ash www-data -c ash + kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash www-data -c ash ## Run shell in PHP container as root exec0: - kubectl exec -it deploy/sdc -c php -- ash + kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ash down: @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" @@ -245,4 +244,4 @@ drush: $(info "To pass arguments use double dash: "make drush en devel -- -y"") logs: - kubectl logs -f deploy/sdc --all-containers=true + kubectl logs -f deploy/$(COMPOSE_PROJECT_NAME) --all-containers=true diff --git a/composer.lock b/composer.lock new file mode 100644 index 000000000..8e6ee7fba --- /dev/null +++ b/composer.lock @@ -0,0 +1,15752 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "672eba5a7a77b6afe45625ea00cc112a", + "packages": [ + { + "name": "asm89/stack-cors", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08", + "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0 || ^4.8.10", + "squizlabs/php_codesniffer": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/Asm89/Stack/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/1.3.0" + }, + "time": "2019-12-24T22:41:47+00:00" + }, + { + "name": "chi-teck/drupal-code-generator", + "version": "1.33.1", + "source": { + "type": "git", + "url": "https://github.com/Chi-teck/drupal-code-generator.git", + "reference": "5f814e980b6f9cf1ca8c74cc9385c3d81090d388" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/5f814e980b6f9cf1ca8c74cc9385c3d81090d388", + "reference": "5f814e980b6f9cf1ca8c74cc9385c3d81090d388", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.5.9", + "symfony/console": "^3.4 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.4 || ^4.0", + "twig/twig": "^1.41 || ^2.12" + }, + "conflict": { + "drush/drush": "< 10.3.2" + }, + "bin": [ + "bin/dcg" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "files": [ + "src/bootstrap.php" + ], + "psr-4": { + "DrupalCodeGenerator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Drupal code generator", + "support": { + "issues": "https://github.com/Chi-teck/drupal-code-generator/issues", + "source": "https://github.com/Chi-teck/drupal-code-generator/tree/1.33.1" + }, + "time": "2020-12-05T05:59:11+00:00" + }, + { + "name": "composer/installers", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/d20a64ed3c94748397ff5973488761b22f6d3f19", + "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "replace": { + "roundcube/plugin-installer": "*", + "shama/baton": "*" + }, + "require-dev": { + "composer/composer": "1.6.* || ^2.0", + "composer/semver": "^1 || ^3", + "phpstan/phpstan": "^0.12.55", + "phpstan/phpstan-phpunit": "^0.12.16", + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.3" + }, + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Craft", + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "MantisBT", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Starbug", + "Thelia", + "Whmcs", + "WolfCMS", + "agl", + "aimeos", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "joomla", + "known", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "mediawiki", + "miaoxing", + "modulework", + "modx", + "moodle", + "osclass", + "pantheon", + "phpbb", + "piwik", + "ppi", + "processwire", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "sylius", + "symfony", + "tastyigniter", + "typo3", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "support": { + "issues": "https://github.com/composer/installers/issues", + "source": "https://github.com/composer/installers/tree/v1.12.0" + }, + "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": "2021-09-13T08:19:44+00:00" + }, + { + "name": "composer/semver", + "version": "3.2.6", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "83e511e247de329283478496f7a1e114c9517506" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", + "reference": "83e511e247de329283478496f7a1e114c9517506", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.54", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.2.6" + }, + "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": "2021-10-25T11:34:17+00:00" + }, + { + "name": "consolidation/annotated-command", + "version": "4.5.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/annotated-command.git", + "reference": "701a7abe8505abe89520837be798e15a3953a367" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/701a7abe8505abe89520837be798e15a3953a367", + "reference": "701a7abe8505abe89520837be798e15a3953a367", + "shasum": "" + }, + "require": { + "consolidation/output-formatters": "^4.1.1", + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/console": "^4.4.8|^5|^6", + "symfony/event-dispatcher": "^4.4.8|^5|^6", + "symfony/finder": "^4.4.8|^5|^6" + }, + "require-dev": { + "composer-runtime-api": "^2.0", + "phpunit/phpunit": "^7.5.20 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\AnnotatedCommand\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Initialize Symfony Console commands from annotated command class methods.", + "support": { + "issues": "https://github.com/consolidation/annotated-command/issues", + "source": "https://github.com/consolidation/annotated-command/tree/4.5.1" + }, + "time": "2021-12-30T04:00:37+00:00" + }, + { + "name": "consolidation/config", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/config.git", + "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/config/zipball/cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1", + "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "grasmash/expander": "^1", + "php": ">=5.4.0" + }, + "require-dev": { + "g1a/composer-test-scenarios": "^3", + "php-coveralls/php-coveralls": "^1", + "phpunit/phpunit": "^5", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^2.5|^3|^4", + "symfony/yaml": "^2.8.11|^3|^4" + }, + "suggest": { + "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader" + }, + "type": "library", + "extra": { + "scenarios": { + "symfony4": { + "require-dev": { + "symfony/console": "^4.0" + }, + "config": { + "platform": { + "php": "7.1.3" + } + } + }, + "symfony2": { + "require-dev": { + "symfony/console": "^2.8", + "symfony/event-dispatcher": "^2.8", + "phpunit/phpunit": "^4.8.36" + }, + "remove": [ + "php-coveralls/php-coveralls" + ], + "config": { + "platform": { + "php": "5.4.8" + } + } + } + }, + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Provide configuration services for a commandline tool.", + "support": { + "issues": "https://github.com/consolidation/config/issues", + "source": "https://github.com/consolidation/config/tree/master" + }, + "time": "2019-03-03T19:37:04+00:00" + }, + { + "name": "consolidation/filter-via-dot-access-data", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/consolidation/filter-via-dot-access-data.git", + "reference": "a53e96c6b9f7f042f5e085bf911f3493cea823c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/filter-via-dot-access-data/zipball/a53e96c6b9f7f042f5e085bf911f3493cea823c6", + "reference": "a53e96c6b9f7f042f5e085bf911f3493cea823c6", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "php": ">=5.5.0" + }, + "require-dev": { + "consolidation/robo": "^1.2.3", + "g1a/composer-test-scenarios": "^3", + "knplabs/github-api": "^2.7", + "php-coveralls/php-coveralls": "^1", + "php-http/guzzle6-adapter": "^1.1", + "phpunit/phpunit": "^5", + "squizlabs/php_codesniffer": "^2.8", + "symfony/console": "^2.8|^3|^4" + }, + "type": "library", + "extra": { + "scenarios": { + "phpunit5": { + "require-dev": { + "phpunit/phpunit": "^5.7.27" + }, + "remove": [ + "php-coveralls/php-coveralls" + ], + "config": { + "platform": { + "php": "5.6.33" + } + } + } + }, + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Filter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "This project uses dflydev/dot-access-data to provide simple output filtering for applications built with annotated-command / Robo.", + "support": { + "source": "https://github.com/consolidation/filter-via-dot-access-data/tree/1.0.0" + }, + "time": "2019-01-18T06:05:07+00:00" + }, + { + "name": "consolidation/log", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/consolidation/log.git", + "reference": "fc9ec5476ba13a31778695bd2d4f2fa0b0684356" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/log/zipball/fc9ec5476ba13a31778695bd2d4f2fa0b0684356", + "reference": "fc9ec5476ba13a31778695bd2d4f2fa0b0684356", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1.0", + "symfony/console": "^4 || ^5 || ^6" + }, + "require-dev": { + "phpunit/phpunit": ">=7.5.20", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", + "support": { + "issues": "https://github.com/consolidation/log/issues", + "source": "https://github.com/consolidation/log/tree/2.0.4" + }, + "time": "2021-12-30T19:05:18+00:00" + }, + { + "name": "consolidation/output-formatters", + "version": "4.2.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/output-formatters.git", + "reference": "4413d7c732afb5d7bdac565c41aa9c8c49c48888" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/4413d7c732afb5d7bdac565c41aa9c8c49c48888", + "reference": "4413d7c732afb5d7bdac565c41aa9c8c49c48888", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "php": ">=7.1.3", + "symfony/console": "^4|^5|^6", + "symfony/finder": "^4|^5|^6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.4.2", + "phpunit/phpunit": ">=7", + "squizlabs/php_codesniffer": "^3", + "symfony/var-dumper": "^4|^5|^6", + "symfony/yaml": "^4|^5|^6", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "suggest": { + "symfony/var-dumper": "For using the var_dump formatter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\OutputFormatters\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Format text by applying transformations provided by plug-in formatters.", + "support": { + "issues": "https://github.com/consolidation/output-formatters/issues", + "source": "https://github.com/consolidation/output-formatters/tree/4.2.1" + }, + "time": "2021-12-30T03:58:00+00:00" + }, + { + "name": "consolidation/robo", + "version": "3.0.7", + "source": { + "type": "git", + "url": "https://github.com/consolidation/robo.git", + "reference": "57012db2a93c904ed0a7b9d8676c0325c0366bc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/robo/zipball/57012db2a93c904ed0a7b9d8676c0325c0366bc8", + "reference": "57012db2a93c904ed0a7b9d8676c0325c0366bc8", + "shasum": "" + }, + "require": { + "consolidation/annotated-command": "^4.3", + "consolidation/config": "^1.2.1 || ^2.0.1", + "consolidation/log": "^1.1.1 || ^2.0.2", + "consolidation/output-formatters": "^4.1.2", + "consolidation/self-update": "^2.0", + "league/container": "^3.3.1", + "php": ">=7.1.3", + "symfony/console": "^4.4.19 || ^5 || ^6", + "symfony/event-dispatcher": "^4.4.19 || ^5 || ^6", + "symfony/filesystem": "^4.4.9 || ^5 || ^6", + "symfony/finder": "^4.4.9 || ^5 || ^6", + "symfony/process": "^4.4.9 || ^5", + "symfony/yaml": "^4.4 || ^5 || ^6" + }, + "conflict": { + "codegyre/robo": "*" + }, + "require-dev": { + "natxet/cssmin": "3.0.4", + "patchwork/jsqueeze": "^2", + "pear/archive_tar": "^1.4.4", + "phpunit/phpunit": "^7.5.20 || ^8", + "squizlabs/php_codesniffer": "^3.6", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "suggest": { + "natxet/cssmin": "For minifying CSS files in taskMinify", + "patchwork/jsqueeze": "For minifying JS files in taskMinify", + "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively.", + "totten/lurkerlite": "For monitoring filesystem changes in taskWatch" + }, + "bin": [ + "robo" + ], + "type": "library", + "extra": { + "scenarios": { + "symfony4": { + "require": { + "symfony/console": "^4.4.11", + "symfony/event-dispatcher": "^4.4.11", + "symfony/filesystem": "^4.4.11", + "symfony/finder": "^4.4.11", + "symfony/process": "^4.4.11", + "phpunit/phpunit": "^6", + "nikic/php-parser": "^2" + }, + "remove": [ + "codeception/phpunit-wrapper" + ], + "config": { + "platform": { + "php": "7.1.3" + } + } + } + }, + "branch-alias": { + "dev-master": "2.x-dev", + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Robo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "Modern task runner", + "support": { + "issues": "https://github.com/consolidation/robo/issues", + "source": "https://github.com/consolidation/robo/tree/3.0.7" + }, + "time": "2021-12-31T01:01:31+00:00" + }, + { + "name": "consolidation/self-update", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/consolidation/self-update.git", + "reference": "117dcc9494dc970a6ae307103c41d654e6253bc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/self-update/zipball/117dcc9494dc970a6ae307103c41d654e6253bc4", + "reference": "117dcc9494dc970a6ae307103c41d654e6253bc4", + "shasum": "" + }, + "require": { + "composer/semver": "^3.2", + "php": ">=5.5.0", + "symfony/console": "^2.8 || ^3 || ^4 || ^5 || ^6", + "symfony/filesystem": "^2.5 || ^3 || ^4 || ^5 || ^6" + }, + "bin": [ + "scripts/release" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "SelfUpdate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander Menk", + "email": "menk@mestrona.net" + }, + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Provides a self:update command for Symfony Console applications.", + "support": { + "issues": "https://github.com/consolidation/self-update/issues", + "source": "https://github.com/consolidation/self-update/tree/2.0.3" + }, + "time": "2021-12-30T19:08:32+00:00" + }, + { + "name": "consolidation/site-alias", + "version": "3.1.3", + "source": { + "type": "git", + "url": "https://github.com/consolidation/site-alias.git", + "reference": "e2784362e98f315c996fb2b9ed80a9118a0ba8b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/site-alias/zipball/e2784362e98f315c996fb2b9ed80a9118a0ba8b7", + "reference": "e2784362e98f315c996fb2b9ed80a9118a0ba8b7", + "shasum": "" + }, + "require": { + "consolidation/config": "^1.2.1|^2", + "php": ">=5.5.0", + "symfony/finder": "~2.3|^3|^4.4|^5" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.4.2", + "phpunit/phpunit": ">=7", + "squizlabs/php_codesniffer": "^3", + "symfony/var-dumper": "^4", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\SiteAlias\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + }, + { + "name": "Moshe Weitzman", + "email": "weitzman@tejasa.com" + } + ], + "description": "Manage alias records for local and remote sites.", + "support": { + "issues": "https://github.com/consolidation/site-alias/issues", + "source": "https://github.com/consolidation/site-alias/tree/3.1.3" + }, + "time": "2022-01-03T19:00:28+00:00" + }, + { + "name": "consolidation/site-process", + "version": "4.1.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/site-process.git", + "reference": "4817b35b2f98a2e3ad82956a968b49f7b257d26c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/site-process/zipball/4817b35b2f98a2e3ad82956a968b49f7b257d26c", + "reference": "4817b35b2f98a2e3ad82956a968b49f7b257d26c", + "shasum": "" + }, + "require": { + "consolidation/config": "^1.2.1|^2", + "consolidation/site-alias": "^3", + "php": ">=7.1.3", + "symfony/console": "^2.8.52|^3|^4.4|^5", + "symfony/process": "^4.3.4" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.20|^8.5.14", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\SiteProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + }, + { + "name": "Moshe Weitzman", + "email": "weitzman@tejasa.com" + } + ], + "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.", + "support": { + "issues": "https://github.com/consolidation/site-process/issues", + "source": "https://github.com/consolidation/site-process/tree/4.1.1" + }, + "time": "2022-01-03T18:57:42+00:00" + }, + { + "name": "cweagans/composer-patches", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "9888dcc74993c030b75f3dd548bb5e20cdbd740c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/9888dcc74993c030b75f3dd548bb5e20cdbd740c", + "reference": "9888dcc74993c030b75f3dd548bb5e20cdbd740c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages.", + "support": { + "issues": "https://github.com/cweagans/composer-patches/issues", + "source": "https://github.com/cweagans/composer-patches/tree/1.7.1" + }, + "time": "2021-06-08T15:12:46+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a", + "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Dflydev\\DotAccessData": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/master" + }, + "time": "2017-01-20T21:14:22+00:00" + }, + { + "name": "doctrine/annotations", + "version": "1.13.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", + "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.2" + }, + "time": "2021-08-05T19:00:23+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.1" + }, + "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%2Flexer", + "type": "tidelift" + } + ], + "time": "2020-05-25T17:44:05+00:00" + }, + { + "name": "doctrine/reflection", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/reflection.git", + "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", + "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0 || ^8.2.0", + "doctrine/common": "^2.10", + "phpstan/phpstan": "^0.11.0 || ^0.12.20", + "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", + "phpunit/phpunit": "^7.5 || ^9.1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", + "homepage": "https://www.doctrine-project.org/projects/reflection.html", + "keywords": [ + "reflection", + "static" + ], + "support": { + "issues": "https://github.com/doctrine/reflection/issues", + "source": "https://github.com/doctrine/reflection/tree/1.2.2" + }, + "abandoned": "roave/better-reflection", + "time": "2020-10-27T21:46:55+00:00" + }, + { + "name": "drupal/better_normalizers", + "version": "1.0.0-beta4", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/better_normalizers.git", + "reference": "8.x-1.0-beta4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/better_normalizers-8.x-1.0-beta4.zip", + "reference": "8.x-1.0-beta4", + "shasum": "19e63328ca9ab77aaa328d87efd7429f4adb386e" + }, + "require": { + "drupal/core": "^8.7.7 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-beta4", + "datestamp": "1576069085", + "security-coverage": { + "status": "not-covered", + "message": "Project has not opted into security advisory coverage!" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Christian Fritsch (chr.fritsch)", + "homepage": "https://www.drupal.org/u/chrfritsch", + "role": "Maintainer" + }, + { + "name": "Andrey Postnikov (andypost)", + "homepage": "https://www.drupal.org/u/andypost", + "role": "Maintainer" + }, + { + "name": "Sam Becker (Sam152)", + "homepage": "https://www.drupal.org/u/sam152", + "role": "Maintainer" + }, + { + "name": "Lee Rowlands (larowlan)", + "homepage": "https://www.drupal.org/u/larowlan", + "role": "Maintainer" + } + ], + "description": "Improve the normalizers in core.", + "homepage": "https://www.drupal.org/project/better_normalizers", + "support": { + "source": "https://git.drupal.org/project/better_normalizers.git", + "issues": "https://www.drupal.org/project/issues/better_normalizers" + } + }, + { + "name": "drupal/block_content_permissions", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/block_content_permissions.git", + "reference": "8.x-1.10" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/block_content_permissions-8.x-1.10.zip", + "reference": "8.x-1.10", + "shasum": "03cfd1ff8edb05ea0f953916b23ef7b3aed82ab4" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "suggest": { + "drupal/block_region_permissions": "Block Region Permissions adds permissions for administering 'blocks' based on each theme's regions." + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.10", + "datestamp": "1593975004", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Joshua Roberson", + "homepage": "https://www.drupal.org/u/joshuaroberson", + "role": "Maintainer" + } + ], + "description": "Block Content Permissions adds permissions for administering 'block content types' and 'block content'.", + "homepage": "https://www.drupal.org/project/block_content_permissions", + "support": { + "source": "https://git.drupalcode.org/project/block_content_permissions", + "issues": "https://www.drupal.org/project/issues/block_content_permissions" + } + }, + { + "name": "drupal/coffee", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/coffee.git", + "reference": "8.x-1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/coffee-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "3c3f251004ec0d0995a86407592f7f54872ebe87" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.2", + "datestamp": "1617351412", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "branch-alias": { + "dev-8.x-1.x": "8.1.x-dev" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Michael Mol", + "homepage": "https://www.drupal.org/u/michaelmol", + "role": "Maintainer" + }, + { + "name": "Marco", + "homepage": "https://www.drupal.org/u/willzyx", + "role": "Maintainer" + }, + { + "name": "Oliver Köhler", + "homepage": "https://www.drupal.org/u/nebel54", + "role": "Maintainer" + }, + { + "name": "Alli Price", + "homepage": "https://www.drupal.org/u/heylookalive", + "role": "Maintainer" + }, + { + "name": "See other contributors", + "homepage": "https://www.drupal.org/node/1356930/committers", + "role": "contributor" + } + ], + "description": "Provides an Alfred like search box to navigate within your site.", + "homepage": "https://drupal.org/project/coffee", + "support": { + "source": "https://git.drupalcode.org/project/coffee", + "issues": "https://drupal.org/project/issues/coffee", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, + { + "name": "drupal/config_override_warn", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/config_override_warn.git", + "reference": "8.x-1.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_override_warn-8.x-1.3.zip", + "reference": "8.x-1.3", + "shasum": "fbac9d7a435c6d6acf55df11343666d2d116ba9a" + }, + "require": { + "drupal/core": "^8.7.7 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.3", + "datestamp": "1587059022", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" + } + ], + "description": "Provide a warning message on configuration forms when any values on the form are possibly being overridden.", + "homepage": "https://www.drupal.org/project/config_override_warn", + "support": { + "source": "https://git.drupalcode.org/project/config_override_warn" + } + }, + { + "name": "drupal/core", + "version": "9.3.2", + "source": { + "type": "git", + "url": "https://github.com/drupal/core.git", + "reference": "6c9ba6b6314550e7efb8f5f4e2a40f54cfd6aee1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drupal/core/zipball/6c9ba6b6314550e7efb8f5f4e2a40f54cfd6aee1", + "reference": "6c9ba6b6314550e7efb8f5f4e2a40f54cfd6aee1", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^1.1", + "composer/semver": "^3.0", + "doctrine/annotations": "^1.12", + "doctrine/reflection": "^1.1", + "egulias/email-validator": "^2.1.22|^3.0", + "ext-date": "*", + "ext-dom": "*", + "ext-filter": "*", + "ext-gd": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-pdo": "*", + "ext-session": "*", + "ext-simplexml": "*", + "ext-spl": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "guzzlehttp/guzzle": "^6.5.2", + "laminas/laminas-diactoros": "^2.1", + "laminas/laminas-feed": "^2.12", + "masterminds/html5": "^2.1", + "pear/archive_tar": "^1.4.14", + "php": ">=7.3.0", + "psr/log": "^1.0", + "stack/builder": "^1.0", + "symfony-cmf/routing": "^2.1", + "symfony/console": "^4.4", + "symfony/dependency-injection": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-foundation": "^4.4.7", + "symfony/http-kernel": "^4.4", + "symfony/mime": "^5.4", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/process": "^4.4", + "symfony/psr-http-message-bridge": "^2.0", + "symfony/routing": "^4.4", + "symfony/serializer": "^4.4", + "symfony/translation": "^4.4", + "symfony/validator": "^4.4", + "symfony/yaml": "^4.4.19", + "twig/twig": "^2.12.0", + "typo3/phar-stream-wrapper": "^3.1.3" + }, + "conflict": { + "drush/drush": "<8.1.10" + }, + "replace": { + "drupal/action": "self.version", + "drupal/aggregator": "self.version", + "drupal/automated_cron": "self.version", + "drupal/ban": "self.version", + "drupal/bartik": "self.version", + "drupal/basic_auth": "self.version", + "drupal/big_pipe": "self.version", + "drupal/block": "self.version", + "drupal/block_content": "self.version", + "drupal/book": "self.version", + "drupal/breakpoint": "self.version", + "drupal/ckeditor": "self.version", + "drupal/ckeditor5": "self.version", + "drupal/claro": "self.version", + "drupal/classy": "self.version", + "drupal/color": "self.version", + "drupal/comment": "self.version", + "drupal/config": "self.version", + "drupal/config_translation": "self.version", + "drupal/contact": "self.version", + "drupal/content_moderation": "self.version", + "drupal/content_translation": "self.version", + "drupal/contextual": "self.version", + "drupal/core-annotation": "self.version", + "drupal/core-assertion": "self.version", + "drupal/core-bridge": "self.version", + "drupal/core-class-finder": "self.version", + "drupal/core-datetime": "self.version", + "drupal/core-dependency-injection": "self.version", + "drupal/core-diff": "self.version", + "drupal/core-discovery": "self.version", + "drupal/core-event-dispatcher": "self.version", + "drupal/core-file-cache": "self.version", + "drupal/core-file-security": "self.version", + "drupal/core-filesystem": "self.version", + "drupal/core-front-matter": "self.version", + "drupal/core-gettext": "self.version", + "drupal/core-graph": "self.version", + "drupal/core-http-foundation": "self.version", + "drupal/core-php-storage": "self.version", + "drupal/core-plugin": "self.version", + "drupal/core-proxy-builder": "self.version", + "drupal/core-render": "self.version", + "drupal/core-serialization": "self.version", + "drupal/core-transliteration": "self.version", + "drupal/core-utility": "self.version", + "drupal/core-uuid": "self.version", + "drupal/core-version": "self.version", + "drupal/datetime": "self.version", + "drupal/datetime_range": "self.version", + "drupal/dblog": "self.version", + "drupal/dynamic_page_cache": "self.version", + "drupal/editor": "self.version", + "drupal/entity_reference": "self.version", + "drupal/field": "self.version", + "drupal/field_layout": "self.version", + "drupal/field_ui": "self.version", + "drupal/file": "self.version", + "drupal/filter": "self.version", + "drupal/forum": "self.version", + "drupal/hal": "self.version", + "drupal/help": "self.version", + "drupal/help_topics": "self.version", + "drupal/history": "self.version", + "drupal/image": "self.version", + "drupal/inline_form_errors": "self.version", + "drupal/jsonapi": "self.version", + "drupal/language": "self.version", + "drupal/layout_builder": "self.version", + "drupal/layout_discovery": "self.version", + "drupal/link": "self.version", + "drupal/locale": "self.version", + "drupal/media": "self.version", + "drupal/media_library": "self.version", + "drupal/menu_link_content": "self.version", + "drupal/menu_ui": "self.version", + "drupal/migrate": "self.version", + "drupal/migrate_drupal": "self.version", + "drupal/migrate_drupal_multilingual": "self.version", + "drupal/migrate_drupal_ui": "self.version", + "drupal/minimal": "self.version", + "drupal/node": "self.version", + "drupal/olivero": "self.version", + "drupal/options": "self.version", + "drupal/page_cache": "self.version", + "drupal/path": "self.version", + "drupal/path_alias": "self.version", + "drupal/quickedit": "self.version", + "drupal/rdf": "self.version", + "drupal/responsive_image": "self.version", + "drupal/rest": "self.version", + "drupal/search": "self.version", + "drupal/serialization": "self.version", + "drupal/settings_tray": "self.version", + "drupal/seven": "self.version", + "drupal/shortcut": "self.version", + "drupal/standard": "self.version", + "drupal/stark": "self.version", + "drupal/statistics": "self.version", + "drupal/syslog": "self.version", + "drupal/system": "self.version", + "drupal/taxonomy": "self.version", + "drupal/telephone": "self.version", + "drupal/text": "self.version", + "drupal/toolbar": "self.version", + "drupal/tour": "self.version", + "drupal/tracker": "self.version", + "drupal/update": "self.version", + "drupal/user": "self.version", + "drupal/views": "self.version", + "drupal/views_ui": "self.version", + "drupal/workflows": "self.version", + "drupal/workspaces": "self.version" + }, + "type": "drupal-core", + "extra": { + "drupal-scaffold": { + "file-mapping": { + "[project-root]/.editorconfig": "assets/scaffold/files/editorconfig", + "[project-root]/.gitattributes": "assets/scaffold/files/gitattributes", + "[web-root]/.csslintrc": "assets/scaffold/files/csslintrc", + "[web-root]/.eslintignore": "assets/scaffold/files/eslintignore", + "[web-root]/.eslintrc.json": "assets/scaffold/files/eslintrc.json", + "[web-root]/.ht.router.php": "assets/scaffold/files/ht.router.php", + "[web-root]/.htaccess": "assets/scaffold/files/htaccess", + "[web-root]/example.gitignore": "assets/scaffold/files/example.gitignore", + "[web-root]/index.php": "assets/scaffold/files/index.php", + "[web-root]/INSTALL.txt": "assets/scaffold/files/drupal.INSTALL.txt", + "[web-root]/README.md": "assets/scaffold/files/drupal.README.md", + "[web-root]/robots.txt": "assets/scaffold/files/robots.txt", + "[web-root]/update.php": "assets/scaffold/files/update.php", + "[web-root]/web.config": "assets/scaffold/files/web.config", + "[web-root]/sites/README.txt": "assets/scaffold/files/sites.README.txt", + "[web-root]/sites/development.services.yml": "assets/scaffold/files/development.services.yml", + "[web-root]/sites/example.settings.local.php": "assets/scaffold/files/example.settings.local.php", + "[web-root]/sites/example.sites.php": "assets/scaffold/files/example.sites.php", + "[web-root]/sites/default/default.services.yml": "assets/scaffold/files/default.services.yml", + "[web-root]/sites/default/default.settings.php": "assets/scaffold/files/default.settings.php", + "[web-root]/modules/README.txt": "assets/scaffold/files/modules.README.txt", + "[web-root]/profiles/README.txt": "assets/scaffold/files/profiles.README.txt", + "[web-root]/themes/README.txt": "assets/scaffold/files/themes.README.txt" + } + } + }, + "autoload": { + "psr-4": { + "Drupal\\Core\\": "lib/Drupal/Core", + "Drupal\\Component\\": "lib/Drupal/Component", + "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver" + }, + "classmap": [ + "lib/Drupal.php", + "lib/Drupal/Component/DependencyInjection/Container.php", + "lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php", + "lib/Drupal/Component/FileCache/FileCacheFactory.php", + "lib/Drupal/Component/Utility/Timer.php", + "lib/Drupal/Component/Utility/Unicode.php", + "lib/Drupal/Core/Cache/Cache.php", + "lib/Drupal/Core/Cache/CacheBackendInterface.php", + "lib/Drupal/Core/Cache/CacheTagsChecksumInterface.php", + "lib/Drupal/Core/Cache/CacheTagsChecksumTrait.php", + "lib/Drupal/Core/Cache/CacheTagsInvalidatorInterface.php", + "lib/Drupal/Core/Cache/DatabaseBackend.php", + "lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php", + "lib/Drupal/Core/Database/Connection.php", + "lib/Drupal/Core/Database/Database.php", + "lib/Drupal/Core/Database/Driver/mysql/Connection.php", + "lib/Drupal/Core/Database/Driver/pgsql/Connection.php", + "lib/Drupal/Core/Database/Driver/sqlite/Connection.php", + "lib/Drupal/Core/Database/Statement.php", + "lib/Drupal/Core/Database/StatementInterface.php", + "lib/Drupal/Core/DependencyInjection/Container.php", + "lib/Drupal/Core/DrupalKernel.php", + "lib/Drupal/Core/DrupalKernelInterface.php", + "lib/Drupal/Core/Http/InputBag.php", + "lib/Drupal/Core/Installer/InstallerRedirectTrait.php", + "lib/Drupal/Core/Site/Settings.php" + ], + "files": [ + "includes/bootstrap.inc", + "includes/guzzle_php81_shim.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Drupal is an open source content management platform powering millions of websites and applications.", + "support": { + "source": "https://github.com/drupal/core/tree/9.3.2" + }, + "time": "2022-01-05T02:55:30+00:00" + }, + { + "name": "drupal/core-composer-scaffold", + "version": "9.3.2", + "source": { + "type": "git", + "url": "https://github.com/drupal/core-composer-scaffold.git", + "reference": "d3e0b1d707125c5de0f54315906e65654c3608da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/d3e0b1d707125c5de0f54315906e65654c3608da", + "reference": "d3e0b1d707125c5de0f54315906e65654c3608da", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1 || ^2", + "php": ">=7.3.0" + }, + "conflict": { + "drupal-composer/drupal-scaffold": "*" + }, + "require-dev": { + "composer/composer": "^1.8@stable" + }, + "type": "composer-plugin", + "extra": { + "class": "Drupal\\Composer\\Plugin\\Scaffold\\Plugin", + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Drupal\\Composer\\Plugin\\Scaffold\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "A flexible Composer project scaffold builder.", + "homepage": "https://www.drupal.org/project/drupal", + "keywords": [ + "drupal" + ], + "support": { + "source": "https://github.com/drupal/core-composer-scaffold/tree/9.3.2" + }, + "time": "2021-11-19T09:52:23+00:00" + }, + { + "name": "drupal/core-project-message", + "version": "9.3.2", + "source": { + "type": "git", + "url": "https://github.com/drupal/core-project-message.git", + "reference": "812d6da43dd49cc210af62e80fa92189e68e565a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drupal/core-project-message/zipball/812d6da43dd49cc210af62e80fa92189e68e565a", + "reference": "812d6da43dd49cc210af62e80fa92189e68e565a", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1 || ^2", + "php": ">=7.3.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Drupal\\Composer\\Plugin\\ProjectMessage\\MessagePlugin" + }, + "autoload": { + "psr-4": { + "Drupal\\Composer\\Plugin\\ProjectMessage\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Adds a message after Composer installation.", + "homepage": "https://www.drupal.org/project/drupal", + "keywords": [ + "drupal" + ], + "support": { + "source": "https://github.com/drupal/core-project-message/tree/9.3.2" + }, + "time": "2020-09-14T13:40:36+00:00" + }, + { + "name": "drupal/core-recommended", + "version": "9.3.2", + "source": { + "type": "git", + "url": "https://github.com/drupal/core-recommended.git", + "reference": "9f570d6bf6e568b8c2deab02349a11fad3d1e272" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/9f570d6bf6e568b8c2deab02349a11fad3d1e272", + "reference": "9f570d6bf6e568b8c2deab02349a11fad3d1e272", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "1.3.0", + "composer/semver": "3.2.6", + "doctrine/annotations": "1.13.2", + "doctrine/lexer": "1.2.1", + "doctrine/reflection": "1.2.2", + "drupal/core": "9.3.2", + "egulias/email-validator": "3.1.2", + "guzzlehttp/guzzle": "6.5.5", + "guzzlehttp/promises": "1.5.1", + "guzzlehttp/psr7": "1.8.3", + "laminas/laminas-diactoros": "2.8.0", + "laminas/laminas-escaper": "2.9.0", + "laminas/laminas-feed": "2.15.0", + "laminas/laminas-stdlib": "3.6.1", + "masterminds/html5": "2.7.5", + "pear/archive_tar": "1.4.14", + "pear/console_getopt": "v1.4.3", + "pear/pear-core-minimal": "v1.10.11", + "pear/pear_exception": "v1.0.2", + "psr/cache": "1.0.1", + "psr/container": "1.1.1", + "psr/http-factory": "1.0.1", + "psr/http-message": "1.0.1", + "psr/log": "1.1.4", + "ralouphie/getallheaders": "3.0.3", + "stack/builder": "v1.0.6", + "symfony-cmf/routing": "2.3.4", + "symfony/console": "v4.4.34", + "symfony/debug": "v4.4.31", + "symfony/dependency-injection": "v4.4.34", + "symfony/deprecation-contracts": "v2.5.0", + "symfony/error-handler": "v4.4.34", + "symfony/event-dispatcher": "v4.4.34", + "symfony/event-dispatcher-contracts": "v1.1.11", + "symfony/http-client-contracts": "v2.5.0", + "symfony/http-foundation": "v4.4.34", + "symfony/http-kernel": "v4.4.35", + "symfony/mime": "v5.4.0", + "symfony/polyfill-ctype": "v1.23.0", + "symfony/polyfill-iconv": "v1.23.0", + "symfony/polyfill-intl-idn": "v1.23.0", + "symfony/polyfill-intl-normalizer": "v1.23.0", + "symfony/polyfill-mbstring": "v1.23.1", + "symfony/polyfill-php80": "v1.23.1", + "symfony/process": "v4.4.35", + "symfony/psr-http-message-bridge": "v2.1.2", + "symfony/routing": "v4.4.34", + "symfony/serializer": "v4.4.35", + "symfony/service-contracts": "v2.5.0", + "symfony/translation": "v4.4.34", + "symfony/translation-contracts": "v2.5.0", + "symfony/validator": "v4.4.35", + "symfony/var-dumper": "v5.4.0", + "symfony/yaml": "v4.4.34", + "twig/twig": "v2.14.7", + "typo3/phar-stream-wrapper": "v3.1.7" + }, + "conflict": { + "webflo/drupal-core-strict": "*" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Locked core dependencies; require this project INSTEAD OF drupal/core.", + "support": { + "source": "https://github.com/drupal/core-recommended/tree/9.3.2" + }, + "time": "2022-01-05T02:55:30+00:00" + }, + { + "name": "drupal/core-vendor-hardening", + "version": "9.3.2", + "source": { + "type": "git", + "url": "https://github.com/drupal/core-vendor-hardening.git", + "reference": "9df7917c08e81b2b5f94c1c101c03326ef462cb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drupal/core-vendor-hardening/zipball/9df7917c08e81b2b5f94c1c101c03326ef462cb4", + "reference": "9df7917c08e81b2b5f94c1c101c03326ef462cb4", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1 || ^2", + "php": ">=7.3.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Drupal\\Composer\\Plugin\\VendorHardening\\VendorHardeningPlugin" + }, + "autoload": { + "psr-4": { + "Drupal\\Composer\\Plugin\\VendorHardening\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Hardens the vendor directory for when it's in the docroot.", + "homepage": "https://www.drupal.org/project/drupal", + "keywords": [ + "drupal" + ], + "support": { + "source": "https://github.com/drupal/core-vendor-hardening/tree/9.3.2" + }, + "time": "2021-11-15T02:22:54+00:00" + }, + { + "name": "drupal/crop", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/crop.git", + "reference": "8.x-2.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/crop-8.x-2.1.zip", + "reference": "8.x-2.1", + "shasum": "c03541907d59874ca8a81f574258f6c0de8cbdc8" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.1", + "datestamp": "1585251827", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Drupal Media Team", + "homepage": "https://www.drupal.org/user/3260690" + }, + { + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "slashrsm", + "homepage": "https://www.drupal.org/user/744628" + }, + { + "name": "woprrr", + "homepage": "https://www.drupal.org/user/858604" + } + ], + "description": "Provides storage and API for image crops.", + "homepage": "https://www.drupal.org/project/crop", + "support": { + "source": "https://git.drupalcode.org/project/crop", + "issues": "https://www.drupal.org/project/issues/crop" + } + }, + { + "name": "drupal/ctools", + "version": "3.7.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/ctools.git", + "reference": "8.x-3.7" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/ctools-8.x-3.7.zip", + "reference": "8.x-3.7", + "shasum": "b11c0981a1d2ab3cc9e8e614a337d8e2a2a70c0e" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.7", + "datestamp": "1623860918", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "branch-alias": { + "dev-8.x-3.x": "3.x-dev" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Kris Vanderwater (EclipseGc)", + "homepage": "https://www.drupal.org/u/eclipsegc", + "role": "Maintainer" + }, + { + "name": "Jakob Perry (japerry)", + "homepage": "https://www.drupal.org/u/japerry", + "role": "Maintainer" + }, + { + "name": "Tim Plunkett (tim.plunkett)", + "homepage": "https://www.drupal.org/u/timplunkett", + "role": "Maintainer" + }, + { + "name": "James Gilliland (neclimdul)", + "homepage": "https://www.drupal.org/u/neclimdul", + "role": "Maintainer" + }, + { + "name": "Daniel Wehner (dawehner)", + "homepage": "https://www.drupal.org/u/dawehner", + "role": "Maintainer" + }, + { + "name": "joelpittet", + "homepage": "https://www.drupal.org/user/160302" + }, + { + "name": "merlinofchaos", + "homepage": "https://www.drupal.org/user/26979" + }, + { + "name": "neclimdul", + "homepage": "https://www.drupal.org/user/48673" + }, + { + "name": "sdboyer", + "homepage": "https://www.drupal.org/user/146719" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + }, + { + "name": "tim.plunkett", + "homepage": "https://www.drupal.org/user/241634" + } + ], + "description": "Provides a number of utility and helper APIs for Drupal developers and site builders.", + "homepage": "https://www.drupal.org/project/ctools", + "support": { + "source": "https://git.drupalcode.org/project/ctools", + "issues": "https://www.drupal.org/project/issues/ctools" + } + }, + { + "name": "drupal/ctools_block", + "version": "3.7.0", + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/ctools": "*" + }, + "type": "metapackage", + "extra": { + "drupal": { + "version": "8.x-3.7", + "datestamp": "1623860918", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "EclipseGc", + "homepage": "https://www.drupal.org/user/61203" + }, + { + "name": "damiankloip", + "homepage": "https://www.drupal.org/user/1037976" + }, + { + "name": "dawehner", + "homepage": "https://www.drupal.org/user/99340" + }, + { + "name": "esmerel", + "homepage": "https://www.drupal.org/user/164022" + }, + { + "name": "japerry", + "homepage": "https://www.drupal.org/user/45640" + }, + { + "name": "joelpittet", + "homepage": "https://www.drupal.org/user/160302" + }, + { + "name": "merlinofchaos", + "homepage": "https://www.drupal.org/user/26979" + }, + { + "name": "neclimdul", + "homepage": "https://www.drupal.org/user/48673" + }, + { + "name": "sdboyer", + "homepage": "https://www.drupal.org/user/146719" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + }, + { + "name": "tim.plunkett", + "homepage": "https://www.drupal.org/user/241634" + } + ], + "description": "Provides improvements to blocks that will one day be added to Drupal core.", + "homepage": "https://www.drupal.org/project/ctools", + "support": { + "source": "https://git.drupalcode.org/project/ctools" + } + }, + { + "name": "drupal/custom_pub", + "version": "1.0.0-beta3", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/custom_pub.git", + "reference": "8.x-1.0-beta3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/custom_pub-8.x-1.0-beta3.zip", + "reference": "8.x-1.0-beta3", + "shasum": "347cdb6a6c3eba20dea02c8f4216f66f16e847d2" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-beta3", + "datestamp": "1628530052", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "VladimirAus", + "homepage": "https://www.drupal.org/user/673120" + }, + { + "name": "arcaneadam", + "homepage": "https://www.drupal.org/user/234551" + }, + { + "name": "dboulet", + "homepage": "https://www.drupal.org/user/139316" + }, + { + "name": "gisle", + "homepage": "https://www.drupal.org/user/409554" + }, + { + "name": "jacobbell84", + "homepage": "https://www.drupal.org/user/3408772" + }, + { + "name": "kevinquillen", + "homepage": "https://www.drupal.org/user/317279" + } + ], + "description": "Adds the ability to add Custom publishing options to the node Add/Edit forms.", + "homepage": "https://www.drupal.org/project/custom_pub", + "support": { + "source": "https://git.drupalcode.org/project/custom_pub" + } + }, + { + "name": "drupal/default_content", + "version": "1.0.0-alpha9", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/default_content.git", + "reference": "8.x-1.0-alpha9" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/default_content-8.x-1.0-alpha9.zip", + "reference": "8.x-1.0-alpha9", + "shasum": "e8d5cc6ae96b14e882852512fbf5887e752146a0" + }, + "require": { + "drupal/core": "^8.7.7 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-alpha9", + "datestamp": "1588280141", + "security-coverage": { + "status": "not-covered", + "message": "Alpha releases are not covered by Drupal security advisories." + } + }, + "drush": { + "services": { + "drush.services.yml": "^9" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Sam152", + "homepage": "https://www.drupal.org/user/1485048" + }, + { + "name": "andypost", + "homepage": "https://www.drupal.org/user/118908" + }, + { + "name": "benjy", + "homepage": "https://www.drupal.org/user/1852732" + }, + { + "name": "dawehner", + "homepage": "https://www.drupal.org/user/99340" + }, + { + "name": "jibran", + "homepage": "https://www.drupal.org/user/1198144" + }, + { + "name": "larowlan", + "homepage": "https://www.drupal.org/user/395439" + } + ], + "description": "Imports default content when a module is enabled", + "homepage": "https://www.drupal.org/project/default_content", + "support": { + "source": "https://git.drupalcode.org/project/default_content" + } + }, + { + "name": "drupal/entity_reference_revisions", + "version": "1.9.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/entity_reference_revisions.git", + "reference": "8.x-1.9" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/entity_reference_revisions-8.x-1.9.zip", + "reference": "8.x-1.9", + "shasum": "e1c51bdea495eb3b458130d6f0a00c347f5637df" + }, + "require": { + "drupal/core": "^8.7.7 || ^9" + }, + "require-dev": { + "drupal/diff": "1.x-dev" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.9", + "datestamp": "1614805871", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Frans", + "homepage": "https://www.drupal.org/user/514222" + }, + { + "name": "jeroen.b", + "homepage": "https://www.drupal.org/user/1853532" + }, + { + "name": "miro_dietiker", + "homepage": "https://www.drupal.org/user/227761" + } + ], + "description": "Entity Reference Revisions", + "homepage": "https://www.drupal.org/project/entity_reference_revisions", + "support": { + "source": "https://git.drupalcode.org/project/entity_reference_revisions" + } + }, + { + "name": "drupal/file_entity", + "version": "dev-2.x", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/file_entity.git", + "reference": "537daa77abbfa63974554c9a33b51fab98bc2657" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/token": "*" + }, + "require-dev": { + "drupal/pathauto": "*" + }, + "type": "drupal-module", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + }, + "drupal": { + "version": "8.x-2.0-beta8+2-dev", + "datestamp": "1625735445", + "security-coverage": { + "status": "not-covered", + "message": "Dev releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "DamienMcKenna", + "homepage": "https://www.drupal.org/user/108450" + }, + { + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" + }, + { + "name": "Devin Carlson", + "homepage": "https://www.drupal.org/user/290182" + }, + { + "name": "Drupal Media Team", + "homepage": "https://www.drupal.org/user/3260690" + }, + { + "name": "Drupal media CI", + "homepage": "https://www.drupal.org/user/3057985" + }, + { + "name": "JacobSingh", + "homepage": "https://www.drupal.org/user/68912" + }, + { + "name": "JeffM2001", + "homepage": "https://www.drupal.org/user/262092" + }, + { + "name": "ParisLiakos", + "homepage": "https://www.drupal.org/user/1011436" + }, + { + "name": "aaron", + "homepage": "https://www.drupal.org/user/33420" + }, + { + "name": "arthurf", + "homepage": "https://www.drupal.org/user/27259" + }, + { + "name": "dsnopek", + "homepage": "https://www.drupal.org/user/266527" + }, + { + "name": "dsutter", + "homepage": "https://www.drupal.org/user/3357810" + }, + { + "name": "effulgentsia", + "homepage": "https://www.drupal.org/user/78040" + }, + { + "name": "joseph.olstad", + "homepage": "https://www.drupal.org/user/1321830" + }, + { + "name": "mpotter", + "homepage": "https://www.drupal.org/user/616192" + }, + { + "name": "mxr576", + "homepage": "https://www.drupal.org/user/315522" + }, + { + "name": "robeano", + "homepage": "https://www.drupal.org/user/67660" + }, + { + "name": "slashrsm", + "homepage": "https://www.drupal.org/user/744628" + }, + { + "name": "taran2L", + "homepage": "https://www.drupal.org/user/364424" + } + ], + "description": "Extends Drupal file entities to be fieldable and viewable.", + "homepage": "https://www.drupal.org/project/file_entity", + "support": { + "source": "https://git.drupalcode.org/project/file_entity" + } + }, + { + "name": "drupal/file_mdm", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/file_mdm.git", + "reference": "8.x-2.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/file_mdm-8.x-2.2.zip", + "reference": "8.x-2.2", + "shasum": "94b6e1dd7e5c605c149cf146fe1ee539850cb19f" + }, + "require": { + "drupal/core": "^9.2", + "lsolesen/pel": "^0.9.8", + "phenx/php-font-lib": "^0.5.3" + }, + "conflict": { + "lsolesen/pel": "0.9.10" + }, + "require-dev": { + "drupal/image_effects": "*", + "drupal/vendor_stream_wrapper": "^2", + "fileeye/linuxlibertine-fonts": "^5.3" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.2", + "datestamp": "1639755159", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "mondrake", + "homepage": "https://www.drupal.org/user/1307444" + } + ], + "description": "Provides a service to manage file metadata.", + "homepage": "https://www.drupal.org/project/file_mdm", + "support": { + "source": "https://git.drupalcode.org/project/file_mdm" + } + }, + { + "name": "drupal/focal_point", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/focal_point.git", + "reference": "8.x-1.5" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/focal_point-8.x-1.5.zip", + "reference": "8.x-1.5", + "shasum": "41198e9220788c3b7d3146b10e5dfd6c73cd4784" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/crop": "^1.0 || ^2.0" + }, + "require-dev": { + "drupal/crop": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.5", + "datestamp": "1598663903", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Alexander Ross (bleen)", + "homepage": "https://www.drupal.org/u/bleen", + "role": "Maintainer" + } + ], + "description": "Focal Point allows content creators to mark the most important part of an image for easier cropping.", + "homepage": "https://drupal.org/project/focal_point", + "support": { + "source": "https://cgit.drupalcode.org/focal_point", + "issues": "https://drupal.org/project/issues/focal_point", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, + { + "name": "drupal/formblock", + "version": "2.0.0-beta2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/formblock.git", + "reference": "2.0.0-beta2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/formblock-2.0.0-beta2.zip", + "reference": "2.0.0-beta2", + "shasum": "4998e9495917bf77ef40fe11d3f514aa7b1bd6a6" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0-beta2", + "datestamp": "1599176366", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "AndyD328", + "homepage": "https://www.drupal.org/user/2261214" + }, + { + "name": "chx", + "homepage": "https://www.drupal.org/user/9446" + }, + { + "name": "mikey_p", + "homepage": "https://www.drupal.org/user/62496" + }, + { + "name": "nedjo", + "homepage": "https://www.drupal.org/user/4481" + } + ], + "description": "Enables the presentation of node creation forms in blocks. This is particularly useful for including forms on Layout Builder & Panels.", + "homepage": "https://www.drupal.org/project/formblock", + "support": { + "source": "https://git.drupalcode.org/project/formblock" + } + }, + { + "name": "drupal/gin", + "version": "3.0.0-alpha37", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/gin.git", + "reference": "8.x-3.0-alpha37" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/gin-8.x-3.0-alpha37.zip", + "reference": "8.x-3.0-alpha37", + "shasum": "56f7226618f7e45697ee799e5e02c57d79cb3b1a" + }, + "require": { + "drupal/core": "^8.8 || ^9 || ^10", + "drupal/gin_toolbar": "^1.0@beta" + }, + "type": "drupal-theme", + "extra": { + "drupal": { + "version": "8.x-3.0-alpha37", + "datestamp": "1632767973", + "security-coverage": { + "status": "not-covered", + "message": "Alpha releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Sascha Eggenberger (saschaeggi)", + "homepage": "https://www.drupal.org/u/saschaeggi", + "role": "Maintainer" + }, + { + "name": "saschaeggi", + "homepage": "https://www.drupal.org/user/1999056" + } + ], + "description": "For a better Admin and Content Editor Experience.", + "homepage": "https://www.drupal.org/project/gin", + "support": { + "source": "https://git.drupalcode.org/project/gin", + "issues": "https://www.drupal.org/project/issues/gin" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/saschaeggi" + }, + { + "type": "other", + "url": "https://paypal.me/saschaeggi" + } + ] + }, + { + "name": "drupal/gin_login", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/gin_login.git", + "reference": "8.x-1.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/gin_login-8.x-1.0.zip", + "reference": "8.x-1.0", + "shasum": "3cb6dc98d64b4f9ec5123abd8c6e173fbbe98f2c" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0", + "datestamp": "1632769769", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Sascha Eggenberger (saschaeggi)", + "homepage": "https://www.drupal.org/u/saschaeggi", + "role": "Maintainer" + }, + { + "name": "saschaeggi", + "homepage": "https://www.drupal.org/user/1999056" + } + ], + "description": "Custom Drupal Login for Gin theme", + "homepage": "https://www.drupal.org/project/gin_login", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/gin_login", + "issues": "https://www.drupal.org/project/issues/gin_login" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/saschaeggi" + }, + { + "type": "other", + "url": "https://paypal.me/saschaeggi" + } + ] + }, + { + "name": "drupal/gin_toolbar", + "version": "1.0.0-beta20", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/gin_toolbar.git", + "reference": "8.x-1.0-beta20" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/gin_toolbar-8.x-1.0-beta20.zip", + "reference": "8.x-1.0-beta20", + "shasum": "770d6945de7ae001e3981db83daace610d4db5c4" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-beta20", + "datestamp": "1635149692", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Sascha Eggenberger (saschaeggi)", + "homepage": "https://www.drupal.org/u/saschaeggi", + "role": "Maintainer" + } + ], + "description": "Gin Toolbar for Frontend use", + "homepage": "https://www.drupal.org/project/gin_toolbar", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/gin_toolbar", + "issues": "https://www.drupal.org/project/issues/gin_toolbar" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/saschaeggi" + }, + { + "type": "other", + "url": "https://paypal.me/saschaeggi" + } + ] + }, + { + "name": "drupal/google_tag", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/google_tag.git", + "reference": "8.x-1.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/google_tag-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "1bdc6f93d1c79c27738320597f2185f5de37432f" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.4", + "datestamp": "1593179846", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "solotandem", + "homepage": "https://www.drupal.org/user/240748" + } + ], + "description": "Allows your website analytics to be managed using Google Tag Manager.", + "homepage": "https://www.drupal.org/project/google_tag", + "support": { + "source": "https://git.drupalcode.org/project/google_tag" + } + }, + { + "name": "drupal/imagemagick", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/imagemagick.git", + "reference": "8.x-3.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/imagemagick-8.x-3.3.zip", + "reference": "8.x-3.3", + "shasum": "b950caf621f23642b6f7bcbe8ae74d4d57f9ac3f" + }, + "require": { + "drupal/core": "^9.2", + "drupal/file_mdm": "^2", + "drupal/sophron": "^1.2" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.3", + "datestamp": "1638027743", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Chris Charlton", + "homepage": "https://www.drupal.org/user/17089" + }, + { + "name": "chx", + "homepage": "https://www.drupal.org/user/9446" + }, + { + "name": "claudiu.cristea", + "homepage": "https://www.drupal.org/user/56348" + }, + { + "name": "dman", + "homepage": "https://www.drupal.org/user/33240" + }, + { + "name": "dopry", + "homepage": "https://www.drupal.org/user/22202" + }, + { + "name": "drewish", + "homepage": "https://www.drupal.org/user/34869" + }, + { + "name": "gdl", + "homepage": "https://www.drupal.org/user/507326" + }, + { + "name": "mondrake", + "homepage": "https://www.drupal.org/user/1307444" + }, + { + "name": "quicksketch", + "homepage": "https://www.drupal.org/user/35821" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + }, + { + "name": "walkah", + "homepage": "https://www.drupal.org/user/1531" + } + ], + "description": "Provides an image toolkit to integrate ImageMagick with the Image API.", + "homepage": "https://www.drupal.org/project/imagemagick", + "support": { + "source": "https://git.drupalcode.org/project/imagemagick" + } + }, + { + "name": "drupal/jquery_ui", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/jquery_ui.git", + "reference": "8.x-1.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/jquery_ui-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "64c19ecc8902e2b4b1ab0cc5f5fe28dbc83bfebe" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.4", + "datestamp": "1582149957", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "RobLoach", + "homepage": "https://www.drupal.org/user/61114" + }, + { + "name": "jjeff", + "homepage": "https://www.drupal.org/user/17190" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "litwol", + "homepage": "https://www.drupal.org/user/78134" + }, + { + "name": "mfb", + "homepage": "https://www.drupal.org/user/12302" + }, + { + "name": "mfer", + "homepage": "https://www.drupal.org/user/25701" + }, + { + "name": "mikelutz", + "homepage": "https://www.drupal.org/user/2972409" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + }, + { + "name": "webchick", + "homepage": "https://www.drupal.org/user/24967" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Provides jQuery UI library.", + "homepage": "https://www.drupal.org/project/jquery_ui", + "support": { + "source": "https://git.drupalcode.org/project/jquery_ui" + } + }, + { + "name": "drupal/jquery_ui_draggable", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/jquery_ui_draggable.git", + "reference": "8.x-1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/jquery_ui_draggable-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "09e17046e38aebf84ed573822b0d5be6de3f0c94" + }, + "require": { + "drupal/core": "^8 || ^9", + "drupal/jquery_ui": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.2", + "datestamp": "1582150027", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Provides jQuery UI Draggable library.", + "homepage": "https://www.drupal.org/project/jquery_ui_draggable", + "support": { + "source": "https://git.drupalcode.org/project/jquery_ui_draggable" + } + }, + { + "name": "drupal/jquery_ui_droppable", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/jquery_ui_droppable.git", + "reference": "8.x-1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/jquery_ui_droppable-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "6e53043f2d3215f211721eea4d4c6ab5d1672b14" + }, + "require": { + "drupal/core": "^8 || ^9", + "drupal/jquery_ui": "*", + "drupal/jquery_ui_draggable": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.2", + "datestamp": "1582150071", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Provides jQuery UI Droppable library.", + "homepage": "https://www.drupal.org/project/jquery_ui_droppable", + "support": { + "source": "https://git.drupalcode.org/project/jquery_ui_droppable" + } + }, + { + "name": "drupal/layout_builder_modal", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/layout_builder_modal.git", + "reference": "8.x-1.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/layout_builder_modal-8.x-1.1.zip", + "reference": "8.x-1.1", + "shasum": "5063c2d5e33265c92bfeed34df6682d74c973c51" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.1", + "datestamp": "1588175915", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "John Svensson", + "homepage": "https://www.drupal.org/u/johndevman", + "email": "john@kodamera.se", + "role": "Maintainer" + }, + { + "name": "Emil Johnsson", + "homepage": "https://www.drupal.org/u/johnzzon", + "email": "emil@kodamera.se", + "role": "Maintainer" + }, + { + "name": "Henrik Larsson", + "homepage": "https://www.drupal.org/u/henriklarsson", + "email": "henrik@kodamera.se", + "role": "Maintainer" + }, + { + "name": "twfahey", + "homepage": "https://www.drupal.org/user/3403722" + } + ], + "description": "Open blocks in a modal in the Layout Builder UI.", + "homepage": "https://www.drupal.org/project/layout_builder_modal", + "support": { + "source": "http://cgit.drupalcode.org/layout_builder_modal", + "issues": "https://www.drupal.org/project/issues/layout_builder_modal" + } + }, + { + "name": "drupal/layout_builder_restrictions", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/layout_builder_restrictions.git", + "reference": "8.x-2.11" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/layout_builder_restrictions-8.x-2.11.zip", + "reference": "8.x-2.11", + "shasum": "07bb8fa968ded1ebb67eaf726714137e9cd7d6df" + }, + "require": { + "drupal/core": "^8.8.0 || ^9.0" + }, + "require-dev": { + "drupal/dashboards": "^2", + "drupal/layout_library": "^1", + "drupal/mini_layouts": "^1" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.11", + "datestamp": "1641475404", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "The University of Texas at Austin", + "homepage": "https://www.drupal.org/university-of-texas-at-austin", + "role": "Maintainer" + }, + { + "name": "Eirik Morland (eiriksm)", + "homepage": "https://www.drupal.org/u/eiriksm", + "role": "Maintainer" + }, + { + "name": "gravelpot", + "homepage": "https://www.drupal.org/user/748208" + }, + { + "name": "lreynaga", + "homepage": "https://www.drupal.org/user/3400232" + }, + { + "name": "mark_fullmer", + "homepage": "https://www.drupal.org/user/2612816" + }, + { + "name": "ricksta", + "homepage": "https://www.drupal.org/user/311042" + }, + { + "name": "texas_tater", + "homepage": "https://www.drupal.org/user/753614" + }, + { + "name": "twfahey", + "homepage": "https://www.drupal.org/user/3403722" + } + ], + "description": "Manage which fields & layouts are available in Layout Builder", + "homepage": "https://www.drupal.org/project/layout_builder_restrictions", + "keywords": [ + "Drupal", + "Layout Builder Restrictions" + ], + "support": { + "source": "https://git.drupalcode.org/project/layout_builder_restrictions", + "issues": "https://www.drupal.org/project/issues/layout_builder_restrictions" + } + }, + { + "name": "drupal/layout_library", + "version": "1.0.0-beta3", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/layout_library.git", + "reference": "8.x-1.0-beta3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/layout_library-8.x-1.0-beta3.zip", + "reference": "8.x-1.0-beta3", + "shasum": "d057acbe8a9df36f5901748f04602dacbca27bee" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-beta3", + "datestamp": "1635453135", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "EclipseGc", + "homepage": "https://www.drupal.org/user/61203" + }, + { + "name": "larowlan", + "homepage": "https://www.drupal.org/user/395439" + }, + { + "name": "samuel.mortenson", + "homepage": "https://www.drupal.org/user/2582268" + }, + { + "name": "tim.plunkett", + "homepage": "https://www.drupal.org/user/241634" + }, + { + "name": "xjm", + "homepage": "https://www.drupal.org/user/65776" + } + ], + "description": "Provides a library of layouts for content-editors to select from", + "homepage": "https://www.drupal.org/project/layout_library", + "support": { + "source": "https://git.drupalcode.org/project/layout_library" + } + }, + { + "name": "drupal/layout_paragraphs", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/layout_paragraphs.git", + "reference": "1.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/layout_paragraphs-1.0.0.zip", + "reference": "1.0.0", + "shasum": "6b4bbb8fc50f70092d1c1ed720076be9f8904218" + }, + "require": { + "drupal/core": "^8 || ^9", + "drupal/paragraphs": "^1.6" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.0.0", + "datestamp": "1621524309", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "itamair", + "homepage": "https://www.drupal.org/user/1179076" + }, + { + "name": "justin2pin", + "homepage": "https://www.drupal.org/user/278450" + } + ], + "description": "Layout Paragraphs", + "homepage": "https://www.drupal.org/project/layout_paragraphs", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/layout_paragraphs", + "issues": "https://www.drupal.org/project/issues/layout_paragraphs" + } + }, + { + "name": "drupal/lb_ux", + "version": "dev-1.x", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/lb_ux.git", + "reference": "6f2fb8e11b2fa4d526f6ea883844bb7fbeeb6377" + }, + "require": { + "drupal/core": "^8.7.7 || ^9" + }, + "type": "drupal-module", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + }, + "drupal": { + "version": "8.x-1.0-beta2+1-dev", + "datestamp": "1601321096", + "security-coverage": { + "status": "not-covered", + "message": "Project has not opted into security advisory coverage!" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "DyanneNova", + "homepage": "https://www.drupal.org/user/277051" + }, + { + "name": "starshaped", + "homepage": "https://www.drupal.org/user/522252" + }, + { + "name": "tim.plunkett", + "homepage": "https://www.drupal.org/user/241634" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Alters the Layout Builder UI for better usability", + "homepage": "https://www.drupal.org/project/lb_ux", + "support": { + "source": "https://git.drupalcode.org/project/lb_ux" + } + }, + { + "name": "drupal/mailsystem", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/mailsystem.git", + "reference": "8.x-4.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/mailsystem-8.x-4.3.zip", + "reference": "8.x-4.3", + "shasum": "1a74016e268ff207535be5d5e42ac8f72ac89050" + }, + "require": { + "drupal/core": "^8.7.7 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-4.3", + "datestamp": "1586203024", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Les Lim", + "homepage": "https://www.drupal.org/user/84263" + }, + { + "name": "Manuel Garcia", + "homepage": "https://www.drupal.org/user/213194" + }, + { + "name": "Nafes", + "homepage": "https://www.drupal.org/user/2489926" + }, + { + "name": "miro_dietiker", + "homepage": "https://www.drupal.org/user/227761" + }, + { + "name": "pillarsdotnet", + "homepage": "https://www.drupal.org/user/36148" + } + ], + "description": "Mail System", + "homepage": "https://www.drupal.org/project/mailsystem", + "support": { + "source": "https://git.drupalcode.org/project/mailsystem" + } + }, + { + "name": "drupal/manage_display", + "version": "1.0.0-beta2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/manage_display.git", + "reference": "8.x-1.0-beta2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/manage_display-8.x-1.0-beta2.zip", + "reference": "8.x-1.0-beta2", + "shasum": "a87b8ab8691fcdd83c0757b4d840112b990889d3" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-beta2", + "datestamp": "1591887476", + "security-coverage": { + "status": "not-covered", + "message": "Project has not opted into security advisory coverage!" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "AdamPS", + "homepage": "https://www.drupal.org/user/2650563" + } + ], + "description": "Make base fields such as 'title' available in \"Manage Display\"", + "homepage": "https://www.drupal.org/project/manage_display", + "support": { + "source": "https://git.drupalcode.org/project/manage_display" + } + }, + { + "name": "drupal/menu_admin_per_menu", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/menu_admin_per_menu.git", + "reference": "8.x-1.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/menu_admin_per_menu-8.x-1.3.zip", + "reference": "8.x-1.3", + "shasum": "cb967bdd9ca6f5692d670d5c7c8d77587e7fd38c" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.3", + "datestamp": "1593436060", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "JeroenT", + "homepage": "https://www.drupal.org/user/2228934" + }, + { + "name": "anrikun", + "homepage": "https://www.drupal.org/user/410199" + }, + { + "name": "jonas139", + "homepage": "https://www.drupal.org/user/2873401" + }, + { + "name": "mkdok", + "homepage": "https://www.drupal.org/user/3308753" + } + ], + "description": "Allows to give roles per menu admin permissions without giving them full administer menu permission.", + "homepage": "https://www.drupal.org/project/menu_admin_per_menu", + "support": { + "source": "https://git.drupalcode.org/project/menu_admin_per_menu" + } + }, + { + "name": "drupal/menu_link_attributes", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/menu_link_attributes.git", + "reference": "8.x-1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/menu_link_attributes-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "a332eca9d63eed14df01af759882627512ba6448" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.2", + "datestamp": "1616337149", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "jcnventura", + "homepage": "https://www.drupal.org/user/122464" + }, + { + "name": "yannickoo", + "homepage": "https://www.drupal.org/user/531118" + } + ], + "description": "Allows you to add attributes to menu links.", + "homepage": "http://drupal.org/project/menu_link_attributes", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/menu_link_attributes", + "issues": "http://drupal.org/project/issues/menu_link_attributes" + } + }, + { + "name": "drupal/migrate_generator", + "version": "1.1.0-alpha1", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/migrate_generator.git", + "reference": "8.x-1.1-alpha1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/migrate_generator-8.x-1.1-alpha1.zip", + "reference": "8.x-1.1-alpha1", + "shasum": "03728e60fd60db36b705cec04216105d1652cd5f" + }, + "require": { + "drupal/core": "^8.7.7 || ^9", + "drupal/migrate_plus": "^5", + "drupal/migrate_source_csv": "^3.2", + "drupal/migrate_tools": "^5" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.1-alpha1", + "datestamp": "1610699135", + "security-coverage": { + "status": "not-covered", + "message": "Project has not opted into security advisory coverage!" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + }, + "enable-patching": true, + "patches": { + "drupal/core": { + "2789125 - Error when a process plugin gives a multiple value for a subproperty destination": "https://www.drupal.org/files/issues/2789125-subproperties-with-multiple-process-plugin-5.patch" + }, + "drupal/migrate_plus": { + "3113394 - Add process plugin to skip files that don't exist": "https://www.drupal.org/files/issues/2020-02-13/migrate_plus-add_skip_on_file_exists_plugin-3113394-2.patch" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Sergey Orlov (sorlov)", + "homepage": "https://www.drupal.org/user/875410" + }, + { + "name": "andypost", + "homepage": "https://www.drupal.org/user/118908" + }, + { + "name": "davidferlay", + "homepage": "https://www.drupal.org/user/3349938" + }, + { + "name": "gaydabura", + "homepage": "https://www.drupal.org/user/400360" + }, + { + "name": "piggito", + "homepage": "https://www.drupal.org/user/670290" + }, + { + "name": "sorlov", + "homepage": "https://www.drupal.org/user/370717" + }, + { + "name": "vacho", + "homepage": "https://www.drupal.org/user/641094" + }, + { + "name": "waspper", + "homepage": "https://www.drupal.org/user/858842" + } + ], + "description": "Generate migration configs based on CSV sources.", + "homepage": "https://www.drupal.org/project/migrate_generator", + "keywords": [ + "Drupal", + "migrate" + ], + "support": { + "source": "https://git.drupalcode.org/project/migrate_generator" + } + }, + { + "name": "drupal/migrate_plus", + "version": "5.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/migrate_plus.git", + "reference": "8.x-5.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/migrate_plus-8.x-5.2.zip", + "reference": "8.x-5.2", + "shasum": "03ae34c362ccfacc4ae95b58469b25522e0ffb68" + }, + "require": { + "drupal/core": "^9.1" + }, + "require-dev": { + "drupal/migrate_example_advanced_setup": "*", + "drupal/migrate_example_setup": "*", + "drush/drush": "^10" + }, + "suggest": { + "ext-soap": "*", + "sainsburys/guzzle-oauth2-plugin": "3.0 required for the OAuth2 authentication plugin" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-5.2", + "datestamp": "1640379296", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Mike Ryan", + "homepage": "https://www.drupal.org/u/mikeryan", + "role": "Maintainer" + }, + { + "name": "Lucas Hedding", + "homepage": "https://www.drupal.org/u/heddn", + "role": "Maintainer" + }, + { + "name": "mikeryan", + "homepage": "https://www.drupal.org/user/4420" + } + ], + "description": "Enhancements to core migration support.", + "homepage": "https://www.drupal.org/project/migrate_plus", + "support": { + "source": "https://git.drupalcode.org/project/migrate_plus", + "issues": "https://www.drupal.org/project/issues/migrate_plus", + "slack": "#migrate" + } + }, + { + "name": "drupal/migrate_source_csv", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/migrate_source_csv.git", + "reference": "8.x-3.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/migrate_source_csv-8.x-3.4.zip", + "reference": "8.x-3.4", + "shasum": "12990ad8c3b99e16c1b2a1be955aaa28581e5d1c" + }, + "require": { + "drupal/core": "^8.7 || ^9.0", + "league/csv": "^9.1", + "php": ">=7.1" + }, + "require-dev": { + "drupal/migrate_plus": "5.x-dev" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.4", + "datestamp": "1588260548", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Lucas Hedding", + "homepage": "https://www.drupal.org/u/heddn", + "role": "Maintainer" + } + ], + "description": "CSV source migration.", + "homepage": "https://www.drupal.org/project/migrate_source_csv", + "support": { + "source": "https://cgit.drupalcode.org/migrate_source_csv", + "issues": "https://www.drupal.org/project/issues/migrate_source_csv", + "irc": "irc://irc.freenode.org/drupal-migrate" + } + }, + { + "name": "drupal/migrate_tools", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/migrate_tools.git", + "reference": "8.x-5.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/migrate_tools-8.x-5.1.zip", + "reference": "8.x-5.1", + "shasum": "2c1a9d35d318a0e1de30a99fbf64bedd4e65cee1" + }, + "require": { + "drupal/core": "^9.1", + "drupal/migrate_plus": "^5", + "php": ">=7.1" + }, + "require-dev": { + "drupal/migrate_source_csv": "^3.0", + "drush/drush": "^10" + }, + "suggest": { + "drush/drush": "^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-5.1", + "datestamp": "1640378500", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Mike Ryan", + "homepage": "https://www.drupal.org/u/mikeryan", + "role": "Maintainer" + }, + { + "name": "Lucas Hedding", + "homepage": "https://www.drupal.org/u/heddn", + "role": "Maintainer" + }, + { + "name": "mikeryan", + "homepage": "https://www.drupal.org/user/4420" + } + ], + "description": "Tools to assist in developing and running migrations.", + "homepage": "http://drupal.org/project/migrate_tools", + "support": { + "source": "https://git.drupalcode.org/project/migrate_tools", + "issues": "https://www.drupal.org/project/issues/migrate_tools", + "slack": "#migrate" + } + }, + { + "name": "drupal/page_manager", + "version": "4.0.0-beta6", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/page_manager.git", + "reference": "8.x-4.0-beta6" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/page_manager-8.x-4.0-beta6.zip", + "reference": "8.x-4.0-beta6", + "shasum": "bf0ac07177b1cd6c1a3da80f727f1448221ee98a" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/ctools": "^3.1" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-4.0-beta6", + "datestamp": "1591125562", + "security-coverage": { + "status": "not-covered", + "message": "Project has not opted into security advisory coverage!" + } + }, + "branch-alias": { + "dev-8.x-4.x": "4.x-dev" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Plunkett", + "homepage": "https://www.drupal.org/u/tim.plunkett", + "role": "Maintainer" + }, + { + "name": "dsnopek", + "homepage": "https://www.drupal.org/user/266527" + }, + { + "name": "japerry", + "homepage": "https://www.drupal.org/user/45640" + }, + { + "name": "manuel.adan", + "homepage": "https://www.drupal.org/user/516420" + }, + { + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "tim.plunkett", + "homepage": "https://www.drupal.org/user/241634" + } + ], + "description": "Provides a way to place blocks on a custom page.", + "homepage": "https://www.drupal.org/project/page_manager", + "support": { + "source": "https://git.drupal.org/project/page_manager.git", + "issues": "https://www.drupal.org/project/issues/page_manager", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, + { + "name": "drupal/panels", + "version": "4.6.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/panels.git", + "reference": "8.x-4.6" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/panels-8.x-4.6.zip", + "reference": "8.x-4.6", + "shasum": "6430436a4d8fb64f8c113729dd92505a1e46b794" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/ctools": ">=3.0.0", + "drupal/jquery_ui_droppable": "^1.2" + }, + "require-dev": { + "drupal/jquery_ui_droppable": "*", + "drupal/page_manager": "^4" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-4.6", + "datestamp": "1585870866", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "branch-alias": { + "dev-8.x-4.x": "4.x-dev" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Jakob Perry", + "homepage": "https://www.drupal.org/u/japerry" + }, + { + "name": "Samuel Mortenson", + "homepage": "https://www.drupal.org/u/samuel.mortenson" + }, + { + "name": "See other contributors", + "homepage": "https://www.drupal.org/node/74958/committers" + }, + { + "name": "japerry", + "homepage": "https://www.drupal.org/user/45640" + }, + { + "name": "joelpittet", + "homepage": "https://www.drupal.org/user/160302" + }, + { + "name": "merlinofchaos", + "homepage": "https://www.drupal.org/user/26979" + }, + { + "name": "neclimdul", + "homepage": "https://www.drupal.org/user/48673" + }, + { + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "samuel.mortenson", + "homepage": "https://www.drupal.org/user/2582268" + }, + { + "name": "tim.plunkett", + "homepage": "https://www.drupal.org/user/241634" + } + ], + "description": "Core Panels display functions; provides no external UI, at least one other Panels module should be enabled.", + "homepage": "https://www.drupal.org/project/panels", + "support": { + "source": "http://git.drupal.org/project/panels.git", + "issues": "https://www.drupal.org/project/issues/panels", + "irc": "irc://irc.freenode.org/drupal-scotch" + } + }, + { + "name": "drupal/panels_everywhere", + "version": "4.0.0-beta2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/panels_everywhere.git", + "reference": "8.x-4.0-beta2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/panels_everywhere-8.x-4.0-beta2.zip", + "reference": "8.x-4.0-beta2", + "shasum": "094b60fed4f4c4b75a6893cab5a3bf60a76888a9" + }, + "require": { + "drupal/core": "^8 || ^9", + "drupal/ctools": ">=3.0.0", + "drupal/ctools_block": "*", + "drupal/page_manager": ">=4.0.0", + "drupal/panels": ">=4.0.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-4.0-beta2", + "datestamp": "1602162578", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "See contributors", + "homepage": "https://www.drupal.org/node/669722/committers", + "role": "Developer" + }, + { + "name": "Letharion", + "homepage": "https://www.drupal.org/user/373603" + }, + { + "name": "merlinofchaos", + "homepage": "https://www.drupal.org/user/26979" + } + ], + "description": "Use the Panels architecture to manage the full page display.", + "homepage": "https://www.drupal.org/project/panels_everywhere", + "support": { + "source": "http://git.drupal.org/project/panels_everywhere.git", + "issues": "https://www.drupal.org/project/issues/panels_everywhere", + "irc": "irc://irc.freenode.org/drupal-scotch" + } + }, + { + "name": "drupal/paragraphs", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/paragraphs.git", + "reference": "8.x-1.12" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.12.zip", + "reference": "8.x-1.12", + "shasum": "3b67d8af1160af42d93a4610be1e02869e428965" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/entity_reference_revisions": "~1.3" + }, + "require-dev": { + "drupal/block_field": "~1.0", + "drupal/ctools": "3.x-dev", + "drupal/diff": "~1.0", + "drupal/entity_browser": "2.x-dev", + "drupal/entity_usage": "2.x-dev", + "drupal/field_group": "3.x-dev", + "drupal/inline_entity_form": "~1.0", + "drupal/paragraphs-paragraphs_library": "*", + "drupal/replicate": "~1.0", + "drupal/search_api": "~1.0", + "drupal/search_api_db": "*" + }, + "suggest": { + "drupal/entity_browser": "Recommended for an improved user experience when using the Paragraphs library module" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.12", + "datestamp": "1590140081", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Frans", + "homepage": "https://www.drupal.org/user/514222" + }, + { + "name": "Primsi", + "homepage": "https://www.drupal.org/user/282629" + }, + { + "name": "jeroen.b", + "homepage": "https://www.drupal.org/user/1853532" + }, + { + "name": "jstoller", + "homepage": "https://www.drupal.org/user/99012" + }, + { + "name": "miro_dietiker", + "homepage": "https://www.drupal.org/user/227761" + } + ], + "description": "Enables the creation of Paragraphs entities.", + "homepage": "https://www.drupal.org/project/paragraphs", + "support": { + "source": "https://git.drupalcode.org/project/paragraphs" + } + }, + { + "name": "drupal/password_policy", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/password_policy.git", + "reference": "8.x-3.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/password_policy-8.x-3.1.zip", + "reference": "8.x-3.1", + "shasum": "d5e79ce4949c74080b4a6f655aa7ae914c663019" + }, + "require": { + "drupal/core": "^8 || ^9", + "drupal/ctools": "^3.1" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.1", + "datestamp": "1639661368", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "AohRveTPV", + "homepage": "https://www.drupal.org/user/2760115" + }, + { + "name": "deekayen", + "homepage": "https://www.drupal.org/user/972" + }, + { + "name": "miglius", + "homepage": "https://www.drupal.org/user/18741" + }, + { + "name": "nerdstein", + "homepage": "https://www.drupal.org/user/1557710" + }, + { + "name": "paulocs", + "homepage": "https://www.drupal.org/user/3640109" + }, + { + "name": "shrop", + "homepage": "https://www.drupal.org/user/14767" + } + ], + "description": "Sets up constraints and expiration of passwords.", + "homepage": "https://www.drupal.org/project/password_policy", + "support": { + "source": "https://git.drupalcode.org/project/password_policy", + "issues": "https://www.drupal.org/project/issues/password_policy" + } + }, + { + "name": "drupal/pathauto", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/pathauto.git", + "reference": "8.x-1.8" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.8.zip", + "reference": "8.x-1.8", + "shasum": "ede3216abb9c4f77709338d9147334c595046329" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/ctools": "*", + "drupal/token": "*" + }, + "suggest": { + "drupal/redirect": "When installed Pathauto will provide a new \"Update Action\" in case your URLs change. This is the recommended update action and is considered the best practice for SEO and usability." + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.8", + "datestamp": "1588103046", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" + }, + { + "name": "Freso", + "homepage": "https://www.drupal.org/user/27504" + }, + { + "name": "greggles", + "homepage": "https://www.drupal.org/user/36762" + } + ], + "description": "Provides a mechanism for modules to automatically generate aliases for the content they manage.", + "homepage": "https://www.drupal.org/project/pathauto", + "support": { + "source": "https://cgit.drupalcode.org/pathauto", + "issues": "https://www.drupal.org/project/issues/pathauto", + "documentation": "https://www.drupal.org/docs/8/modules/pathauto" + } + }, + { + "name": "drupal/rabbit_hole", + "version": "1.0.0-beta10", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/rabbit_hole.git", + "reference": "8.x-1.0-beta10" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/rabbit_hole-8.x-1.0-beta10.zip", + "reference": "8.x-1.0-beta10", + "shasum": "3eb151b7a905bbf0a50d9fe2ecffbca3eeb73ac9" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "require-dev": { + "drupal/commerce_product": "*", + "drupal/file_entity": "*", + "drupal/group": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-beta10", + "datestamp": "1610813035", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Dylan Donkersgoed", + "homepage": "https://www.drupal.org/user/2803351" + }, + { + "name": "Matroskeen", + "homepage": "https://www.drupal.org/user/3426249" + }, + { + "name": "Odd Hill", + "homepage": "https://www.drupal.org/user/789934" + }, + { + "name": "mparker17", + "homepage": "https://www.drupal.org/user/536298" + }, + { + "name": "olofbokedal", + "homepage": "https://www.drupal.org/user/1198438" + }, + { + "name": "shumushin", + "homepage": "https://www.drupal.org/user/22093" + } + ], + "description": "Basic functionality that is shared among the different Rabbit Hole modules.", + "homepage": "https://www.drupal.org/project/rabbit_hole", + "support": { + "source": "https://git.drupalcode.org/project/rabbit_hole" + } + }, + { + "name": "drupal/redirect", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/redirect.git", + "reference": "8.x-1.7" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/redirect-8.x-1.7.zip", + "reference": "8.x-1.7", + "shasum": "013b2541a5ef0cf423a3caa1ae89cc5866504877" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.7", + "datestamp": "1639380488", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" + }, + { + "name": "pifagor", + "homepage": "https://www.drupal.org/user/2375692" + } + ], + "description": "Allows users to redirect from old URLs to new URLs.", + "homepage": "https://www.drupal.org/project/redirect", + "support": { + "source": "https://git.drupalcode.org/project/redirect" + } + }, + { + "name": "drupal/remove_http_headers", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/remove_http_headers.git", + "reference": "8.x-1.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/remove_http_headers-8.x-1.0.zip", + "reference": "8.x-1.0", + "shasum": "9087381bb8576a81ec0df520037b9355a582aa36" + }, + "require": { + "drupal/core": "^8.6||^9.0" + }, + "require-dev": { + "ekino/phpstan-banned-code": "^0.3.1", + "mglaman/phpstan-drupal": "^0.12.2", + "phpstan/phpstan": "^0.12.17", + "phpstan/phpstan-deprecation-rules": "^0.12.2", + "phpstan/phpstan-strict-rules": "^0.12.2" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0", + "datestamp": "1605094126", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Orlando Thöny", + "homepage": "https://www.drupal.org/user/3343332", + "email": "orlando.thoeny@gmail.com", + "role": "Maintainer" + }, + { + "name": "marco-s", + "homepage": "https://www.drupal.org/user/3396620" + }, + { + "name": "milovan", + "homepage": "https://www.drupal.org/user/2018332" + }, + { + "name": "orlando.thoeny", + "homepage": "https://www.drupal.org/user/3558789" + } + ], + "description": "Removes configured HTTP Response headers.", + "homepage": "https://drupal.org/project/remove_http_headers", + "keywords": [ + "Drupal", + "HTTP headers", + "Security" + ], + "support": { + "source": "https://git.drupalcode.org/project/remove_http_headers" + } + }, + { + "name": "drupal/role_delegation", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/role_delegation.git", + "reference": "8.x-1.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/role_delegation-8.x-1.1.zip", + "reference": "8.x-1.1", + "shasum": "a63b548056cc729beacfd385625fafb983e0f73e" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.1", + "datestamp": "1580498751", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Jeroen Tubex", + "homepage": "https://www.drupal.org/u/jeroent", + "role": "Maintainer" + }, + { + "name": "benjy", + "homepage": "https://www.drupal.org/user/1852732" + } + ], + "description": "Allows site administrators to grant some roles the authority to assign selected roles to users.", + "homepage": "http://drupal.org/project/role_delegation", + "support": { + "source": "https://git.drupalcode.org/project/role_delegation", + "issues": "http://drupal.org/project/role_delegation" + } + }, + { + "name": "drupal/seckit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/seckit.git", + "reference": "2.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/seckit-2.0.0.zip", + "reference": "2.0.0", + "shasum": "d5356230b2de7d1e8a2e68eb81e70619a2e36c1e" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0", + "datestamp": "1598609351", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "badjava", + "homepage": "https://www.drupal.org/user/83372" + }, + { + "name": "jweowu", + "homepage": "https://www.drupal.org/user/152788" + }, + { + "name": "mcdruid", + "homepage": "https://www.drupal.org/user/255969" + }, + { + "name": "p0deje", + "homepage": "https://www.drupal.org/user/529960" + } + ], + "description": "SecKit provides Drupal with various security-hardening options.", + "homepage": "https://www.drupal.org/project/seckit", + "keywords": [ + "Drupal", + "security" + ], + "support": { + "source": "http://cgit.drupalcode.org/seckit", + "issues": "http://drupal.org/project/issues/seckit" + } + }, + { + "name": "drupal/sophron", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/sophron.git", + "reference": "8.x-1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/sophron-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "f222f4db7d43ee604c6c7a8f5a17a76c16a66e93" + }, + "require": { + "drupal/core": "^9.2", + "fileeye/mimemap": "^1.2.1" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.2", + "datestamp": "1637954244", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "autoload": { + "psr-4": { + "Drupal\\sophron\\": "src/" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "mondrake", + "homepage": "https://www.drupal.org/user/1307444" + } + ], + "description": "Provides an extensive MIME types management API", + "homepage": "https://www.drupal.org/project/sophron", + "support": { + "source": "https://git.drupalcode.org/project/sophron" + } + }, + { + "name": "drupal/svg_image", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/svg_image.git", + "reference": "8.x-1.15" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/svg_image-8.x-1.15.zip", + "reference": "8.x-1.15", + "shasum": "368d0189bb3c59ea40cf52d83c8551b6358aa161" + }, + "require": { + "drupal/core": "^8 || ^9", + "enshrined/svg-sanitize": ">=0.9 <1.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.15", + "datestamp": "1629259130", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Yaroslav Lushnikov", + "homepage": "https://www.drupal.org/user/2870933", + "role": "Maintainer" + }, + { + "name": "See contributors", + "homepage": "https://www.drupal.org/node/2887125/committers" + } + ], + "description": "Overrides the standard image formatter and widget to support SVG files.", + "homepage": "http://drupal.org/project/svg_image", + "support": { + "source": "http://cgit.drupalcode.org/svg_image", + "issues": "http://drupal.org/project/svg_image" + } + }, + { + "name": "drupal/swiftmailer", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/swiftmailer.git", + "reference": "8.x-2.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/swiftmailer-8.x-2.2.zip", + "reference": "8.x-2.2", + "shasum": "54269f7ceb6364e4fb953cf67b52b555d748d09c" + }, + "require": { + "drupal/core": "^8.9.11 || ^9.0.10", + "drupal/mailsystem": "^4.1.0", + "egulias/email-validator": "^2.0||^3", + "html2text/html2text": "^4.0.1", + "php": ">=7.0.0", + "swiftmailer/swiftmailer": "^6.1.3", + "tijsverkoyen/css-to-inline-styles": "^2.2" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.2", + "datestamp": "1639141915", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "AdamPS", + "homepage": "https://www.drupal.org/user/2650563" + }, + { + "name": "Anybody", + "homepage": "https://www.drupal.org/user/291091" + }, + { + "name": "B-Prod", + "homepage": "https://www.drupal.org/user/407852" + }, + { + "name": "geek-merlin", + "homepage": "https://www.drupal.org/user/229048" + }, + { + "name": "sbrattla", + "homepage": "https://www.drupal.org/user/53422" + }, + { + "name": "webflo", + "homepage": "https://www.drupal.org/user/254778" + } + ], + "description": "Swiftmailer", + "homepage": "https://www.drupal.org/project/swiftmailer", + "support": { + "source": "https://git.drupalcode.org/project/swiftmailer" + } + }, + { + "name": "drupal/telephone_validation", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/telephone_validation.git", + "reference": "8.x-2.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/telephone_validation-8.x-2.3.zip", + "reference": "8.x-2.3", + "shasum": "34dd855d8f80c53bd93df66101020c1f2d05eb0e" + }, + "require": { + "drupal/core": "^8 || ^9", + "giggsey/libphonenumber-for-php": "~8.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.3", + "datestamp": "1591201337", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "zaporylie", + "homepage": "https://www.drupal.org/user/1532844" + } + ], + "description": "Use 3rd party library to validate telephone field.", + "homepage": "http://drupal.org/project/telephone_validation", + "support": { + "source": "https://git.drupalcode.org/project/telephone_validation", + "issues": "http://drupal.org/project/issues/telephone_validation" + } + }, + { + "name": "drupal/token", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/token.git", + "reference": "8.x-1.10" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/token-8.x-1.10.zip", + "reference": "8.x-1.10", + "shasum": "8b81224ab0420221b292e8d3b66d0da726317400" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.10", + "datestamp": "1638619775", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" + }, + { + "name": "eaton", + "homepage": "https://www.drupal.org/user/16496" + }, + { + "name": "fago", + "homepage": "https://www.drupal.org/user/16747" + }, + { + "name": "greggles", + "homepage": "https://www.drupal.org/user/36762" + }, + { + "name": "mikeryan", + "homepage": "https://www.drupal.org/user/4420" + } + ], + "description": "Provides a user interface for the Token API, some missing core tokens.", + "homepage": "https://www.drupal.org/project/token", + "support": { + "source": "https://git.drupalcode.org/project/token" + } + }, + { + "name": "drupal/username_enumeration_prevention", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/username_enumeration_prevention.git", + "reference": "8.x-1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/username_enumeration_prevention-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "0fe67462d3c919a7a8f33c41f1cb593ecf7ed7cf" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.2", + "datestamp": "1613949220", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "nicksanta", + "homepage": "https://www.drupal.org/user/87915" + } + ], + "description": "Prevents username enumeration on password reset and user pages.", + "homepage": "https://www.drupal.org/project/username_enumeration_prevention", + "support": { + "source": "https://git.drupalcode.org/project/username_enumeration_prevention" + } + }, + { + "name": "drupal/userprotect", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/userprotect.git", + "reference": "8.x-1.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/userprotect-8.x-1.1.zip", + "reference": "8.x-1.1", + "shasum": "485e240317a7fc1c0523b082f333c983ea3ca639" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "require-dev": { + "drupal/role_delegation": "^1.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.1", + "datestamp": "1578341583", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "MegaChriz", + "homepage": "https://www.drupal.org/user/654114" + }, + { + "name": "karschsp", + "homepage": "https://www.drupal.org/user/138216" + } + ], + "description": "Allows admins to protect users from being edited or cancelled, on a per-user basis.", + "homepage": "https://www.drupal.org/project/userprotect", + "keywords": [ + "Drupal", + "User Management" + ], + "support": { + "source": "http://cgit.drupalcode.org/userprotect", + "issues": "https://www.drupal.org/project/issues/userprotect" + } + }, + { + "name": "drupal/views_bulk_edit", + "version": "dev-2.x", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/views_bulk_edit.git", + "reference": "ae5b40297b26d09b4684542393f23bb8a239e60d" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "require-dev": { + "drupal/views_bulk_operations": "~3.0" + }, + "suggest": { + "drupal/views_bulk_operations": "Get VBO for all the views benefits like batching, ability to select all view results or persistent selection across pages" + }, + "type": "drupal-module", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + }, + "drupal": { + "version": "8.x-2.6+0-dev", + "datestamp": "1623748007", + "security-coverage": { + "status": "not-covered", + "message": "Dev releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Marcin Grabias", + "homepage": "https://www.drupal.org/u/graber" + }, + { + "name": "benjy", + "homepage": "https://www.drupal.org/user/1852732" + } + ], + "description": "Allows bulk edition of entity field values.", + "homepage": "https://www.drupal.org/project/views_bulk_edit", + "support": { + "source": "https://git.drupalcode.org/project/views_bulk_edit", + "issues": "https://www.drupal.org/project/issues/views_bulk_edit?version=8.x" + } + }, + { + "name": "drupal/views_bulk_operations", + "version": "3.13.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/views_bulk_operations.git", + "reference": "8.x-3.13" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-8.x-3.13.zip", + "reference": "8.x-3.13", + "shasum": "70583d08b91be3b5e008f571589425c2176eb73b" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "require-dev": { + "drush/drush": "^10" + }, + "suggest": { + "drush/drush": "^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.13", + "datestamp": "1619697066", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Marcin Grabias", + "homepage": "https://www.drupal.org/u/graber" + }, + { + "name": "Jon Pugh", + "homepage": "https://www.drupal.org/user/17028" + }, + { + "name": "bojanz", + "homepage": "https://www.drupal.org/user/86106" + }, + { + "name": "infojunkie", + "homepage": "https://www.drupal.org/user/48424" + }, + { + "name": "joelpittet", + "homepage": "https://www.drupal.org/user/160302" + } + ], + "description": "Adds an ability to perform bulk operations on selected entities from view results. Provides an API to create such operations.", + "homepage": "https://www.drupal.org/project/views_bulk_operations", + "support": { + "source": "https://git.drupalcode.org/project/views_bulk_operations/-/tree/8.x-3.x", + "issues": "https://www.drupal.org/project/issues/views_bulk_operations?version=8.x", + "docs": "https://www.drupal.org/docs/8/modules/views-bulk-operations-vbo" + } + }, + { + "name": "drupal/webform", + "version": "6.1.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/webform.git", + "reference": "6.1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/webform-6.1.2.zip", + "reference": "6.1.2", + "shasum": "3afb96566f5d31474483e163b4e0138d43cffdcd" + }, + "require": { + "drupal/core": "^8.8 || ^9" + }, + "require-dev": { + "drupal/address": "~1.0", + "drupal/bootstrap": "~3.0", + "drupal/captcha": "~1.0", + "drupal/chosen": "~3.0", + "drupal/clientside_validation": "*", + "drupal/clientside_validation_jquery": "*", + "drupal/devel": "*", + "drupal/entity": "~1.0", + "drupal/entity_print": "*", + "drupal/gnode": "*", + "drupal/group": "*", + "drupal/jquery_ui": "~1.0", + "drupal/jquery_ui_checkboxradio": "*", + "drupal/jquery_ui_datepicker": "~1.0", + "drupal/lingotek": "~3.0", + "drupal/mailsystem": "~4.0", + "drupal/paragraphs": "~1.0", + "drupal/select2": "~1.0", + "drupal/smtp": "~1.0", + "drupal/styleguide": "~1.0", + "drupal/telephone_validation": "~2.0", + "drupal/token": "*", + "drupal/variationcache": "~1.0", + "drupal/webform_access": "*", + "drupal/webform_attachment": "*", + "drupal/webform_clientside_validation": "*", + "drupal/webform_devel": "*", + "drupal/webform_entity_print": "*", + "drupal/webform_group": "*", + "drupal/webform_node": "*", + "drupal/webform_options_limit": "*", + "drupal/webform_scheduled_email": "*", + "drupal/webform_share": "*", + "drupal/webform_ui": "*" + }, + "suggest": { + "drupal/jquery_ui_checkboxradio": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", + "drupal/jquery_ui_datepicker": "Provides jQuery UI Datepicker library. Required to support datepickers. The Webform jQueryUI Datepicker module is deprecated because jQueryUI is no longer maintained." + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "6.1.2", + "datestamp": "1638988073", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Jacob Rockowitz (jrockowitz)", + "homepage": "https://www.drupal.org/u/jrockowitz", + "role": "Maintainer" + }, + { + "name": "Alexander Trotsenko (bucefal91)", + "homepage": "https://www.drupal.org/u/bucefal91", + "role": "Co-maintainer" + }, + { + "name": "Contributors", + "homepage": "https://www.drupal.org/node/7404/committers", + "role": "Contributor" + }, + { + "name": "quicksketch", + "homepage": "https://www.drupal.org/user/35821" + }, + { + "name": "torotil", + "homepage": "https://www.drupal.org/user/865256" + } + ], + "description": "Enables the creation of webforms and questionnaires.", + "homepage": "https://drupal.org/project/webform", + "support": { + "source": "https://git.drupalcode.org/project/webform", + "issues": "https://www.drupal.org/project/issues/webform?version=8.x", + "docs": "https://www.drupal.org/docs/8/modules/webform", + "forum": "https://drupal.stackexchange.com/questions/tagged/webform" + } + }, + { + "name": "drush/drush", + "version": "10.6.2", + "source": { + "type": "git", + "url": "https://github.com/drush-ops/drush.git", + "reference": "0a570a16ec63259eb71195aba5feab532318b337" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/0a570a16ec63259eb71195aba5feab532318b337", + "reference": "0a570a16ec63259eb71195aba5feab532318b337", + "shasum": "" + }, + "require": { + "chi-teck/drupal-code-generator": "^1.32.1", + "composer/semver": "^1.4 || ^3", + "consolidation/config": "^1.2", + "consolidation/filter-via-dot-access-data": "^1", + "consolidation/robo": "^1.4.11 || ^2 || ^3", + "consolidation/site-alias": "^3.0.0@stable", + "consolidation/site-process": "^2.1 || ^4", + "enlightn/security-checker": "^1", + "ext-dom": "*", + "grasmash/yaml-expander": "^1.1.1", + "guzzlehttp/guzzle": "^6.3 || ^7.0", + "league/container": "^2.5 || ^3.4", + "php": ">=7.1.3", + "psr/log": "~1.0", + "psy/psysh": ">=0.6 <0.11", + "symfony/event-dispatcher": "^3.4 || ^4.0", + "symfony/finder": "^3.4 || ^4.0 || ^5", + "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0", + "symfony/yaml": "^3.4 || ^4.0", + "webflo/drupal-finder": "^1.2", + "webmozart/path-util": "^2.1.0" + }, + "conflict": { + "drupal/migrate_run": "*", + "drupal/migrate_tools": "<= 5" + }, + "require-dev": { + "composer/installers": "^1.7", + "cweagans/composer-patches": "~1.0", + "david-garcia/phpwhois": "4.3.0", + "drupal/alinks": "1.0.0", + "drupal/core-recommended": "^8.8", + "phpunit/phpunit": ">=7.5.20", + "squizlabs/php_codesniffer": "^2.7 || ^3", + "vlucas/phpdotenv": "^2.4", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "bin": [ + "drush" + ], + "type": "library", + "extra": { + "installer-paths": { + "sut/core": [ + "type:drupal-core" + ], + "sut/libraries/{$name}": [ + "type:drupal-library" + ], + "sut/modules/unish/{$name}": [ + "drupal/devel" + ], + "sut/themes/unish/{$name}": [ + "drupal/empty_theme" + ], + "sut/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "sut/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "sut/themes/contrib/{$name}": [ + "type:drupal-theme" + ], + "sut/drush/contrib/{$name}": [ + "type:drupal-drush" + ] + } + }, + "autoload": { + "psr-4": { + "Drush\\": "src/", + "Drush\\Internal\\": "src/internal-forks" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Moshe Weitzman", + "email": "weitzman@tejasa.com" + }, + { + "name": "Owen Barton", + "email": "drupal@owenbarton.com" + }, + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + }, + { + "name": "Jonathan Araña Cruz", + "email": "jonhattan@faita.net" + }, + { + "name": "Jonathan Hedstrom", + "email": "jhedstrom@gmail.com" + }, + { + "name": "Christopher Gervais", + "email": "chris@ergonlogic.com" + }, + { + "name": "Dave Reid", + "email": "dave@davereid.net" + }, + { + "name": "Damian Lee", + "email": "damiankloip@googlemail.com" + } + ], + "description": "Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt.", + "homepage": "http://www.drush.org", + "support": { + "forum": "http://drupal.stackexchange.com/questions/tagged/drush", + "irc": "irc://irc.freenode.org/drush", + "issues": "https://github.com/drush-ops/drush/issues", + "slack": "https://drupal.slack.com/messages/C62H9CWQM", + "source": "https://github.com/drush-ops/drush/tree/10.6.2" + }, + "funding": [ + { + "url": "https://github.com/weitzman", + "type": "github" + } + ], + "time": "2021-12-15T17:09:54+00:00" + }, + { + "name": "egulias/email-validator", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ee0db30118f661fb166bcffbf5d82032df484697" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", + "reference": "ee0db30118f661fb166bcffbf5d82032df484697", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2021-10-11T09:18:27+00:00" + }, + { + "name": "enlightn/security-checker", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/enlightn/security-checker.git", + "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/enlightn/security-checker/zipball/dc5bce653fa4d9c792e9dcffa728c0642847c1e1", + "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.3|^7.0", + "php": ">=5.6", + "symfony/console": "^3.4|^4|^5", + "symfony/finder": "^3|^4|^5", + "symfony/process": "^3.4|^4|^5", + "symfony/yaml": "^3.4|^4|^5" + }, + "require-dev": { + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^2.18", + "phpunit/phpunit": "^5.5|^6|^7|^8|^9" + }, + "bin": [ + "security-checker" + ], + "type": "library", + "autoload": { + "psr-4": { + "Enlightn\\SecurityChecker\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paras Malhotra", + "email": "paras@laravel-enlightn.com" + }, + { + "name": "Miguel Piedrafita", + "email": "soy@miguelpiedrafita.com" + } + ], + "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.", + "keywords": [ + "package", + "php", + "scanner", + "security", + "security advisories", + "vulnerability scanner" + ], + "support": { + "issues": "https://github.com/enlightn/security-checker/issues", + "source": "https://github.com/enlightn/security-checker/tree/v1.9.0" + }, + "time": "2021-05-06T09:03:35+00:00" + }, + { + "name": "enshrined/svg-sanitize", + "version": "0.14.1", + "source": { + "type": "git", + "url": "https://github.com/darylldoyle/svg-sanitizer.git", + "reference": "307b42066fb0b76b5119f5e1f0826e18fefabe95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/307b42066fb0b76b5119f5e1f0826e18fefabe95", + "reference": "307b42066fb0b76b5119f5e1f0826e18fefabe95", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "codeclimate/php-test-reporter": "^0.1.2", + "phpunit/phpunit": "^6.5 || ^8.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "enshrined\\svgSanitize\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Daryll Doyle", + "email": "daryll@enshrined.co.uk" + } + ], + "description": "An SVG sanitizer for PHP", + "support": { + "issues": "https://github.com/darylldoyle/svg-sanitizer/issues", + "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.14.1" + }, + "time": "2021-08-09T23:46:54+00:00" + }, + { + "name": "fileeye/mimemap", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/FileEye/MimeMap.git", + "reference": "4ceb1162e179b2e74683f3229543225db56798f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FileEye/MimeMap/zipball/4ceb1162e179b2e74683f3229543225db56798f1", + "reference": "4ceb1162e179b2e74683f3229543225db56798f1", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "^5 | ^6 | ^7 | ^8 | ^9", + "sebastian/comparator": "*", + "sebastian/diff": "*", + "squizlabs/php_codesniffer": "*", + "symfony/console": "*", + "symfony/filesystem": "*", + "symfony/var-dumper": "*", + "symfony/yaml": "*" + }, + "bin": [ + "bin/fileeye-mimemap" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "FileEye\\MimeMap\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "description": "A PHP library to handle MIME Content-Type fields and their related file extensions.", + "homepage": "https://github.com/FileEye/MimeMap", + "keywords": [ + "mime", + "mime-database", + "mime-parser", + "mime-type" + ], + "support": { + "issues": "https://github.com/FileEye/MimeMap/issues", + "source": "https://github.com/FileEye/MimeMap/tree/1.2.1" + }, + "time": "2021-11-22T13:10:38+00:00" + }, + { + "name": "giggsey/libphonenumber-for-php", + "version": "8.12.41", + "source": { + "type": "git", + "url": "https://github.com/giggsey/libphonenumber-for-php.git", + "reference": "c7b9f89a25e37e8bb650a378c3eabcbdafedeafd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/c7b9f89a25e37e8bb650a378c3eabcbdafedeafd", + "reference": "c7b9f89a25e37e8bb650a378c3eabcbdafedeafd", + "shasum": "" + }, + "require": { + "giggsey/locale": "^1.7|^2.0", + "php": ">=5.3.2", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^1.0|^2.0", + "symfony/console": "^2.8|^3.0|^v4.4|^v5.2", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "libphonenumber\\": "src/" + }, + "exclude-from-classmap": [ + "/src/data/", + "/src/carrier/data/", + "/src/geocoding/data/", + "/src/timezone/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "PHP Port of Google's libphonenumber", + "homepage": "https://github.com/giggsey/libphonenumber-for-php", + "keywords": [ + "geocoding", + "geolocation", + "libphonenumber", + "mobile", + "phonenumber", + "validation" + ], + "support": { + "irc": "irc://irc.appliedirc.com/lobby", + "issues": "https://github.com/giggsey/libphonenumber-for-php/issues", + "source": "https://github.com/giggsey/libphonenumber-for-php" + }, + "time": "2022-01-11T10:10:37+00:00" + }, + { + "name": "giggsey/locale", + "version": "2.1", + "source": { + "type": "git", + "url": "https://github.com/giggsey/Locale.git", + "reference": "8d324583b5899e6280a875c43bf1fc9658bc6962" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/Locale/zipball/8d324583b5899e6280a875c43bf1fc9658bc6962", + "reference": "8d324583b5899e6280a875c43bf1fc9658bc6962", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "ext-json": "*", + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^8.5|^9.5", + "symfony/console": "^5.0", + "symfony/filesystem": "^5.0", + "symfony/finder": "^5.0", + "symfony/process": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Giggsey\\Locale\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "Locale functions required by libphonenumber-for-php", + "support": { + "issues": "https://github.com/giggsey/Locale/issues", + "source": "https://github.com/giggsey/Locale/tree/2.1" + }, + "time": "2021-11-04T19:12:22+00:00" + }, + { + "name": "grasmash/expander", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/expander.git", + "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/expander/zipball/95d6037344a4be1dd5f8e0b0b2571a28c397578f", + "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "php": ">=5.4" + }, + "require-dev": { + "greg-1-anderson/composer-test-scenarios": "^1", + "phpunit/phpunit": "^4|^5.5.4", + "satooshi/php-coveralls": "^1.0.2|dev-master", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\Expander\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "Expands internal property references in PHP arrays file.", + "support": { + "issues": "https://github.com/grasmash/expander/issues", + "source": "https://github.com/grasmash/expander/tree/master" + }, + "time": "2017-12-21T22:14:55+00:00" + }, + { + "name": "grasmash/yaml-expander", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/yaml-expander.git", + "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/3f0f6001ae707a24f4d9733958d77d92bf9693b1", + "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "php": ">=5.4", + "symfony/yaml": "^2.8.11|^3|^4" + }, + "require-dev": { + "greg-1-anderson/composer-test-scenarios": "^1", + "phpunit/phpunit": "^4.8|^5.5.4", + "satooshi/php-coveralls": "^1.0.2|dev-master", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\YamlExpander\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "Expands internal property references in a yaml file.", + "support": { + "issues": "https://github.com/grasmash/yaml-expander/issues", + "source": "https://github.com/grasmash/yaml-expander/tree/master" + }, + "time": "2017-12-16T16:06:03+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.5.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.6.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.17.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/6.5" + }, + "time": "2020-06-16T21:01:06+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "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" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "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" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2021-10-05T13:56:00+00:00" + }, + { + "name": "html2text/html2text", + "version": "4.3.1", + "source": { + "type": "git", + "url": "https://github.com/mtibben/html2text.git", + "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", + "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-mbstring": "For best performance", + "symfony/polyfill-mbstring": "If you can't install ext-mbstring" + }, + "type": "library", + "autoload": { + "psr-4": { + "Html2Text\\": [ + "src/", + "test/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Converts HTML to formatted plain text", + "support": { + "issues": "https://github.com/mtibben/html2text/issues", + "source": "https://github.com/mtibben/html2text/tree/4.3.1" + }, + "time": "2020-04-16T23:44:31+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" + }, + { + "name": "laminas/laminas-escaper", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-escaper.git", + "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", + "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-escaper": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.3.0", + "phpunit/phpunit": "^9.3", + "psalm/plugin-phpunit": "^0.12.2", + "vimeo/psalm": "^3.16" + }, + "suggest": { + "ext-iconv": "*", + "ext-mbstring": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", + "homepage": "https://laminas.dev", + "keywords": [ + "escaper", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-escaper/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "source": "https://github.com/laminas/laminas-escaper" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-02T17:10:53+00:00" + }, + { + "name": "laminas/laminas-feed", + "version": "2.15.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-feed.git", + "reference": "3ef837a12833c74b438d2c3780023c4244e0abae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/3ef837a12833c74b438d2c3780023c4244e0abae", + "reference": "3ef837a12833c74b438d2c3780023c4244e0abae", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "laminas/laminas-escaper": "^2.9", + "laminas/laminas-stdlib": "^3.6", + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "laminas/laminas-servicemanager": "<3.3", + "zendframework/zend-feed": "*" + }, + "require-dev": { + "laminas/laminas-cache": "^2.7.2", + "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-db": "^2.13.3", + "laminas/laminas-http": "^2.15", + "laminas/laminas-servicemanager": "^3.7", + "laminas/laminas-validator": "^2.15", + "phpunit/phpunit": "^9.5.5", + "psalm/plugin-phpunit": "^0.13.0", + "psr/http-message": "^1.0.1", + "vimeo/psalm": "^4.1" + }, + "suggest": { + "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", + "laminas/laminas-db": "Laminas\\Db component, for use with PubSubHubbub", + "laminas/laminas-http": "Laminas\\Http for PubSubHubbub, and optionally for use with Laminas\\Feed\\Reader", + "laminas/laminas-servicemanager": "Laminas\\ServiceManager component, for easily extending ExtensionManager implementations", + "laminas/laminas-validator": "Laminas\\Validator component, for validating email addresses used in Atom feeds and entries when using the Writer subcomponent", + "psr/http-message": "PSR-7 ^1.0.1, if you wish to use Laminas\\Feed\\Reader\\Http\\Psr7ResponseDecorator" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Feed\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides functionality for consuming RSS and Atom feeds", + "homepage": "https://laminas.dev", + "keywords": [ + "feed", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-feed/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-feed/issues", + "rss": "https://github.com/laminas/laminas-feed/releases.atom", + "source": "https://github.com/laminas/laminas-feed" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-20T18:11:11+00:00" + }, + { + "name": "laminas/laminas-stdlib", + "version": "3.6.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "db581851a092246ad99e12d4fddf105184924c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/db581851a092246ad99e12d4fddf105184924c71", + "reference": "db581851a092246ad99e12d4fddf105184924c71", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-stdlib": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.3.0", + "phpbench/phpbench": "^0.17.1", + "phpunit/phpunit": "~9.3.7", + "psalm/plugin-phpunit": "^0.16.0", + "vimeo/psalm": "^4.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "SPL extensions, array utilities, error handlers, and more", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "stdlib" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stdlib/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stdlib/issues", + "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", + "source": "https://github.com/laminas/laminas-stdlib" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-11-10T11:33:52+00:00" + }, + { + "name": "league/container", + "version": "3.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/container.git", + "reference": "84ecbc2dbecc31bd23faf759a0e329ee49abddbd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/container/zipball/84ecbc2dbecc31bd23faf759a0e329ee49abddbd", + "reference": "84ecbc2dbecc31bd23faf759a0e329ee49abddbd", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/container": "^1.0.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "orno/di": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0 || ^7.0", + "roave/security-advisories": "dev-latest", + "scrutinizer/ocular": "^1.8", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Container\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Bennett", + "email": "philipobenito@gmail.com", + "homepage": "http://www.philipobenito.com", + "role": "Developer" + } + ], + "description": "A fast and intuitive dependency injection container.", + "homepage": "https://github.com/thephpleague/container", + "keywords": [ + "container", + "dependency", + "di", + "injection", + "league", + "provider", + "service" + ], + "support": { + "issues": "https://github.com/thephpleague/container/issues", + "source": "https://github.com/thephpleague/container/tree/3.4.1" + }, + "funding": [ + { + "url": "https://github.com/philipobenito", + "type": "github" + } + ], + "time": "2021-07-09T08:23:52+00:00" + }, + { + "name": "league/csv", + "version": "9.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/9d2e0265c5d90f5dd601bc65ff717e05cec19b47", + "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "friendsofphp/php-cs-fixer": "^v3.4.0", + "phpstan/phpstan": "^1.3.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0", + "phpunit/phpunit": "^9.5.11" + }, + "suggest": { + "ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Csv\\": "src" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2022-01-04T00:13:07+00:00" + }, + { + "name": "lsolesen/pel", + "version": "0.9.9", + "source": { + "type": "git", + "url": "https://github.com/pel/pel.git", + "reference": "95dd3c16161c588f0ac66662c1870a073159e5ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pel/pel/zipball/95dd3c16161c588f0ac66662c1870a073159e5ec", + "reference": "95dd3c16161c588f0ac66662c1870a073159e5ec", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "ext-gd": "*", + "phpunit/phpunit": ">=4.8.36 <8", + "satooshi/php-coveralls": "1.0.*", + "squizlabs/php_codesniffer": "^3.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "lsolesen\\pel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "Lars Olesen", + "email": "lars@intraface.dk", + "homepage": "http://intraface.dk", + "role": "Developer" + }, + { + "name": "Martin Geisler", + "email": "martin@geisler.net", + "homepage": "http://geisler.net", + "role": "Developer" + } + ], + "description": "PHP Exif Library. A library for reading and writing Exif headers in JPEG and TIFF images using PHP.", + "homepage": "http://pel.github.com/pel/", + "keywords": [ + "exif", + "image" + ], + "support": { + "issues": "https://github.com/pel/pel/issues", + "source": "https://github.com/pel/pel/tree/0.9.9" + }, + "time": "2020-11-07T06:04:18+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.7.5", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab", + "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-libxml": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "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.7.5" + }, + "time": "2021-07-01T14:25:37+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.13.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + }, + "time": "2021-11-30T19:35:32+00:00" + }, + { + "name": "pear/archive_tar", + "version": "1.4.14", + "source": { + "type": "git", + "url": "https://github.com/pear/Archive_Tar.git", + "reference": "4d761c5334c790e45ef3245f0864b8955c562caa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/4d761c5334c790e45ef3245f0864b8955c562caa", + "reference": "4d761c5334c790e45ef3245f0864b8955c562caa", + "shasum": "" + }, + "require": { + "pear/pear-core-minimal": "^1.10.0alpha2", + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-bz2": "Bz2 compression support.", + "ext-xz": "Lzma2 compression support.", + "ext-zlib": "Gzip compression support." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Archive_Tar": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Vincent Blavet", + "email": "vincent@phpconcept.net" + }, + { + "name": "Greg Beaver", + "email": "greg@chiaraquartet.net" + }, + { + "name": "Michiel Rook", + "email": "mrook@php.net" + } + ], + "description": "Tar file management class with compression support (gzip, bzip2, lzma2)", + "homepage": "https://github.com/pear/Archive_Tar", + "keywords": [ + "archive", + "tar" + ], + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar", + "source": "https://github.com/pear/Archive_Tar" + }, + "funding": [ + { + "url": "https://github.com/mrook", + "type": "github" + }, + { + "url": "https://www.patreon.com/michielrook", + "type": "patreon" + } + ], + "time": "2021-07-20T13:53:39+00:00" + }, + { + "name": "pear/console_getopt", + "version": "v1.4.3", + "source": { + "type": "git", + "url": "https://github.com/pear/Console_Getopt.git", + "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0", + "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Console": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Andrei Zmievski", + "email": "andrei@php.net", + "role": "Lead" + }, + { + "name": "Stig Bakken", + "email": "stig@php.net", + "role": "Developer" + }, + { + "name": "Greg Beaver", + "email": "cellog@php.net", + "role": "Helper" + } + ], + "description": "More info available on: http://pear.php.net/package/Console_Getopt", + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_Getopt", + "source": "https://github.com/pear/Console_Getopt" + }, + "time": "2019-11-20T18:27:48+00:00" + }, + { + "name": "pear/pear-core-minimal", + "version": "v1.10.11", + "source": { + "type": "git", + "url": "https://github.com/pear/pear-core-minimal.git", + "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/68d0d32ada737153b7e93b8d3c710ebe70ac867d", + "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d", + "shasum": "" + }, + "require": { + "pear/console_getopt": "~1.4", + "pear/pear_exception": "~1.0" + }, + "replace": { + "rsky/pear-core-min": "self.version" + }, + "type": "library", + "autoload": { + "psr-0": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "src/" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@php.net", + "role": "Lead" + } + ], + "description": "Minimal set of PEAR core files to be used as composer dependency", + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", + "source": "https://github.com/pear/pear-core-minimal" + }, + "time": "2021-08-10T22:31:03+00:00" + }, + { + "name": "pear/pear_exception", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/pear/PEAR_Exception.git", + "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", + "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "<9" + }, + "type": "class", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "PEAR/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "." + ], + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Helgi Thormar", + "email": "dufuz@php.net" + }, + { + "name": "Greg Beaver", + "email": "cellog@php.net" + } + ], + "description": "The PEAR Exception base class.", + "homepage": "https://github.com/pear/PEAR_Exception", + "keywords": [ + "exception" + ], + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR_Exception", + "source": "https://github.com/pear/PEAR_Exception" + }, + "time": "2021-03-21T15:43:46+00:00" + }, + { + "name": "phenx/php-font-lib", + "version": "0.5.4", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", + "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "shasum": "" + }, + "require": { + "ext-mbstring": "*" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3 || ^4 || ^5" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + }, + "time": "2021-12-17T19:44:54+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.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": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.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.1" + }, + "time": "2021-03-05T17:36:06+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/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": "psy/psysh", + "version": "v0.10.12", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "a0d9981aa07ecfcbea28e4bfa868031cca121e7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a0d9981aa07ecfcbea28e4bfa868031cca121e7d", + "reference": "a0d9981aa07ecfcbea28e4bfa868031cca121e7d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", + "php": "^8.0 || ^7.0 || ^5.5.9", + "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", + "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "3.17.*" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.10.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.10.12" + }, + "time": "2021-11-30T14:05:36+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": "skilldlabs/drupal-cleanup", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/skilld-labs/drupal-cleanup.git", + "reference": "36935e5dd9c6f9ddf31397065c8a7b82dadb7470" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/skilld-labs/drupal-cleanup/zipball/36935e5dd9c6f9ddf31397065c8a7b82dadb7470", + "reference": "36935e5dd9c6f9ddf31397065c8a7b82dadb7470", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1 || ^2", + "php": ">=7.3.0" + }, + "type": "composer-plugin", + "extra": { + "class": "SkilldDrupal\\DrupalCleanup" + }, + "autoload": { + "psr-4": { + "SkilldDrupal\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Removes files on Drupal packages.", + "keywords": [ + "drupal" + ], + "support": { + "issues": "https://github.com/skilld-labs/drupal-cleanup/issues", + "source": "https://github.com/skilld-labs/drupal-cleanup/tree/1.2" + }, + "time": "2020-09-25T14:16:08+00:00" + }, + { + "name": "skilldlabs/druxxy", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/skilld-labs/druxxy.git", + "reference": "e3c2e41c4b3bc8793cfbd84fe256e0727b92b083" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/skilld-labs/druxxy/zipball/e3c2e41c4b3bc8793cfbd84fe256e0727b92b083", + "reference": "e3c2e41c4b3bc8793cfbd84fe256e0727b92b083", + "shasum": "" + }, + "require": { + "composer/installers": "^1.9", + "cweagans/composer-patches": "^1.6.5", + "drupal/block_content_permissions": "^1", + "drupal/coffee": "^1.2", + "drupal/config_override_warn": "^1.3", + "drupal/core-project-message": "^9.0", + "drupal/core-recommended": "^9", + "drupal/custom_pub": "^1.0@beta", + "drupal/file_entity": "2.x-dev", + "drupal/focal_point": "^1.4", + "drupal/formblock": "^2.0@beta", + "drupal/gin": "^3.0@alpha", + "drupal/gin_login": "^1.0@RC", + "drupal/google_tag": "^1.2", + "drupal/layout_builder_modal": "^1.1", + "drupal/layout_builder_restrictions": "^2.7", + "drupal/layout_library": "^1.0@beta", + "drupal/layout_paragraphs": "^1.0@beta", + "drupal/lb_ux": "1.x-dev", + "drupal/manage_display": "^1.0@alpha", + "drupal/menu_admin_per_menu": "^1.1", + "drupal/menu_link_attributes": "^1.1", + "drupal/page_manager": "^4.0.0-beta6", + "drupal/panels": "^4.6", + "drupal/panels_everywhere": "^4.0@beta", + "drupal/paragraphs": "^1.11", + "drupal/password_policy": "^3.0", + "drupal/pathauto": "^1.8", + "drupal/rabbit_hole": "^1.0.0-beta7", + "drupal/redirect": "^1.6", + "drupal/remove_http_headers": "^1.0", + "drupal/role_delegation": "^1.1", + "drupal/seckit": "^2.0", + "drupal/svg_image": "^1.14", + "drupal/swiftmailer": "^2", + "drupal/telephone_validation": "^2.3", + "drupal/token": "^1", + "drupal/username_enumeration_prevention": "^1.1", + "drupal/userprotect": "^1.1", + "drupal/views_bulk_edit": "2.x-dev", + "drupal/views_bulk_operations": "^3.9", + "drupal/webform": "^6" + }, + "conflict": { + "drupal/drupal": "*" + }, + "default-branch": true, + "type": "drupal-profile", + "extra": { + "installer-paths": { + "web/core": [ + "type:drupal-core" + ], + "web/libraries/{$name}": [ + "type:drupal-library" + ], + "web/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "web/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "web/themes/contrib/{$name}": [ + "type:drupal-theme" + ], + "drush/Commands/contrib/{$name}": [ + "type:drupal-drush" + ] + }, + "composer-exit-on-patch-failure": true, + "patchLevel": { + "drupal/core": "-p2" + }, + "patches": { + "drupal/core": { + "Translated field denormalization creates duplicate values": "https://www.drupal.org/files/issues/2019-07-02/2904423-core_8_8-72.patch", + "Fix multilingual site's layout edit context issue": "https://www.drupal.org/files/issues/2019-12-19/3101231-19.patch", + "SQLite database locking errors cause fatal errors": "https://www.drupal.org/files/issues/1120020-59.patch", + "Error: Call to a member function getLabel() after enabling layout_builder": "https://www.drupal.org/files/issues/2019-11-14/2985882-entityfield-43.patch", + "POST /quickedit/metadata returning HTTP 503": "https://www.drupal.org/files/issues/2021-06-07/2893407-47.patch", + "Callers of LayoutEntityHelperTrait::getEntitySections() do not account for the view mode": "https://www.drupal.org/files/issues/2021-12-09/3008924-rerolled-24.patch", + "Claro + layout builder messages display additional icon in top left corner": "https://www.drupal.org/files/issues/2020-05-28/claro_layout_builder_extra_icon-3143237-4.patch", + "Expose Layout Builder data to REST and JSON:API": "https://git.drupalcode.org/project/drupal/-/merge_requests/1131.diff", + "Taxonomy pages crash with layout_builder enabled": "https://www.drupal.org/files/issues/2018-09-19/2959132-taxo-17-PASS.patch" + }, + "drupal/block_content_permissions": { + "Allow accessing the Custom block library page without Administer blocks permission": "https://www.drupal.org/files/issues/2020-06-05/block_content_permissions-access_listing_page-2920739-31.patch" + }, + "drupal/focal_point": { + "Integrate focal point with media_library": "https://www.drupal.org/files/issues/2019-12-11/focal_point-compatibility-with-media-libary-3094478-2.patch" + }, + "drupal/lb_ux": { + "Cog icon not showing when Preview disabled": "https://www.drupal.org/files/issues/2020-05-22/3116402-8.patch", + "Errors when using with modules that alter a section's contextual menu": "https://www.drupal.org/files/issues/2020-05-22/3106939-4.patch" + }, + "drupal/menu_link_attributes": { + "Add missing schema for menu_link_attributes": "https://patch-diff.githubusercontent.com/raw/yannickoo/menu_link_attributes/pull/52.patch" + }, + "drupal/password_policy": { + "Policies should declare a config dependency on the plugin modules": "https://www.drupal.org/files/issues/2020-04-14/2918974-7-11.patch" + }, + "drupal/gin_login": { + "Add missing schema for gin_login": "https://www.drupal.org/files/issues/2021-01-13/gin_login-config_schema-3192526-8.patch" + } + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Skilld", + "homepage": "https://www.drupal.org/skilld", + "role": "Maintainer" + } + ], + "description": "Drupal distribution focused on page building, contributor experience and a strict separation of Drupal content and Drupal configuration for streamlined deployments.", + "support": { + "issues": "https://github.com/skilld-labs/druxxy/issues", + "source": "https://github.com/skilld-labs/druxxy/tree/main" + }, + "time": "2021-12-22T17:06:51+00:00" + }, + { + "name": "stack/builder", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/stackphp/builder.git", + "reference": "a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stackphp/builder/zipball/a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c", + "reference": "a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c", + "shasum": "" + }, + "require": { + "php": ">=7.2.0", + "symfony/http-foundation": "~2.1|~3.0|~4.0|~5.0", + "symfony/http-kernel": "~2.1|~3.0|~4.0|~5.0" + }, + "require-dev": { + "phpunit/phpunit": "~8.0", + "symfony/routing": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Stack": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Builder for stack middleware based on HttpKernelInterface.", + "keywords": [ + "stack" + ], + "support": { + "issues": "https://github.com/stackphp/builder/issues", + "source": "https://github.com/stackphp/builder/tree/v1.0.6" + }, + "time": "2020-01-30T12:17:27+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.0|^3.1", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.4" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "abandoned": "symfony/mailer", + "time": "2021-10-18T15:26:12+00:00" + }, + { + "name": "symfony-cmf/routing", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony-cmf/Routing.git", + "reference": "bbcdf2f6301d740454ba9ebb8adaefd436c36a6b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/bbcdf2f6301d740454ba9ebb8adaefd436c36a6b", + "reference": "bbcdf2f6301d740454ba9ebb8adaefd436c36a6b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/http-kernel": "^4.4 || ^5.0", + "symfony/routing": "^4.4 || ^5.0" + }, + "require-dev": { + "symfony-cmf/testing": "^3@dev", + "symfony/config": "^4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/event-dispatcher": "^4.4 || ^5.0", + "symfony/phpunit-bridge": "^5.0" + }, + "suggest": { + "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version (^4.4 || ^5.0)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Cmf\\Component\\Routing\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony CMF Community", + "homepage": "https://github.com/symfony-cmf/Routing/contributors" + } + ], + "description": "Extends the Symfony routing component for dynamic routes and chaining several routers", + "homepage": "http://cmf.symfony.com", + "keywords": [ + "database", + "routing" + ], + "support": { + "issues": "https://github.com/symfony-cmf/Routing/issues", + "source": "https://github.com/symfony-cmf/Routing/tree/2.3.4" + }, + "time": "2021-11-08T16:33:10+00:00" + }, + { + "name": "symfony/console", + "version": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/329b3a75cc6b16d435ba1b1a41df54a53382a3f0", + "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.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", + "support": { + "source": "https://github.com/symfony/console/tree/v4.4.34" + }, + "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-04T12:23:33+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/debug", + "version": "v4.4.31", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0", + "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "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 ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/v4.4.31" + }, + "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-09-24T13:30:14+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/117d7f132ed7efbd535ec947709d49bec1b9d24b", + "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/container": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^4.4|^5.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/v4.4.34" + }, + "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-15T14:42:25+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-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/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-07-12T14:48:14+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "17785c374645def1e884d8ec49976c156c61db4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/17785c374645def1e884d8ec49976c156c61db4d", + "reference": "17785c374645def1e884d8ec49976c156c61db4d", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "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/v4.4.34" + }, + "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-12T14:57:39+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", + "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/error-handler": "~3.4|~4.4", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.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/v4.4.34" + }, + "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-15T14:42:25+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", + "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-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/v1.1.11" + }, + "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-03-23T15:25:38+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.4.27", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "517fb795794faf29086a77d99eb8f35e457837a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/517fb795794faf29086a77d99eb8f35e457837a7", + "reference": "517fb795794faf29086a77d99eb8f35e457837a7", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~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/v4.4.27" + }, + "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-21T12:19:41+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/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": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4cbbb6fc428588ce8373802461e7fe84e6809ab", + "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" + }, + "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/v4.4.34" + }, + "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-04T12:23:33+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v4.4.35", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb793f1381c34b79a43596a532a6a49bd729c9db", + "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/browser-kit": "<4.3", + "symfony/config": "<3.4", + "symfony/console": ">=5", + "symfony/dependency-injection": "<4.3", + "symfony/translation": "<4.2", + "twig/twig": "<1.43|<2.13,>=2" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^4.3|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.2|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^1.43|^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/v4.4.35" + }, + "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-24T08:40:10+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "d4365000217b67c01acff407573906ff91bcfb34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/d4365000217b67c01acff407573906ff91bcfb34", + "reference": "d4365000217b67c01acff407573906ff91bcfb34", + "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/" + ] + }, + "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 manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/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/polyfill-ctype", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "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\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.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-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "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\\Iconv\\": "" + }, + "files": [ + "bootstrap.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": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.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-05-27T09:27:20+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "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\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "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/polyfill-intl-idn/tree/v1.23.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-05-27T09:27:20+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "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" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.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-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "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\\": "" + }, + "files": [ + "bootstrap.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": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.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-05-27T12:26:48+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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\\Php72\\": "" + }, + "files": [ + "bootstrap.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": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.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-05-27T09:17:38+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.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-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "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/polyfill-php80/tree/v1.23.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-07-28T13:41:28+00:00" + }, + { + "name": "symfony/process", + "version": "v4.4.35", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "c2098705326addae6e6742151dfade47ac71da1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/c2098705326addae6e6742151dfade47ac71da1b", + "reference": "c2098705326addae6e6742151dfade47ac71da1b", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "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": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v4.4.35" + }, + "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-22T22:36:24+00:00" + }, + { + "name": "symfony/psr-http-message-bridge", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0", + "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + }, + "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" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "PSR HTTP message bridge", + "homepage": "http://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.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-11-05T13:13:39+00:00" + }, + { + "name": "symfony/routing", + "version": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", + "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "psr/log": "^1|^2|^3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "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": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v4.4.34" + }, + "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-04T12:23:33+00:00" + }, + { + "name": "symfony/serializer", + "version": "v4.4.35", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "1b2ae02cb1b923987947e013688c51954a80b751" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/1b2ae02cb1b923987947e013688c51954a80b751", + "reference": "1b2ae02cb1b923987947e013688c51954a80b751", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "symfony/dependency-injection": "<3.4", + "symfony/property-access": "<3.4", + "symfony/property-info": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "symfony/cache": "^3.4|^4.0|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^3.4.41|^4.4.9|^5.0.9", + "symfony/property-info": "^3.4.13|~4.0|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping.", + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/yaml": "For using the default YAML mapping loader." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v4.4.35" + }, + "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-24T08:12:42+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-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\\Service\\": "" + } + }, + "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 writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-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-04T16:48:04+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "26d330720627b234803595ecfc0191eeabc65190" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/26d330720627b234803595ecfc0191eeabc65190", + "reference": "26d330720627b234803595ecfc0191eeabc65190", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/finder": "~2.8|~3.0|~4.0|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "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 internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v4.4.34" + }, + "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-04T12:23:33+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-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\\Translation\\": "" + } + }, + "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 translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-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/validator", + "version": "v4.4.35", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "629f420d8350634fd8ed686d4472c1f10044b265" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/629f420d8350634fd8ed686d4472c1f10044b265", + "reference": "629f420d8350634fd8ed686d4472c1f10044b265", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/lexer": "<1.0.2", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.3", + "symfony/translation": ">=5.0", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "egulias/email-validator": "^2.1.10|^3", + "symfony/cache": "^3.4|^4.0|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/http-foundation": "^4.1|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^4.3|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader.", + "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", + "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": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "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 validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v4.4.35" + }, + "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-22T21:43:32+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "89ab66eaef230c9cd1992de2e9a1b26652b127b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/89ab66eaef230c9cd1992de2e9a1b26652b127b9", + "reference": "89ab66eaef230c9cd1992de2e9a1b26652b127b9", + "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" + }, + "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" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "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 mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/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/yaml", + "version": "v4.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "2c309e258adeb9970229042be39b360d34986fad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2c309e258adeb9970229042be39b360d34986fad", + "reference": "2c309e258adeb9970229042be39b360d34986fad", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "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": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v4.4.34" + }, + "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-18T18:49:23+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "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" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "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", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + }, + "time": "2021-12-08T09:12:39+00:00" + }, + { + "name": "twig/twig", + "version": "v2.14.7", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "8e202327ee1ed863629de9b18a5ec70ac614d88f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/8e202327ee1ed863629de9b18a5ec70ac614d88f", + "reference": "8e202327ee1ed863629de9b18a5ec70ac614d88f", + "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" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.14-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "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": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v2.14.7" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-09-17T08:39:54+00:00" + }, + { + "name": "typo3/phar-stream-wrapper", + "version": "v3.1.7", + "source": { + "type": "git", + "url": "https://github.com/TYPO3/phar-stream-wrapper.git", + "reference": "5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TYPO3/phar-stream-wrapper/zipball/5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c", + "reference": "5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "ext-xdebug": "*", + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^5.1" + }, + "suggest": { + "ext-fileinfo": "For PHP builtin file type guessing, otherwise uses internal processing" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "v3.x-dev" + } + }, + "autoload": { + "psr-4": { + "TYPO3\\PharStreamWrapper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Interceptors for PHP's native phar:// stream handling", + "homepage": "https://typo3.org/", + "keywords": [ + "phar", + "php", + "security", + "stream-wrapper" + ], + "support": { + "issues": "https://github.com/TYPO3/phar-stream-wrapper/issues", + "source": "https://github.com/TYPO3/phar-stream-wrapper/tree/v3.1.7" + }, + "time": "2021-09-20T19:19:13+00:00" + }, + { + "name": "webflo/drupal-finder", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/webflo/drupal-finder.git", + "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/c8e5dbe65caef285fec8057a4c718a0d4138d1ee", + "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee", + "shasum": "" + }, + "require": { + "ext-json": "*" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^4.8" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/DrupalFinder.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Florian Weber", + "email": "florian@webflo.org" + } + ], + "description": "Helper class to locate a Drupal installation from a given path.", + "support": { + "issues": "https://github.com/webflo/drupal-finder/issues", + "source": "https://github.com/webflo/drupal-finder/tree/1.2.2" + }, + "time": "2020-10-27T09:42:17+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "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" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + }, + { + "name": "webmozart/path-util", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/path-util.git", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "webmozart/assert": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\PathUtil\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "support": { + "issues": "https://github.com/webmozart/path-util/issues", + "source": "https://github.com/webmozart/path-util/tree/2.3.0" + }, + "abandoned": "symfony/filesystem", + "time": "2015-12-17T08:42:14+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/behat", + "version": "v3.10.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Behat.git", + "reference": "a55661154079cf881ef643b303bfaf67bae3a09f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Behat/zipball/a55661154079cf881ef643b303bfaf67bae3a09f", + "reference": "a55661154079cf881ef643b303bfaf67bae3a09f", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.9.0", + "behat/transliterator": "^1.2", + "ext-mbstring": "*", + "php": "^7.2 || ^8.0", + "psr/container": "^1.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/event-dispatcher": "^4.4 || ^5.0 || ^6.0", + "symfony/translation": "^4.4 || ^5.0 || ^6.0", + "symfony/yaml": "^4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "container-interop/container-interop": "^1.2", + "herrera-io/box": "~1.6.1", + "phpunit/phpunit": "^8.5 || ^9.0", + "symfony/process": "^4.4 || ^5.0 || ^6.0", + "vimeo/psalm": "^4.8" + }, + "suggest": { + "ext-dom": "Needed to output test results in JUnit format." + }, + "bin": [ + "bin/behat" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Behat\\": "src/Behat/Behat/", + "Behat\\Testwork\\": "src/Behat/Testwork/", + "Behat\\Step\\": "src/Behat/Step/", + "Behat\\Hook\\": "src/Behat/Hook/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Scenario-oriented BDD framework for PHP", + "homepage": "http://behat.org/", + "keywords": [ + "Agile", + "BDD", + "ScenarioBDD", + "Scrum", + "StoryBDD", + "User story", + "business", + "development", + "documentation", + "examples", + "symfony", + "testing" + ], + "support": { + "issues": "https://github.com/Behat/Behat/issues", + "source": "https://github.com/Behat/Behat/tree/v3.10.0" + }, + "time": "2021-11-02T20:09:40+00:00" + }, + { + "name": "behat/gherkin", + "version": "v4.9.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", + "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", + "shasum": "" + }, + "require": { + "php": "~7.2|~8.0" + }, + "require-dev": { + "cucumber/cucumber": "dev-gherkin-22.0.0", + "phpunit/phpunit": "~8|~9", + "symfony/yaml": "~3|~4|~5" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "support": { + "issues": "https://github.com/Behat/Gherkin/issues", + "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" + }, + "time": "2021-10-12T13:05:09+00:00" + }, + { + "name": "behat/mink", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/minkphp/Mink.git", + "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/Mink/zipball/e35f4695de8800fc776af34ebf665ad58ebdd996", + "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "symfony/css-selector": "^2.7|^3.0|^4.0|^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5 || ^9.5", + "symfony/debug": "^2.7|^3.0|^4.0|^5.0", + "symfony/phpunit-bridge": "^3.4.38 || ^4.4 || ^5.0.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", + "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", + "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", + "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)", + "dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Browser controller/emulator abstraction for PHP", + "homepage": "https://mink.behat.org/", + "keywords": [ + "browser", + "testing", + "web" + ], + "support": { + "issues": "https://github.com/minkphp/Mink/issues", + "source": "https://github.com/minkphp/Mink/tree/v1.9.0" + }, + "time": "2021-10-11T11:58:47+00:00" + }, + { + "name": "behat/mink-browserkit-driver", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", + "reference": "057926c9da452bac5bfcffb92eb4f3e1ce74dae9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/057926c9da452bac5bfcffb92eb4f3e1ce74dae9", + "reference": "057926c9da452bac5bfcffb92eb4f3e1ce74dae9", + "shasum": "" + }, + "require": { + "behat/mink": "^1.7.1@dev", + "php": ">=5.4", + "symfony/browser-kit": "~2.3|~3.0|~4.0", + "symfony/dom-crawler": "~2.3|~3.0|~4.0" + }, + "require-dev": { + "mink/driver-testsuite": "dev-master", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.18 || ^8.5 || ^9.5", + "symfony/debug": "^2.7|^3.0|^4.0", + "symfony/http-kernel": "~2.3|~3.0|~4.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Symfony2 BrowserKit driver for Mink framework", + "homepage": "https://mink.behat.org/", + "keywords": [ + "Mink", + "Symfony2", + "browser", + "testing" + ], + "support": { + "issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues", + "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v1.4.1" + }, + "time": "2021-12-10T14:17:06+00:00" + }, + { + "name": "behat/mink-extension", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/Behat/MinkExtension.git", + "reference": "80f7849ba53867181b7e412df9210e12fba50177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", + "reference": "80f7849ba53867181b7e412df9210e12fba50177", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.5", + "behat/mink": "^1.5", + "php": ">=5.3.2", + "symfony/config": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "behat/mink-goutte-driver": "^1.1", + "phpspec/phpspec": "^2.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "Mink extension for Behat", + "homepage": "http://extensions.behat.org/mink", + "keywords": [ + "browser", + "gui", + "test", + "web" + ], + "support": { + "issues": "https://github.com/Behat/MinkExtension/issues", + "source": "https://github.com/Behat/MinkExtension/tree/master" + }, + "time": "2018-02-06T15:36:30+00:00" + }, + { + "name": "behat/mink-goutte-driver", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkGoutteDriver.git", + "reference": "8139f520f417c81bf9d2f9a171fff400f6adc9ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8139f520f417c81bf9d2f9a171fff400f6adc9ea", + "reference": "8139f520f417c81bf9d2f9a171fff400f6adc9ea", + "shasum": "" + }, + "require": { + "behat/mink-browserkit-driver": "~1.2@dev", + "fabpot/goutte": "~1.0.4|~2.0|~3.1", + "php": ">=5.4" + }, + "require-dev": { + "mink/driver-testsuite": "dev-master" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Goutte driver for Mink framework", + "homepage": "https://mink.behat.org/", + "keywords": [ + "browser", + "goutte", + "headless", + "testing" + ], + "support": { + "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", + "source": "https://github.com/minkphp/MinkGoutteDriver/tree/v1.3.0" + }, + "time": "2021-10-12T11:35:46+00:00" + }, + { + "name": "behat/mink-selenium2-driver", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkSelenium2Driver.git", + "reference": "0dee8cceed7e198bf130b4af0fab0ffab6dab47f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/0dee8cceed7e198bf130b4af0fab0ffab6dab47f", + "reference": "0dee8cceed7e198bf130b4af0fab0ffab6dab47f", + "shasum": "" + }, + "require": { + "behat/mink": "~1.7@dev", + "instaclick/php-webdriver": "~1.1", + "php": ">=5.4" + }, + "require-dev": { + "mink/driver-testsuite": "dev-master" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pete Otaqui", + "email": "pete@otaqui.com", + "homepage": "https://github.com/pete-otaqui" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Selenium2 (WebDriver) driver for Mink framework", + "homepage": "https://mink.behat.org/", + "keywords": [ + "ajax", + "browser", + "javascript", + "selenium", + "testing", + "webdriver" + ], + "support": { + "issues": "https://github.com/minkphp/MinkSelenium2Driver/issues", + "source": "https://github.com/minkphp/MinkSelenium2Driver/tree/v1.5.0" + }, + "time": "2021-10-12T16:01:47+00:00" + }, + { + "name": "behat/transliterator", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Transliterator.git", + "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", + "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "chuyskywalker/rolling-curl": "^3.1", + "php-yaoi/php-yaoi": "^1.0", + "phpunit/phpunit": "^4.8.36|^6.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Transliterator\\": "src/Behat/Transliterator" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Artistic-1.0" + ], + "description": "String transliterator", + "keywords": [ + "i18n", + "slug", + "transliterator" + ], + "support": { + "issues": "https://github.com/Behat/Transliterator/issues", + "source": "https://github.com/Behat/Transliterator/tree/v1.3.0" + }, + "time": "2020-01-14T16:39:13+00:00" + }, + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "support": { + "issues": "https://github.com/container-interop/container-interop/issues", + "source": "https://github.com/container-interop/container-interop/tree/master" + }, + "abandoned": "psr/container", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "dmore/behat-chrome-extension", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://gitlab.com/DMore/behat-chrome-extension.git", + "reference": "6279986ef85ac179f055460502e9b11c3784146c" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/DMore%2Fbehat-chrome-extension/repository/archive.zip?sha=6279986ef85ac179f055460502e9b11c3784146c", + "reference": "6279986ef85ac179f055460502e9b11c3784146c", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.4", + "behat/mink-extension": "^2.0", + "dmore/chrome-mink-driver": "^2.4.1", + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "DMore\\ChromeExtension\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dorian More", + "email": "doriancmore@gmail.com" + } + ], + "description": "Behat extension for controlling chrome without selenium", + "keywords": [ + "Behat", + "chrome", + "driver", + "headless" + ], + "time": "2019-03-30T08:57:34+00:00" + }, + { + "name": "dmore/chrome-mink-driver", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://gitlab.com/DMore/chrome-mink-driver.git", + "reference": "f85c8f86ca2e9000119c310577a6942683f7e280" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/DMore%2Fchrome-mink-driver/repository/archive.zip?sha=f85c8f86ca2e9000119c310577a6942683f7e280", + "reference": "f85c8f86ca2e9000119c310577a6942683f7e280", + "shasum": "" + }, + "require": { + "behat/mink": "^1.7", + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "textalk/websocket": "^1.2.0" + }, + "require-dev": { + "mink/driver-testsuite": "dev-master", + "phpunit/phpunit": "^5.0.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "DMore\\ChromeDriver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dorian More", + "email": "doriancmore@gmail.com" + } + ], + "description": "Mink driver for controlling chrome without selenium", + "support": { + "issues": "https://gitlab.com/api/v4/projects/3255077/issues" + }, + "time": "2021-04-25T06:49:32+00:00" + }, + { + "name": "doctrine/cache", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", + "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", + "shasum": "" + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "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", + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/1.12.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "type": "tidelift" + } + ], + "time": "2021-07-17T14:39:21+00:00" + }, + { + "name": "doctrine/collections", + "version": "1.6.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", + "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "shasum": "" + }, + "require": { + "php": "^7.1.3 || ^8.0" + }, + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", + "keywords": [ + "array", + "collections", + "iterators", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/1.6.8" + }, + "time": "2021-08-10T18:51:53+00:00" + }, + { + "name": "doctrine/common", + "version": "2.13.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", + "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/inflector": "^1.0", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^1.3.3", + "doctrine/reflection": "^1.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpunit/phpunit": "^7.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^4.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", + "keywords": [ + "common", + "doctrine", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/2.13.x" + }, + "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%2Fcommon", + "type": "tidelift" + } + ], + "time": "2020-06-05T16:46:05+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + }, + "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%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2020-05-29T18:28:51+00:00" + }, + { + "name": "doctrine/inflector", + "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^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" + }, + "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" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/1.4.4" + }, + "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%2Finflector", + "type": "tidelift" + } + ], + "time": "2021-04-16T17:34:40+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "doctrine/persistence", + "version": "1.3.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", + "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/reflection": "^1.2", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.10@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^3.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common", + "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "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", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/1.3.x" + }, + "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": "2020-06-20T12:56:16+00:00" + }, + { + "name": "drupal/config_inspector", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/config_inspector.git", + "reference": "8.x-1.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_inspector-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "5ac1077648f331bafece71babb911d4812b4632c" + }, + "require": { + "drupal/core": "^8 || ^9" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.4", + "datestamp": "1633293698", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Gábor Hojtsy", + "homepage": "https://www.drupal.org/user/4166" + }, + { + "name": "Jose Reyero", + "homepage": "https://www.drupal.org/user/4299" + }, + { + "name": "aspilicious", + "homepage": "https://www.drupal.org/user/172527" + }, + { + "name": "vijaycs85", + "homepage": "https://www.drupal.org/user/93488" + }, + { + "name": "vuil", + "homepage": "https://www.drupal.org/user/3568458" + } + ], + "description": "Provides a configuration data and structure inspector tool", + "homepage": "https://drupal.org/project/config_inspector", + "support": { + "source": "https://cgit.drupalcode.org/config_inspector", + "issues": "https://drupal.org/project/issues/config_inspector", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, + { + "name": "drupal/devel", + "version": "4.1.3", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/devel.git", + "reference": "4.1.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/devel-4.1.3.zip", + "reference": "4.1.3", + "shasum": "f82261ca19a43379742e1df4c5a3795ef7a70441" + }, + "require": { + "doctrine/common": "^2.7", + "drupal/core": "^8.8 || ^9", + "symfony/var-dumper": "^4 || ^5" + }, + "conflict": { + "kint-php/kint": "<3" + }, + "require-dev": { + "drush/drush": "^10" + }, + "suggest": { + "kint-php/kint": "Kint provides an informative display of arrays/objects. Useful for debugging and developing." + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "4.1.3", + "datestamp": "1639534069", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "drupalspoons", + "homepage": "https://www.drupal.org/user/3647684" + }, + { + "name": "moshe weitzman", + "homepage": "https://www.drupal.org/user/23" + } + ], + "description": "Various blocks, pages, and functions for developers.", + "homepage": "https://www.drupal.org/project/devel", + "support": { + "source": "https://gitlab.com/drupalspoons/devel", + "issues": "https://gitlab.com/drupalspoons/devel/-/issues", + "slack": "https://drupal.slack.com/archives/C012WAW1MH6" + } + }, + { + "name": "drupal/drupal-driver", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/jhedstrom/DrupalDriver.git", + "reference": "a33cb7618476997e1b7330ae9225c91cbab32e1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jhedstrom/DrupalDriver/zipball/a33cb7618476997e1b7330ae9225c91cbab32e1c", + "reference": "a33cb7618476997e1b7330ae9225c91cbab32e1c", + "shasum": "" + }, + "require": { + "drupal/core-utility": "^8.4 || ^9", + "php": ">=5.6", + "symfony/dependency-injection": "~2.6|~3.0|~4.4", + "symfony/process": "~2.5|~3.0|~4.4" + }, + "require-dev": { + "drupal/coder": "~8.3.0", + "drush-ops/behat-drush-endpoint": "*", + "jakub-onderka/php-parallel-lint": "^1.0", + "mockery/mockery": "0.9.4", + "phpspec/phpspec": "~2.0 || ~4.0 || ~6.1", + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Drupal\\Driver": "src/", + "Drupal\\Tests\\Driver": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Jonathan Hedstrom", + "email": "jhedstrom@gmail.com" + } + ], + "description": "A collection of reusable Drupal drivers", + "homepage": "http://github.com/jhedstrom/DrupalDriver", + "keywords": [ + "drupal", + "test", + "web" + ], + "support": { + "issues": "https://github.com/jhedstrom/DrupalDriver/issues", + "source": "https://github.com/jhedstrom/DrupalDriver/tree/v2.1.1" + }, + "time": "2021-05-07T20:47:33+00:00" + }, + { + "name": "drupal/drupal-extension", + "version": "v4.1.0", + "source": { + "type": "git", + "url": "https://github.com/jhedstrom/drupalextension.git", + "reference": "f611a70aaa2d1ef6b3fdae9c35dc573508c7d648" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jhedstrom/drupalextension/zipball/f611a70aaa2d1ef6b3fdae9c35dc573508c7d648", + "reference": "f611a70aaa2d1ef6b3fdae9c35dc573508c7d648", + "shasum": "" + }, + "require": { + "behat/behat": "~3.2", + "behat/mink": "~1.5", + "behat/mink-extension": "~2.0", + "behat/mink-goutte-driver": "~1.0", + "behat/mink-selenium2-driver": "~1.1", + "drupal/drupal-driver": "^2.1.0", + "symfony/browser-kit": "^3.4|~4.4", + "symfony/dependency-injection": "~3.0|~4.4", + "symfony/translation": "^3.4|~4.4" + }, + "require-dev": { + "drupal/coder": "^8.3", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "phpspec/phpspec": "~2.0 || ~4.0" + }, + "type": "behat-extension", + "autoload": { + "psr-0": { + "Drupal\\Drupal": "src/", + "Drupal\\Exception": "src/", + "Drupal\\DrupalExtension": "src/", + "Drupal\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Jonathan Hedstrom", + "email": "jhedstrom@gmail.com" + }, + { + "name": "Melissa Anderson", + "homepage": "https://github.com/eliza411" + }, + { + "name": "Pieter Frenssen", + "homepage": "https://github.com/pfrenssen" + } + ], + "description": "Drupal extension for Behat", + "homepage": "http://drupal.org/project/drupalextension", + "keywords": [ + "drupal", + "test", + "web" + ], + "support": { + "issues": "https://github.com/jhedstrom/drupalextension/issues", + "source": "https://github.com/jhedstrom/drupalextension/tree/v4.1.0" + }, + "time": "2020-06-01T18:13:52+00:00" + }, + { + "name": "drupal/upgrade_status", + "version": "3.11.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/upgrade_status.git", + "reference": "8.x-3.11" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/upgrade_status-8.x-3.11.zip", + "reference": "8.x-3.11", + "shasum": "e3e9a22db979581246e34f9fafdaba75e4124962" + }, + "require": { + "drupal/core": "^8 || ^9", + "mathieuviossat/arraytotexttable": "~1.0.0", + "mglaman/phpstan-drupal": "^0.12.12", + "nikic/php-parser": "^4.0.0", + "phpstan/phpstan-deprecation-rules": "^0.12.0", + "symfony/process": "^3.4|^4.0|^5.0", + "webflo/drupal-finder": "^1.2" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.11", + "datestamp": "1632233579", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Gábor Hojtsy", + "homepage": "https://www.drupal.org/user/4166" + }, + { + "name": "colan", + "homepage": "https://www.drupal.org/user/58704" + }, + { + "name": "herczogzoltan", + "homepage": "https://www.drupal.org/user/3528391" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + }, + { + "name": "webchick", + "homepage": "https://www.drupal.org/user/24967" + }, + { + "name": "xjm", + "homepage": "https://www.drupal.org/user/65776" + } + ], + "description": "Review Drupal major upgrade readiness of the environment and components of the site.", + "homepage": "http://drupal.org/project/upgrade_status", + "support": { + "source": "https://git.drupalcode.org/project/upgrade_status" + } + }, + { + "name": "espend/behat-placeholder-extension", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/Haehnchen/behat-placeholder-extension.git", + "reference": "46bc6d021aa1f61c8fbe6a34cc5412d77ba43ce3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Haehnchen/behat-placeholder-extension/zipball/46bc6d021aa1f61c8fbe6a34cc5412d77ba43ce3", + "reference": "46bc6d021aa1f61c8fbe6a34cc5412d77ba43ce3", + "shasum": "" + }, + "require": { + "behat/behat": "~3.0", + "php": ">=7.0" + }, + "require-dev": { + "behat/symfony2-extension": "^2.1", + "doctrine/common": "~2.0", + "phpunit/phpunit": "^6.0", + "symfony/property-access": "~3.0" + }, + "suggest": { + "behat/symfony2-extension": "Allows usages for Doctrine context", + "doctrine/common": "Needed to support Doctrine context" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "espend\\Behat\\PlaceholderExtension\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Espendiller", + "email": "daniel@espendiller.net" + } + ], + "description": "Behat placeholder extension", + "keywords": [ + "BDD", + "Behat", + "Context", + "extension", + "symfony" + ], + "support": { + "issues": "https://github.com/Haehnchen/behat-placeholder-extension/issues", + "source": "https://github.com/Haehnchen/behat-placeholder-extension/tree/1.2" + }, + "time": "2021-04-11T09:43:06+00:00" + }, + { + "name": "fabpot/goutte", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/Goutte.git", + "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/80a23b64f44d54dd571d114c473d9d7e9ed84ca5", + "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": ">=7.1.3", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.0" + }, + "type": "application", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Goutte\\": "Goutte" + }, + "exclude-from-classmap": [ + "Goutte/Tests" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A simple PHP Web Scraper", + "homepage": "https://github.com/FriendsOfPHP/Goutte", + "keywords": [ + "scraper" + ], + "support": { + "issues": "https://github.com/FriendsOfPHP/Goutte/issues", + "source": "https://github.com/FriendsOfPHP/Goutte/tree/v3.3.1" + }, + "time": "2020-11-01T09:30:18+00:00" + }, + { + "name": "genesis/behat-fail-aid", + "version": "2.5.3", + "source": { + "type": "git", + "url": "https://github.com/forceedge01/behat-fail-aid.git", + "reference": "d2003483676a6a0166867b1a0c03d1afbc850300" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/forceedge01/behat-fail-aid/zipball/d2003483676a6a0166867b1a0c03d1afbc850300", + "reference": "d2003483676a6a0166867b1a0c03d1afbc850300", + "shasum": "" + }, + "require": { + "behat/mink": "*@stable", + "behat/mink-extension": "~2.0@stable", + "behat/mink-selenium2-driver": "^1.3" + }, + "require-dev": { + "behat/behat": "^3.5", + "behat/mink-goutte-driver": "^1.2", + "ciaranmcnulty/behat-localwebserverextension": "^1.1", + "phpunit/phpunit": "4.*" + }, + "suggest": { + "genesis/db-backup-restore": "Quickly backup and restore your database.", + "genesis/sql-data-mods": "Extends behat-sql-extension to provide a powerful and simple framework to manage your data modules.", + "genesis/test-routing": "Simplistic routing that can extend main app routing for testing purposes." + }, + "type": "library", + "autoload": { + "psr-4": { + "FailAid\\": "bootstrap/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Abdul Wahhab Qureshi" + } + ], + "description": "Get more out of your test suite by getting it to work with you when tests fail. Screenshots and more. Works with Goutte and MinkExtension.", + "keywords": [ + "Behat", + "behat-error", + "behat-exception", + "behat-fail", + "behat-screenshot", + "error", + "fail", + "screenshot" + ], + "support": { + "issues": "https://github.com/forceedge01/behat-fail-aid/issues", + "source": "https://github.com/forceedge01/behat-fail-aid/tree/2.5.3" + }, + "time": "2020-01-03T17:15:17+00:00" + }, + { + "name": "instaclick/php-webdriver", + "version": "1.4.10", + "source": { + "type": "git", + "url": "https://github.com/instaclick/php-webdriver.git", + "reference": "6bc1f44cf23031e68c326cd61e14ec32486f241b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/6bc1f44cf23031e68c326cd61e14ec32486f241b", + "reference": "6bc1f44cf23031e68c326cd61e14ec32486f241b", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "satooshi/php-coveralls": "^1.0||^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "WebDriver": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Justin Bishop", + "email": "jubishop@gmail.com", + "role": "Developer" + }, + { + "name": "Anthon Pang", + "email": "apang@softwaredevelopment.ca", + "role": "Fork Maintainer" + } + ], + "description": "PHP WebDriver for Selenium 2", + "homepage": "http://instaclick.com/", + "keywords": [ + "browser", + "selenium", + "webdriver", + "webtest" + ], + "support": { + "issues": "https://github.com/instaclick/php-webdriver/issues", + "source": "https://github.com/instaclick/php-webdriver/tree/1.4.10" + }, + "time": "2021-10-14T03:25:34+00:00" + }, + { + "name": "laminas/laminas-servicemanager", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "e52b985909e0940bf22d34f322eb3f48bbef6bd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/e52b985909e0940bf22d34f322eb3f48bbef6bd1", + "reference": "e52b985909e0940bf22d34f322eb3f48bbef6bd1", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "laminas/laminas-stdlib": "^3.2.1", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0", + "psr/container": "^1.0" + }, + "conflict": { + "laminas/laminas-code": "<3.3.1", + "zendframework/zend-code": "<3.3.1", + "zendframework/zend-servicemanager": "*" + }, + "provide": { + "container-interop/container-interop-implementation": "^1.2", + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.0", + "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-container-config-test": "^0.3", + "laminas/laminas-dependency-plugin": "^2.1.2", + "mikey179/vfsstream": "^1.6.10@alpha", + "ocramius/proxy-manager": "^2.11", + "phpbench/phpbench": "^1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5.5", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.8" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" + }, + "bin": [ + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" + ], + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Factory-Driven Dependency Injection Container", + "homepage": "https://laminas.dev", + "keywords": [ + "PSR-11", + "dependency-injection", + "di", + "dic", + "laminas", + "service-manager", + "servicemanager" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-servicemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-servicemanager/issues", + "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", + "source": "https://github.com/laminas/laminas-servicemanager" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-18T20:19:36+00:00" + }, + { + "name": "laminas/laminas-text", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-text.git", + "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/8879e75d03e09b0d6787e6680cfa255afd4645a7", + "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7", + "shasum": "" + }, + "require": { + "laminas/laminas-servicemanager": "^3.4", + "laminas/laminas-stdlib": "^3.6", + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-text": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Text\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Create FIGlets and text-based tables", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "text" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-text/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-text/issues", + "rss": "https://github.com/laminas/laminas-text/releases.atom", + "source": "https://github.com/laminas/laminas-text" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-02T16:50:53+00:00" + }, + { + "name": "mathieuviossat/arraytotexttable", + "version": "v1.0.8", + "source": { + "type": "git", + "url": "https://github.com/viossat/arraytotexttable.git", + "reference": "6b1af924478cb9c3a903269e304fff006fe0dbf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/viossat/arraytotexttable/zipball/6b1af924478cb9c3a903269e304fff006fe0dbf4", + "reference": "6b1af924478cb9c3a903269e304fff006fe0dbf4", + "shasum": "" + }, + "require": { + "laminas/laminas-text": "^2.7", + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "MathieuViossat\\Util\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathieu Viossat", + "email": "mathieu@viossat.fr", + "homepage": "https://viossat.fr" + } + ], + "description": "Display arrays in terminal", + "homepage": "https://github.com/viossat/arraytotexttable", + "keywords": [ + "array", + "ascii", + "table", + "terminal", + "text", + "unicode" + ], + "support": { + "issues": "https://github.com/viossat/arraytotexttable/issues", + "source": "https://github.com/viossat/arraytotexttable/tree/v1.0.8" + }, + "time": "2020-06-23T17:14:22+00:00" + }, + { + "name": "mglaman/phpstan-drupal", + "version": "0.12.15", + "source": { + "type": "git", + "url": "https://github.com/mglaman/phpstan-drupal.git", + "reference": "1d65da838f3f5136e30e7a7023c235775f30c53e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/1d65da838f3f5136e30e7a7023c235775f30c53e", + "reference": "1d65da838f3f5136e30e7a7023c235775f30c53e", + "shasum": "" + }, + "require": { + "nette/finder": "^2.5", + "php": "^7.1 || ^8.0", + "phpstan/phpstan": "^0.12.65", + "symfony/yaml": "~3.4.5|^4.2", + "webflo/drupal-finder": "^1.2" + }, + "require-dev": { + "composer/installers": "^1.9", + "drupal/core-dev": "^8.8@alpha || ^9.0", + "drupal/core-recommended": "^8.8@alpha || ^9.0", + "drush/drush": "^9.6 | ^10.0", + "phpstan/phpstan-deprecation-rules": "~0.12.0", + "phpstan/phpstan-strict-rules": "^0.12.0", + "phpunit/phpunit": "^6.5 || ^7.5 || ^8.0 || ^9", + "squizlabs/php_codesniffer": "^3.3" + }, + "suggest": { + "phpstan/phpstan-deprecation-rules": "For catching deprecations, especially in Drupal core." + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "0.12-dev" + }, + "installer-paths": { + "tests/fixtures/drupal/core": [ + "type:drupal-core" + ], + "tests/fixtures/drupal/libraries/{$name}": [ + "type:drupal-library" + ], + "tests/fixtures/drupal/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "tests/fixtures/drupal/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "tests/fixtures/drupal/themes/contrib/{$name}": [ + "type:drupal-theme" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "drupal-phpunit-hack.php" + ], + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Glaman", + "email": "nmd.matt@gmail.com" + } + ], + "description": "Drupal extension and rules for PHPStan", + "support": { + "issues": "https://github.com/mglaman/phpstan-drupal/issues", + "source": "https://github.com/mglaman/phpstan-drupal/tree/0.12.15" + }, + "funding": [ + { + "url": "https://github.com/mglaman", + "type": "github" + }, + { + "url": "https://opencollective.com/phpstan-drupal", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/mglaman/phpstan-drupal", + "type": "tidelift" + } + ], + "time": "2021-10-06T20:17:36+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "nette/finder", + "version": "v2.5.3", + "source": { + "type": "git", + "url": "https://github.com/nette/finder.git", + "reference": "64dc25b7929b731e72a1bc84a9e57727f5d5d3e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/finder/zipball/64dc25b7929b731e72a1bc84a9e57727f5d5d3e8", + "reference": "64dc25b7929b731e72a1bc84a9e57727f5d5d3e8", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4 || ^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "phpstan/phpstan": "^0.12", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ], + "support": { + "issues": "https://github.com/nette/finder/issues", + "source": "https://github.com/nette/finder/tree/v2.5.3" + }, + "time": "2021-12-12T17:43:24+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "2f261e55bd6a12057442045bf2c249806abc1d02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/2f261e55bd6a12057442045bf2c249806abc1d02", + "reference": "2f261e55bd6a12057442045bf2c249806abc1d02", + "shasum": "" + }, + "require": { + "php": ">=7.2 <8.2" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.6" + }, + "time": "2021-11-24T15:47:23+00:00" + }, + { + "name": "palantirnet/drupal-rector", + "version": "0.11.4", + "source": { + "type": "git", + "url": "https://github.com/palantirnet/drupal-rector.git", + "reference": "c792c679fb84690a9d0650eda6338f14e5f16af8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/palantirnet/drupal-rector/zipball/c792c679fb84690a9d0650eda6338f14e5f16af8", + "reference": "c792c679fb84690a9d0650eda6338f14e5f16af8", + "shasum": "" + }, + "require": { + "rector/rector": "~0.11.53", + "webflo/drupal-finder": "^1.2" + }, + "replace": { + "drupal8-rector/drupal8-rector": "*", + "palantirnet/drupal8-rector": "*" + }, + "require-dev": { + "php": "^8.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^0.12.82", + "phpstan/phpstan-deprecation-rules": "^0.12.6", + "phpunit/phpunit": "^9.5", + "rector/rector-src": "~0.11.39", + "symfony/yaml": "^5" + }, + "type": "library", + "autoload": { + "psr-4": { + "DrupalRector\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dezső Biczó", + "email": "mxr576@gmail.com" + }, + { + "name": "Ofer Shaal", + "email": "shaal@palantir.net" + }, + { + "name": "Daniel Montgomery", + "email": "montgomery@palantir.net" + }, + { + "name": "Matt Glaman", + "email": "nmd.matt@gmail.com" + } + ], + "description": "Instant fixes for your Drupal code by using Rector.", + "keywords": [ + "Code style", + "Drupal 8", + "ast", + "drupal 9", + "rector" + ], + "support": { + "source": "https://github.com/palantirnet/drupal-rector/tree/0.11.4" + }, + "time": "2021-10-13T15:58:26+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "bae7c545bef187884426f042434e561ab1ddb182" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "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" + }, + "time": "2021-02-23T14:00:09+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "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": "phpspec/prophecy", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "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" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "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": "phpspec/prophecy-phpunit", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy-phpunit.git", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "phpspec/prophecy": "^1.3", + "phpunit/phpunit": "^9.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\PhpUnit\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integrating the Prophecy mocking library in PHPUnit test cases", + "homepage": "http://phpspec.net", + "keywords": [ + "phpunit", + "prophecy" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy-phpunit/issues", + "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" + }, + "time": "2020-07-09T08:33:42+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "0.12.99", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", + "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.12-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/0.12.99" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpstan", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2021-09-12T20:09:55+00:00" + }, + { + "name": "phpstan/phpstan-deprecation-rules", + "version": "0.12.6", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "46dbd43c2db973d2876d6653e53f5c2cc3a01fbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/46dbd43c2db973d2876d6653e53f5c2cc3a01fbb", + "reference": "46dbd43c2db973d2876d6653e53f5c2cc3a01fbb", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "phpstan/phpstan": "^0.12.60" + }, + "require-dev": { + "phing/phing": "^2.16.3", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.5.20" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "0.12-dev" + }, + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", + "support": { + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/0.12.6" + }, + "time": "2020-12-13T10:20:54+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", + "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-05T09:12:13+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "2406855036db1102126125537adb1406f7242fdd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd", + "reference": "2406855036db1102126125537adb1406f7242fdd", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.7", + "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/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-25T07:07:57+00:00" + }, + { + "name": "rector/rector", + "version": "0.11.60", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "428f593818f8c50fe12c543e8c0a107f9bd899ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/428f593818f8c50fe12c543e8c0a107f9bd899ae", + "reference": "428f593818f8c50fe12c543e8c0a107f9bd899ae", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0", + "phpstan/phpstan": "0.12.99" + }, + "conflict": { + "phpstan/phpdoc-parser": "<=0.5.3", + "phpstan/phpstan": "<=0.12.82", + "rector/rector-cakephp": "*", + "rector/rector-doctrine": "*", + "rector/rector-laravel": "*", + "rector/rector-nette": "*", + "rector/rector-phpoffice": "*", + "rector/rector-phpunit": "*", + "rector/rector-prefixed": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Prefixed and PHP 7.1 downgraded version of rector/rector", + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/0.11.60" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2021-10-20T13:08:22+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.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" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v4.4.27", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", + "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/mime": "^4.3|^5.0", + "symfony/process": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "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": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v4.4.27" + }, + "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-21T12:19:41+00:00" + }, + { + "name": "symfony/config", + "version": "v4.4.36", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "03218ffbd5faeda5e6a97f9109acebf7973ff385" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/03218ffbd5faeda5e6a97f9109acebf7973ff385", + "reference": "03218ffbd5faeda5e6a97f9109acebf7973ff385", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" + }, + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.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/v4.4.36" + }, + "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-12T15:06:47+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v4.4.36", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "42de12bee3b5e594977209bcdf58ec4fef8dde39" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/42de12bee3b5e594977209bcdf58ec4fef8dde39", + "reference": "42de12bee3b5e594977209bcdf58ec4fef8dde39", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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 DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.36" + }, + "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-28T14:48:02+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v5.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "59bbd98ee7aa15b9f75c0fc088c7a5cbf7aa9b5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/59bbd98ee7aa15b9f75c0fc088c7a5cbf7aa9b5c", + "reference": "59bbd98ee7aa15b9f75c0fc088c7a5cbf7aa9b5c", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "phpunit/phpunit": "<7.5|9.1.2" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^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" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "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/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/polyfill-php81", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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\\Php81\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.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-09-13T13:58:11+00:00" + }, + { + "name": "textalk/websocket", + "version": "1.5.5", + "source": { + "type": "git", + "url": "https://github.com/Textalk/websocket-php.git", + "reference": "846542f82658132cd36acb7a7e8ce0f03960c295" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/846542f82658132cd36acb7a7e8ce0f03960c295", + "reference": "846542f82658132cd36acb7a7e8ce0f03960c295", + "shasum": "" + }, + "require": { + "php": "^7.2 | ^8.0", + "psr/log": "^1 | ^2 | ^3" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^8.0|^9.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "WebSocket\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Fredrik Liljegren" + }, + { + "name": "Sören Jensen", + "email": "soren@abicart.se" + } + ], + "description": "WebSocket client and server", + "support": { + "issues": "https://github.com/Textalk/websocket-php/issues", + "source": "https://github.com/Textalk/websocket-php/tree/1.5.5" + }, + "time": "2021-08-07T10:21:40+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "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" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "drupal/better_normalizers": 10, + "skilldlabs/druxxy": 20 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.1.0" +} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index dd5d47ba2..ac632ad86 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -1,4 +1,4 @@ -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: {{ .Values.projectName }} @@ -14,11 +14,14 @@ spec: - host: local.skilld.cloud http: paths: - - path: / - backend: - serviceName: {{ .Values.projectName }} - servicePort: 80 + - path: / + pathType: ImplementationSpecific + backend: + service: + name: {{ .Values.projectName }} + port: + number: 80 tls: - hosts: - local.skilld.cloud - secretName: {{ .Values.projectName }}-tls \ No newline at end of file + secretName: {{ .Values.projectName }}-tls diff --git a/kubernetes/sdc.yaml b/kubernetes/sdc.yaml index 68bdb8cd2..f66dc3c55 100644 --- a/kubernetes/sdc.yaml +++ b/kubernetes/sdc.yaml @@ -98,7 +98,7 @@ spec: selector: mrn: sdc --- -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: sdc @@ -116,10 +116,13 @@ spec: - host: local.skilld.cloud http: paths: - - path: / - backend: - serviceName: sdc - servicePort: 80 + - path: / + pathType: ImplementationSpecific + backend: + service: + name: sdc + port: + number: 80 tls: - hosts: - local.skilld.cloud From 1100092de1e660534fd9911403591760f79fb5a6 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 11 Jan 2022 11:41:36 +0100 Subject: [PATCH 04/38] Update --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5e1de68e5..b104dc6ed 100644 --- a/Makefile +++ b/Makefile @@ -177,7 +177,7 @@ info: ifdef REVIEW_DOMAIN $(eval BASE_URL := $(MAIN_DOMAIN_NAME)) else - $(eval BASE_URL := $(shell kubectl get pods -l name=sdc --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}')) + $(eval BASE_URL := $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}')) endif $(info Login as System Admin: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(ADMIN_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) $(info Login as Contributor: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(TESTER_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) From 3d50cb443bab845234dba9829ba57e64dd328d08 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 11 Jan 2022 12:44:53 +0100 Subject: [PATCH 05/38] Update --- Makefile | 2 +- helm/templates/ingress.yaml | 13 ++++ helm/values.yaml | 10 +-- kubernetes/sdc.yaml | 129 ------------------------------------ 4 files changed, 15 insertions(+), 139 deletions(-) delete mode 100644 kubernetes/sdc.yaml diff --git a/Makefile b/Makefile index b104dc6ed..4b2fd3534 100644 --- a/Makefile +++ b/Makefile @@ -89,7 +89,7 @@ endif # TODO: Rename file # kubectl apply -f kubernetes/sdc.yaml helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName="$(COMPOSE_PROJECT_NAME)" sdc ./helm/ # https://github.com/k3s-io/k3s/issues/1126#issuecomment-567591888 - for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 1; done; echo "Container is up !" + for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 2; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index ac632ad86..d62e40fb1 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -1,4 +1,16 @@ +{{- if .Values.ingress.enabled -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} kind: Ingress metadata: name: {{ .Values.projectName }} @@ -25,3 +37,4 @@ spec: - hosts: - local.skilld.cloud secretName: {{ .Values.projectName }}-tls +{{- end }} diff --git a/helm/values.yaml b/helm/values.yaml index 4177f88be..e786346f9 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -2,14 +2,6 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -projectName: yay - -image: - ingress: - enabled: true - -service: - type: ClusterIP - port: 80 + enabled: false diff --git a/kubernetes/sdc.yaml b/kubernetes/sdc.yaml deleted file mode 100644 index f66dc3c55..000000000 --- a/kubernetes/sdc.yaml +++ /dev/null @@ -1,129 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: nginx-config -data: - upstream: | - upstream upstream { - server localhost:9000; - } ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: sdc - labels: - name: sdc -spec: - revisionHistoryLimit: 0 - replicas: 1 - selector: - matchLabels: - name: sdc - strategy: - type: Recreate - template: - metadata: - labels: - name: sdc - spec: - volumes: - - name: codebase - hostPath: - path: /home/dferlay/Sources/df-sdc # TODO: Variable for relative path - type: Directory - - name: nginx-config - configMap: - name: nginx-config - - name: cache-js - emptyDir: - medium: Memory - - name: cache-css - emptyDir: - medium: Memory - - name: cache-php - emptyDir: - medium: Memory - containers: - - name: php - image: skilldlabs/php:74-fpm - env: - - name: COMPOSER_MEMORY_LIMIT - value: "-1" - ports: - - containerPort: 9000 - protocol: TCP - volumeMounts: - - mountPath: /var/www/html - name: codebase - - mountPath: /var/www/html/web/sites/default/files/css - name: cache-css - - mountPath: /var/www/html/web/sites/default/files/js - name: cache-js - - mountPath: /var/www/html/web/sites/default/files/php - name: cache-php - - name: nginx - image: skilldlabs/nginx:1.20 - ports: - - containerPort: 80 - protocol: TCP - volumeMounts: - - mountPath: /var/www/html - name: codebase - - mountPath: /etc/nginx/upstream - name: nginx-config - subPath: upstream - - mountPath: /var/www/html/web/sites/default/files/css - name: cache-css - - mountPath: /var/www/html/web/sites/default/files/js - name: cache-js - - name: mail - image: skilldlabs/mailhog - restartPolicy: Always - nodeSelector: - kubernetes.io/hostname: sdc ---- -apiVersion: v1 -kind: Service -metadata: - name: sdc -spec: - ports: - - name: http - port: 80 - protocol: TCP - - name: mailhog - port: 8025 - protocol: TCP - selector: - mrn: sdc ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: sdc - labels: - mrn: sdc - annotations: - kubernetes.io/tls-acme: "true" - kubernetes.io/ingress.class: web-ingress - cert-manager.io/cluster-issuer: letsencrypt-prod - nginx.ingress.kubernetes.io/from-to-www-redirect: "true" - # nginx.ingress.kubernetes.io/auth-url: {{ kb_ingress_auth_url }} - # nginx.ingress.kubernetes.io/proxy-body-size: {{ kb_ingress_proxy_body_size }} -spec: - rules: - - host: local.skilld.cloud - http: - paths: - - path: / - pathType: ImplementationSpecific - backend: - service: - name: sdc - port: - number: 80 - tls: - - hosts: - - local.skilld.cloud - secretName: sdc-tls From 6ea87c52eb9e3c2bd9d7cd32e8a7aa4c29314703 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 11 Jan 2022 14:25:40 +0100 Subject: [PATCH 06/38] Update --- Makefile | 6 ++---- helm/templates/deployment.yaml | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 4b2fd3534..78f790fe8 100644 --- a/Makefile +++ b/Makefile @@ -86,10 +86,8 @@ endif curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh - # TODO: rm $(which helm) # kubectl config view --raw >~/.kube/config # TODO: Simlink to /etc/rancher/k3s/k3s.yaml OR use helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml sdc ./kubernetes/sdc-chart @echo "Build and run containers..." - # TODO: Rename file -# kubectl apply -f kubernetes/sdc.yaml - helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName="$(COMPOSE_PROJECT_NAME)" sdc ./helm/ # https://github.com/k3s-io/k3s/issues/1126#issuecomment-567591888 - for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 2; done; echo "Container is up !" + helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)" sdc ./helm/ # https://github.com/k3s-io/k3s/issues/1126#issuecomment-567591888 + for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index 5845422ee..fb672d671 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -20,7 +20,7 @@ spec: volumes: - name: codebase hostPath: - path: /home/dferlay/Sources/df-sdc # TODO: Variable for relative path + path: {{ .Values.projectPath }} type: Directory - name: nginx-config configMap: From 8bdebf8185a9e541e5d06dcacea15a7025b86885 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 11 Jan 2022 14:58:40 +0100 Subject: [PATCH 07/38] Update --- Makefile | 13 ++++++++++++- helm/templates/deployment.yaml | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 78f790fe8..0a1c463c1 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,13 @@ fast: $(shell sed -i "s|^#DB_URL=sqlite:///dev/shm/d8.sqlite|DB_URL=sqlite:///dev/shm/d8.sqlite|g" .env) $(shell sed -i "s|^DB_URL=sqlite:./../.cache/d8.sqlite|#DB_URL=sqlite:./../.cache/d8.sqlite|g" .env) +xx: + @echo "Build and \ + run containers..." + helm install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set \ + projectName="$(COMPOSE_PROJECT_NAME)",\ + projectPath="$(CURDIR)" + ## Provision enviroment provision: # Check if enviroment variables has been defined @@ -86,7 +93,11 @@ endif curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh - # TODO: rm $(which helm) # kubectl config view --raw >~/.kube/config # TODO: Simlink to /etc/rancher/k3s/k3s.yaml OR use helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml sdc ./kubernetes/sdc-chart @echo "Build and run containers..." - helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)" sdc ./helm/ # https://github.com/k3s-io/k3s/issues/1126#issuecomment-567591888 + helm install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set \ + projectName="$(COMPOSE_PROJECT_NAME)",\ + projectPath="$(CURDIR)",\ + imagePhp="$(IMAGE_PHP)",\ + imageNginx="$(IMAGE_NGINX)" for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index fb672d671..873b39099 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -36,7 +36,7 @@ spec: medium: Memory containers: - name: php - image: skilldlabs/php:74-fpm + image: {{ .Values.imagePhp }} env: - name: COMPOSER_MEMORY_LIMIT value: "-1" @@ -53,7 +53,7 @@ spec: - mountPath: /var/www/html/web/sites/default/files/php name: cache-php - name: nginx - image: skilldlabs/nginx:1.20 + image: {{ .Values.imageNginx }} ports: - containerPort: 80 protocol: TCP From fe799ae39a49500b514b5f92a14e553ca9f231a8 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 11 Jan 2022 15:18:21 +0100 Subject: [PATCH 08/38] Update --- scripts/makefile/front.mk | 7 ------- 1 file changed, 7 deletions(-) diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index 75b5084b3..641b34d9f 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -39,7 +39,6 @@ front: | front-install front-build front-install: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Installing yarn dependencies..."; \ - docker pull $(IMAGE_FRONT); \ $(call frontexec, node -v); \ $(call frontexec, yarn -v); \ $(call frontexec, yarn install --ignore-optional --check-files --prod); \ @@ -50,7 +49,6 @@ front-install: front-build: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Building front assets..."; \ - docker pull $(IMAGE_FRONT); \ $(call frontexec, node -v); \ $(call frontexec, yarn -v); \ $(call frontexec, yarn build --stats=verbose); \ @@ -61,7 +59,6 @@ front-build: lintval: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running theme linters..."; \ - docker pull $(IMAGE_FRONT); \ $(call frontexec, node -v); \ $(call frontexec, yarn -v); \ $(call frontexec, yarn run lint); \ @@ -72,7 +69,6 @@ lintval: lint: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running theme linters with fix..."; \ - docker pull $(IMAGE_FRONT); \ $(call frontexec, node -v); \ $(call frontexec, yarn -v); \ $(call frontexec, yarn install --ignore-optional --check-files --prod); \ @@ -84,7 +80,6 @@ lint: storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running dynamic storybook..."; \ - docker pull $(IMAGE_FRONT); \ $(call frontexec, node -v); \ $(call frontexec, yarn -v); \ $(call frontexec, yarn install --ignore-optional --check-files); \ @@ -97,7 +92,6 @@ storybook: build-storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Exporting static storybook..."; \ - docker pull $(IMAGE_FRONT); \ $(call frontexec, node -v); \ $(call frontexec, yarn -v); \ $(call frontexec, yarn install --ignore-optional --check-files); \ @@ -109,5 +103,4 @@ build-storybook: create-component: @echo "Create component CLI dialog... It assumed that you already have 'make storybook' or 'make build-storybook' finished" - docker pull $(IMAGE_FRONT) $(call frontexec-with-interactive, yarn cc) From 3eda9d263b1af5364e778f0a8b131ae2ddd4588a Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 20 Jan 2022 14:36:00 +0100 Subject: [PATCH 09/38] Update --- Makefile | 16 +++---------- scripts/makefile/front.mk | 48 +++++++++++++++++++++++++-------------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index 0a1c463c1..f7035e9f0 100644 --- a/Makefile +++ b/Makefile @@ -15,9 +15,6 @@ include .env # Sanitize PROJECT_NAME input COMPOSE_PROJECT_NAME := $(shell echo "$(PROJECT_NAME)" | tr -cd '[a-zA-Z0-9]' | tr '[:upper:]' '[:lower:]') -kk: - helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml --set projectName=$(COMPOSE_PROJECT_NAME) sdc ./helm/ - # Get user/group id to manage permissions between host and containers LOCAL_UID := $(shell id -u) LOCAL_GID := $(shell id -g) @@ -50,6 +47,7 @@ php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} killall: /usr/local/bin/k3s-killall.sh /usr/local/bin/k3s-uninstall.sh + sudo rm -f $(shell which helm) # Variables ADDITIONAL_PHP_PACKAGES := tzdata graphicsmagick # php7-intl php7-redis wkhtmltopdf gnu-libiconv php7-pdo_pgsql postgresql-client postgresql-contrib @@ -68,13 +66,6 @@ fast: $(shell sed -i "s|^#DB_URL=sqlite:///dev/shm/d8.sqlite|DB_URL=sqlite:///dev/shm/d8.sqlite|g" .env) $(shell sed -i "s|^DB_URL=sqlite:./../.cache/d8.sqlite|#DB_URL=sqlite:./../.cache/d8.sqlite|g" .env) -xx: - @echo "Build and \ - run containers..." - helm install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set \ - projectName="$(COMPOSE_PROJECT_NAME)",\ - projectPath="$(CURDIR)" - ## Provision enviroment provision: # Check if enviroment variables has been defined @@ -89,9 +80,8 @@ ifdef DB_MOUNT_DIR endif # make -s down @echo "Downloading and installing container orchestrator..." - curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" sh - # TODO: Check behavior if k3s already install + lock version - curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh - # TODO: rm $(which helm) -# kubectl config view --raw >~/.kube/config # TODO: Simlink to /etc/rancher/k3s/k3s.yaml OR use helm install --kubeconfig=/etc/rancher/k3s/k3s.yaml sdc ./kubernetes/sdc-chart + curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - + curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh - @echo "Build and run containers..." helm install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set \ projectName="$(COMPOSE_PROJECT_NAME)",\ diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index 641b34d9f..bfbd0ceea 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -1,4 +1,5 @@ FRONT_PORT?=65200 +RANDOM_STRING = $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) # Execute front container function. frontexec = docker run \ @@ -9,25 +10,9 @@ frontexec = docker run \ --workdir /app \ $(IMAGE_FRONT) ${1} -# Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook. -frontexec-with-port = docker run \ - --rm \ - --init \ - -p $(FRONT_PORT):$(FRONT_PORT) \ - -u $(CUID):$(CGID) \ - -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ - --workdir /app \ - $(IMAGE_FRONT) ${1} + # Execute front container with TTY. Needed for storybook components creation. -frontexec-with-interactive = docker run \ - --rm \ - --init \ - -u $(CUID):$(CGID) \ - -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ - --workdir /app \ - -it \ - $(IMAGE_FRONT) ${1} clear-front: @echo "Clean of node_modules and compiled dist... To skip this action please set CLEAR_FRONT_PACKAGES=no in .env file" @@ -77,6 +62,18 @@ lint: echo "- Theme directory defined in .env file was not found. Skipping theme linters with fix."; \ fi + + +# Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook. +frontexec-with-port = docker run \ + --rm \ + --init \ + -p $(FRONT_PORT):$(FRONT_PORT) \ + -u $(CUID):$(CGID) \ + -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ + --workdir /app \ + $(IMAGE_FRONT) ${1} + storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running dynamic storybook..."; \ @@ -89,6 +86,9 @@ storybook: echo "- Theme directory defined in .env file was not found. Skipping dynamic storybook."; \ fi + + + build-storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Exporting static storybook..."; \ @@ -101,6 +101,20 @@ build-storybook: echo "- Theme directory defined in .env file was not found. Skipping dynamic storybook."; \ fi +# Execute front container with TTY. Needed for storybook components creation. create-component: @echo "Create component CLI dialog... It assumed that you already have 'make storybook' or 'make build-storybook' finished" + kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": [ "yarn", "cc" ], "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 } } }' + +cc: $(call frontexec-with-interactive, yarn cc) + + +# frontexec-with-interactive = docker run \ +# --rm \ +# -u $(CUID):$(CGID) \ +# -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ +# --workdir /app \ +# --init \ +# -it \ +# $(IMAGE_FRONT) ${1} From b2bf238d14c4d6ca53f16f1772d54bcc9a79c4b4 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 20 Jan 2022 15:03:41 +0100 Subject: [PATCH 10/38] Update --- scripts/makefile/front.mk | 65 ++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index bfbd0ceea..f7b428123 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -16,7 +16,7 @@ frontexec = docker run \ clear-front: @echo "Clean of node_modules and compiled dist... To skip this action please set CLEAR_FRONT_PACKAGES=no in .env file" - $(call frontexec, rm -rf /app/node_modules /app/dist) + $(call frontexec,rm -rf /app/node_modules /app/dist) ## Install frontend dependencies & build assets front: | front-install front-build @@ -24,9 +24,9 @@ front: | front-install front-build front-install: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Installing yarn dependencies..."; \ - $(call frontexec, node -v); \ - $(call frontexec, yarn -v); \ - $(call frontexec, yarn install --ignore-optional --check-files --prod); \ + $(call frontexec,node -v); \ + $(call frontexec,yarn -v); \ + $(call frontexec,yarn install --ignore-optional --check-files --prod); \ else \ echo "- Theme directory defined in .env file was not found. Skipping front-install."; \ fi @@ -34,9 +34,9 @@ front-install: front-build: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Building front assets..."; \ - $(call frontexec, node -v); \ - $(call frontexec, yarn -v); \ - $(call frontexec, yarn build --stats=verbose); \ + $(call frontexec,node -v); \ + $(call frontexec,yarn -v); \ + $(call frontexec,yarn build --stats=verbose); \ else \ echo "- Theme directory defined in .env file was not found. Skipping front-build."; \ fi @@ -44,9 +44,9 @@ front-build: lintval: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running theme linters..."; \ - $(call frontexec, node -v); \ - $(call frontexec, yarn -v); \ - $(call frontexec, yarn run lint); \ + $(call frontexec,node -v); \ + $(call frontexec,yarn -v); \ + $(call frontexec,yarn run lint); \ else \ echo "- Theme directory defined in .env file was not found. Skipping theme linters."; \ fi @@ -54,10 +54,10 @@ lintval: lint: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running theme linters with fix..."; \ - $(call frontexec, node -v); \ - $(call frontexec, yarn -v); \ - $(call frontexec, yarn install --ignore-optional --check-files --prod); \ - $(call frontexec, yarn lint-fix); \ + $(call frontexec,node -v); \ + $(call frontexec,yarn -v); \ + $(call frontexec,yarn install --ignore-optional --check-files --prod); \ + $(call frontexec,yarn lint-fix); \ else \ echo "- Theme directory defined in .env file was not found. Skipping theme linters with fix."; \ fi @@ -77,11 +77,11 @@ frontexec-with-port = docker run \ storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running dynamic storybook..."; \ - $(call frontexec, node -v); \ - $(call frontexec, yarn -v); \ - $(call frontexec, yarn install --ignore-optional --check-files); \ - $(call frontexec, yarn run build); \ - $(call frontexec-with-port, yarn storybook -p $(FRONT_PORT)); \ + $(call frontexec,node -v); \ + $(call frontexec,yarn -v); \ + $(call frontexec,yarn install --ignore-optional --check-files); \ + $(call frontexec,yarn run build); \ + $(call frontexec-with-port,yarn storybook -p $(FRONT_PORT)); \ else \ echo "- Theme directory defined in .env file was not found. Skipping dynamic storybook."; \ fi @@ -92,11 +92,11 @@ storybook: build-storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Exporting static storybook..."; \ - $(call frontexec, node -v); \ - $(call frontexec, yarn -v); \ - $(call frontexec, yarn install --ignore-optional --check-files); \ - $(call frontexec, yarn run build); \ - $(call frontexec, yarn run build-storybook); \ + $(call frontexec,node -v); \ + $(call frontexec,yarn -v); \ + $(call frontexec,yarn install --ignore-optional --check-files); \ + $(call frontexec,yarn run build); \ + $(call frontexec,yarn run build-storybook); \ else \ echo "- Theme directory defined in .env file was not found. Skipping dynamic storybook."; \ fi @@ -104,17 +104,12 @@ build-storybook: # Execute front container with TTY. Needed for storybook components creation. create-component: @echo "Create component CLI dialog... It assumed that you already have 'make storybook' or 'make build-storybook' finished" - kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": [ "yarn", "cc" ], "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 } } }' + $(call frontexec-with-interactive,yarn cc) -cc: - $(call frontexec-with-interactive, yarn cc) +frontexec-with-interactive = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' -# frontexec-with-interactive = docker run \ -# --rm \ -# -u $(CUID):$(CGID) \ -# -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ -# --workdir /app \ -# --init \ -# -it \ -# $(IMAGE_FRONT) ${1} +jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' + +vv: + $(call jsonarrayconverter,test string) From b2bb44678e39b98dacb595121a9f6ed5f1b75909 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 20 Jan 2022 16:13:53 +0100 Subject: [PATCH 11/38] Update --- scripts/makefile/front.mk | 44 +++++++++++---------------------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index f7b428123..fb8ca7de4 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -1,18 +1,22 @@ FRONT_PORT?=65200 + +# Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" RANDOM_STRING = $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) -# Execute front container function. -frontexec = docker run \ - --rm \ - --init \ - -u $(CUID):$(CGID) \ - -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ - --workdir /app \ - $(IMAGE_FRONT) ${1} +# Convert list of commands to json array format accepted by "kubectl run --overrides" commands +jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' +## TODO: curl gojq binary according to os/arch +# Execute front container function. +frontexec = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' + +# Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook +frontexec-with-port = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' # Execute front container with TTY. Needed for storybook components creation. +frontexec-with-interactive = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' + clear-front: @echo "Clean of node_modules and compiled dist... To skip this action please set CLEAR_FRONT_PACKAGES=no in .env file" @@ -62,18 +66,6 @@ lint: echo "- Theme directory defined in .env file was not found. Skipping theme linters with fix."; \ fi - - -# Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook. -frontexec-with-port = docker run \ - --rm \ - --init \ - -p $(FRONT_PORT):$(FRONT_PORT) \ - -u $(CUID):$(CGID) \ - -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ - --workdir /app \ - $(IMAGE_FRONT) ${1} - storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Running dynamic storybook..."; \ @@ -86,9 +78,6 @@ storybook: echo "- Theme directory defined in .env file was not found. Skipping dynamic storybook."; \ fi - - - build-storybook: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Exporting static storybook..."; \ @@ -101,15 +90,6 @@ build-storybook: echo "- Theme directory defined in .env file was not found. Skipping dynamic storybook."; \ fi -# Execute front container with TTY. Needed for storybook components creation. create-component: @echo "Create component CLI dialog... It assumed that you already have 'make storybook' or 'make build-storybook' finished" $(call frontexec-with-interactive,yarn cc) - - -frontexec-with-interactive = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' - -jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' - -vv: - $(call jsonarrayconverter,test string) From fa0ef543b08439c0d53314f2445919246cab4b57 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 20 Jan 2022 17:05:54 +0100 Subject: [PATCH 12/38] Update --- scripts/makefile/front.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index fb8ca7de4..ae26534e4 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -1,20 +1,20 @@ FRONT_PORT?=65200 # Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" -RANDOM_STRING = $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) +RANDOM_STRING := $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) # Convert list of commands to json array format accepted by "kubectl run --overrides" commands jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' ## TODO: curl gojq binary according to os/arch -# Execute front container function. +# Execute front container function frontexec = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' # Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook frontexec-with-port = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' -# Execute front container with TTY. Needed for storybook components creation. +# Execute front container with TTY. Needed for storybook components creation frontexec-with-interactive = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' From 3c12f8c523d3e0333e5921ae086902dd19c74bc9 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 20 Jan 2022 17:19:47 +0100 Subject: [PATCH 13/38] Update --- Makefile | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Makefile b/Makefile index f7035e9f0..fac12230f 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,25 @@ killall: /usr/local/bin/k3s-uninstall.sh sudo rm -f $(shell which helm) + +HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) +h: +ifeq ($(HELM_IS_INSTALLED), true) + @echo "Helm is installed" +else + @echo "Helm is not installed" +endif + +KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) +k: +ifeq ($(KUBECTL_IS_INSTALLED), true) + @echo "Kubernetes is installed" +else + @echo "Kubernetes is not installed" +endif + + + # Variables ADDITIONAL_PHP_PACKAGES := tzdata graphicsmagick # php7-intl php7-redis wkhtmltopdf gnu-libiconv php7-pdo_pgsql postgresql-client postgresql-contrib DC_MODULES := project_default_content better_normalizers default_content hal serialization @@ -66,6 +85,8 @@ fast: $(shell sed -i "s|^#DB_URL=sqlite:///dev/shm/d8.sqlite|DB_URL=sqlite:///dev/shm/d8.sqlite|g" .env) $(shell sed -i "s|^DB_URL=sqlite:./../.cache/d8.sqlite|#DB_URL=sqlite:./../.cache/d8.sqlite|g" .env) + + ## Provision enviroment provision: # Check if enviroment variables has been defined From 120c0cb9e983d59a37141658d63d595b1ec1df6d Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Fri, 21 Jan 2022 16:24:16 +0100 Subject: [PATCH 14/38] Update --- Makefile | 66 +++++++++++++++++++++++++++++---------- scripts/makefile/front.mk | 7 ++++- 2 files changed, 56 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index fac12230f..3577d9f2c 100644 --- a/Makefile +++ b/Makefile @@ -44,30 +44,40 @@ php = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash w # Execute php container as root user php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} + + +KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) +HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) +GOJQ_IS_INSTALLED := $(shell [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) + + killall: +ifeq ($(HELM_IS_INSTALLED), true) /usr/local/bin/k3s-killall.sh /usr/local/bin/k3s-uninstall.sh +endif +ifeq ($(HELM_IS_INSTALLED), true) sudo rm -f $(shell which helm) +endif +ifeq ($(GOJQ_IS_INSTALLED), true) + sudo rm -f $(shell which gojq) +endif -HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) -h: -ifeq ($(HELM_IS_INSTALLED), true) - @echo "Helm is installed" -else - @echo "Helm is not installed" -endif +w: + @echo "SYSTEM_OS=$(SYSTEM_OS)" + @echo "SYSTEM_PROCESSOR=$(SYSTEM_PROCESSOR)" + @echo "UNAME_M=$(UNAME_M)" + @echo "UNAME_S=$(UNAME_S)" -KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) -k: -ifeq ($(KUBECTL_IS_INSTALLED), true) - @echo "Kubernetes is installed" -else - @echo "Kubernetes is not installed" +# Check if k3s is present, install it if not +lookfork3s: +ifeq ($(KUBECTL_IS_INSTALLED), false) + @echo "Downloading and installing container orchestrator..." + curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - endif - # Variables ADDITIONAL_PHP_PACKAGES := tzdata graphicsmagick # php7-intl php7-redis wkhtmltopdf gnu-libiconv php7-pdo_pgsql postgresql-client postgresql-contrib DC_MODULES := project_default_content better_normalizers default_content hal serialization @@ -100,8 +110,7 @@ ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif # make -s down - @echo "Downloading and installing container orchestrator..." - curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - + make -s lookfork3s curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh - @echo "Build and run containers..." helm install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set \ @@ -265,3 +274,28 @@ drush: logs: kubectl logs -f deploy/$(COMPOSE_PROJECT_NAME) --all-containers=true + + +h: +ifeq ($(HELM_IS_INSTALLED), true) + @echo "Helm is installed" +else + @echo "Helm is not installed" +endif + + +k: +ifeq ($(KUBECTL_IS_INSTALLED), true) + @echo "Kubernetes is installed" +else + @echo "Kubernetes is not installed" +endif + + +g: +ifeq ($(GOJQ_IS_INSTALLED), true) + @echo "Gojq is installed" +else + @echo "Gojq is not installed" +endif + diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index ae26534e4..8306d01bb 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -7,9 +7,14 @@ RANDOM_STRING := $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' ## TODO: curl gojq binary according to os/arch +v: + @echo yay + +x: + $(call frontexec,node -v) # Execute front container function -frontexec = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' +frontexec = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' # Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook frontexec-with-port = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' From 75a5ad9f5baa50378bb43cb2dcc93fe34a159818 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Fri, 21 Jan 2022 16:35:39 +0100 Subject: [PATCH 15/38] Update --- scripts/makefile/front.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index 8306d01bb..a0bce4c80 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -17,10 +17,10 @@ x: frontexec = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' # Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook -frontexec-with-port = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' +frontexec-with-port = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' # Execute front container with TTY. Needed for storybook components creation -frontexec-with-interactive = kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' +frontexec-with-interactive = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' clear-front: From 8d0623fc38a0c03c4fcdf468ec908563d914f9ab Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Fri, 21 Jan 2022 18:13:24 +0100 Subject: [PATCH 16/38] Update --- Makefile | 7 +------ scripts/makefile/front.mk | 13 +++++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 3577d9f2c..f4c742185 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,7 @@ GOJQ_IS_INSTALLED := $(shell [ -e "$(shell which gojq 2> /dev/null)" ] && echo t killall: -ifeq ($(HELM_IS_INSTALLED), true) +ifeq ($(KUBECTL_IS_INSTALLED), true) /usr/local/bin/k3s-killall.sh /usr/local/bin/k3s-uninstall.sh endif @@ -64,11 +64,6 @@ ifeq ($(GOJQ_IS_INSTALLED), true) endif -w: - @echo "SYSTEM_OS=$(SYSTEM_OS)" - @echo "SYSTEM_PROCESSOR=$(SYSTEM_PROCESSOR)" - @echo "UNAME_M=$(UNAME_M)" - @echo "UNAME_S=$(UNAME_S)" # Check if k3s is present, install it if not lookfork3s: diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index a0bce4c80..0592fc36a 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -1,11 +1,11 @@ FRONT_PORT?=65200 # Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" -RANDOM_STRING := $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) +RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) # Convert list of commands to json array format accepted by "kubectl run --overrides" commands -jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' -## TODO: curl gojq binary according to os/arch +# jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' +jsonarrayconverter = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- /bin/echo -n "${1}" | jq -cRs 'split(" ")' 2> /dev/null v: @echo yay @@ -13,14 +13,15 @@ v: x: $(call frontexec,node -v) + # Execute front container function -frontexec = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' +frontexec = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' # Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook -frontexec-with-port = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' +frontexec-with-port = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec-with-port", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' # Execute front container with TTY. Needed for storybook components creation -frontexec-with-interactive = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' +frontexec-with-interactive = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec-with-interactive", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' clear-front: From aab4ae91c8cbe6299d3aaf9e878f3c9870ec131f Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Wed, 26 Jan 2022 17:06:08 +0100 Subject: [PATCH 17/38] Update --- Makefile | 17 +++++++++++------ scripts/makefile/front.mk | 4 +--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index f4c742185..1ebaa36d9 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) -GOJQ_IS_INSTALLED := $(shell [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) +JQ_IS_INSTALLED := $(shell [ -e "$(shell which jq 2> /dev/null)" ] || [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) killall: @@ -59,7 +59,7 @@ endif ifeq ($(HELM_IS_INSTALLED), true) sudo rm -f $(shell which helm) endif -ifeq ($(GOJQ_IS_INSTALLED), true) +ifeq ($(JQ_IS_INSTALLED), true) sudo rm -f $(shell which gojq) endif @@ -70,9 +70,14 @@ lookfork3s: ifeq ($(KUBECTL_IS_INSTALLED), false) @echo "Downloading and installing container orchestrator..." curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - + @echo + @echo "- Run make command again." + @echo + exit 1 endif + # Variables ADDITIONAL_PHP_PACKAGES := tzdata graphicsmagick # php7-intl php7-redis wkhtmltopdf gnu-libiconv php7-pdo_pgsql postgresql-client postgresql-contrib DC_MODULES := project_default_content better_normalizers default_content hal serialization @@ -287,10 +292,10 @@ else endif -g: -ifeq ($(GOJQ_IS_INSTALLED), true) - @echo "Gojq is installed" +j: +ifeq ($(JQ_IS_INSTALLED), true) + @echo "Jq is installed" else - @echo "Gojq is not installed" + @echo "Jq is not installed" endif diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index 0592fc36a..8545518da 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -5,10 +5,8 @@ RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' # Convert list of commands to json array format accepted by "kubectl run --overrides" commands # jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' -jsonarrayconverter = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- /bin/echo -n "${1}" | jq -cRs 'split(" ")' 2> /dev/null +jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; -v: - @echo yay x: $(call frontexec,node -v) From 8130a77980859358162ba1194f7b99da01924ed9 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Wed, 26 Jan 2022 18:25:47 +0100 Subject: [PATCH 18/38] Update --- Makefile | 9 ++------- scripts/makefile/front.mk | 8 +------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 1ebaa36d9..c415a3ca4 100644 --- a/Makefile +++ b/Makefile @@ -59,9 +59,6 @@ endif ifeq ($(HELM_IS_INSTALLED), true) sudo rm -f $(shell which helm) endif -ifeq ($(JQ_IS_INSTALLED), true) - sudo rm -f $(shell which gojq) -endif @@ -71,13 +68,11 @@ ifeq ($(KUBECTL_IS_INSTALLED), false) @echo "Downloading and installing container orchestrator..." curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - @echo - @echo "- Run make command again." + @echo "- If your command fail, run same make command again." @echo - exit 1 endif - # Variables ADDITIONAL_PHP_PACKAGES := tzdata graphicsmagick # php7-intl php7-redis wkhtmltopdf gnu-libiconv php7-pdo_pgsql postgresql-client postgresql-contrib DC_MODULES := project_default_content better_normalizers default_content hal serialization @@ -111,7 +106,7 @@ ifdef DB_MOUNT_DIR endif # make -s down make -s lookfork3s - curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh - + if [ $(HELM_IS_INSTALLED) = false ]; then curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh -; fi; @echo "Build and run containers..." helm install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set \ projectName="$(COMPOSE_PROJECT_NAME)",\ diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index 8545518da..d8da82c01 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -3,15 +3,9 @@ FRONT_PORT?=65200 # Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) -# Convert list of commands to json array format accepted by "kubectl run --overrides" commands -# jsonarrayconverter = echo -n "${1}" | gojq -cRs 'split(" ")' +# Convert list of commands to json array format expected by "kubectl run --overrides" commands jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; - -x: - $(call frontexec,node -v) - - # Execute front container function frontexec = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' From 960f407c009c9a23c14e9a1c4eb31a70ed419579 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 27 Jan 2022 15:24:10 +0100 Subject: [PATCH 19/38] Update --- Makefile | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Makefile b/Makefile index c415a3ca4..428197a98 100644 --- a/Makefile +++ b/Makefile @@ -61,7 +61,6 @@ ifeq ($(HELM_IS_INSTALLED), true) endif - # Check if k3s is present, install it if not lookfork3s: ifeq ($(KUBECTL_IS_INSTALLED), false) @@ -91,7 +90,6 @@ fast: $(shell sed -i "s|^DB_URL=sqlite:./../.cache/d8.sqlite|#DB_URL=sqlite:./../.cache/d8.sqlite|g" .env) - ## Provision enviroment provision: # Check if enviroment variables has been defined @@ -106,13 +104,8 @@ ifdef DB_MOUNT_DIR endif # make -s down make -s lookfork3s - if [ $(HELM_IS_INSTALLED) = false ]; then curl -sfL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sh -; fi; @echo "Build and run containers..." - helm install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set \ - projectName="$(COMPOSE_PROJECT_NAME)",\ - projectPath="$(CURDIR)",\ - imagePhp="$(IMAGE_PHP)",\ - imageNginx="$(IMAGE_NGINX)" + if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run helm --image=alpine/helm --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "helm", "creationTimestamp": null }, "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "/home/dferlay/Sources/df-sdc", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "alpine/helm", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","sdc","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)"; fi; for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) From 5adef3087fd4c611c64f3a5a37042f99381aeb97 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 27 Jan 2022 15:56:41 +0100 Subject: [PATCH 20/38] Update --- Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 428197a98..ed1069fdb 100644 --- a/Makefile +++ b/Makefile @@ -56,10 +56,6 @@ ifeq ($(KUBECTL_IS_INSTALLED), true) /usr/local/bin/k3s-killall.sh /usr/local/bin/k3s-uninstall.sh endif -ifeq ($(HELM_IS_INSTALLED), true) - sudo rm -f $(shell which helm) -endif - # Check if k3s is present, install it if not lookfork3s: @@ -105,7 +101,7 @@ endif # make -s down make -s lookfork3s @echo "Build and run containers..." - if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run helm --image=alpine/helm --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "helm", "creationTimestamp": null }, "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "/home/dferlay/Sources/df-sdc", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "alpine/helm", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","sdc","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" sdc ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)"; fi; + if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run helm --image=alpine/helm --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "helm", "creationTimestamp": null }, "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "alpine/helm", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)"; fi; for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) @@ -218,7 +214,7 @@ exec0: down: @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" - @docker-compose down -v --remove-orphans --rmi local + if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run helm --image=alpine/helm --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "helm", "creationTimestamp": null }, "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "alpine/helm", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ echo 'Stoping browser driver.' && make -s browser_driver_stop; fi @@ -236,6 +232,10 @@ endif ifeq ($(CLEAR_FRONT_PACKAGES), yes) make clear-front endif +ifeq ($(KUBECTL_IS_INSTALLED), true) + /usr/local/bin/k3s-killall.sh + /usr/local/bin/k3s-uninstall.sh +endif ## Enable development mode and disable caching dev: From 8232ef34dbaceb04220818de8f54b30fba787171 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Fri, 28 Jan 2022 13:48:40 +0100 Subject: [PATCH 21/38] Update --- Makefile | 19 +- composer.lock | 15752 ------------------------------------ scripts/makefile/front.mk | 3 - 3 files changed, 14 insertions(+), 15760 deletions(-) delete mode 100644 composer.lock diff --git a/Makefile b/Makefile index ed1069fdb..126cd860a 100644 --- a/Makefile +++ b/Makefile @@ -44,8 +44,10 @@ php = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash w # Execute php container as root user php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} +# Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" +RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) - +IMAGE_HELM=alpine/helm KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) JQ_IS_INSTALLED := $(shell [ -e "$(shell which jq 2> /dev/null)" ] || [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) @@ -98,10 +100,10 @@ endif ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif -# make -s down + make -s down make -s lookfork3s @echo "Build and run containers..." - if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run helm --image=alpine/helm --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "helm", "creationTimestamp": null }, "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "alpine/helm", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)"; fi; + if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)"; fi; for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) @@ -214,16 +216,23 @@ exec0: down: @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" - if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run helm --image=alpine/helm --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "helm", "creationTimestamp": null }, "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "alpine/helm", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 1000, "runAsGroup": 1000 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; + if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ echo 'Stoping browser driver.' && make -s browser_driver_stop; fi + ## TODO: FIX TEST COMMANDS DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites web/themes/contrib vendor +v: +# docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' + echo + kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "env": [ { "name": "RMLIST", "value": "$(addprefix web/,$(SCAFFOLD)) $(DIRS)" } ], "command": [ "for","i","in","$$RMLIST;","do","rm","-fr","$$i","&&","echo","Removed","$$i;","done" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 0, "runAsGroup": 0 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' + + ## Totally remove project build folder, docker containers and network clean: info make -s down - $(eval SCAFFOLD = $(shell docker run --rm -v $(CURDIR):/mnt -w /mnt --user $(CUID):$(CGID) $(IMAGE_PHP) composer run-script list-scaffold-files | grep -P '^(?!>)')) + $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) @docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' ifdef DB_MOUNT_DIR @echo "Clean-up database data from $(DB_MOUNT_DIR) ..." diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 8e6ee7fba..000000000 --- a/composer.lock +++ /dev/null @@ -1,15752 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "672eba5a7a77b6afe45625ea00cc112a", - "packages": [ - { - "name": "asm89/stack-cors", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08", - "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8.10", - "squizlabs/php_codesniffer": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/Asm89/Stack/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/1.3.0" - }, - "time": "2019-12-24T22:41:47+00:00" - }, - { - "name": "chi-teck/drupal-code-generator", - "version": "1.33.1", - "source": { - "type": "git", - "url": "https://github.com/Chi-teck/drupal-code-generator.git", - "reference": "5f814e980b6f9cf1ca8c74cc9385c3d81090d388" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/5f814e980b6f9cf1ca8c74cc9385c3d81090d388", - "reference": "5f814e980b6f9cf1ca8c74cc9385c3d81090d388", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=5.5.9", - "symfony/console": "^3.4 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.4 || ^4.0", - "twig/twig": "^1.41 || ^2.12" - }, - "conflict": { - "drush/drush": "< 10.3.2" - }, - "bin": [ - "bin/dcg" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "src/bootstrap.php" - ], - "psr-4": { - "DrupalCodeGenerator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Drupal code generator", - "support": { - "issues": "https://github.com/Chi-teck/drupal-code-generator/issues", - "source": "https://github.com/Chi-teck/drupal-code-generator/tree/1.33.1" - }, - "time": "2020-12-05T05:59:11+00:00" - }, - { - "name": "composer/installers", - "version": "v1.12.0", - "source": { - "type": "git", - "url": "https://github.com/composer/installers.git", - "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/installers/zipball/d20a64ed3c94748397ff5973488761b22f6d3f19", - "reference": "d20a64ed3c94748397ff5973488761b22f6d3f19", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0" - }, - "replace": { - "roundcube/plugin-installer": "*", - "shama/baton": "*" - }, - "require-dev": { - "composer/composer": "1.6.* || ^2.0", - "composer/semver": "^1 || ^3", - "phpstan/phpstan": "^0.12.55", - "phpstan/phpstan-phpunit": "^0.12.16", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.3" - }, - "type": "composer-plugin", - "extra": { - "class": "Composer\\Installers\\Plugin", - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Installers\\": "src/Composer/Installers" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kyle Robinson Young", - "email": "kyle@dontkry.com", - "homepage": "https://github.com/shama" - } - ], - "description": "A multi-framework Composer library installer", - "homepage": "https://composer.github.io/installers/", - "keywords": [ - "Craft", - "Dolibarr", - "Eliasis", - "Hurad", - "ImageCMS", - "Kanboard", - "Lan Management System", - "MODX Evo", - "MantisBT", - "Mautic", - "Maya", - "OXID", - "Plentymarkets", - "Porto", - "RadPHP", - "SMF", - "Starbug", - "Thelia", - "Whmcs", - "WolfCMS", - "agl", - "aimeos", - "annotatecms", - "attogram", - "bitrix", - "cakephp", - "chef", - "cockpit", - "codeigniter", - "concrete5", - "croogo", - "dokuwiki", - "drupal", - "eZ Platform", - "elgg", - "expressionengine", - "fuelphp", - "grav", - "installer", - "itop", - "joomla", - "known", - "kohana", - "laravel", - "lavalite", - "lithium", - "magento", - "majima", - "mako", - "mediawiki", - "miaoxing", - "modulework", - "modx", - "moodle", - "osclass", - "pantheon", - "phpbb", - "piwik", - "ppi", - "processwire", - "puppet", - "pxcms", - "reindex", - "roundcube", - "shopware", - "silverstripe", - "sydes", - "sylius", - "symfony", - "tastyigniter", - "typo3", - "wordpress", - "yawik", - "zend", - "zikula" - ], - "support": { - "issues": "https://github.com/composer/installers/issues", - "source": "https://github.com/composer/installers/tree/v1.12.0" - }, - "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": "2021-09-13T08:19:44+00:00" - }, - { - "name": "composer/semver", - "version": "3.2.6", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "83e511e247de329283478496f7a1e114c9517506" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", - "reference": "83e511e247de329283478496f7a1e114c9517506", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.54", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.6" - }, - "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": "2021-10-25T11:34:17+00:00" - }, - { - "name": "consolidation/annotated-command", - "version": "4.5.1", - "source": { - "type": "git", - "url": "https://github.com/consolidation/annotated-command.git", - "reference": "701a7abe8505abe89520837be798e15a3953a367" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/701a7abe8505abe89520837be798e15a3953a367", - "reference": "701a7abe8505abe89520837be798e15a3953a367", - "shasum": "" - }, - "require": { - "consolidation/output-formatters": "^4.1.1", - "php": ">=7.1.3", - "psr/log": "^1|^2", - "symfony/console": "^4.4.8|^5|^6", - "symfony/event-dispatcher": "^4.4.8|^5|^6", - "symfony/finder": "^4.4.8|^5|^6" - }, - "require-dev": { - "composer-runtime-api": "^2.0", - "phpunit/phpunit": "^7.5.20 || ^8 || ^9", - "squizlabs/php_codesniffer": "^3", - "yoast/phpunit-polyfills": "^0.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\AnnotatedCommand\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - } - ], - "description": "Initialize Symfony Console commands from annotated command class methods.", - "support": { - "issues": "https://github.com/consolidation/annotated-command/issues", - "source": "https://github.com/consolidation/annotated-command/tree/4.5.1" - }, - "time": "2021-12-30T04:00:37+00:00" - }, - { - "name": "consolidation/config", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/consolidation/config.git", - "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/config/zipball/cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1", - "reference": "cac1279bae7efb5c7fb2ca4c3ba4b8eb741a96c1", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^1.1.0", - "grasmash/expander": "^1", - "php": ">=5.4.0" - }, - "require-dev": { - "g1a/composer-test-scenarios": "^3", - "php-coveralls/php-coveralls": "^1", - "phpunit/phpunit": "^5", - "squizlabs/php_codesniffer": "2.*", - "symfony/console": "^2.5|^3|^4", - "symfony/yaml": "^2.8.11|^3|^4" - }, - "suggest": { - "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader" - }, - "type": "library", - "extra": { - "scenarios": { - "symfony4": { - "require-dev": { - "symfony/console": "^4.0" - }, - "config": { - "platform": { - "php": "7.1.3" - } - } - }, - "symfony2": { - "require-dev": { - "symfony/console": "^2.8", - "symfony/event-dispatcher": "^2.8", - "phpunit/phpunit": "^4.8.36" - }, - "remove": [ - "php-coveralls/php-coveralls" - ], - "config": { - "platform": { - "php": "5.4.8" - } - } - } - }, - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - } - ], - "description": "Provide configuration services for a commandline tool.", - "support": { - "issues": "https://github.com/consolidation/config/issues", - "source": "https://github.com/consolidation/config/tree/master" - }, - "time": "2019-03-03T19:37:04+00:00" - }, - { - "name": "consolidation/filter-via-dot-access-data", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/consolidation/filter-via-dot-access-data.git", - "reference": "a53e96c6b9f7f042f5e085bf911f3493cea823c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/filter-via-dot-access-data/zipball/a53e96c6b9f7f042f5e085bf911f3493cea823c6", - "reference": "a53e96c6b9f7f042f5e085bf911f3493cea823c6", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^1.1.0", - "php": ">=5.5.0" - }, - "require-dev": { - "consolidation/robo": "^1.2.3", - "g1a/composer-test-scenarios": "^3", - "knplabs/github-api": "^2.7", - "php-coveralls/php-coveralls": "^1", - "php-http/guzzle6-adapter": "^1.1", - "phpunit/phpunit": "^5", - "squizlabs/php_codesniffer": "^2.8", - "symfony/console": "^2.8|^3|^4" - }, - "type": "library", - "extra": { - "scenarios": { - "phpunit5": { - "require-dev": { - "phpunit/phpunit": "^5.7.27" - }, - "remove": [ - "php-coveralls/php-coveralls" - ], - "config": { - "platform": { - "php": "5.6.33" - } - } - } - }, - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\Filter\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - } - ], - "description": "This project uses dflydev/dot-access-data to provide simple output filtering for applications built with annotated-command / Robo.", - "support": { - "source": "https://github.com/consolidation/filter-via-dot-access-data/tree/1.0.0" - }, - "time": "2019-01-18T06:05:07+00:00" - }, - { - "name": "consolidation/log", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/consolidation/log.git", - "reference": "fc9ec5476ba13a31778695bd2d4f2fa0b0684356" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/log/zipball/fc9ec5476ba13a31778695bd2d4f2fa0b0684356", - "reference": "fc9ec5476ba13a31778695bd2d4f2fa0b0684356", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1.0", - "symfony/console": "^4 || ^5 || ^6" - }, - "require-dev": { - "phpunit/phpunit": ">=7.5.20", - "squizlabs/php_codesniffer": "^3", - "yoast/phpunit-polyfills": "^0.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - } - ], - "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", - "support": { - "issues": "https://github.com/consolidation/log/issues", - "source": "https://github.com/consolidation/log/tree/2.0.4" - }, - "time": "2021-12-30T19:05:18+00:00" - }, - { - "name": "consolidation/output-formatters", - "version": "4.2.1", - "source": { - "type": "git", - "url": "https://github.com/consolidation/output-formatters.git", - "reference": "4413d7c732afb5d7bdac565c41aa9c8c49c48888" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/4413d7c732afb5d7bdac565c41aa9c8c49c48888", - "reference": "4413d7c732afb5d7bdac565c41aa9c8c49c48888", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^1.1.0", - "php": ">=7.1.3", - "symfony/console": "^4|^5|^6", - "symfony/finder": "^4|^5|^6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.4.2", - "phpunit/phpunit": ">=7", - "squizlabs/php_codesniffer": "^3", - "symfony/var-dumper": "^4|^5|^6", - "symfony/yaml": "^4|^5|^6", - "yoast/phpunit-polyfills": "^0.2.0" - }, - "suggest": { - "symfony/var-dumper": "For using the var_dump formatter" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\OutputFormatters\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - } - ], - "description": "Format text by applying transformations provided by plug-in formatters.", - "support": { - "issues": "https://github.com/consolidation/output-formatters/issues", - "source": "https://github.com/consolidation/output-formatters/tree/4.2.1" - }, - "time": "2021-12-30T03:58:00+00:00" - }, - { - "name": "consolidation/robo", - "version": "3.0.7", - "source": { - "type": "git", - "url": "https://github.com/consolidation/robo.git", - "reference": "57012db2a93c904ed0a7b9d8676c0325c0366bc8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/robo/zipball/57012db2a93c904ed0a7b9d8676c0325c0366bc8", - "reference": "57012db2a93c904ed0a7b9d8676c0325c0366bc8", - "shasum": "" - }, - "require": { - "consolidation/annotated-command": "^4.3", - "consolidation/config": "^1.2.1 || ^2.0.1", - "consolidation/log": "^1.1.1 || ^2.0.2", - "consolidation/output-formatters": "^4.1.2", - "consolidation/self-update": "^2.0", - "league/container": "^3.3.1", - "php": ">=7.1.3", - "symfony/console": "^4.4.19 || ^5 || ^6", - "symfony/event-dispatcher": "^4.4.19 || ^5 || ^6", - "symfony/filesystem": "^4.4.9 || ^5 || ^6", - "symfony/finder": "^4.4.9 || ^5 || ^6", - "symfony/process": "^4.4.9 || ^5", - "symfony/yaml": "^4.4 || ^5 || ^6" - }, - "conflict": { - "codegyre/robo": "*" - }, - "require-dev": { - "natxet/cssmin": "3.0.4", - "patchwork/jsqueeze": "^2", - "pear/archive_tar": "^1.4.4", - "phpunit/phpunit": "^7.5.20 || ^8", - "squizlabs/php_codesniffer": "^3.6", - "yoast/phpunit-polyfills": "^0.2.0" - }, - "suggest": { - "natxet/cssmin": "For minifying CSS files in taskMinify", - "patchwork/jsqueeze": "For minifying JS files in taskMinify", - "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively.", - "totten/lurkerlite": "For monitoring filesystem changes in taskWatch" - }, - "bin": [ - "robo" - ], - "type": "library", - "extra": { - "scenarios": { - "symfony4": { - "require": { - "symfony/console": "^4.4.11", - "symfony/event-dispatcher": "^4.4.11", - "symfony/filesystem": "^4.4.11", - "symfony/finder": "^4.4.11", - "symfony/process": "^4.4.11", - "phpunit/phpunit": "^6", - "nikic/php-parser": "^2" - }, - "remove": [ - "codeception/phpunit-wrapper" - ], - "config": { - "platform": { - "php": "7.1.3" - } - } - } - }, - "branch-alias": { - "dev-master": "2.x-dev", - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Robo\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Davert", - "email": "davert.php@resend.cc" - } - ], - "description": "Modern task runner", - "support": { - "issues": "https://github.com/consolidation/robo/issues", - "source": "https://github.com/consolidation/robo/tree/3.0.7" - }, - "time": "2021-12-31T01:01:31+00:00" - }, - { - "name": "consolidation/self-update", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/consolidation/self-update.git", - "reference": "117dcc9494dc970a6ae307103c41d654e6253bc4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/self-update/zipball/117dcc9494dc970a6ae307103c41d654e6253bc4", - "reference": "117dcc9494dc970a6ae307103c41d654e6253bc4", - "shasum": "" - }, - "require": { - "composer/semver": "^3.2", - "php": ">=5.5.0", - "symfony/console": "^2.8 || ^3 || ^4 || ^5 || ^6", - "symfony/filesystem": "^2.5 || ^3 || ^4 || ^5 || ^6" - }, - "bin": [ - "scripts/release" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "SelfUpdate\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander Menk", - "email": "menk@mestrona.net" - }, - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - } - ], - "description": "Provides a self:update command for Symfony Console applications.", - "support": { - "issues": "https://github.com/consolidation/self-update/issues", - "source": "https://github.com/consolidation/self-update/tree/2.0.3" - }, - "time": "2021-12-30T19:08:32+00:00" - }, - { - "name": "consolidation/site-alias", - "version": "3.1.3", - "source": { - "type": "git", - "url": "https://github.com/consolidation/site-alias.git", - "reference": "e2784362e98f315c996fb2b9ed80a9118a0ba8b7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/site-alias/zipball/e2784362e98f315c996fb2b9ed80a9118a0ba8b7", - "reference": "e2784362e98f315c996fb2b9ed80a9118a0ba8b7", - "shasum": "" - }, - "require": { - "consolidation/config": "^1.2.1|^2", - "php": ">=5.5.0", - "symfony/finder": "~2.3|^3|^4.4|^5" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.4.2", - "phpunit/phpunit": ">=7", - "squizlabs/php_codesniffer": "^3", - "symfony/var-dumper": "^4", - "yoast/phpunit-polyfills": "^0.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\SiteAlias\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - }, - { - "name": "Moshe Weitzman", - "email": "weitzman@tejasa.com" - } - ], - "description": "Manage alias records for local and remote sites.", - "support": { - "issues": "https://github.com/consolidation/site-alias/issues", - "source": "https://github.com/consolidation/site-alias/tree/3.1.3" - }, - "time": "2022-01-03T19:00:28+00:00" - }, - { - "name": "consolidation/site-process", - "version": "4.1.1", - "source": { - "type": "git", - "url": "https://github.com/consolidation/site-process.git", - "reference": "4817b35b2f98a2e3ad82956a968b49f7b257d26c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/site-process/zipball/4817b35b2f98a2e3ad82956a968b49f7b257d26c", - "reference": "4817b35b2f98a2e3ad82956a968b49f7b257d26c", - "shasum": "" - }, - "require": { - "consolidation/config": "^1.2.1|^2", - "consolidation/site-alias": "^3", - "php": ">=7.1.3", - "symfony/console": "^2.8.52|^3|^4.4|^5", - "symfony/process": "^4.3.4" - }, - "require-dev": { - "phpunit/phpunit": "^7.5.20|^8.5.14", - "squizlabs/php_codesniffer": "^3", - "yoast/phpunit-polyfills": "^0.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\SiteProcess\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - }, - { - "name": "Moshe Weitzman", - "email": "weitzman@tejasa.com" - } - ], - "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.", - "support": { - "issues": "https://github.com/consolidation/site-process/issues", - "source": "https://github.com/consolidation/site-process/tree/4.1.1" - }, - "time": "2022-01-03T18:57:42+00:00" - }, - { - "name": "cweagans/composer-patches", - "version": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/cweagans/composer-patches.git", - "reference": "9888dcc74993c030b75f3dd548bb5e20cdbd740c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/9888dcc74993c030b75f3dd548bb5e20cdbd740c", - "reference": "9888dcc74993c030b75f3dd548bb5e20cdbd740c", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3.0" - }, - "require-dev": { - "composer/composer": "~1.0 || ~2.0", - "phpunit/phpunit": "~4.6" - }, - "type": "composer-plugin", - "extra": { - "class": "cweagans\\Composer\\Patches" - }, - "autoload": { - "psr-4": { - "cweagans\\Composer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Cameron Eagans", - "email": "me@cweagans.net" - } - ], - "description": "Provides a way to patch Composer packages.", - "support": { - "issues": "https://github.com/cweagans/composer-patches/issues", - "source": "https://github.com/cweagans/composer-patches/tree/1.7.1" - }, - "time": "2021-06-08T15:12:46+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a", - "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-0": { - "Dflydev\\DotAccessData": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/master" - }, - "time": "2017-01-20T21:14:22+00:00" - }, - { - "name": "doctrine/annotations", - "version": "1.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "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" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" - }, - "time": "2021-08-05T19:00:23+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" - }, - "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%2Flexer", - "type": "tidelift" - } - ], - "time": "2020-05-25T17:44:05+00:00" - }, - { - "name": "doctrine/reflection", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.2.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0 || ^0.12.20", - "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", - "phpunit/phpunit": "^7.5 || ^9.1.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", - "keywords": [ - "reflection", - "static" - ], - "support": { - "issues": "https://github.com/doctrine/reflection/issues", - "source": "https://github.com/doctrine/reflection/tree/1.2.2" - }, - "abandoned": "roave/better-reflection", - "time": "2020-10-27T21:46:55+00:00" - }, - { - "name": "drupal/better_normalizers", - "version": "1.0.0-beta4", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/better_normalizers.git", - "reference": "8.x-1.0-beta4" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/better_normalizers-8.x-1.0-beta4.zip", - "reference": "8.x-1.0-beta4", - "shasum": "19e63328ca9ab77aaa328d87efd7429f4adb386e" - }, - "require": { - "drupal/core": "^8.7.7 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-beta4", - "datestamp": "1576069085", - "security-coverage": { - "status": "not-covered", - "message": "Project has not opted into security advisory coverage!" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Christian Fritsch (chr.fritsch)", - "homepage": "https://www.drupal.org/u/chrfritsch", - "role": "Maintainer" - }, - { - "name": "Andrey Postnikov (andypost)", - "homepage": "https://www.drupal.org/u/andypost", - "role": "Maintainer" - }, - { - "name": "Sam Becker (Sam152)", - "homepage": "https://www.drupal.org/u/sam152", - "role": "Maintainer" - }, - { - "name": "Lee Rowlands (larowlan)", - "homepage": "https://www.drupal.org/u/larowlan", - "role": "Maintainer" - } - ], - "description": "Improve the normalizers in core.", - "homepage": "https://www.drupal.org/project/better_normalizers", - "support": { - "source": "https://git.drupal.org/project/better_normalizers.git", - "issues": "https://www.drupal.org/project/issues/better_normalizers" - } - }, - { - "name": "drupal/block_content_permissions", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/block_content_permissions.git", - "reference": "8.x-1.10" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/block_content_permissions-8.x-1.10.zip", - "reference": "8.x-1.10", - "shasum": "03cfd1ff8edb05ea0f953916b23ef7b3aed82ab4" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "suggest": { - "drupal/block_region_permissions": "Block Region Permissions adds permissions for administering 'blocks' based on each theme's regions." - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.10", - "datestamp": "1593975004", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Joshua Roberson", - "homepage": "https://www.drupal.org/u/joshuaroberson", - "role": "Maintainer" - } - ], - "description": "Block Content Permissions adds permissions for administering 'block content types' and 'block content'.", - "homepage": "https://www.drupal.org/project/block_content_permissions", - "support": { - "source": "https://git.drupalcode.org/project/block_content_permissions", - "issues": "https://www.drupal.org/project/issues/block_content_permissions" - } - }, - { - "name": "drupal/coffee", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/coffee.git", - "reference": "8.x-1.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/coffee-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "3c3f251004ec0d0995a86407592f7f54872ebe87" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.2", - "datestamp": "1617351412", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "branch-alias": { - "dev-8.x-1.x": "8.1.x-dev" - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Michael Mol", - "homepage": "https://www.drupal.org/u/michaelmol", - "role": "Maintainer" - }, - { - "name": "Marco", - "homepage": "https://www.drupal.org/u/willzyx", - "role": "Maintainer" - }, - { - "name": "Oliver Köhler", - "homepage": "https://www.drupal.org/u/nebel54", - "role": "Maintainer" - }, - { - "name": "Alli Price", - "homepage": "https://www.drupal.org/u/heylookalive", - "role": "Maintainer" - }, - { - "name": "See other contributors", - "homepage": "https://www.drupal.org/node/1356930/committers", - "role": "contributor" - } - ], - "description": "Provides an Alfred like search box to navigate within your site.", - "homepage": "https://drupal.org/project/coffee", - "support": { - "source": "https://git.drupalcode.org/project/coffee", - "issues": "https://drupal.org/project/issues/coffee", - "irc": "irc://irc.freenode.org/drupal-contribute" - } - }, - { - "name": "drupal/config_override_warn", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/config_override_warn.git", - "reference": "8.x-1.3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_override_warn-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "fbac9d7a435c6d6acf55df11343666d2d116ba9a" - }, - "require": { - "drupal/core": "^8.7.7 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.3", - "datestamp": "1587059022", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Dave Reid", - "homepage": "https://www.drupal.org/user/53892" - } - ], - "description": "Provide a warning message on configuration forms when any values on the form are possibly being overridden.", - "homepage": "https://www.drupal.org/project/config_override_warn", - "support": { - "source": "https://git.drupalcode.org/project/config_override_warn" - } - }, - { - "name": "drupal/core", - "version": "9.3.2", - "source": { - "type": "git", - "url": "https://github.com/drupal/core.git", - "reference": "6c9ba6b6314550e7efb8f5f4e2a40f54cfd6aee1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/6c9ba6b6314550e7efb8f5f4e2a40f54cfd6aee1", - "reference": "6c9ba6b6314550e7efb8f5f4e2a40f54cfd6aee1", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^1.1", - "composer/semver": "^3.0", - "doctrine/annotations": "^1.12", - "doctrine/reflection": "^1.1", - "egulias/email-validator": "^2.1.22|^3.0", - "ext-date": "*", - "ext-dom": "*", - "ext-filter": "*", - "ext-gd": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-pdo": "*", - "ext-session": "*", - "ext-simplexml": "*", - "ext-spl": "*", - "ext-tokenizer": "*", - "ext-xml": "*", - "guzzlehttp/guzzle": "^6.5.2", - "laminas/laminas-diactoros": "^2.1", - "laminas/laminas-feed": "^2.12", - "masterminds/html5": "^2.1", - "pear/archive_tar": "^1.4.14", - "php": ">=7.3.0", - "psr/log": "^1.0", - "stack/builder": "^1.0", - "symfony-cmf/routing": "^2.1", - "symfony/console": "^4.4", - "symfony/dependency-injection": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-foundation": "^4.4.7", - "symfony/http-kernel": "^4.4", - "symfony/mime": "^5.4", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/process": "^4.4", - "symfony/psr-http-message-bridge": "^2.0", - "symfony/routing": "^4.4", - "symfony/serializer": "^4.4", - "symfony/translation": "^4.4", - "symfony/validator": "^4.4", - "symfony/yaml": "^4.4.19", - "twig/twig": "^2.12.0", - "typo3/phar-stream-wrapper": "^3.1.3" - }, - "conflict": { - "drush/drush": "<8.1.10" - }, - "replace": { - "drupal/action": "self.version", - "drupal/aggregator": "self.version", - "drupal/automated_cron": "self.version", - "drupal/ban": "self.version", - "drupal/bartik": "self.version", - "drupal/basic_auth": "self.version", - "drupal/big_pipe": "self.version", - "drupal/block": "self.version", - "drupal/block_content": "self.version", - "drupal/book": "self.version", - "drupal/breakpoint": "self.version", - "drupal/ckeditor": "self.version", - "drupal/ckeditor5": "self.version", - "drupal/claro": "self.version", - "drupal/classy": "self.version", - "drupal/color": "self.version", - "drupal/comment": "self.version", - "drupal/config": "self.version", - "drupal/config_translation": "self.version", - "drupal/contact": "self.version", - "drupal/content_moderation": "self.version", - "drupal/content_translation": "self.version", - "drupal/contextual": "self.version", - "drupal/core-annotation": "self.version", - "drupal/core-assertion": "self.version", - "drupal/core-bridge": "self.version", - "drupal/core-class-finder": "self.version", - "drupal/core-datetime": "self.version", - "drupal/core-dependency-injection": "self.version", - "drupal/core-diff": "self.version", - "drupal/core-discovery": "self.version", - "drupal/core-event-dispatcher": "self.version", - "drupal/core-file-cache": "self.version", - "drupal/core-file-security": "self.version", - "drupal/core-filesystem": "self.version", - "drupal/core-front-matter": "self.version", - "drupal/core-gettext": "self.version", - "drupal/core-graph": "self.version", - "drupal/core-http-foundation": "self.version", - "drupal/core-php-storage": "self.version", - "drupal/core-plugin": "self.version", - "drupal/core-proxy-builder": "self.version", - "drupal/core-render": "self.version", - "drupal/core-serialization": "self.version", - "drupal/core-transliteration": "self.version", - "drupal/core-utility": "self.version", - "drupal/core-uuid": "self.version", - "drupal/core-version": "self.version", - "drupal/datetime": "self.version", - "drupal/datetime_range": "self.version", - "drupal/dblog": "self.version", - "drupal/dynamic_page_cache": "self.version", - "drupal/editor": "self.version", - "drupal/entity_reference": "self.version", - "drupal/field": "self.version", - "drupal/field_layout": "self.version", - "drupal/field_ui": "self.version", - "drupal/file": "self.version", - "drupal/filter": "self.version", - "drupal/forum": "self.version", - "drupal/hal": "self.version", - "drupal/help": "self.version", - "drupal/help_topics": "self.version", - "drupal/history": "self.version", - "drupal/image": "self.version", - "drupal/inline_form_errors": "self.version", - "drupal/jsonapi": "self.version", - "drupal/language": "self.version", - "drupal/layout_builder": "self.version", - "drupal/layout_discovery": "self.version", - "drupal/link": "self.version", - "drupal/locale": "self.version", - "drupal/media": "self.version", - "drupal/media_library": "self.version", - "drupal/menu_link_content": "self.version", - "drupal/menu_ui": "self.version", - "drupal/migrate": "self.version", - "drupal/migrate_drupal": "self.version", - "drupal/migrate_drupal_multilingual": "self.version", - "drupal/migrate_drupal_ui": "self.version", - "drupal/minimal": "self.version", - "drupal/node": "self.version", - "drupal/olivero": "self.version", - "drupal/options": "self.version", - "drupal/page_cache": "self.version", - "drupal/path": "self.version", - "drupal/path_alias": "self.version", - "drupal/quickedit": "self.version", - "drupal/rdf": "self.version", - "drupal/responsive_image": "self.version", - "drupal/rest": "self.version", - "drupal/search": "self.version", - "drupal/serialization": "self.version", - "drupal/settings_tray": "self.version", - "drupal/seven": "self.version", - "drupal/shortcut": "self.version", - "drupal/standard": "self.version", - "drupal/stark": "self.version", - "drupal/statistics": "self.version", - "drupal/syslog": "self.version", - "drupal/system": "self.version", - "drupal/taxonomy": "self.version", - "drupal/telephone": "self.version", - "drupal/text": "self.version", - "drupal/toolbar": "self.version", - "drupal/tour": "self.version", - "drupal/tracker": "self.version", - "drupal/update": "self.version", - "drupal/user": "self.version", - "drupal/views": "self.version", - "drupal/views_ui": "self.version", - "drupal/workflows": "self.version", - "drupal/workspaces": "self.version" - }, - "type": "drupal-core", - "extra": { - "drupal-scaffold": { - "file-mapping": { - "[project-root]/.editorconfig": "assets/scaffold/files/editorconfig", - "[project-root]/.gitattributes": "assets/scaffold/files/gitattributes", - "[web-root]/.csslintrc": "assets/scaffold/files/csslintrc", - "[web-root]/.eslintignore": "assets/scaffold/files/eslintignore", - "[web-root]/.eslintrc.json": "assets/scaffold/files/eslintrc.json", - "[web-root]/.ht.router.php": "assets/scaffold/files/ht.router.php", - "[web-root]/.htaccess": "assets/scaffold/files/htaccess", - "[web-root]/example.gitignore": "assets/scaffold/files/example.gitignore", - "[web-root]/index.php": "assets/scaffold/files/index.php", - "[web-root]/INSTALL.txt": "assets/scaffold/files/drupal.INSTALL.txt", - "[web-root]/README.md": "assets/scaffold/files/drupal.README.md", - "[web-root]/robots.txt": "assets/scaffold/files/robots.txt", - "[web-root]/update.php": "assets/scaffold/files/update.php", - "[web-root]/web.config": "assets/scaffold/files/web.config", - "[web-root]/sites/README.txt": "assets/scaffold/files/sites.README.txt", - "[web-root]/sites/development.services.yml": "assets/scaffold/files/development.services.yml", - "[web-root]/sites/example.settings.local.php": "assets/scaffold/files/example.settings.local.php", - "[web-root]/sites/example.sites.php": "assets/scaffold/files/example.sites.php", - "[web-root]/sites/default/default.services.yml": "assets/scaffold/files/default.services.yml", - "[web-root]/sites/default/default.settings.php": "assets/scaffold/files/default.settings.php", - "[web-root]/modules/README.txt": "assets/scaffold/files/modules.README.txt", - "[web-root]/profiles/README.txt": "assets/scaffold/files/profiles.README.txt", - "[web-root]/themes/README.txt": "assets/scaffold/files/themes.README.txt" - } - } - }, - "autoload": { - "psr-4": { - "Drupal\\Core\\": "lib/Drupal/Core", - "Drupal\\Component\\": "lib/Drupal/Component", - "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver" - }, - "classmap": [ - "lib/Drupal.php", - "lib/Drupal/Component/DependencyInjection/Container.php", - "lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php", - "lib/Drupal/Component/FileCache/FileCacheFactory.php", - "lib/Drupal/Component/Utility/Timer.php", - "lib/Drupal/Component/Utility/Unicode.php", - "lib/Drupal/Core/Cache/Cache.php", - "lib/Drupal/Core/Cache/CacheBackendInterface.php", - "lib/Drupal/Core/Cache/CacheTagsChecksumInterface.php", - "lib/Drupal/Core/Cache/CacheTagsChecksumTrait.php", - "lib/Drupal/Core/Cache/CacheTagsInvalidatorInterface.php", - "lib/Drupal/Core/Cache/DatabaseBackend.php", - "lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php", - "lib/Drupal/Core/Database/Connection.php", - "lib/Drupal/Core/Database/Database.php", - "lib/Drupal/Core/Database/Driver/mysql/Connection.php", - "lib/Drupal/Core/Database/Driver/pgsql/Connection.php", - "lib/Drupal/Core/Database/Driver/sqlite/Connection.php", - "lib/Drupal/Core/Database/Statement.php", - "lib/Drupal/Core/Database/StatementInterface.php", - "lib/Drupal/Core/DependencyInjection/Container.php", - "lib/Drupal/Core/DrupalKernel.php", - "lib/Drupal/Core/DrupalKernelInterface.php", - "lib/Drupal/Core/Http/InputBag.php", - "lib/Drupal/Core/Installer/InstallerRedirectTrait.php", - "lib/Drupal/Core/Site/Settings.php" - ], - "files": [ - "includes/bootstrap.inc", - "includes/guzzle_php81_shim.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Drupal is an open source content management platform powering millions of websites and applications.", - "support": { - "source": "https://github.com/drupal/core/tree/9.3.2" - }, - "time": "2022-01-05T02:55:30+00:00" - }, - { - "name": "drupal/core-composer-scaffold", - "version": "9.3.2", - "source": { - "type": "git", - "url": "https://github.com/drupal/core-composer-scaffold.git", - "reference": "d3e0b1d707125c5de0f54315906e65654c3608da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/d3e0b1d707125c5de0f54315906e65654c3608da", - "reference": "d3e0b1d707125c5de0f54315906e65654c3608da", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1 || ^2", - "php": ">=7.3.0" - }, - "conflict": { - "drupal-composer/drupal-scaffold": "*" - }, - "require-dev": { - "composer/composer": "^1.8@stable" - }, - "type": "composer-plugin", - "extra": { - "class": "Drupal\\Composer\\Plugin\\Scaffold\\Plugin", - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Drupal\\Composer\\Plugin\\Scaffold\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "A flexible Composer project scaffold builder.", - "homepage": "https://www.drupal.org/project/drupal", - "keywords": [ - "drupal" - ], - "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/9.3.2" - }, - "time": "2021-11-19T09:52:23+00:00" - }, - { - "name": "drupal/core-project-message", - "version": "9.3.2", - "source": { - "type": "git", - "url": "https://github.com/drupal/core-project-message.git", - "reference": "812d6da43dd49cc210af62e80fa92189e68e565a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-project-message/zipball/812d6da43dd49cc210af62e80fa92189e68e565a", - "reference": "812d6da43dd49cc210af62e80fa92189e68e565a", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2", - "php": ">=7.3.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Drupal\\Composer\\Plugin\\ProjectMessage\\MessagePlugin" - }, - "autoload": { - "psr-4": { - "Drupal\\Composer\\Plugin\\ProjectMessage\\": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Adds a message after Composer installation.", - "homepage": "https://www.drupal.org/project/drupal", - "keywords": [ - "drupal" - ], - "support": { - "source": "https://github.com/drupal/core-project-message/tree/9.3.2" - }, - "time": "2020-09-14T13:40:36+00:00" - }, - { - "name": "drupal/core-recommended", - "version": "9.3.2", - "source": { - "type": "git", - "url": "https://github.com/drupal/core-recommended.git", - "reference": "9f570d6bf6e568b8c2deab02349a11fad3d1e272" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/9f570d6bf6e568b8c2deab02349a11fad3d1e272", - "reference": "9f570d6bf6e568b8c2deab02349a11fad3d1e272", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "1.3.0", - "composer/semver": "3.2.6", - "doctrine/annotations": "1.13.2", - "doctrine/lexer": "1.2.1", - "doctrine/reflection": "1.2.2", - "drupal/core": "9.3.2", - "egulias/email-validator": "3.1.2", - "guzzlehttp/guzzle": "6.5.5", - "guzzlehttp/promises": "1.5.1", - "guzzlehttp/psr7": "1.8.3", - "laminas/laminas-diactoros": "2.8.0", - "laminas/laminas-escaper": "2.9.0", - "laminas/laminas-feed": "2.15.0", - "laminas/laminas-stdlib": "3.6.1", - "masterminds/html5": "2.7.5", - "pear/archive_tar": "1.4.14", - "pear/console_getopt": "v1.4.3", - "pear/pear-core-minimal": "v1.10.11", - "pear/pear_exception": "v1.0.2", - "psr/cache": "1.0.1", - "psr/container": "1.1.1", - "psr/http-factory": "1.0.1", - "psr/http-message": "1.0.1", - "psr/log": "1.1.4", - "ralouphie/getallheaders": "3.0.3", - "stack/builder": "v1.0.6", - "symfony-cmf/routing": "2.3.4", - "symfony/console": "v4.4.34", - "symfony/debug": "v4.4.31", - "symfony/dependency-injection": "v4.4.34", - "symfony/deprecation-contracts": "v2.5.0", - "symfony/error-handler": "v4.4.34", - "symfony/event-dispatcher": "v4.4.34", - "symfony/event-dispatcher-contracts": "v1.1.11", - "symfony/http-client-contracts": "v2.5.0", - "symfony/http-foundation": "v4.4.34", - "symfony/http-kernel": "v4.4.35", - "symfony/mime": "v5.4.0", - "symfony/polyfill-ctype": "v1.23.0", - "symfony/polyfill-iconv": "v1.23.0", - "symfony/polyfill-intl-idn": "v1.23.0", - "symfony/polyfill-intl-normalizer": "v1.23.0", - "symfony/polyfill-mbstring": "v1.23.1", - "symfony/polyfill-php80": "v1.23.1", - "symfony/process": "v4.4.35", - "symfony/psr-http-message-bridge": "v2.1.2", - "symfony/routing": "v4.4.34", - "symfony/serializer": "v4.4.35", - "symfony/service-contracts": "v2.5.0", - "symfony/translation": "v4.4.34", - "symfony/translation-contracts": "v2.5.0", - "symfony/validator": "v4.4.35", - "symfony/var-dumper": "v5.4.0", - "symfony/yaml": "v4.4.34", - "twig/twig": "v2.14.7", - "typo3/phar-stream-wrapper": "v3.1.7" - }, - "conflict": { - "webflo/drupal-core-strict": "*" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Locked core dependencies; require this project INSTEAD OF drupal/core.", - "support": { - "source": "https://github.com/drupal/core-recommended/tree/9.3.2" - }, - "time": "2022-01-05T02:55:30+00:00" - }, - { - "name": "drupal/core-vendor-hardening", - "version": "9.3.2", - "source": { - "type": "git", - "url": "https://github.com/drupal/core-vendor-hardening.git", - "reference": "9df7917c08e81b2b5f94c1c101c03326ef462cb4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-vendor-hardening/zipball/9df7917c08e81b2b5f94c1c101c03326ef462cb4", - "reference": "9df7917c08e81b2b5f94c1c101c03326ef462cb4", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2", - "php": ">=7.3.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Drupal\\Composer\\Plugin\\VendorHardening\\VendorHardeningPlugin" - }, - "autoload": { - "psr-4": { - "Drupal\\Composer\\Plugin\\VendorHardening\\": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Hardens the vendor directory for when it's in the docroot.", - "homepage": "https://www.drupal.org/project/drupal", - "keywords": [ - "drupal" - ], - "support": { - "source": "https://github.com/drupal/core-vendor-hardening/tree/9.3.2" - }, - "time": "2021-11-15T02:22:54+00:00" - }, - { - "name": "drupal/crop", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/crop.git", - "reference": "8.x-2.1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/crop-8.x-2.1.zip", - "reference": "8.x-2.1", - "shasum": "c03541907d59874ca8a81f574258f6c0de8cbdc8" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-2.1", - "datestamp": "1585251827", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Drupal Media Team", - "homepage": "https://www.drupal.org/user/3260690" - }, - { - "name": "phenaproxima", - "homepage": "https://www.drupal.org/user/205645" - }, - { - "name": "slashrsm", - "homepage": "https://www.drupal.org/user/744628" - }, - { - "name": "woprrr", - "homepage": "https://www.drupal.org/user/858604" - } - ], - "description": "Provides storage and API for image crops.", - "homepage": "https://www.drupal.org/project/crop", - "support": { - "source": "https://git.drupalcode.org/project/crop", - "issues": "https://www.drupal.org/project/issues/crop" - } - }, - { - "name": "drupal/ctools", - "version": "3.7.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/ctools.git", - "reference": "8.x-3.7" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/ctools-8.x-3.7.zip", - "reference": "8.x-3.7", - "shasum": "b11c0981a1d2ab3cc9e8e614a337d8e2a2a70c0e" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-3.7", - "datestamp": "1623860918", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "branch-alias": { - "dev-8.x-3.x": "3.x-dev" - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Kris Vanderwater (EclipseGc)", - "homepage": "https://www.drupal.org/u/eclipsegc", - "role": "Maintainer" - }, - { - "name": "Jakob Perry (japerry)", - "homepage": "https://www.drupal.org/u/japerry", - "role": "Maintainer" - }, - { - "name": "Tim Plunkett (tim.plunkett)", - "homepage": "https://www.drupal.org/u/timplunkett", - "role": "Maintainer" - }, - { - "name": "James Gilliland (neclimdul)", - "homepage": "https://www.drupal.org/u/neclimdul", - "role": "Maintainer" - }, - { - "name": "Daniel Wehner (dawehner)", - "homepage": "https://www.drupal.org/u/dawehner", - "role": "Maintainer" - }, - { - "name": "joelpittet", - "homepage": "https://www.drupal.org/user/160302" - }, - { - "name": "merlinofchaos", - "homepage": "https://www.drupal.org/user/26979" - }, - { - "name": "neclimdul", - "homepage": "https://www.drupal.org/user/48673" - }, - { - "name": "sdboyer", - "homepage": "https://www.drupal.org/user/146719" - }, - { - "name": "sun", - "homepage": "https://www.drupal.org/user/54136" - }, - { - "name": "tim.plunkett", - "homepage": "https://www.drupal.org/user/241634" - } - ], - "description": "Provides a number of utility and helper APIs for Drupal developers and site builders.", - "homepage": "https://www.drupal.org/project/ctools", - "support": { - "source": "https://git.drupalcode.org/project/ctools", - "issues": "https://www.drupal.org/project/issues/ctools" - } - }, - { - "name": "drupal/ctools_block", - "version": "3.7.0", - "require": { - "drupal/core": "^8.8 || ^9", - "drupal/ctools": "*" - }, - "type": "metapackage", - "extra": { - "drupal": { - "version": "8.x-3.7", - "datestamp": "1623860918", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "EclipseGc", - "homepage": "https://www.drupal.org/user/61203" - }, - { - "name": "damiankloip", - "homepage": "https://www.drupal.org/user/1037976" - }, - { - "name": "dawehner", - "homepage": "https://www.drupal.org/user/99340" - }, - { - "name": "esmerel", - "homepage": "https://www.drupal.org/user/164022" - }, - { - "name": "japerry", - "homepage": "https://www.drupal.org/user/45640" - }, - { - "name": "joelpittet", - "homepage": "https://www.drupal.org/user/160302" - }, - { - "name": "merlinofchaos", - "homepage": "https://www.drupal.org/user/26979" - }, - { - "name": "neclimdul", - "homepage": "https://www.drupal.org/user/48673" - }, - { - "name": "sdboyer", - "homepage": "https://www.drupal.org/user/146719" - }, - { - "name": "sun", - "homepage": "https://www.drupal.org/user/54136" - }, - { - "name": "tim.plunkett", - "homepage": "https://www.drupal.org/user/241634" - } - ], - "description": "Provides improvements to blocks that will one day be added to Drupal core.", - "homepage": "https://www.drupal.org/project/ctools", - "support": { - "source": "https://git.drupalcode.org/project/ctools" - } - }, - { - "name": "drupal/custom_pub", - "version": "1.0.0-beta3", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/custom_pub.git", - "reference": "8.x-1.0-beta3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/custom_pub-8.x-1.0-beta3.zip", - "reference": "8.x-1.0-beta3", - "shasum": "347cdb6a6c3eba20dea02c8f4216f66f16e847d2" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-beta3", - "datestamp": "1628530052", - "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "VladimirAus", - "homepage": "https://www.drupal.org/user/673120" - }, - { - "name": "arcaneadam", - "homepage": "https://www.drupal.org/user/234551" - }, - { - "name": "dboulet", - "homepage": "https://www.drupal.org/user/139316" - }, - { - "name": "gisle", - "homepage": "https://www.drupal.org/user/409554" - }, - { - "name": "jacobbell84", - "homepage": "https://www.drupal.org/user/3408772" - }, - { - "name": "kevinquillen", - "homepage": "https://www.drupal.org/user/317279" - } - ], - "description": "Adds the ability to add Custom publishing options to the node Add/Edit forms.", - "homepage": "https://www.drupal.org/project/custom_pub", - "support": { - "source": "https://git.drupalcode.org/project/custom_pub" - } - }, - { - "name": "drupal/default_content", - "version": "1.0.0-alpha9", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/default_content.git", - "reference": "8.x-1.0-alpha9" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/default_content-8.x-1.0-alpha9.zip", - "reference": "8.x-1.0-alpha9", - "shasum": "e8d5cc6ae96b14e882852512fbf5887e752146a0" - }, - "require": { - "drupal/core": "^8.7.7 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-alpha9", - "datestamp": "1588280141", - "security-coverage": { - "status": "not-covered", - "message": "Alpha releases are not covered by Drupal security advisories." - } - }, - "drush": { - "services": { - "drush.services.yml": "^9" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "Sam152", - "homepage": "https://www.drupal.org/user/1485048" - }, - { - "name": "andypost", - "homepage": "https://www.drupal.org/user/118908" - }, - { - "name": "benjy", - "homepage": "https://www.drupal.org/user/1852732" - }, - { - "name": "dawehner", - "homepage": "https://www.drupal.org/user/99340" - }, - { - "name": "jibran", - "homepage": "https://www.drupal.org/user/1198144" - }, - { - "name": "larowlan", - "homepage": "https://www.drupal.org/user/395439" - } - ], - "description": "Imports default content when a module is enabled", - "homepage": "https://www.drupal.org/project/default_content", - "support": { - "source": "https://git.drupalcode.org/project/default_content" - } - }, - { - "name": "drupal/entity_reference_revisions", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/entity_reference_revisions.git", - "reference": "8.x-1.9" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity_reference_revisions-8.x-1.9.zip", - "reference": "8.x-1.9", - "shasum": "e1c51bdea495eb3b458130d6f0a00c347f5637df" - }, - "require": { - "drupal/core": "^8.7.7 || ^9" - }, - "require-dev": { - "drupal/diff": "1.x-dev" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.9", - "datestamp": "1614805871", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "Frans", - "homepage": "https://www.drupal.org/user/514222" - }, - { - "name": "jeroen.b", - "homepage": "https://www.drupal.org/user/1853532" - }, - { - "name": "miro_dietiker", - "homepage": "https://www.drupal.org/user/227761" - } - ], - "description": "Entity Reference Revisions", - "homepage": "https://www.drupal.org/project/entity_reference_revisions", - "support": { - "source": "https://git.drupalcode.org/project/entity_reference_revisions" - } - }, - { - "name": "drupal/file_entity", - "version": "dev-2.x", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/file_entity.git", - "reference": "537daa77abbfa63974554c9a33b51fab98bc2657" - }, - "require": { - "drupal/core": "^8.8 || ^9", - "drupal/token": "*" - }, - "require-dev": { - "drupal/pathauto": "*" - }, - "type": "drupal-module", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - }, - "drupal": { - "version": "8.x-2.0-beta8+2-dev", - "datestamp": "1625735445", - "security-coverage": { - "status": "not-covered", - "message": "Dev releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "DamienMcKenna", - "homepage": "https://www.drupal.org/user/108450" - }, - { - "name": "Dave Reid", - "homepage": "https://www.drupal.org/user/53892" - }, - { - "name": "Devin Carlson", - "homepage": "https://www.drupal.org/user/290182" - }, - { - "name": "Drupal Media Team", - "homepage": "https://www.drupal.org/user/3260690" - }, - { - "name": "Drupal media CI", - "homepage": "https://www.drupal.org/user/3057985" - }, - { - "name": "JacobSingh", - "homepage": "https://www.drupal.org/user/68912" - }, - { - "name": "JeffM2001", - "homepage": "https://www.drupal.org/user/262092" - }, - { - "name": "ParisLiakos", - "homepage": "https://www.drupal.org/user/1011436" - }, - { - "name": "aaron", - "homepage": "https://www.drupal.org/user/33420" - }, - { - "name": "arthurf", - "homepage": "https://www.drupal.org/user/27259" - }, - { - "name": "dsnopek", - "homepage": "https://www.drupal.org/user/266527" - }, - { - "name": "dsutter", - "homepage": "https://www.drupal.org/user/3357810" - }, - { - "name": "effulgentsia", - "homepage": "https://www.drupal.org/user/78040" - }, - { - "name": "joseph.olstad", - "homepage": "https://www.drupal.org/user/1321830" - }, - { - "name": "mpotter", - "homepage": "https://www.drupal.org/user/616192" - }, - { - "name": "mxr576", - "homepage": "https://www.drupal.org/user/315522" - }, - { - "name": "robeano", - "homepage": "https://www.drupal.org/user/67660" - }, - { - "name": "slashrsm", - "homepage": "https://www.drupal.org/user/744628" - }, - { - "name": "taran2L", - "homepage": "https://www.drupal.org/user/364424" - } - ], - "description": "Extends Drupal file entities to be fieldable and viewable.", - "homepage": "https://www.drupal.org/project/file_entity", - "support": { - "source": "https://git.drupalcode.org/project/file_entity" - } - }, - { - "name": "drupal/file_mdm", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/file_mdm.git", - "reference": "8.x-2.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/file_mdm-8.x-2.2.zip", - "reference": "8.x-2.2", - "shasum": "94b6e1dd7e5c605c149cf146fe1ee539850cb19f" - }, - "require": { - "drupal/core": "^9.2", - "lsolesen/pel": "^0.9.8", - "phenx/php-font-lib": "^0.5.3" - }, - "conflict": { - "lsolesen/pel": "0.9.10" - }, - "require-dev": { - "drupal/image_effects": "*", - "drupal/vendor_stream_wrapper": "^2", - "fileeye/linuxlibertine-fonts": "^5.3" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-2.2", - "datestamp": "1639755159", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "mondrake", - "homepage": "https://www.drupal.org/user/1307444" - } - ], - "description": "Provides a service to manage file metadata.", - "homepage": "https://www.drupal.org/project/file_mdm", - "support": { - "source": "https://git.drupalcode.org/project/file_mdm" - } - }, - { - "name": "drupal/focal_point", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/focal_point.git", - "reference": "8.x-1.5" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/focal_point-8.x-1.5.zip", - "reference": "8.x-1.5", - "shasum": "41198e9220788c3b7d3146b10e5dfd6c73cd4784" - }, - "require": { - "drupal/core": "^8.8 || ^9", - "drupal/crop": "^1.0 || ^2.0" - }, - "require-dev": { - "drupal/crop": "*" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.5", - "datestamp": "1598663903", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Alexander Ross (bleen)", - "homepage": "https://www.drupal.org/u/bleen", - "role": "Maintainer" - } - ], - "description": "Focal Point allows content creators to mark the most important part of an image for easier cropping.", - "homepage": "https://drupal.org/project/focal_point", - "support": { - "source": "https://cgit.drupalcode.org/focal_point", - "issues": "https://drupal.org/project/issues/focal_point", - "irc": "irc://irc.freenode.org/drupal-contribute" - } - }, - { - "name": "drupal/formblock", - "version": "2.0.0-beta2", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/formblock.git", - "reference": "2.0.0-beta2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/formblock-2.0.0-beta2.zip", - "reference": "2.0.0-beta2", - "shasum": "4998e9495917bf77ef40fe11d3f514aa7b1bd6a6" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "2.0.0-beta2", - "datestamp": "1599176366", - "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "AndyD328", - "homepage": "https://www.drupal.org/user/2261214" - }, - { - "name": "chx", - "homepage": "https://www.drupal.org/user/9446" - }, - { - "name": "mikey_p", - "homepage": "https://www.drupal.org/user/62496" - }, - { - "name": "nedjo", - "homepage": "https://www.drupal.org/user/4481" - } - ], - "description": "Enables the presentation of node creation forms in blocks. This is particularly useful for including forms on Layout Builder & Panels.", - "homepage": "https://www.drupal.org/project/formblock", - "support": { - "source": "https://git.drupalcode.org/project/formblock" - } - }, - { - "name": "drupal/gin", - "version": "3.0.0-alpha37", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/gin.git", - "reference": "8.x-3.0-alpha37" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/gin-8.x-3.0-alpha37.zip", - "reference": "8.x-3.0-alpha37", - "shasum": "56f7226618f7e45697ee799e5e02c57d79cb3b1a" - }, - "require": { - "drupal/core": "^8.8 || ^9 || ^10", - "drupal/gin_toolbar": "^1.0@beta" - }, - "type": "drupal-theme", - "extra": { - "drupal": { - "version": "8.x-3.0-alpha37", - "datestamp": "1632767973", - "security-coverage": { - "status": "not-covered", - "message": "Alpha releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Sascha Eggenberger (saschaeggi)", - "homepage": "https://www.drupal.org/u/saschaeggi", - "role": "Maintainer" - }, - { - "name": "saschaeggi", - "homepage": "https://www.drupal.org/user/1999056" - } - ], - "description": "For a better Admin and Content Editor Experience.", - "homepage": "https://www.drupal.org/project/gin", - "support": { - "source": "https://git.drupalcode.org/project/gin", - "issues": "https://www.drupal.org/project/issues/gin" - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/saschaeggi" - }, - { - "type": "other", - "url": "https://paypal.me/saschaeggi" - } - ] - }, - { - "name": "drupal/gin_login", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/gin_login.git", - "reference": "8.x-1.0" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/gin_login-8.x-1.0.zip", - "reference": "8.x-1.0", - "shasum": "3cb6dc98d64b4f9ec5123abd8c6e173fbbe98f2c" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0", - "datestamp": "1632769769", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Sascha Eggenberger (saschaeggi)", - "homepage": "https://www.drupal.org/u/saschaeggi", - "role": "Maintainer" - }, - { - "name": "saschaeggi", - "homepage": "https://www.drupal.org/user/1999056" - } - ], - "description": "Custom Drupal Login for Gin theme", - "homepage": "https://www.drupal.org/project/gin_login", - "keywords": [ - "Drupal" - ], - "support": { - "source": "http://cgit.drupalcode.org/gin_login", - "issues": "https://www.drupal.org/project/issues/gin_login" - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/saschaeggi" - }, - { - "type": "other", - "url": "https://paypal.me/saschaeggi" - } - ] - }, - { - "name": "drupal/gin_toolbar", - "version": "1.0.0-beta20", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/gin_toolbar.git", - "reference": "8.x-1.0-beta20" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/gin_toolbar-8.x-1.0-beta20.zip", - "reference": "8.x-1.0-beta20", - "shasum": "770d6945de7ae001e3981db83daace610d4db5c4" - }, - "require": { - "drupal/core": "^8 || ^9 || ^10" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-beta20", - "datestamp": "1635149692", - "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Sascha Eggenberger (saschaeggi)", - "homepage": "https://www.drupal.org/u/saschaeggi", - "role": "Maintainer" - } - ], - "description": "Gin Toolbar for Frontend use", - "homepage": "https://www.drupal.org/project/gin_toolbar", - "keywords": [ - "Drupal" - ], - "support": { - "source": "http://cgit.drupalcode.org/gin_toolbar", - "issues": "https://www.drupal.org/project/issues/gin_toolbar" - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/saschaeggi" - }, - { - "type": "other", - "url": "https://paypal.me/saschaeggi" - } - ] - }, - { - "name": "drupal/google_tag", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/google_tag.git", - "reference": "8.x-1.4" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/google_tag-8.x-1.4.zip", - "reference": "8.x-1.4", - "shasum": "1bdc6f93d1c79c27738320597f2185f5de37432f" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.4", - "datestamp": "1593179846", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "solotandem", - "homepage": "https://www.drupal.org/user/240748" - } - ], - "description": "Allows your website analytics to be managed using Google Tag Manager.", - "homepage": "https://www.drupal.org/project/google_tag", - "support": { - "source": "https://git.drupalcode.org/project/google_tag" - } - }, - { - "name": "drupal/imagemagick", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/imagemagick.git", - "reference": "8.x-3.3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/imagemagick-8.x-3.3.zip", - "reference": "8.x-3.3", - "shasum": "b950caf621f23642b6f7bcbe8ae74d4d57f9ac3f" - }, - "require": { - "drupal/core": "^9.2", - "drupal/file_mdm": "^2", - "drupal/sophron": "^1.2" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-3.3", - "datestamp": "1638027743", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Chris Charlton", - "homepage": "https://www.drupal.org/user/17089" - }, - { - "name": "chx", - "homepage": "https://www.drupal.org/user/9446" - }, - { - "name": "claudiu.cristea", - "homepage": "https://www.drupal.org/user/56348" - }, - { - "name": "dman", - "homepage": "https://www.drupal.org/user/33240" - }, - { - "name": "dopry", - "homepage": "https://www.drupal.org/user/22202" - }, - { - "name": "drewish", - "homepage": "https://www.drupal.org/user/34869" - }, - { - "name": "gdl", - "homepage": "https://www.drupal.org/user/507326" - }, - { - "name": "mondrake", - "homepage": "https://www.drupal.org/user/1307444" - }, - { - "name": "quicksketch", - "homepage": "https://www.drupal.org/user/35821" - }, - { - "name": "sun", - "homepage": "https://www.drupal.org/user/54136" - }, - { - "name": "walkah", - "homepage": "https://www.drupal.org/user/1531" - } - ], - "description": "Provides an image toolkit to integrate ImageMagick with the Image API.", - "homepage": "https://www.drupal.org/project/imagemagick", - "support": { - "source": "https://git.drupalcode.org/project/imagemagick" - } - }, - { - "name": "drupal/jquery_ui", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/jquery_ui.git", - "reference": "8.x-1.4" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/jquery_ui-8.x-1.4.zip", - "reference": "8.x-1.4", - "shasum": "64c19ecc8902e2b4b1ab0cc5f5fe28dbc83bfebe" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.4", - "datestamp": "1582149957", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "RobLoach", - "homepage": "https://www.drupal.org/user/61114" - }, - { - "name": "jjeff", - "homepage": "https://www.drupal.org/user/17190" - }, - { - "name": "lauriii", - "homepage": "https://www.drupal.org/user/1078742" - }, - { - "name": "litwol", - "homepage": "https://www.drupal.org/user/78134" - }, - { - "name": "mfb", - "homepage": "https://www.drupal.org/user/12302" - }, - { - "name": "mfer", - "homepage": "https://www.drupal.org/user/25701" - }, - { - "name": "mikelutz", - "homepage": "https://www.drupal.org/user/2972409" - }, - { - "name": "sun", - "homepage": "https://www.drupal.org/user/54136" - }, - { - "name": "webchick", - "homepage": "https://www.drupal.org/user/24967" - }, - { - "name": "zrpnr", - "homepage": "https://www.drupal.org/user/1448368" - } - ], - "description": "Provides jQuery UI library.", - "homepage": "https://www.drupal.org/project/jquery_ui", - "support": { - "source": "https://git.drupalcode.org/project/jquery_ui" - } - }, - { - "name": "drupal/jquery_ui_draggable", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/jquery_ui_draggable.git", - "reference": "8.x-1.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/jquery_ui_draggable-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "09e17046e38aebf84ed573822b0d5be6de3f0c94" - }, - "require": { - "drupal/core": "^8 || ^9", - "drupal/jquery_ui": "*" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.2", - "datestamp": "1582150027", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "bnjmnm", - "homepage": "https://www.drupal.org/user/2369194" - }, - { - "name": "lauriii", - "homepage": "https://www.drupal.org/user/1078742" - }, - { - "name": "zrpnr", - "homepage": "https://www.drupal.org/user/1448368" - } - ], - "description": "Provides jQuery UI Draggable library.", - "homepage": "https://www.drupal.org/project/jquery_ui_draggable", - "support": { - "source": "https://git.drupalcode.org/project/jquery_ui_draggable" - } - }, - { - "name": "drupal/jquery_ui_droppable", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/jquery_ui_droppable.git", - "reference": "8.x-1.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/jquery_ui_droppable-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "6e53043f2d3215f211721eea4d4c6ab5d1672b14" - }, - "require": { - "drupal/core": "^8 || ^9", - "drupal/jquery_ui": "*", - "drupal/jquery_ui_draggable": "*" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.2", - "datestamp": "1582150071", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "bnjmnm", - "homepage": "https://www.drupal.org/user/2369194" - }, - { - "name": "lauriii", - "homepage": "https://www.drupal.org/user/1078742" - }, - { - "name": "zrpnr", - "homepage": "https://www.drupal.org/user/1448368" - } - ], - "description": "Provides jQuery UI Droppable library.", - "homepage": "https://www.drupal.org/project/jquery_ui_droppable", - "support": { - "source": "https://git.drupalcode.org/project/jquery_ui_droppable" - } - }, - { - "name": "drupal/layout_builder_modal", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/layout_builder_modal.git", - "reference": "8.x-1.1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/layout_builder_modal-8.x-1.1.zip", - "reference": "8.x-1.1", - "shasum": "5063c2d5e33265c92bfeed34df6682d74c973c51" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.1", - "datestamp": "1588175915", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "John Svensson", - "homepage": "https://www.drupal.org/u/johndevman", - "email": "john@kodamera.se", - "role": "Maintainer" - }, - { - "name": "Emil Johnsson", - "homepage": "https://www.drupal.org/u/johnzzon", - "email": "emil@kodamera.se", - "role": "Maintainer" - }, - { - "name": "Henrik Larsson", - "homepage": "https://www.drupal.org/u/henriklarsson", - "email": "henrik@kodamera.se", - "role": "Maintainer" - }, - { - "name": "twfahey", - "homepage": "https://www.drupal.org/user/3403722" - } - ], - "description": "Open blocks in a modal in the Layout Builder UI.", - "homepage": "https://www.drupal.org/project/layout_builder_modal", - "support": { - "source": "http://cgit.drupalcode.org/layout_builder_modal", - "issues": "https://www.drupal.org/project/issues/layout_builder_modal" - } - }, - { - "name": "drupal/layout_builder_restrictions", - "version": "2.11.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/layout_builder_restrictions.git", - "reference": "8.x-2.11" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/layout_builder_restrictions-8.x-2.11.zip", - "reference": "8.x-2.11", - "shasum": "07bb8fa968ded1ebb67eaf726714137e9cd7d6df" - }, - "require": { - "drupal/core": "^8.8.0 || ^9.0" - }, - "require-dev": { - "drupal/dashboards": "^2", - "drupal/layout_library": "^1", - "drupal/mini_layouts": "^1" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-2.11", - "datestamp": "1641475404", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "The University of Texas at Austin", - "homepage": "https://www.drupal.org/university-of-texas-at-austin", - "role": "Maintainer" - }, - { - "name": "Eirik Morland (eiriksm)", - "homepage": "https://www.drupal.org/u/eiriksm", - "role": "Maintainer" - }, - { - "name": "gravelpot", - "homepage": "https://www.drupal.org/user/748208" - }, - { - "name": "lreynaga", - "homepage": "https://www.drupal.org/user/3400232" - }, - { - "name": "mark_fullmer", - "homepage": "https://www.drupal.org/user/2612816" - }, - { - "name": "ricksta", - "homepage": "https://www.drupal.org/user/311042" - }, - { - "name": "texas_tater", - "homepage": "https://www.drupal.org/user/753614" - }, - { - "name": "twfahey", - "homepage": "https://www.drupal.org/user/3403722" - } - ], - "description": "Manage which fields & layouts are available in Layout Builder", - "homepage": "https://www.drupal.org/project/layout_builder_restrictions", - "keywords": [ - "Drupal", - "Layout Builder Restrictions" - ], - "support": { - "source": "https://git.drupalcode.org/project/layout_builder_restrictions", - "issues": "https://www.drupal.org/project/issues/layout_builder_restrictions" - } - }, - { - "name": "drupal/layout_library", - "version": "1.0.0-beta3", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/layout_library.git", - "reference": "8.x-1.0-beta3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/layout_library-8.x-1.0-beta3.zip", - "reference": "8.x-1.0-beta3", - "shasum": "d057acbe8a9df36f5901748f04602dacbca27bee" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-beta3", - "datestamp": "1635453135", - "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "EclipseGc", - "homepage": "https://www.drupal.org/user/61203" - }, - { - "name": "larowlan", - "homepage": "https://www.drupal.org/user/395439" - }, - { - "name": "samuel.mortenson", - "homepage": "https://www.drupal.org/user/2582268" - }, - { - "name": "tim.plunkett", - "homepage": "https://www.drupal.org/user/241634" - }, - { - "name": "xjm", - "homepage": "https://www.drupal.org/user/65776" - } - ], - "description": "Provides a library of layouts for content-editors to select from", - "homepage": "https://www.drupal.org/project/layout_library", - "support": { - "source": "https://git.drupalcode.org/project/layout_library" - } - }, - { - "name": "drupal/layout_paragraphs", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/layout_paragraphs.git", - "reference": "1.0.0" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/layout_paragraphs-1.0.0.zip", - "reference": "1.0.0", - "shasum": "6b4bbb8fc50f70092d1c1ed720076be9f8904218" - }, - "require": { - "drupal/core": "^8 || ^9", - "drupal/paragraphs": "^1.6" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "1.0.0", - "datestamp": "1621524309", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "itamair", - "homepage": "https://www.drupal.org/user/1179076" - }, - { - "name": "justin2pin", - "homepage": "https://www.drupal.org/user/278450" - } - ], - "description": "Layout Paragraphs", - "homepage": "https://www.drupal.org/project/layout_paragraphs", - "keywords": [ - "Drupal" - ], - "support": { - "source": "http://cgit.drupalcode.org/layout_paragraphs", - "issues": "https://www.drupal.org/project/issues/layout_paragraphs" - } - }, - { - "name": "drupal/lb_ux", - "version": "dev-1.x", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/lb_ux.git", - "reference": "6f2fb8e11b2fa4d526f6ea883844bb7fbeeb6377" - }, - "require": { - "drupal/core": "^8.7.7 || ^9" - }, - "type": "drupal-module", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - }, - "drupal": { - "version": "8.x-1.0-beta2+1-dev", - "datestamp": "1601321096", - "security-coverage": { - "status": "not-covered", - "message": "Project has not opted into security advisory coverage!" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "DyanneNova", - "homepage": "https://www.drupal.org/user/277051" - }, - { - "name": "starshaped", - "homepage": "https://www.drupal.org/user/522252" - }, - { - "name": "tim.plunkett", - "homepage": "https://www.drupal.org/user/241634" - }, - { - "name": "zrpnr", - "homepage": "https://www.drupal.org/user/1448368" - } - ], - "description": "Alters the Layout Builder UI for better usability", - "homepage": "https://www.drupal.org/project/lb_ux", - "support": { - "source": "https://git.drupalcode.org/project/lb_ux" - } - }, - { - "name": "drupal/mailsystem", - "version": "4.3.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/mailsystem.git", - "reference": "8.x-4.3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/mailsystem-8.x-4.3.zip", - "reference": "8.x-4.3", - "shasum": "1a74016e268ff207535be5d5e42ac8f72ac89050" - }, - "require": { - "drupal/core": "^8.7.7 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-4.3", - "datestamp": "1586203024", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "Les Lim", - "homepage": "https://www.drupal.org/user/84263" - }, - { - "name": "Manuel Garcia", - "homepage": "https://www.drupal.org/user/213194" - }, - { - "name": "Nafes", - "homepage": "https://www.drupal.org/user/2489926" - }, - { - "name": "miro_dietiker", - "homepage": "https://www.drupal.org/user/227761" - }, - { - "name": "pillarsdotnet", - "homepage": "https://www.drupal.org/user/36148" - } - ], - "description": "Mail System", - "homepage": "https://www.drupal.org/project/mailsystem", - "support": { - "source": "https://git.drupalcode.org/project/mailsystem" - } - }, - { - "name": "drupal/manage_display", - "version": "1.0.0-beta2", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/manage_display.git", - "reference": "8.x-1.0-beta2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/manage_display-8.x-1.0-beta2.zip", - "reference": "8.x-1.0-beta2", - "shasum": "a87b8ab8691fcdd83c0757b4d840112b990889d3" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-beta2", - "datestamp": "1591887476", - "security-coverage": { - "status": "not-covered", - "message": "Project has not opted into security advisory coverage!" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "AdamPS", - "homepage": "https://www.drupal.org/user/2650563" - } - ], - "description": "Make base fields such as 'title' available in \"Manage Display\"", - "homepage": "https://www.drupal.org/project/manage_display", - "support": { - "source": "https://git.drupalcode.org/project/manage_display" - } - }, - { - "name": "drupal/menu_admin_per_menu", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/menu_admin_per_menu.git", - "reference": "8.x-1.3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/menu_admin_per_menu-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "cb967bdd9ca6f5692d670d5c7c8d77587e7fd38c" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.3", - "datestamp": "1593436060", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "JeroenT", - "homepage": "https://www.drupal.org/user/2228934" - }, - { - "name": "anrikun", - "homepage": "https://www.drupal.org/user/410199" - }, - { - "name": "jonas139", - "homepage": "https://www.drupal.org/user/2873401" - }, - { - "name": "mkdok", - "homepage": "https://www.drupal.org/user/3308753" - } - ], - "description": "Allows to give roles per menu admin permissions without giving them full administer menu permission.", - "homepage": "https://www.drupal.org/project/menu_admin_per_menu", - "support": { - "source": "https://git.drupalcode.org/project/menu_admin_per_menu" - } - }, - { - "name": "drupal/menu_link_attributes", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/menu_link_attributes.git", - "reference": "8.x-1.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/menu_link_attributes-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "a332eca9d63eed14df01af759882627512ba6448" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.2", - "datestamp": "1616337149", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "jcnventura", - "homepage": "https://www.drupal.org/user/122464" - }, - { - "name": "yannickoo", - "homepage": "https://www.drupal.org/user/531118" - } - ], - "description": "Allows you to add attributes to menu links.", - "homepage": "http://drupal.org/project/menu_link_attributes", - "keywords": [ - "Drupal" - ], - "support": { - "source": "http://cgit.drupalcode.org/menu_link_attributes", - "issues": "http://drupal.org/project/issues/menu_link_attributes" - } - }, - { - "name": "drupal/migrate_generator", - "version": "1.1.0-alpha1", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/migrate_generator.git", - "reference": "8.x-1.1-alpha1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_generator-8.x-1.1-alpha1.zip", - "reference": "8.x-1.1-alpha1", - "shasum": "03728e60fd60db36b705cec04216105d1652cd5f" - }, - "require": { - "drupal/core": "^8.7.7 || ^9", - "drupal/migrate_plus": "^5", - "drupal/migrate_source_csv": "^3.2", - "drupal/migrate_tools": "^5" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.1-alpha1", - "datestamp": "1610699135", - "security-coverage": { - "status": "not-covered", - "message": "Project has not opted into security advisory coverage!" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - }, - "enable-patching": true, - "patches": { - "drupal/core": { - "2789125 - Error when a process plugin gives a multiple value for a subproperty destination": "https://www.drupal.org/files/issues/2789125-subproperties-with-multiple-process-plugin-5.patch" - }, - "drupal/migrate_plus": { - "3113394 - Add process plugin to skip files that don't exist": "https://www.drupal.org/files/issues/2020-02-13/migrate_plus-add_skip_on_file_exists_plugin-3113394-2.patch" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Sergey Orlov (sorlov)", - "homepage": "https://www.drupal.org/user/875410" - }, - { - "name": "andypost", - "homepage": "https://www.drupal.org/user/118908" - }, - { - "name": "davidferlay", - "homepage": "https://www.drupal.org/user/3349938" - }, - { - "name": "gaydabura", - "homepage": "https://www.drupal.org/user/400360" - }, - { - "name": "piggito", - "homepage": "https://www.drupal.org/user/670290" - }, - { - "name": "sorlov", - "homepage": "https://www.drupal.org/user/370717" - }, - { - "name": "vacho", - "homepage": "https://www.drupal.org/user/641094" - }, - { - "name": "waspper", - "homepage": "https://www.drupal.org/user/858842" - } - ], - "description": "Generate migration configs based on CSV sources.", - "homepage": "https://www.drupal.org/project/migrate_generator", - "keywords": [ - "Drupal", - "migrate" - ], - "support": { - "source": "https://git.drupalcode.org/project/migrate_generator" - } - }, - { - "name": "drupal/migrate_plus", - "version": "5.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/migrate_plus.git", - "reference": "8.x-5.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_plus-8.x-5.2.zip", - "reference": "8.x-5.2", - "shasum": "03ae34c362ccfacc4ae95b58469b25522e0ffb68" - }, - "require": { - "drupal/core": "^9.1" - }, - "require-dev": { - "drupal/migrate_example_advanced_setup": "*", - "drupal/migrate_example_setup": "*", - "drush/drush": "^10" - }, - "suggest": { - "ext-soap": "*", - "sainsburys/guzzle-oauth2-plugin": "3.0 required for the OAuth2 authentication plugin" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-5.2", - "datestamp": "1640379296", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Mike Ryan", - "homepage": "https://www.drupal.org/u/mikeryan", - "role": "Maintainer" - }, - { - "name": "Lucas Hedding", - "homepage": "https://www.drupal.org/u/heddn", - "role": "Maintainer" - }, - { - "name": "mikeryan", - "homepage": "https://www.drupal.org/user/4420" - } - ], - "description": "Enhancements to core migration support.", - "homepage": "https://www.drupal.org/project/migrate_plus", - "support": { - "source": "https://git.drupalcode.org/project/migrate_plus", - "issues": "https://www.drupal.org/project/issues/migrate_plus", - "slack": "#migrate" - } - }, - { - "name": "drupal/migrate_source_csv", - "version": "3.4.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/migrate_source_csv.git", - "reference": "8.x-3.4" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_source_csv-8.x-3.4.zip", - "reference": "8.x-3.4", - "shasum": "12990ad8c3b99e16c1b2a1be955aaa28581e5d1c" - }, - "require": { - "drupal/core": "^8.7 || ^9.0", - "league/csv": "^9.1", - "php": ">=7.1" - }, - "require-dev": { - "drupal/migrate_plus": "5.x-dev" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-3.4", - "datestamp": "1588260548", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Lucas Hedding", - "homepage": "https://www.drupal.org/u/heddn", - "role": "Maintainer" - } - ], - "description": "CSV source migration.", - "homepage": "https://www.drupal.org/project/migrate_source_csv", - "support": { - "source": "https://cgit.drupalcode.org/migrate_source_csv", - "issues": "https://www.drupal.org/project/issues/migrate_source_csv", - "irc": "irc://irc.freenode.org/drupal-migrate" - } - }, - { - "name": "drupal/migrate_tools", - "version": "5.1.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/migrate_tools.git", - "reference": "8.x-5.1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_tools-8.x-5.1.zip", - "reference": "8.x-5.1", - "shasum": "2c1a9d35d318a0e1de30a99fbf64bedd4e65cee1" - }, - "require": { - "drupal/core": "^9.1", - "drupal/migrate_plus": "^5", - "php": ">=7.1" - }, - "require-dev": { - "drupal/migrate_source_csv": "^3.0", - "drush/drush": "^10" - }, - "suggest": { - "drush/drush": "^9 || ^10" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-5.1", - "datestamp": "1640378500", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Mike Ryan", - "homepage": "https://www.drupal.org/u/mikeryan", - "role": "Maintainer" - }, - { - "name": "Lucas Hedding", - "homepage": "https://www.drupal.org/u/heddn", - "role": "Maintainer" - }, - { - "name": "mikeryan", - "homepage": "https://www.drupal.org/user/4420" - } - ], - "description": "Tools to assist in developing and running migrations.", - "homepage": "http://drupal.org/project/migrate_tools", - "support": { - "source": "https://git.drupalcode.org/project/migrate_tools", - "issues": "https://www.drupal.org/project/issues/migrate_tools", - "slack": "#migrate" - } - }, - { - "name": "drupal/page_manager", - "version": "4.0.0-beta6", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/page_manager.git", - "reference": "8.x-4.0-beta6" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/page_manager-8.x-4.0-beta6.zip", - "reference": "8.x-4.0-beta6", - "shasum": "bf0ac07177b1cd6c1a3da80f727f1448221ee98a" - }, - "require": { - "drupal/core": "^8.8 || ^9", - "drupal/ctools": "^3.1" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-4.0-beta6", - "datestamp": "1591125562", - "security-coverage": { - "status": "not-covered", - "message": "Project has not opted into security advisory coverage!" - } - }, - "branch-alias": { - "dev-8.x-4.x": "4.x-dev" - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Tim Plunkett", - "homepage": "https://www.drupal.org/u/tim.plunkett", - "role": "Maintainer" - }, - { - "name": "dsnopek", - "homepage": "https://www.drupal.org/user/266527" - }, - { - "name": "japerry", - "homepage": "https://www.drupal.org/user/45640" - }, - { - "name": "manuel.adan", - "homepage": "https://www.drupal.org/user/516420" - }, - { - "name": "phenaproxima", - "homepage": "https://www.drupal.org/user/205645" - }, - { - "name": "tim.plunkett", - "homepage": "https://www.drupal.org/user/241634" - } - ], - "description": "Provides a way to place blocks on a custom page.", - "homepage": "https://www.drupal.org/project/page_manager", - "support": { - "source": "https://git.drupal.org/project/page_manager.git", - "issues": "https://www.drupal.org/project/issues/page_manager", - "irc": "irc://irc.freenode.org/drupal-contribute" - } - }, - { - "name": "drupal/panels", - "version": "4.6.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/panels.git", - "reference": "8.x-4.6" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/panels-8.x-4.6.zip", - "reference": "8.x-4.6", - "shasum": "6430436a4d8fb64f8c113729dd92505a1e46b794" - }, - "require": { - "drupal/core": "^8.8 || ^9", - "drupal/ctools": ">=3.0.0", - "drupal/jquery_ui_droppable": "^1.2" - }, - "require-dev": { - "drupal/jquery_ui_droppable": "*", - "drupal/page_manager": "^4" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-4.6", - "datestamp": "1585870866", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "branch-alias": { - "dev-8.x-4.x": "4.x-dev" - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Jakob Perry", - "homepage": "https://www.drupal.org/u/japerry" - }, - { - "name": "Samuel Mortenson", - "homepage": "https://www.drupal.org/u/samuel.mortenson" - }, - { - "name": "See other contributors", - "homepage": "https://www.drupal.org/node/74958/committers" - }, - { - "name": "japerry", - "homepage": "https://www.drupal.org/user/45640" - }, - { - "name": "joelpittet", - "homepage": "https://www.drupal.org/user/160302" - }, - { - "name": "merlinofchaos", - "homepage": "https://www.drupal.org/user/26979" - }, - { - "name": "neclimdul", - "homepage": "https://www.drupal.org/user/48673" - }, - { - "name": "phenaproxima", - "homepage": "https://www.drupal.org/user/205645" - }, - { - "name": "samuel.mortenson", - "homepage": "https://www.drupal.org/user/2582268" - }, - { - "name": "tim.plunkett", - "homepage": "https://www.drupal.org/user/241634" - } - ], - "description": "Core Panels display functions; provides no external UI, at least one other Panels module should be enabled.", - "homepage": "https://www.drupal.org/project/panels", - "support": { - "source": "http://git.drupal.org/project/panels.git", - "issues": "https://www.drupal.org/project/issues/panels", - "irc": "irc://irc.freenode.org/drupal-scotch" - } - }, - { - "name": "drupal/panels_everywhere", - "version": "4.0.0-beta2", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/panels_everywhere.git", - "reference": "8.x-4.0-beta2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/panels_everywhere-8.x-4.0-beta2.zip", - "reference": "8.x-4.0-beta2", - "shasum": "094b60fed4f4c4b75a6893cab5a3bf60a76888a9" - }, - "require": { - "drupal/core": "^8 || ^9", - "drupal/ctools": ">=3.0.0", - "drupal/ctools_block": "*", - "drupal/page_manager": ">=4.0.0", - "drupal/panels": ">=4.0.0" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-4.0-beta2", - "datestamp": "1602162578", - "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "See contributors", - "homepage": "https://www.drupal.org/node/669722/committers", - "role": "Developer" - }, - { - "name": "Letharion", - "homepage": "https://www.drupal.org/user/373603" - }, - { - "name": "merlinofchaos", - "homepage": "https://www.drupal.org/user/26979" - } - ], - "description": "Use the Panels architecture to manage the full page display.", - "homepage": "https://www.drupal.org/project/panels_everywhere", - "support": { - "source": "http://git.drupal.org/project/panels_everywhere.git", - "issues": "https://www.drupal.org/project/issues/panels_everywhere", - "irc": "irc://irc.freenode.org/drupal-scotch" - } - }, - { - "name": "drupal/paragraphs", - "version": "1.12.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/paragraphs.git", - "reference": "8.x-1.12" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.12.zip", - "reference": "8.x-1.12", - "shasum": "3b67d8af1160af42d93a4610be1e02869e428965" - }, - "require": { - "drupal/core": "^8.8 || ^9", - "drupal/entity_reference_revisions": "~1.3" - }, - "require-dev": { - "drupal/block_field": "~1.0", - "drupal/ctools": "3.x-dev", - "drupal/diff": "~1.0", - "drupal/entity_browser": "2.x-dev", - "drupal/entity_usage": "2.x-dev", - "drupal/field_group": "3.x-dev", - "drupal/inline_entity_form": "~1.0", - "drupal/paragraphs-paragraphs_library": "*", - "drupal/replicate": "~1.0", - "drupal/search_api": "~1.0", - "drupal/search_api_db": "*" - }, - "suggest": { - "drupal/entity_browser": "Recommended for an improved user experience when using the Paragraphs library module" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.12", - "datestamp": "1590140081", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "Frans", - "homepage": "https://www.drupal.org/user/514222" - }, - { - "name": "Primsi", - "homepage": "https://www.drupal.org/user/282629" - }, - { - "name": "jeroen.b", - "homepage": "https://www.drupal.org/user/1853532" - }, - { - "name": "jstoller", - "homepage": "https://www.drupal.org/user/99012" - }, - { - "name": "miro_dietiker", - "homepage": "https://www.drupal.org/user/227761" - } - ], - "description": "Enables the creation of Paragraphs entities.", - "homepage": "https://www.drupal.org/project/paragraphs", - "support": { - "source": "https://git.drupalcode.org/project/paragraphs" - } - }, - { - "name": "drupal/password_policy", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/password_policy.git", - "reference": "8.x-3.1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/password_policy-8.x-3.1.zip", - "reference": "8.x-3.1", - "shasum": "d5e79ce4949c74080b4a6f655aa7ae914c663019" - }, - "require": { - "drupal/core": "^8 || ^9", - "drupal/ctools": "^3.1" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-3.1", - "datestamp": "1639661368", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "AohRveTPV", - "homepage": "https://www.drupal.org/user/2760115" - }, - { - "name": "deekayen", - "homepage": "https://www.drupal.org/user/972" - }, - { - "name": "miglius", - "homepage": "https://www.drupal.org/user/18741" - }, - { - "name": "nerdstein", - "homepage": "https://www.drupal.org/user/1557710" - }, - { - "name": "paulocs", - "homepage": "https://www.drupal.org/user/3640109" - }, - { - "name": "shrop", - "homepage": "https://www.drupal.org/user/14767" - } - ], - "description": "Sets up constraints and expiration of passwords.", - "homepage": "https://www.drupal.org/project/password_policy", - "support": { - "source": "https://git.drupalcode.org/project/password_policy", - "issues": "https://www.drupal.org/project/issues/password_policy" - } - }, - { - "name": "drupal/pathauto", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/pathauto.git", - "reference": "8.x-1.8" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.8.zip", - "reference": "8.x-1.8", - "shasum": "ede3216abb9c4f77709338d9147334c595046329" - }, - "require": { - "drupal/core": "^8.8 || ^9", - "drupal/ctools": "*", - "drupal/token": "*" - }, - "suggest": { - "drupal/redirect": "When installed Pathauto will provide a new \"Update Action\" in case your URLs change. This is the recommended update action and is considered the best practice for SEO and usability." - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.8", - "datestamp": "1588103046", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "Dave Reid", - "homepage": "https://www.drupal.org/user/53892" - }, - { - "name": "Freso", - "homepage": "https://www.drupal.org/user/27504" - }, - { - "name": "greggles", - "homepage": "https://www.drupal.org/user/36762" - } - ], - "description": "Provides a mechanism for modules to automatically generate aliases for the content they manage.", - "homepage": "https://www.drupal.org/project/pathauto", - "support": { - "source": "https://cgit.drupalcode.org/pathauto", - "issues": "https://www.drupal.org/project/issues/pathauto", - "documentation": "https://www.drupal.org/docs/8/modules/pathauto" - } - }, - { - "name": "drupal/rabbit_hole", - "version": "1.0.0-beta10", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/rabbit_hole.git", - "reference": "8.x-1.0-beta10" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/rabbit_hole-8.x-1.0-beta10.zip", - "reference": "8.x-1.0-beta10", - "shasum": "3eb151b7a905bbf0a50d9fe2ecffbca3eeb73ac9" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "require-dev": { - "drupal/commerce_product": "*", - "drupal/file_entity": "*", - "drupal/group": "*" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-beta10", - "datestamp": "1610813035", - "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Dylan Donkersgoed", - "homepage": "https://www.drupal.org/user/2803351" - }, - { - "name": "Matroskeen", - "homepage": "https://www.drupal.org/user/3426249" - }, - { - "name": "Odd Hill", - "homepage": "https://www.drupal.org/user/789934" - }, - { - "name": "mparker17", - "homepage": "https://www.drupal.org/user/536298" - }, - { - "name": "olofbokedal", - "homepage": "https://www.drupal.org/user/1198438" - }, - { - "name": "shumushin", - "homepage": "https://www.drupal.org/user/22093" - } - ], - "description": "Basic functionality that is shared among the different Rabbit Hole modules.", - "homepage": "https://www.drupal.org/project/rabbit_hole", - "support": { - "source": "https://git.drupalcode.org/project/rabbit_hole" - } - }, - { - "name": "drupal/redirect", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/redirect.git", - "reference": "8.x-1.7" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/redirect-8.x-1.7.zip", - "reference": "8.x-1.7", - "shasum": "013b2541a5ef0cf423a3caa1ae89cc5866504877" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.7", - "datestamp": "1639380488", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "Dave Reid", - "homepage": "https://www.drupal.org/user/53892" - }, - { - "name": "pifagor", - "homepage": "https://www.drupal.org/user/2375692" - } - ], - "description": "Allows users to redirect from old URLs to new URLs.", - "homepage": "https://www.drupal.org/project/redirect", - "support": { - "source": "https://git.drupalcode.org/project/redirect" - } - }, - { - "name": "drupal/remove_http_headers", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/remove_http_headers.git", - "reference": "8.x-1.0" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/remove_http_headers-8.x-1.0.zip", - "reference": "8.x-1.0", - "shasum": "9087381bb8576a81ec0df520037b9355a582aa36" - }, - "require": { - "drupal/core": "^8.6||^9.0" - }, - "require-dev": { - "ekino/phpstan-banned-code": "^0.3.1", - "mglaman/phpstan-drupal": "^0.12.2", - "phpstan/phpstan": "^0.12.17", - "phpstan/phpstan-deprecation-rules": "^0.12.2", - "phpstan/phpstan-strict-rules": "^0.12.2" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0", - "datestamp": "1605094126", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Orlando Thöny", - "homepage": "https://www.drupal.org/user/3343332", - "email": "orlando.thoeny@gmail.com", - "role": "Maintainer" - }, - { - "name": "marco-s", - "homepage": "https://www.drupal.org/user/3396620" - }, - { - "name": "milovan", - "homepage": "https://www.drupal.org/user/2018332" - }, - { - "name": "orlando.thoeny", - "homepage": "https://www.drupal.org/user/3558789" - } - ], - "description": "Removes configured HTTP Response headers.", - "homepage": "https://drupal.org/project/remove_http_headers", - "keywords": [ - "Drupal", - "HTTP headers", - "Security" - ], - "support": { - "source": "https://git.drupalcode.org/project/remove_http_headers" - } - }, - { - "name": "drupal/role_delegation", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/role_delegation.git", - "reference": "8.x-1.1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/role_delegation-8.x-1.1.zip", - "reference": "8.x-1.1", - "shasum": "a63b548056cc729beacfd385625fafb983e0f73e" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.1", - "datestamp": "1580498751", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Jeroen Tubex", - "homepage": "https://www.drupal.org/u/jeroent", - "role": "Maintainer" - }, - { - "name": "benjy", - "homepage": "https://www.drupal.org/user/1852732" - } - ], - "description": "Allows site administrators to grant some roles the authority to assign selected roles to users.", - "homepage": "http://drupal.org/project/role_delegation", - "support": { - "source": "https://git.drupalcode.org/project/role_delegation", - "issues": "http://drupal.org/project/role_delegation" - } - }, - { - "name": "drupal/seckit", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/seckit.git", - "reference": "2.0.0" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/seckit-2.0.0.zip", - "reference": "2.0.0", - "shasum": "d5356230b2de7d1e8a2e68eb81e70619a2e36c1e" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "2.0.0", - "datestamp": "1598609351", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "badjava", - "homepage": "https://www.drupal.org/user/83372" - }, - { - "name": "jweowu", - "homepage": "https://www.drupal.org/user/152788" - }, - { - "name": "mcdruid", - "homepage": "https://www.drupal.org/user/255969" - }, - { - "name": "p0deje", - "homepage": "https://www.drupal.org/user/529960" - } - ], - "description": "SecKit provides Drupal with various security-hardening options.", - "homepage": "https://www.drupal.org/project/seckit", - "keywords": [ - "Drupal", - "security" - ], - "support": { - "source": "http://cgit.drupalcode.org/seckit", - "issues": "http://drupal.org/project/issues/seckit" - } - }, - { - "name": "drupal/sophron", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/sophron.git", - "reference": "8.x-1.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/sophron-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "f222f4db7d43ee604c6c7a8f5a17a76c16a66e93" - }, - "require": { - "drupal/core": "^9.2", - "fileeye/mimemap": "^1.2.1" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.2", - "datestamp": "1637954244", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "autoload": { - "psr-4": { - "Drupal\\sophron\\": "src/" - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "mondrake", - "homepage": "https://www.drupal.org/user/1307444" - } - ], - "description": "Provides an extensive MIME types management API", - "homepage": "https://www.drupal.org/project/sophron", - "support": { - "source": "https://git.drupalcode.org/project/sophron" - } - }, - { - "name": "drupal/svg_image", - "version": "1.15.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/svg_image.git", - "reference": "8.x-1.15" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/svg_image-8.x-1.15.zip", - "reference": "8.x-1.15", - "shasum": "368d0189bb3c59ea40cf52d83c8551b6358aa161" - }, - "require": { - "drupal/core": "^8 || ^9", - "enshrined/svg-sanitize": ">=0.9 <1.0" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.15", - "datestamp": "1629259130", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Yaroslav Lushnikov", - "homepage": "https://www.drupal.org/user/2870933", - "role": "Maintainer" - }, - { - "name": "See contributors", - "homepage": "https://www.drupal.org/node/2887125/committers" - } - ], - "description": "Overrides the standard image formatter and widget to support SVG files.", - "homepage": "http://drupal.org/project/svg_image", - "support": { - "source": "http://cgit.drupalcode.org/svg_image", - "issues": "http://drupal.org/project/svg_image" - } - }, - { - "name": "drupal/swiftmailer", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/swiftmailer.git", - "reference": "8.x-2.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/swiftmailer-8.x-2.2.zip", - "reference": "8.x-2.2", - "shasum": "54269f7ceb6364e4fb953cf67b52b555d748d09c" - }, - "require": { - "drupal/core": "^8.9.11 || ^9.0.10", - "drupal/mailsystem": "^4.1.0", - "egulias/email-validator": "^2.0||^3", - "html2text/html2text": "^4.0.1", - "php": ">=7.0.0", - "swiftmailer/swiftmailer": "^6.1.3", - "tijsverkoyen/css-to-inline-styles": "^2.2" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-2.2", - "datestamp": "1639141915", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "AdamPS", - "homepage": "https://www.drupal.org/user/2650563" - }, - { - "name": "Anybody", - "homepage": "https://www.drupal.org/user/291091" - }, - { - "name": "B-Prod", - "homepage": "https://www.drupal.org/user/407852" - }, - { - "name": "geek-merlin", - "homepage": "https://www.drupal.org/user/229048" - }, - { - "name": "sbrattla", - "homepage": "https://www.drupal.org/user/53422" - }, - { - "name": "webflo", - "homepage": "https://www.drupal.org/user/254778" - } - ], - "description": "Swiftmailer", - "homepage": "https://www.drupal.org/project/swiftmailer", - "support": { - "source": "https://git.drupalcode.org/project/swiftmailer" - } - }, - { - "name": "drupal/telephone_validation", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/telephone_validation.git", - "reference": "8.x-2.3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/telephone_validation-8.x-2.3.zip", - "reference": "8.x-2.3", - "shasum": "34dd855d8f80c53bd93df66101020c1f2d05eb0e" - }, - "require": { - "drupal/core": "^8 || ^9", - "giggsey/libphonenumber-for-php": "~8.0" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-2.3", - "datestamp": "1591201337", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "zaporylie", - "homepage": "https://www.drupal.org/user/1532844" - } - ], - "description": "Use 3rd party library to validate telephone field.", - "homepage": "http://drupal.org/project/telephone_validation", - "support": { - "source": "https://git.drupalcode.org/project/telephone_validation", - "issues": "http://drupal.org/project/issues/telephone_validation" - } - }, - { - "name": "drupal/token", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/token.git", - "reference": "8.x-1.10" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/token-8.x-1.10.zip", - "reference": "8.x-1.10", - "shasum": "8b81224ab0420221b292e8d3b66d0da726317400" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.10", - "datestamp": "1638619775", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" - }, - { - "name": "Dave Reid", - "homepage": "https://www.drupal.org/user/53892" - }, - { - "name": "eaton", - "homepage": "https://www.drupal.org/user/16496" - }, - { - "name": "fago", - "homepage": "https://www.drupal.org/user/16747" - }, - { - "name": "greggles", - "homepage": "https://www.drupal.org/user/36762" - }, - { - "name": "mikeryan", - "homepage": "https://www.drupal.org/user/4420" - } - ], - "description": "Provides a user interface for the Token API, some missing core tokens.", - "homepage": "https://www.drupal.org/project/token", - "support": { - "source": "https://git.drupalcode.org/project/token" - } - }, - { - "name": "drupal/username_enumeration_prevention", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/username_enumeration_prevention.git", - "reference": "8.x-1.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/username_enumeration_prevention-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "0fe67462d3c919a7a8f33c41f1cb593ecf7ed7cf" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.2", - "datestamp": "1613949220", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "nicksanta", - "homepage": "https://www.drupal.org/user/87915" - } - ], - "description": "Prevents username enumeration on password reset and user pages.", - "homepage": "https://www.drupal.org/project/username_enumeration_prevention", - "support": { - "source": "https://git.drupalcode.org/project/username_enumeration_prevention" - } - }, - { - "name": "drupal/userprotect", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/userprotect.git", - "reference": "8.x-1.1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/userprotect-8.x-1.1.zip", - "reference": "8.x-1.1", - "shasum": "485e240317a7fc1c0523b082f333c983ea3ca639" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "require-dev": { - "drupal/role_delegation": "^1.0" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.1", - "datestamp": "1578341583", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "MegaChriz", - "homepage": "https://www.drupal.org/user/654114" - }, - { - "name": "karschsp", - "homepage": "https://www.drupal.org/user/138216" - } - ], - "description": "Allows admins to protect users from being edited or cancelled, on a per-user basis.", - "homepage": "https://www.drupal.org/project/userprotect", - "keywords": [ - "Drupal", - "User Management" - ], - "support": { - "source": "http://cgit.drupalcode.org/userprotect", - "issues": "https://www.drupal.org/project/issues/userprotect" - } - }, - { - "name": "drupal/views_bulk_edit", - "version": "dev-2.x", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/views_bulk_edit.git", - "reference": "ae5b40297b26d09b4684542393f23bb8a239e60d" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "require-dev": { - "drupal/views_bulk_operations": "~3.0" - }, - "suggest": { - "drupal/views_bulk_operations": "Get VBO for all the views benefits like batching, ability to select all view results or persistent selection across pages" - }, - "type": "drupal-module", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - }, - "drupal": { - "version": "8.x-2.6+0-dev", - "datestamp": "1623748007", - "security-coverage": { - "status": "not-covered", - "message": "Dev releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Marcin Grabias", - "homepage": "https://www.drupal.org/u/graber" - }, - { - "name": "benjy", - "homepage": "https://www.drupal.org/user/1852732" - } - ], - "description": "Allows bulk edition of entity field values.", - "homepage": "https://www.drupal.org/project/views_bulk_edit", - "support": { - "source": "https://git.drupalcode.org/project/views_bulk_edit", - "issues": "https://www.drupal.org/project/issues/views_bulk_edit?version=8.x" - } - }, - { - "name": "drupal/views_bulk_operations", - "version": "3.13.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/views_bulk_operations.git", - "reference": "8.x-3.13" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-8.x-3.13.zip", - "reference": "8.x-3.13", - "shasum": "70583d08b91be3b5e008f571589425c2176eb73b" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "require-dev": { - "drush/drush": "^10" - }, - "suggest": { - "drush/drush": "^9 || ^10" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-3.13", - "datestamp": "1619697066", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Marcin Grabias", - "homepage": "https://www.drupal.org/u/graber" - }, - { - "name": "Jon Pugh", - "homepage": "https://www.drupal.org/user/17028" - }, - { - "name": "bojanz", - "homepage": "https://www.drupal.org/user/86106" - }, - { - "name": "infojunkie", - "homepage": "https://www.drupal.org/user/48424" - }, - { - "name": "joelpittet", - "homepage": "https://www.drupal.org/user/160302" - } - ], - "description": "Adds an ability to perform bulk operations on selected entities from view results. Provides an API to create such operations.", - "homepage": "https://www.drupal.org/project/views_bulk_operations", - "support": { - "source": "https://git.drupalcode.org/project/views_bulk_operations/-/tree/8.x-3.x", - "issues": "https://www.drupal.org/project/issues/views_bulk_operations?version=8.x", - "docs": "https://www.drupal.org/docs/8/modules/views-bulk-operations-vbo" - } - }, - { - "name": "drupal/webform", - "version": "6.1.2", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/webform.git", - "reference": "6.1.2" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/webform-6.1.2.zip", - "reference": "6.1.2", - "shasum": "3afb96566f5d31474483e163b4e0138d43cffdcd" - }, - "require": { - "drupal/core": "^8.8 || ^9" - }, - "require-dev": { - "drupal/address": "~1.0", - "drupal/bootstrap": "~3.0", - "drupal/captcha": "~1.0", - "drupal/chosen": "~3.0", - "drupal/clientside_validation": "*", - "drupal/clientside_validation_jquery": "*", - "drupal/devel": "*", - "drupal/entity": "~1.0", - "drupal/entity_print": "*", - "drupal/gnode": "*", - "drupal/group": "*", - "drupal/jquery_ui": "~1.0", - "drupal/jquery_ui_checkboxradio": "*", - "drupal/jquery_ui_datepicker": "~1.0", - "drupal/lingotek": "~3.0", - "drupal/mailsystem": "~4.0", - "drupal/paragraphs": "~1.0", - "drupal/select2": "~1.0", - "drupal/smtp": "~1.0", - "drupal/styleguide": "~1.0", - "drupal/telephone_validation": "~2.0", - "drupal/token": "*", - "drupal/variationcache": "~1.0", - "drupal/webform_access": "*", - "drupal/webform_attachment": "*", - "drupal/webform_clientside_validation": "*", - "drupal/webform_devel": "*", - "drupal/webform_entity_print": "*", - "drupal/webform_group": "*", - "drupal/webform_node": "*", - "drupal/webform_options_limit": "*", - "drupal/webform_scheduled_email": "*", - "drupal/webform_share": "*", - "drupal/webform_ui": "*" - }, - "suggest": { - "drupal/jquery_ui_checkboxradio": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", - "drupal/jquery_ui_datepicker": "Provides jQuery UI Datepicker library. Required to support datepickers. The Webform jQueryUI Datepicker module is deprecated because jQueryUI is no longer maintained." - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "6.1.2", - "datestamp": "1638988073", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Jacob Rockowitz (jrockowitz)", - "homepage": "https://www.drupal.org/u/jrockowitz", - "role": "Maintainer" - }, - { - "name": "Alexander Trotsenko (bucefal91)", - "homepage": "https://www.drupal.org/u/bucefal91", - "role": "Co-maintainer" - }, - { - "name": "Contributors", - "homepage": "https://www.drupal.org/node/7404/committers", - "role": "Contributor" - }, - { - "name": "quicksketch", - "homepage": "https://www.drupal.org/user/35821" - }, - { - "name": "torotil", - "homepage": "https://www.drupal.org/user/865256" - } - ], - "description": "Enables the creation of webforms and questionnaires.", - "homepage": "https://drupal.org/project/webform", - "support": { - "source": "https://git.drupalcode.org/project/webform", - "issues": "https://www.drupal.org/project/issues/webform?version=8.x", - "docs": "https://www.drupal.org/docs/8/modules/webform", - "forum": "https://drupal.stackexchange.com/questions/tagged/webform" - } - }, - { - "name": "drush/drush", - "version": "10.6.2", - "source": { - "type": "git", - "url": "https://github.com/drush-ops/drush.git", - "reference": "0a570a16ec63259eb71195aba5feab532318b337" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/0a570a16ec63259eb71195aba5feab532318b337", - "reference": "0a570a16ec63259eb71195aba5feab532318b337", - "shasum": "" - }, - "require": { - "chi-teck/drupal-code-generator": "^1.32.1", - "composer/semver": "^1.4 || ^3", - "consolidation/config": "^1.2", - "consolidation/filter-via-dot-access-data": "^1", - "consolidation/robo": "^1.4.11 || ^2 || ^3", - "consolidation/site-alias": "^3.0.0@stable", - "consolidation/site-process": "^2.1 || ^4", - "enlightn/security-checker": "^1", - "ext-dom": "*", - "grasmash/yaml-expander": "^1.1.1", - "guzzlehttp/guzzle": "^6.3 || ^7.0", - "league/container": "^2.5 || ^3.4", - "php": ">=7.1.3", - "psr/log": "~1.0", - "psy/psysh": ">=0.6 <0.11", - "symfony/event-dispatcher": "^3.4 || ^4.0", - "symfony/finder": "^3.4 || ^4.0 || ^5", - "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^3.4 || ^4.0", - "webflo/drupal-finder": "^1.2", - "webmozart/path-util": "^2.1.0" - }, - "conflict": { - "drupal/migrate_run": "*", - "drupal/migrate_tools": "<= 5" - }, - "require-dev": { - "composer/installers": "^1.7", - "cweagans/composer-patches": "~1.0", - "david-garcia/phpwhois": "4.3.0", - "drupal/alinks": "1.0.0", - "drupal/core-recommended": "^8.8", - "phpunit/phpunit": ">=7.5.20", - "squizlabs/php_codesniffer": "^2.7 || ^3", - "vlucas/phpdotenv": "^2.4", - "yoast/phpunit-polyfills": "^0.2.0" - }, - "bin": [ - "drush" - ], - "type": "library", - "extra": { - "installer-paths": { - "sut/core": [ - "type:drupal-core" - ], - "sut/libraries/{$name}": [ - "type:drupal-library" - ], - "sut/modules/unish/{$name}": [ - "drupal/devel" - ], - "sut/themes/unish/{$name}": [ - "drupal/empty_theme" - ], - "sut/modules/contrib/{$name}": [ - "type:drupal-module" - ], - "sut/profiles/contrib/{$name}": [ - "type:drupal-profile" - ], - "sut/themes/contrib/{$name}": [ - "type:drupal-theme" - ], - "sut/drush/contrib/{$name}": [ - "type:drupal-drush" - ] - } - }, - "autoload": { - "psr-4": { - "Drush\\": "src/", - "Drush\\Internal\\": "src/internal-forks" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Moshe Weitzman", - "email": "weitzman@tejasa.com" - }, - { - "name": "Owen Barton", - "email": "drupal@owenbarton.com" - }, - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - }, - { - "name": "Jonathan Araña Cruz", - "email": "jonhattan@faita.net" - }, - { - "name": "Jonathan Hedstrom", - "email": "jhedstrom@gmail.com" - }, - { - "name": "Christopher Gervais", - "email": "chris@ergonlogic.com" - }, - { - "name": "Dave Reid", - "email": "dave@davereid.net" - }, - { - "name": "Damian Lee", - "email": "damiankloip@googlemail.com" - } - ], - "description": "Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt.", - "homepage": "http://www.drush.org", - "support": { - "forum": "http://drupal.stackexchange.com/questions/tagged/drush", - "irc": "irc://irc.freenode.org/drush", - "issues": "https://github.com/drush-ops/drush/issues", - "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/10.6.2" - }, - "funding": [ - { - "url": "https://github.com/weitzman", - "type": "github" - } - ], - "time": "2021-12-15T17:09:54+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-10-11T09:18:27+00:00" - }, - { - "name": "enlightn/security-checker", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/enlightn/security-checker.git", - "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/enlightn/security-checker/zipball/dc5bce653fa4d9c792e9dcffa728c0642847c1e1", - "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6", - "symfony/console": "^3.4|^4|^5", - "symfony/finder": "^3|^4|^5", - "symfony/process": "^3.4|^4|^5", - "symfony/yaml": "^3.4|^4|^5" - }, - "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^2.18", - "phpunit/phpunit": "^5.5|^6|^7|^8|^9" - }, - "bin": [ - "security-checker" - ], - "type": "library", - "autoload": { - "psr-4": { - "Enlightn\\SecurityChecker\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paras Malhotra", - "email": "paras@laravel-enlightn.com" - }, - { - "name": "Miguel Piedrafita", - "email": "soy@miguelpiedrafita.com" - } - ], - "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.", - "keywords": [ - "package", - "php", - "scanner", - "security", - "security advisories", - "vulnerability scanner" - ], - "support": { - "issues": "https://github.com/enlightn/security-checker/issues", - "source": "https://github.com/enlightn/security-checker/tree/v1.9.0" - }, - "time": "2021-05-06T09:03:35+00:00" - }, - { - "name": "enshrined/svg-sanitize", - "version": "0.14.1", - "source": { - "type": "git", - "url": "https://github.com/darylldoyle/svg-sanitizer.git", - "reference": "307b42066fb0b76b5119f5e1f0826e18fefabe95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/307b42066fb0b76b5119f5e1f0826e18fefabe95", - "reference": "307b42066fb0b76b5119f5e1f0826e18fefabe95", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "^0.1.2", - "phpunit/phpunit": "^6.5 || ^8.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "enshrined\\svgSanitize\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Daryll Doyle", - "email": "daryll@enshrined.co.uk" - } - ], - "description": "An SVG sanitizer for PHP", - "support": { - "issues": "https://github.com/darylldoyle/svg-sanitizer/issues", - "source": "https://github.com/darylldoyle/svg-sanitizer/tree/0.14.1" - }, - "time": "2021-08-09T23:46:54+00:00" - }, - { - "name": "fileeye/mimemap", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/FileEye/MimeMap.git", - "reference": "4ceb1162e179b2e74683f3229543225db56798f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FileEye/MimeMap/zipball/4ceb1162e179b2e74683f3229543225db56798f1", - "reference": "4ceb1162e179b2e74683f3229543225db56798f1", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2.0.0", - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "^5 | ^6 | ^7 | ^8 | ^9", - "sebastian/comparator": "*", - "sebastian/diff": "*", - "squizlabs/php_codesniffer": "*", - "symfony/console": "*", - "symfony/filesystem": "*", - "symfony/var-dumper": "*", - "symfony/yaml": "*" - }, - "bin": [ - "bin/fileeye-mimemap" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "FileEye\\MimeMap\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "description": "A PHP library to handle MIME Content-Type fields and their related file extensions.", - "homepage": "https://github.com/FileEye/MimeMap", - "keywords": [ - "mime", - "mime-database", - "mime-parser", - "mime-type" - ], - "support": { - "issues": "https://github.com/FileEye/MimeMap/issues", - "source": "https://github.com/FileEye/MimeMap/tree/1.2.1" - }, - "time": "2021-11-22T13:10:38+00:00" - }, - { - "name": "giggsey/libphonenumber-for-php", - "version": "8.12.41", - "source": { - "type": "git", - "url": "https://github.com/giggsey/libphonenumber-for-php.git", - "reference": "c7b9f89a25e37e8bb650a378c3eabcbdafedeafd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/c7b9f89a25e37e8bb650a378c3eabcbdafedeafd", - "reference": "c7b9f89a25e37e8bb650a378c3eabcbdafedeafd", - "shasum": "" - }, - "require": { - "giggsey/locale": "^1.7|^2.0", - "php": ">=5.3.2", - "symfony/polyfill-mbstring": "^1.17" - }, - "require-dev": { - "pear/pear-core-minimal": "^1.9", - "pear/pear_exception": "^1.0", - "pear/versioncontrol_git": "^0.5", - "phing/phing": "^2.7", - "php-coveralls/php-coveralls": "^1.0|^2.0", - "symfony/console": "^2.8|^3.0|^v4.4|^v5.2", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "libphonenumber\\": "src/" - }, - "exclude-from-classmap": [ - "/src/data/", - "/src/carrier/data/", - "/src/geocoding/data/", - "/src/timezone/data/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Joshua Gigg", - "email": "giggsey@gmail.com", - "homepage": "https://giggsey.com/" - } - ], - "description": "PHP Port of Google's libphonenumber", - "homepage": "https://github.com/giggsey/libphonenumber-for-php", - "keywords": [ - "geocoding", - "geolocation", - "libphonenumber", - "mobile", - "phonenumber", - "validation" - ], - "support": { - "irc": "irc://irc.appliedirc.com/lobby", - "issues": "https://github.com/giggsey/libphonenumber-for-php/issues", - "source": "https://github.com/giggsey/libphonenumber-for-php" - }, - "time": "2022-01-11T10:10:37+00:00" - }, - { - "name": "giggsey/locale", - "version": "2.1", - "source": { - "type": "git", - "url": "https://github.com/giggsey/Locale.git", - "reference": "8d324583b5899e6280a875c43bf1fc9658bc6962" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/giggsey/Locale/zipball/8d324583b5899e6280a875c43bf1fc9658bc6962", - "reference": "8d324583b5899e6280a875c43bf1fc9658bc6962", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "ext-json": "*", - "pear/pear-core-minimal": "^1.9", - "pear/pear_exception": "^1.0", - "pear/versioncontrol_git": "^0.5", - "phing/phing": "^2.7", - "php-coveralls/php-coveralls": "^2.0", - "phpunit/phpunit": "^8.5|^9.5", - "symfony/console": "^5.0", - "symfony/filesystem": "^5.0", - "symfony/finder": "^5.0", - "symfony/process": "^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Giggsey\\Locale\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joshua Gigg", - "email": "giggsey@gmail.com", - "homepage": "https://giggsey.com/" - } - ], - "description": "Locale functions required by libphonenumber-for-php", - "support": { - "issues": "https://github.com/giggsey/Locale/issues", - "source": "https://github.com/giggsey/Locale/tree/2.1" - }, - "time": "2021-11-04T19:12:22+00:00" - }, - { - "name": "grasmash/expander", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/grasmash/expander.git", - "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/grasmash/expander/zipball/95d6037344a4be1dd5f8e0b0b2571a28c397578f", - "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^1.1.0", - "php": ">=5.4" - }, - "require-dev": { - "greg-1-anderson/composer-test-scenarios": "^1", - "phpunit/phpunit": "^4|^5.5.4", - "satooshi/php-coveralls": "^1.0.2|dev-master", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Grasmash\\Expander\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Grasmick" - } - ], - "description": "Expands internal property references in PHP arrays file.", - "support": { - "issues": "https://github.com/grasmash/expander/issues", - "source": "https://github.com/grasmash/expander/tree/master" - }, - "time": "2017-12-21T22:14:55+00:00" - }, - { - "name": "grasmash/yaml-expander", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/grasmash/yaml-expander.git", - "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/3f0f6001ae707a24f4d9733958d77d92bf9693b1", - "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^1.1.0", - "php": ">=5.4", - "symfony/yaml": "^2.8.11|^3|^4" - }, - "require-dev": { - "greg-1-anderson/composer-test-scenarios": "^1", - "phpunit/phpunit": "^4.8|^5.5.4", - "satooshi/php-coveralls": "^1.0.2|dev-master", - "squizlabs/php_codesniffer": "^2.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Grasmash\\YamlExpander\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Grasmick" - } - ], - "description": "Expands internal property references in a yaml file.", - "support": { - "issues": "https://github.com/grasmash/yaml-expander/issues", - "source": "https://github.com/grasmash/yaml-expander/tree/master" - }, - "time": "2017-12-16T16:06:03+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.5.5", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5" - }, - "time": "2020-06-16T21:01:06+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "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" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2021-10-22T20:56:57+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.8.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "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" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "time": "2021-10-05T13:56:00+00:00" - }, - { - "name": "html2text/html2text", - "version": "4.3.1", - "source": { - "type": "git", - "url": "https://github.com/mtibben/html2text.git", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtibben/html2text/zipball/61ad68e934066a6f8df29a3d23a6460536d0855c", - "reference": "61ad68e934066a6f8df29a3d23a6460536d0855c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "symfony/polyfill-mbstring": "If you can't install ext-mbstring" - }, - "type": "library", - "autoload": { - "psr-4": { - "Html2Text\\": [ - "src/", - "test/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Converts HTML to formatted plain text", - "support": { - "issues": "https://github.com/mtibben/html2text/issues", - "source": "https://github.com/mtibben/html2text/tree/4.3.1" - }, - "time": "2020-04-16T23:44:31+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" - }, - { - "name": "laminas/laminas-escaper", - "version": "2.9.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-escaper": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.12.2", - "vimeo/psalm": "^3.16" - }, - "suggest": { - "ext-iconv": "*", - "ext-mbstring": "*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Escaper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", - "homepage": "https://laminas.dev", - "keywords": [ - "escaper", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-escaper/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-escaper/issues", - "rss": "https://github.com/laminas/laminas-escaper/releases.atom", - "source": "https://github.com/laminas/laminas-escaper" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-02T17:10:53+00:00" - }, - { - "name": "laminas/laminas-feed", - "version": "2.15.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-feed.git", - "reference": "3ef837a12833c74b438d2c3780023c4244e0abae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/3ef837a12833c74b438d2c3780023c4244e0abae", - "reference": "3ef837a12833c74b438d2c3780023c4244e0abae", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "laminas/laminas-escaper": "^2.9", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "laminas/laminas-servicemanager": "<3.3", - "zendframework/zend-feed": "*" - }, - "require-dev": { - "laminas/laminas-cache": "^2.7.2", - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-db": "^2.13.3", - "laminas/laminas-http": "^2.15", - "laminas/laminas-servicemanager": "^3.7", - "laminas/laminas-validator": "^2.15", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.13.0", - "psr/http-message": "^1.0.1", - "vimeo/psalm": "^4.1" - }, - "suggest": { - "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", - "laminas/laminas-db": "Laminas\\Db component, for use with PubSubHubbub", - "laminas/laminas-http": "Laminas\\Http for PubSubHubbub, and optionally for use with Laminas\\Feed\\Reader", - "laminas/laminas-servicemanager": "Laminas\\ServiceManager component, for easily extending ExtensionManager implementations", - "laminas/laminas-validator": "Laminas\\Validator component, for validating email addresses used in Atom feeds and entries when using the Writer subcomponent", - "psr/http-message": "PSR-7 ^1.0.1, if you wish to use Laminas\\Feed\\Reader\\Http\\Psr7ResponseDecorator" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Feed\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides functionality for consuming RSS and Atom feeds", - "homepage": "https://laminas.dev", - "keywords": [ - "feed", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-feed/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-feed/issues", - "rss": "https://github.com/laminas/laminas-feed/releases.atom", - "source": "https://github.com/laminas/laminas-feed" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-20T18:11:11+00:00" - }, - { - "name": "laminas/laminas-stdlib", - "version": "3.6.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "db581851a092246ad99e12d4fddf105184924c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/db581851a092246ad99e12d4fddf105184924c71", - "reference": "db581851a092246ad99e12d4fddf105184924c71", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-stdlib": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^0.17.1", - "phpunit/phpunit": "~9.3.7", - "psalm/plugin-phpunit": "^0.16.0", - "vimeo/psalm": "^4.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Stdlib\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "SPL extensions, array utilities, error handlers, and more", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "stdlib" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-stdlib/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-stdlib/issues", - "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", - "source": "https://github.com/laminas/laminas-stdlib" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-11-10T11:33:52+00:00" - }, - { - "name": "league/container", - "version": "3.4.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/container.git", - "reference": "84ecbc2dbecc31bd23faf759a0e329ee49abddbd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/container/zipball/84ecbc2dbecc31bd23faf759a0e329ee49abddbd", - "reference": "84ecbc2dbecc31bd23faf759a0e329ee49abddbd", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/container": "^1.0.0" - }, - "provide": { - "psr/container-implementation": "^1.0" - }, - "replace": { - "orno/di": "~2.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0 || ^7.0", - "roave/security-advisories": "dev-latest", - "scrutinizer/ocular": "^1.8", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev", - "dev-3.x": "3.x-dev", - "dev-2.x": "2.x-dev", - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Container\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Phil Bennett", - "email": "philipobenito@gmail.com", - "homepage": "http://www.philipobenito.com", - "role": "Developer" - } - ], - "description": "A fast and intuitive dependency injection container.", - "homepage": "https://github.com/thephpleague/container", - "keywords": [ - "container", - "dependency", - "di", - "injection", - "league", - "provider", - "service" - ], - "support": { - "issues": "https://github.com/thephpleague/container/issues", - "source": "https://github.com/thephpleague/container/tree/3.4.1" - }, - "funding": [ - { - "url": "https://github.com/philipobenito", - "type": "github" - } - ], - "time": "2021-07-09T08:23:52+00:00" - }, - { - "name": "league/csv", - "version": "9.8.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/csv.git", - "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/9d2e0265c5d90f5dd601bc65ff717e05cec19b47", - "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "friendsofphp/php-cs-fixer": "^v3.4.0", - "phpstan/phpstan": "^1.3.0", - "phpstan/phpstan-phpunit": "^1.0.0", - "phpstan/phpstan-strict-rules": "^1.1.0", - "phpunit/phpunit": "^9.5.11" - }, - "suggest": { - "ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes", - "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Csv\\": "src" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://github.com/nyamsprod/", - "role": "Developer" - } - ], - "description": "CSV data manipulation made easy in PHP", - "homepage": "https://csv.thephpleague.com", - "keywords": [ - "convert", - "csv", - "export", - "filter", - "import", - "read", - "transform", - "write" - ], - "support": { - "docs": "https://csv.thephpleague.com", - "issues": "https://github.com/thephpleague/csv/issues", - "rss": "https://github.com/thephpleague/csv/releases.atom", - "source": "https://github.com/thephpleague/csv" - }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "time": "2022-01-04T00:13:07+00:00" - }, - { - "name": "lsolesen/pel", - "version": "0.9.9", - "source": { - "type": "git", - "url": "https://github.com/pel/pel.git", - "reference": "95dd3c16161c588f0ac66662c1870a073159e5ec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pel/pel/zipball/95dd3c16161c588f0ac66662c1870a073159e5ec", - "reference": "95dd3c16161c588f0ac66662c1870a073159e5ec", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "ext-gd": "*", - "phpunit/phpunit": ">=4.8.36 <8", - "satooshi/php-coveralls": "1.0.*", - "squizlabs/php_codesniffer": "^3.0.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "lsolesen\\pel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0" - ], - "authors": [ - { - "name": "Lars Olesen", - "email": "lars@intraface.dk", - "homepage": "http://intraface.dk", - "role": "Developer" - }, - { - "name": "Martin Geisler", - "email": "martin@geisler.net", - "homepage": "http://geisler.net", - "role": "Developer" - } - ], - "description": "PHP Exif Library. A library for reading and writing Exif headers in JPEG and TIFF images using PHP.", - "homepage": "http://pel.github.com/pel/", - "keywords": [ - "exif", - "image" - ], - "support": { - "issues": "https://github.com/pel/pel/issues", - "source": "https://github.com/pel/pel/tree/0.9.9" - }, - "time": "2020-11-07T06:04:18+00:00" - }, - { - "name": "masterminds/html5", - "version": "2.7.5", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-libxml": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "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.7.5" - }, - "time": "2021-07-01T14:25:37+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "pear/archive_tar", - "version": "1.4.14", - "source": { - "type": "git", - "url": "https://github.com/pear/Archive_Tar.git", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/4d761c5334c790e45ef3245f0864b8955c562caa", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa", - "shasum": "" - }, - "require": { - "pear/pear-core-minimal": "^1.10.0alpha2", - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "*" - }, - "suggest": { - "ext-bz2": "Bz2 compression support.", - "ext-xz": "Lzma2 compression support.", - "ext-zlib": "Gzip compression support." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Archive_Tar": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "./" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Vincent Blavet", - "email": "vincent@phpconcept.net" - }, - { - "name": "Greg Beaver", - "email": "greg@chiaraquartet.net" - }, - { - "name": "Michiel Rook", - "email": "mrook@php.net" - } - ], - "description": "Tar file management class with compression support (gzip, bzip2, lzma2)", - "homepage": "https://github.com/pear/Archive_Tar", - "keywords": [ - "archive", - "tar" - ], - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar", - "source": "https://github.com/pear/Archive_Tar" - }, - "funding": [ - { - "url": "https://github.com/mrook", - "type": "github" - }, - { - "url": "https://www.patreon.com/michielrook", - "type": "patreon" - } - ], - "time": "2021-07-20T13:53:39+00:00" - }, - { - "name": "pear/console_getopt", - "version": "v1.4.3", - "source": { - "type": "git", - "url": "https://github.com/pear/Console_Getopt.git", - "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0", - "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0", - "shasum": "" - }, - "type": "library", - "autoload": { - "psr-0": { - "Console": "./" - } - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "./" - ], - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Andrei Zmievski", - "email": "andrei@php.net", - "role": "Lead" - }, - { - "name": "Stig Bakken", - "email": "stig@php.net", - "role": "Developer" - }, - { - "name": "Greg Beaver", - "email": "cellog@php.net", - "role": "Helper" - } - ], - "description": "More info available on: http://pear.php.net/package/Console_Getopt", - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_Getopt", - "source": "https://github.com/pear/Console_Getopt" - }, - "time": "2019-11-20T18:27:48+00:00" - }, - { - "name": "pear/pear-core-minimal", - "version": "v1.10.11", - "source": { - "type": "git", - "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/68d0d32ada737153b7e93b8d3c710ebe70ac867d", - "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d", - "shasum": "" - }, - "require": { - "pear/console_getopt": "~1.4", - "pear/pear_exception": "~1.0" - }, - "replace": { - "rsky/pear-core-min": "self.version" - }, - "type": "library", - "autoload": { - "psr-0": { - "": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "src/" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "cweiske@php.net", - "role": "Lead" - } - ], - "description": "Minimal set of PEAR core files to be used as composer dependency", - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", - "source": "https://github.com/pear/pear-core-minimal" - }, - "time": "2021-08-10T22:31:03+00:00" - }, - { - "name": "pear/pear_exception", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/pear/PEAR_Exception.git", - "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", - "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "<9" - }, - "type": "class", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "PEAR/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "." - ], - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Helgi Thormar", - "email": "dufuz@php.net" - }, - { - "name": "Greg Beaver", - "email": "cellog@php.net" - } - ], - "description": "The PEAR Exception base class.", - "homepage": "https://github.com/pear/PEAR_Exception", - "keywords": [ - "exception" - ], - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR_Exception", - "source": "https://github.com/pear/PEAR_Exception" - }, - "time": "2021-03-21T15:43:46+00:00" - }, - { - "name": "phenx/php-font-lib", - "version": "0.5.4", - "source": { - "type": "git", - "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", - "shasum": "" - }, - "require": { - "ext-mbstring": "*" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5" - }, - "type": "library", - "autoload": { - "psr-4": { - "FontLib\\": "src/FontLib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } - ], - "description": "A library to read, parse, export and make subsets of different types of font files.", - "homepage": "https://github.com/PhenX/php-font-lib", - "support": { - "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" - }, - "time": "2021-12-17T19:44:54+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.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": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/master" - }, - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.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.1" - }, - "time": "2021-03-05T17:36:06+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/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": "psy/psysh", - "version": "v0.10.12", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "a0d9981aa07ecfcbea28e4bfa868031cca121e7d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a0d9981aa07ecfcbea28e4bfa868031cca121e7d", - "reference": "a0d9981aa07ecfcbea28e4bfa868031cca121e7d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", - "php": "^8.0 || ^7.0 || ^5.5.9", - "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", - "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.*" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.10.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "support": { - "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.10.12" - }, - "time": "2021-11-30T14:05:36+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": "skilldlabs/drupal-cleanup", - "version": "1.2", - "source": { - "type": "git", - "url": "https://github.com/skilld-labs/drupal-cleanup.git", - "reference": "36935e5dd9c6f9ddf31397065c8a7b82dadb7470" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/skilld-labs/drupal-cleanup/zipball/36935e5dd9c6f9ddf31397065c8a7b82dadb7470", - "reference": "36935e5dd9c6f9ddf31397065c8a7b82dadb7470", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2", - "php": ">=7.3.0" - }, - "type": "composer-plugin", - "extra": { - "class": "SkilldDrupal\\DrupalCleanup" - }, - "autoload": { - "psr-4": { - "SkilldDrupal\\": "." - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Removes files on Drupal packages.", - "keywords": [ - "drupal" - ], - "support": { - "issues": "https://github.com/skilld-labs/drupal-cleanup/issues", - "source": "https://github.com/skilld-labs/drupal-cleanup/tree/1.2" - }, - "time": "2020-09-25T14:16:08+00:00" - }, - { - "name": "skilldlabs/druxxy", - "version": "dev-main", - "source": { - "type": "git", - "url": "https://github.com/skilld-labs/druxxy.git", - "reference": "e3c2e41c4b3bc8793cfbd84fe256e0727b92b083" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/skilld-labs/druxxy/zipball/e3c2e41c4b3bc8793cfbd84fe256e0727b92b083", - "reference": "e3c2e41c4b3bc8793cfbd84fe256e0727b92b083", - "shasum": "" - }, - "require": { - "composer/installers": "^1.9", - "cweagans/composer-patches": "^1.6.5", - "drupal/block_content_permissions": "^1", - "drupal/coffee": "^1.2", - "drupal/config_override_warn": "^1.3", - "drupal/core-project-message": "^9.0", - "drupal/core-recommended": "^9", - "drupal/custom_pub": "^1.0@beta", - "drupal/file_entity": "2.x-dev", - "drupal/focal_point": "^1.4", - "drupal/formblock": "^2.0@beta", - "drupal/gin": "^3.0@alpha", - "drupal/gin_login": "^1.0@RC", - "drupal/google_tag": "^1.2", - "drupal/layout_builder_modal": "^1.1", - "drupal/layout_builder_restrictions": "^2.7", - "drupal/layout_library": "^1.0@beta", - "drupal/layout_paragraphs": "^1.0@beta", - "drupal/lb_ux": "1.x-dev", - "drupal/manage_display": "^1.0@alpha", - "drupal/menu_admin_per_menu": "^1.1", - "drupal/menu_link_attributes": "^1.1", - "drupal/page_manager": "^4.0.0-beta6", - "drupal/panels": "^4.6", - "drupal/panels_everywhere": "^4.0@beta", - "drupal/paragraphs": "^1.11", - "drupal/password_policy": "^3.0", - "drupal/pathauto": "^1.8", - "drupal/rabbit_hole": "^1.0.0-beta7", - "drupal/redirect": "^1.6", - "drupal/remove_http_headers": "^1.0", - "drupal/role_delegation": "^1.1", - "drupal/seckit": "^2.0", - "drupal/svg_image": "^1.14", - "drupal/swiftmailer": "^2", - "drupal/telephone_validation": "^2.3", - "drupal/token": "^1", - "drupal/username_enumeration_prevention": "^1.1", - "drupal/userprotect": "^1.1", - "drupal/views_bulk_edit": "2.x-dev", - "drupal/views_bulk_operations": "^3.9", - "drupal/webform": "^6" - }, - "conflict": { - "drupal/drupal": "*" - }, - "default-branch": true, - "type": "drupal-profile", - "extra": { - "installer-paths": { - "web/core": [ - "type:drupal-core" - ], - "web/libraries/{$name}": [ - "type:drupal-library" - ], - "web/modules/contrib/{$name}": [ - "type:drupal-module" - ], - "web/profiles/contrib/{$name}": [ - "type:drupal-profile" - ], - "web/themes/contrib/{$name}": [ - "type:drupal-theme" - ], - "drush/Commands/contrib/{$name}": [ - "type:drupal-drush" - ] - }, - "composer-exit-on-patch-failure": true, - "patchLevel": { - "drupal/core": "-p2" - }, - "patches": { - "drupal/core": { - "Translated field denormalization creates duplicate values": "https://www.drupal.org/files/issues/2019-07-02/2904423-core_8_8-72.patch", - "Fix multilingual site's layout edit context issue": "https://www.drupal.org/files/issues/2019-12-19/3101231-19.patch", - "SQLite database locking errors cause fatal errors": "https://www.drupal.org/files/issues/1120020-59.patch", - "Error: Call to a member function getLabel() after enabling layout_builder": "https://www.drupal.org/files/issues/2019-11-14/2985882-entityfield-43.patch", - "POST /quickedit/metadata returning HTTP 503": "https://www.drupal.org/files/issues/2021-06-07/2893407-47.patch", - "Callers of LayoutEntityHelperTrait::getEntitySections() do not account for the view mode": "https://www.drupal.org/files/issues/2021-12-09/3008924-rerolled-24.patch", - "Claro + layout builder messages display additional icon in top left corner": "https://www.drupal.org/files/issues/2020-05-28/claro_layout_builder_extra_icon-3143237-4.patch", - "Expose Layout Builder data to REST and JSON:API": "https://git.drupalcode.org/project/drupal/-/merge_requests/1131.diff", - "Taxonomy pages crash with layout_builder enabled": "https://www.drupal.org/files/issues/2018-09-19/2959132-taxo-17-PASS.patch" - }, - "drupal/block_content_permissions": { - "Allow accessing the Custom block library page without Administer blocks permission": "https://www.drupal.org/files/issues/2020-06-05/block_content_permissions-access_listing_page-2920739-31.patch" - }, - "drupal/focal_point": { - "Integrate focal point with media_library": "https://www.drupal.org/files/issues/2019-12-11/focal_point-compatibility-with-media-libary-3094478-2.patch" - }, - "drupal/lb_ux": { - "Cog icon not showing when Preview disabled": "https://www.drupal.org/files/issues/2020-05-22/3116402-8.patch", - "Errors when using with modules that alter a section's contextual menu": "https://www.drupal.org/files/issues/2020-05-22/3106939-4.patch" - }, - "drupal/menu_link_attributes": { - "Add missing schema for menu_link_attributes": "https://patch-diff.githubusercontent.com/raw/yannickoo/menu_link_attributes/pull/52.patch" - }, - "drupal/password_policy": { - "Policies should declare a config dependency on the plugin modules": "https://www.drupal.org/files/issues/2020-04-14/2918974-7-11.patch" - }, - "drupal/gin_login": { - "Add missing schema for gin_login": "https://www.drupal.org/files/issues/2021-01-13/gin_login-config_schema-3192526-8.patch" - } - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Skilld", - "homepage": "https://www.drupal.org/skilld", - "role": "Maintainer" - } - ], - "description": "Drupal distribution focused on page building, contributor experience and a strict separation of Drupal content and Drupal configuration for streamlined deployments.", - "support": { - "issues": "https://github.com/skilld-labs/druxxy/issues", - "source": "https://github.com/skilld-labs/druxxy/tree/main" - }, - "time": "2021-12-22T17:06:51+00:00" - }, - { - "name": "stack/builder", - "version": "v1.0.6", - "source": { - "type": "git", - "url": "https://github.com/stackphp/builder.git", - "reference": "a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/stackphp/builder/zipball/a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c", - "reference": "a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c", - "shasum": "" - }, - "require": { - "php": ">=7.2.0", - "symfony/http-foundation": "~2.1|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.1|~3.0|~4.0|~5.0" - }, - "require-dev": { - "phpunit/phpunit": "~8.0", - "symfony/routing": "^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-0": { - "Stack": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Builder for stack middleware based on HttpKernelInterface.", - "keywords": [ - "stack" - ], - "support": { - "issues": "https://github.com/stackphp/builder/issues", - "source": "https://github.com/stackphp/builder/tree/v1.0.6" - }, - "time": "2020-01-30T12:17:27+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.3.0", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.0|^3.1", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.4" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "support": { - "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", - "type": "tidelift" - } - ], - "abandoned": "symfony/mailer", - "time": "2021-10-18T15:26:12+00:00" - }, - { - "name": "symfony-cmf/routing", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/symfony-cmf/Routing.git", - "reference": "bbcdf2f6301d740454ba9ebb8adaefd436c36a6b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/bbcdf2f6301d740454ba9ebb8adaefd436c36a6b", - "reference": "bbcdf2f6301d740454ba9ebb8adaefd436c36a6b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/http-kernel": "^4.4 || ^5.0", - "symfony/routing": "^4.4 || ^5.0" - }, - "require-dev": { - "symfony-cmf/testing": "^3@dev", - "symfony/config": "^4.4 || ^5.0", - "symfony/dependency-injection": "^4.4 || ^5.0", - "symfony/event-dispatcher": "^4.4 || ^5.0", - "symfony/phpunit-bridge": "^5.0" - }, - "suggest": { - "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version (^4.4 || ^5.0)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Cmf\\Component\\Routing\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony CMF Community", - "homepage": "https://github.com/symfony-cmf/Routing/contributors" - } - ], - "description": "Extends the Symfony routing component for dynamic routes and chaining several routers", - "homepage": "http://cmf.symfony.com", - "keywords": [ - "database", - "routing" - ], - "support": { - "issues": "https://github.com/symfony-cmf/Routing/issues", - "source": "https://github.com/symfony-cmf/Routing/tree/2.3.4" - }, - "time": "2021-11-08T16:33:10+00:00" - }, - { - "name": "symfony/console", - "version": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/329b3a75cc6b16d435ba1b1a41df54a53382a3f0", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.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", - "support": { - "source": "https://github.com/symfony/console/tree/v4.4.34" - }, - "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-04T12:23:33+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/debug", - "version": "v4.4.31", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0", - "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "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 ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.31" - }, - "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-09-24T13:30:14+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/117d7f132ed7efbd535ec947709d49bec1b9d24b", - "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" - }, - "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4|^5.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/v4.4.34" - }, - "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-15T14:42:25+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-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/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-07-12T14:48:14+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "17785c374645def1e884d8ec49976c156c61db4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/17785c374645def1e884d8ec49976c156c61db4d", - "reference": "17785c374645def1e884d8ec49976c156c61db4d", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" - }, - "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" - }, - "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/v4.4.34" - }, - "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-12T14:57:39+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.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/v4.4.34" - }, - "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-15T14:42:25+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", - "shasum": "" - }, - "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-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/v1.1.11" - }, - "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-03-23T15:25:38+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.4.27", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "517fb795794faf29086a77d99eb8f35e457837a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/517fb795794faf29086a77d99eb8f35e457837a7", - "reference": "517fb795794faf29086a77d99eb8f35e457837a7", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~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/v4.4.27" - }, - "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-21T12:19:41+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/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": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4cbbb6fc428588ce8373802461e7fe84e6809ab", - "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" - }, - "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/v4.4.34" - }, - "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-04T12:23:33+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v4.4.35", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb793f1381c34b79a43596a532a6a49bd729c9db", - "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^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/v4.4.35" - }, - "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-24T08:40:10+00:00" - }, - { - "name": "symfony/mime", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "d4365000217b67c01acff407573906ff91bcfb34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d4365000217b67c01acff407573906ff91bcfb34", - "reference": "d4365000217b67c01acff407573906ff91bcfb34", - "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/" - ] - }, - "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 manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/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/polyfill-ctype", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "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\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.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-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "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\\Iconv\\": "" - }, - "files": [ - "bootstrap.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": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.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-05-27T09:27:20+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "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\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "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/polyfill-intl-idn/tree/v1.23.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-05-27T09:27:20+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "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" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.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-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "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\\": "" - }, - "files": [ - "bootstrap.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": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.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-05-27T12:26:48+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "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\\Php72\\": "" - }, - "files": [ - "bootstrap.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": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.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-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "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\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.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-06-05T21:20:04+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "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\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "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/polyfill-php80/tree/v1.23.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-07-28T13:41:28+00:00" - }, - { - "name": "symfony/process", - "version": "v4.4.35", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "c2098705326addae6e6742151dfade47ac71da1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c2098705326addae6e6742151dfade47ac71da1b", - "reference": "c2098705326addae6e6742151dfade47ac71da1b", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "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": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v4.4.35" - }, - "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-22T22:36:24+00:00" - }, - { - "name": "symfony/psr-http-message-bridge", - "version": "v2.1.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" - }, - "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" - }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-main": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", - "keywords": [ - "http", - "http-message", - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.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-11-05T13:13:39+00:00" - }, - { - "name": "symfony/routing", - "version": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "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" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "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": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.34" - }, - "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-04T12:23:33+00:00" - }, - { - "name": "symfony/serializer", - "version": "v4.4.35", - "source": { - "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "1b2ae02cb1b923987947e013688c51954a80b751" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/1b2ae02cb1b923987947e013688c51954a80b751", - "reference": "1b2ae02cb1b923987947e013688c51954a80b751", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4.41|^4.4.9|^5.0.9", - "symfony/property-info": "^3.4.13|~4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping.", - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/yaml": "For using the default YAML mapping loader." - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Serializer\\": "" - }, - "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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.35" - }, - "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-24T08:12:42+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-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\\Service\\": "" - } - }, - "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 writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-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-04T16:48:04+00:00" - }, - { - "name": "symfony/translation", - "version": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "26d330720627b234803595ecfc0191eeabc65190" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/26d330720627b234803595ecfc0191eeabc65190", - "reference": "26d330720627b234803595ecfc0191eeabc65190", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "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 internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.34" - }, - "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-04T12:23:33+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-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\\Translation\\": "" - } - }, - "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 translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-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/validator", - "version": "v4.4.35", - "source": { - "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "629f420d8350634fd8ed686d4472c1f10044b265" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/629f420d8350634fd8ed686d4472c1f10044b265", - "reference": "629f420d8350634fd8ed686d4472c1f10044b265", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" - }, - "conflict": { - "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": ">=5.0", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/http-foundation": "^4.1|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.3|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader.", - "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", - "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": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Validator\\": "" - }, - "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 validate values", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.35" - }, - "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-22T21:43:32+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "89ab66eaef230c9cd1992de2e9a1b26652b127b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/89ab66eaef230c9cd1992de2e9a1b26652b127b9", - "reference": "89ab66eaef230c9cd1992de2e9a1b26652b127b9", - "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" - }, - "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" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "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 mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/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/yaml", - "version": "v4.4.34", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "2c309e258adeb9970229042be39b360d34986fad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2c309e258adeb9970229042be39b360d34986fad", - "reference": "2c309e258adeb9970229042be39b360d34986fad", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "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": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.34" - }, - "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-18T18:49:23+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", - "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" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "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", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" - }, - "time": "2021-12-08T09:12:39+00:00" - }, - { - "name": "twig/twig", - "version": "v2.14.7", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "8e202327ee1ed863629de9b18a5ec70ac614d88f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/8e202327ee1ed863629de9b18a5ec70ac614d88f", - "reference": "8e202327ee1ed863629de9b18a5ec70ac614d88f", - "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" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.14-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "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": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.14.7" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2021-09-17T08:39:54+00:00" - }, - { - "name": "typo3/phar-stream-wrapper", - "version": "v3.1.7", - "source": { - "type": "git", - "url": "https://github.com/TYPO3/phar-stream-wrapper.git", - "reference": "5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/TYPO3/phar-stream-wrapper/zipball/5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c", - "reference": "5cc2f04a4e2f5c7e9cc02a3bdf80fae0f3e11a8c", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "ext-xdebug": "*", - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^5.1" - }, - "suggest": { - "ext-fileinfo": "For PHP builtin file type guessing, otherwise uses internal processing" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "v3.x-dev" - } - }, - "autoload": { - "psr-4": { - "TYPO3\\PharStreamWrapper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Interceptors for PHP's native phar:// stream handling", - "homepage": "https://typo3.org/", - "keywords": [ - "phar", - "php", - "security", - "stream-wrapper" - ], - "support": { - "issues": "https://github.com/TYPO3/phar-stream-wrapper/issues", - "source": "https://github.com/TYPO3/phar-stream-wrapper/tree/v3.1.7" - }, - "time": "2021-09-20T19:19:13+00:00" - }, - { - "name": "webflo/drupal-finder", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/webflo/drupal-finder.git", - "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/c8e5dbe65caef285fec8057a4c718a0d4138d1ee", - "reference": "c8e5dbe65caef285fec8057a4c718a0d4138d1ee", - "shasum": "" - }, - "require": { - "ext-json": "*" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^4.8" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/DrupalFinder.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Florian Weber", - "email": "florian@webflo.org" - } - ], - "description": "Helper class to locate a Drupal installation from a given path.", - "support": { - "issues": "https://github.com/webflo/drupal-finder/issues", - "source": "https://github.com/webflo/drupal-finder/tree/1.2.2" - }, - "time": "2020-10-27T09:42:17+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "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" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" - } - ], - "packages-dev": [ - { - "name": "behat/behat", - "version": "v3.10.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Behat.git", - "reference": "a55661154079cf881ef643b303bfaf67bae3a09f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/a55661154079cf881ef643b303bfaf67bae3a09f", - "reference": "a55661154079cf881ef643b303bfaf67bae3a09f", - "shasum": "" - }, - "require": { - "behat/gherkin": "^4.9.0", - "behat/transliterator": "^1.2", - "ext-mbstring": "*", - "php": "^7.2 || ^8.0", - "psr/container": "^1.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/event-dispatcher": "^4.4 || ^5.0 || ^6.0", - "symfony/translation": "^4.4 || ^5.0 || ^6.0", - "symfony/yaml": "^4.4 || ^5.0 || ^6.0" - }, - "require-dev": { - "container-interop/container-interop": "^1.2", - "herrera-io/box": "~1.6.1", - "phpunit/phpunit": "^8.5 || ^9.0", - "symfony/process": "^4.4 || ^5.0 || ^6.0", - "vimeo/psalm": "^4.8" - }, - "suggest": { - "ext-dom": "Needed to output test results in JUnit format." - }, - "bin": [ - "bin/behat" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Behat\\": "src/Behat/Behat/", - "Behat\\Testwork\\": "src/Behat/Testwork/", - "Behat\\Step\\": "src/Behat/Step/", - "Behat\\Hook\\": "src/Behat/Hook/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Scenario-oriented BDD framework for PHP", - "homepage": "http://behat.org/", - "keywords": [ - "Agile", - "BDD", - "ScenarioBDD", - "Scrum", - "StoryBDD", - "User story", - "business", - "development", - "documentation", - "examples", - "symfony", - "testing" - ], - "support": { - "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.10.0" - }, - "time": "2021-11-02T20:09:40+00:00" - }, - { - "name": "behat/gherkin", - "version": "v4.9.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Gherkin.git", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", - "shasum": "" - }, - "require": { - "php": "~7.2|~8.0" - }, - "require-dev": { - "cucumber/cucumber": "dev-gherkin-22.0.0", - "phpunit/phpunit": "~8|~9", - "symfony/yaml": "~3|~4|~5" - }, - "suggest": { - "symfony/yaml": "If you want to parse features, represented in YAML files" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Gherkin": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Gherkin DSL parser for PHP", - "homepage": "http://behat.org/", - "keywords": [ - "BDD", - "Behat", - "Cucumber", - "DSL", - "gherkin", - "parser" - ], - "support": { - "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" - }, - "time": "2021-10-12T13:05:09+00:00" - }, - { - "name": "behat/mink", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/minkphp/Mink.git", - "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/Mink/zipball/e35f4695de8800fc776af34ebf665ad58ebdd996", - "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "symfony/css-selector": "^2.7|^3.0|^4.0|^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5 || ^9.5", - "symfony/debug": "^2.7|^3.0|^4.0|^5.0", - "symfony/phpunit-bridge": "^3.4.38 || ^4.4 || ^5.0.5", - "yoast/phpunit-polyfills": "^1.0" - }, - "suggest": { - "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", - "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", - "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", - "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)", - "dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Browser controller/emulator abstraction for PHP", - "homepage": "https://mink.behat.org/", - "keywords": [ - "browser", - "testing", - "web" - ], - "support": { - "issues": "https://github.com/minkphp/Mink/issues", - "source": "https://github.com/minkphp/Mink/tree/v1.9.0" - }, - "time": "2021-10-11T11:58:47+00:00" - }, - { - "name": "behat/mink-browserkit-driver", - "version": "v1.4.1", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", - "reference": "057926c9da452bac5bfcffb92eb4f3e1ce74dae9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/057926c9da452bac5bfcffb92eb4f3e1ce74dae9", - "reference": "057926c9da452bac5bfcffb92eb4f3e1ce74dae9", - "shasum": "" - }, - "require": { - "behat/mink": "^1.7.1@dev", - "php": ">=5.4", - "symfony/browser-kit": "~2.3|~3.0|~4.0", - "symfony/dom-crawler": "~2.3|~3.0|~4.0" - }, - "require-dev": { - "mink/driver-testsuite": "dev-master", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.18 || ^8.5 || ^9.5", - "symfony/debug": "^2.7|^3.0|^4.0", - "symfony/http-kernel": "~2.3|~3.0|~4.0", - "yoast/phpunit-polyfills": "^1.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Symfony2 BrowserKit driver for Mink framework", - "homepage": "https://mink.behat.org/", - "keywords": [ - "Mink", - "Symfony2", - "browser", - "testing" - ], - "support": { - "issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues", - "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v1.4.1" - }, - "time": "2021-12-10T14:17:06+00:00" - }, - { - "name": "behat/mink-extension", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/Behat/MinkExtension.git", - "reference": "80f7849ba53867181b7e412df9210e12fba50177" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", - "reference": "80f7849ba53867181b7e412df9210e12fba50177", - "shasum": "" - }, - "require": { - "behat/behat": "^3.0.5", - "behat/mink": "^1.5", - "php": ">=5.3.2", - "symfony/config": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "behat/mink-goutte-driver": "^1.1", - "phpspec/phpspec": "^2.0" - }, - "type": "behat-extension", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\MinkExtension": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - }, - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com" - } - ], - "description": "Mink extension for Behat", - "homepage": "http://extensions.behat.org/mink", - "keywords": [ - "browser", - "gui", - "test", - "web" - ], - "support": { - "issues": "https://github.com/Behat/MinkExtension/issues", - "source": "https://github.com/Behat/MinkExtension/tree/master" - }, - "time": "2018-02-06T15:36:30+00:00" - }, - { - "name": "behat/mink-goutte-driver", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkGoutteDriver.git", - "reference": "8139f520f417c81bf9d2f9a171fff400f6adc9ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8139f520f417c81bf9d2f9a171fff400f6adc9ea", - "reference": "8139f520f417c81bf9d2f9a171fff400f6adc9ea", - "shasum": "" - }, - "require": { - "behat/mink-browserkit-driver": "~1.2@dev", - "fabpot/goutte": "~1.0.4|~2.0|~3.1", - "php": ">=5.4" - }, - "require-dev": { - "mink/driver-testsuite": "dev-master" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Goutte driver for Mink framework", - "homepage": "https://mink.behat.org/", - "keywords": [ - "browser", - "goutte", - "headless", - "testing" - ], - "support": { - "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", - "source": "https://github.com/minkphp/MinkGoutteDriver/tree/v1.3.0" - }, - "time": "2021-10-12T11:35:46+00:00" - }, - { - "name": "behat/mink-selenium2-driver", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkSelenium2Driver.git", - "reference": "0dee8cceed7e198bf130b4af0fab0ffab6dab47f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/0dee8cceed7e198bf130b4af0fab0ffab6dab47f", - "reference": "0dee8cceed7e198bf130b4af0fab0ffab6dab47f", - "shasum": "" - }, - "require": { - "behat/mink": "~1.7@dev", - "instaclick/php-webdriver": "~1.1", - "php": ">=5.4" - }, - "require-dev": { - "mink/driver-testsuite": "dev-master" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pete Otaqui", - "email": "pete@otaqui.com", - "homepage": "https://github.com/pete-otaqui" - }, - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Selenium2 (WebDriver) driver for Mink framework", - "homepage": "https://mink.behat.org/", - "keywords": [ - "ajax", - "browser", - "javascript", - "selenium", - "testing", - "webdriver" - ], - "support": { - "issues": "https://github.com/minkphp/MinkSelenium2Driver/issues", - "source": "https://github.com/minkphp/MinkSelenium2Driver/tree/v1.5.0" - }, - "time": "2021-10-12T16:01:47+00:00" - }, - { - "name": "behat/transliterator", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Transliterator.git", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "chuyskywalker/rolling-curl": "^3.1", - "php-yaoi/php-yaoi": "^1.0", - "phpunit/phpunit": "^4.8.36|^6.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Transliterator\\": "src/Behat/Transliterator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Artistic-1.0" - ], - "description": "String transliterator", - "keywords": [ - "i18n", - "slug", - "transliterator" - ], - "support": { - "issues": "https://github.com/Behat/Transliterator/issues", - "source": "https://github.com/Behat/Transliterator/tree/v1.3.0" - }, - "time": "2020-01-14T16:39:13+00:00" - }, - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "support": { - "issues": "https://github.com/container-interop/container-interop/issues", - "source": "https://github.com/container-interop/container-interop/tree/master" - }, - "abandoned": "psr/container", - "time": "2017-02-14T19:40:03+00:00" - }, - { - "name": "dmore/behat-chrome-extension", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://gitlab.com/DMore/behat-chrome-extension.git", - "reference": "6279986ef85ac179f055460502e9b11c3784146c" - }, - "dist": { - "type": "zip", - "url": "https://gitlab.com/api/v4/projects/DMore%2Fbehat-chrome-extension/repository/archive.zip?sha=6279986ef85ac179f055460502e9b11c3784146c", - "reference": "6279986ef85ac179f055460502e9b11c3784146c", - "shasum": "" - }, - "require": { - "behat/behat": "^3.0.4", - "behat/mink-extension": "^2.0", - "dmore/chrome-mink-driver": "^2.4.1", - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "autoload": { - "psr-4": { - "DMore\\ChromeExtension\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dorian More", - "email": "doriancmore@gmail.com" - } - ], - "description": "Behat extension for controlling chrome without selenium", - "keywords": [ - "Behat", - "chrome", - "driver", - "headless" - ], - "time": "2019-03-30T08:57:34+00:00" - }, - { - "name": "dmore/chrome-mink-driver", - "version": "2.8.0", - "source": { - "type": "git", - "url": "https://gitlab.com/DMore/chrome-mink-driver.git", - "reference": "f85c8f86ca2e9000119c310577a6942683f7e280" - }, - "dist": { - "type": "zip", - "url": "https://gitlab.com/api/v4/projects/DMore%2Fchrome-mink-driver/repository/archive.zip?sha=f85c8f86ca2e9000119c310577a6942683f7e280", - "reference": "f85c8f86ca2e9000119c310577a6942683f7e280", - "shasum": "" - }, - "require": { - "behat/mink": "^1.7", - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "textalk/websocket": "^1.2.0" - }, - "require-dev": { - "mink/driver-testsuite": "dev-master", - "phpunit/phpunit": "^5.0.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "DMore\\ChromeDriver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dorian More", - "email": "doriancmore@gmail.com" - } - ], - "description": "Mink driver for controlling chrome without selenium", - "support": { - "issues": "https://gitlab.com/api/v4/projects/3255077/issues" - }, - "time": "2021-04-25T06:49:32+00:00" - }, - { - "name": "doctrine/cache", - "version": "1.12.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "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", - "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" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.12.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2021-07-17T14:39:21+00:00" - }, - { - "name": "doctrine/collections", - "version": "1.6.8", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", - "shasum": "" - }, - "require": { - "php": "^7.1.3 || ^8.0" - }, - "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" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", - "homepage": "https://www.doctrine-project.org/projects/collections.html", - "keywords": [ - "array", - "collections", - "iterators", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.6.8" - }, - "time": "2021-08-10T18:51:53+00:00" - }, - { - "name": "doctrine/common", - "version": "2.13.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3", - "doctrine/reflection": "^1.0", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.0", - "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", - "homepage": "https://www.doctrine-project.org/projects/common.html", - "keywords": [ - "common", - "doctrine", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/2.13.x" - }, - "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%2Fcommon", - "type": "tidelift" - } - ], - "time": "2020-06-05T16:46:05+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" - }, - "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%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2020-05-29T18:28:51+00:00" - }, - { - "name": "doctrine/inflector", - "version": "1.4.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^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" - }, - "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" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/1.4.4" - }, - "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%2Finflector", - "type": "tidelift" - } - ], - "time": "2021-04-16T17:34:40+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "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" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "doctrine/persistence", - "version": "1.3.8", - "source": { - "type": "git", - "url": "https://github.com/doctrine/persistence.git", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.2", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.10@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^3.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "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", - "keywords": [ - "mapper", - "object", - "odm", - "orm", - "persistence" - ], - "support": { - "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/1.3.x" - }, - "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": "2020-06-20T12:56:16+00:00" - }, - { - "name": "drupal/config_inspector", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/config_inspector.git", - "reference": "8.x-1.4" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_inspector-8.x-1.4.zip", - "reference": "8.x-1.4", - "shasum": "5ac1077648f331bafece71babb911d4812b4632c" - }, - "require": { - "drupal/core": "^8 || ^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.4", - "datestamp": "1633293698", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Gábor Hojtsy", - "homepage": "https://www.drupal.org/user/4166" - }, - { - "name": "Jose Reyero", - "homepage": "https://www.drupal.org/user/4299" - }, - { - "name": "aspilicious", - "homepage": "https://www.drupal.org/user/172527" - }, - { - "name": "vijaycs85", - "homepage": "https://www.drupal.org/user/93488" - }, - { - "name": "vuil", - "homepage": "https://www.drupal.org/user/3568458" - } - ], - "description": "Provides a configuration data and structure inspector tool", - "homepage": "https://drupal.org/project/config_inspector", - "support": { - "source": "https://cgit.drupalcode.org/config_inspector", - "issues": "https://drupal.org/project/issues/config_inspector", - "irc": "irc://irc.freenode.org/drupal-contribute" - } - }, - { - "name": "drupal/devel", - "version": "4.1.3", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/devel.git", - "reference": "4.1.3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/devel-4.1.3.zip", - "reference": "4.1.3", - "shasum": "f82261ca19a43379742e1df4c5a3795ef7a70441" - }, - "require": { - "doctrine/common": "^2.7", - "drupal/core": "^8.8 || ^9", - "symfony/var-dumper": "^4 || ^5" - }, - "conflict": { - "kint-php/kint": "<3" - }, - "require-dev": { - "drush/drush": "^10" - }, - "suggest": { - "kint-php/kint": "Kint provides an informative display of arrays/objects. Useful for debugging and developing." - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "4.1.3", - "datestamp": "1639534069", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "drupalspoons", - "homepage": "https://www.drupal.org/user/3647684" - }, - { - "name": "moshe weitzman", - "homepage": "https://www.drupal.org/user/23" - } - ], - "description": "Various blocks, pages, and functions for developers.", - "homepage": "https://www.drupal.org/project/devel", - "support": { - "source": "https://gitlab.com/drupalspoons/devel", - "issues": "https://gitlab.com/drupalspoons/devel/-/issues", - "slack": "https://drupal.slack.com/archives/C012WAW1MH6" - } - }, - { - "name": "drupal/drupal-driver", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/jhedstrom/DrupalDriver.git", - "reference": "a33cb7618476997e1b7330ae9225c91cbab32e1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jhedstrom/DrupalDriver/zipball/a33cb7618476997e1b7330ae9225c91cbab32e1c", - "reference": "a33cb7618476997e1b7330ae9225c91cbab32e1c", - "shasum": "" - }, - "require": { - "drupal/core-utility": "^8.4 || ^9", - "php": ">=5.6", - "symfony/dependency-injection": "~2.6|~3.0|~4.4", - "symfony/process": "~2.5|~3.0|~4.4" - }, - "require-dev": { - "drupal/coder": "~8.3.0", - "drush-ops/behat-drush-endpoint": "*", - "jakub-onderka/php-parallel-lint": "^1.0", - "mockery/mockery": "0.9.4", - "phpspec/phpspec": "~2.0 || ~4.0 || ~6.1", - "phpunit/phpunit": "~6.0 || ~7.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Drupal\\Driver": "src/", - "Drupal\\Tests\\Driver": "tests/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Jonathan Hedstrom", - "email": "jhedstrom@gmail.com" - } - ], - "description": "A collection of reusable Drupal drivers", - "homepage": "http://github.com/jhedstrom/DrupalDriver", - "keywords": [ - "drupal", - "test", - "web" - ], - "support": { - "issues": "https://github.com/jhedstrom/DrupalDriver/issues", - "source": "https://github.com/jhedstrom/DrupalDriver/tree/v2.1.1" - }, - "time": "2021-05-07T20:47:33+00:00" - }, - { - "name": "drupal/drupal-extension", - "version": "v4.1.0", - "source": { - "type": "git", - "url": "https://github.com/jhedstrom/drupalextension.git", - "reference": "f611a70aaa2d1ef6b3fdae9c35dc573508c7d648" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jhedstrom/drupalextension/zipball/f611a70aaa2d1ef6b3fdae9c35dc573508c7d648", - "reference": "f611a70aaa2d1ef6b3fdae9c35dc573508c7d648", - "shasum": "" - }, - "require": { - "behat/behat": "~3.2", - "behat/mink": "~1.5", - "behat/mink-extension": "~2.0", - "behat/mink-goutte-driver": "~1.0", - "behat/mink-selenium2-driver": "~1.1", - "drupal/drupal-driver": "^2.1.0", - "symfony/browser-kit": "^3.4|~4.4", - "symfony/dependency-injection": "~3.0|~4.4", - "symfony/translation": "^3.4|~4.4" - }, - "require-dev": { - "drupal/coder": "^8.3", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phpspec/phpspec": "~2.0 || ~4.0" - }, - "type": "behat-extension", - "autoload": { - "psr-0": { - "Drupal\\Drupal": "src/", - "Drupal\\Exception": "src/", - "Drupal\\DrupalExtension": "src/", - "Drupal\\MinkExtension": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Jonathan Hedstrom", - "email": "jhedstrom@gmail.com" - }, - { - "name": "Melissa Anderson", - "homepage": "https://github.com/eliza411" - }, - { - "name": "Pieter Frenssen", - "homepage": "https://github.com/pfrenssen" - } - ], - "description": "Drupal extension for Behat", - "homepage": "http://drupal.org/project/drupalextension", - "keywords": [ - "drupal", - "test", - "web" - ], - "support": { - "issues": "https://github.com/jhedstrom/drupalextension/issues", - "source": "https://github.com/jhedstrom/drupalextension/tree/v4.1.0" - }, - "time": "2020-06-01T18:13:52+00:00" - }, - { - "name": "drupal/upgrade_status", - "version": "3.11.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/upgrade_status.git", - "reference": "8.x-3.11" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/upgrade_status-8.x-3.11.zip", - "reference": "8.x-3.11", - "shasum": "e3e9a22db979581246e34f9fafdaba75e4124962" - }, - "require": { - "drupal/core": "^8 || ^9", - "mathieuviossat/arraytotexttable": "~1.0.0", - "mglaman/phpstan-drupal": "^0.12.12", - "nikic/php-parser": "^4.0.0", - "phpstan/phpstan-deprecation-rules": "^0.12.0", - "symfony/process": "^3.4|^4.0|^5.0", - "webflo/drupal-finder": "^1.2" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-3.11", - "datestamp": "1632233579", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Gábor Hojtsy", - "homepage": "https://www.drupal.org/user/4166" - }, - { - "name": "colan", - "homepage": "https://www.drupal.org/user/58704" - }, - { - "name": "herczogzoltan", - "homepage": "https://www.drupal.org/user/3528391" - }, - { - "name": "sun", - "homepage": "https://www.drupal.org/user/54136" - }, - { - "name": "webchick", - "homepage": "https://www.drupal.org/user/24967" - }, - { - "name": "xjm", - "homepage": "https://www.drupal.org/user/65776" - } - ], - "description": "Review Drupal major upgrade readiness of the environment and components of the site.", - "homepage": "http://drupal.org/project/upgrade_status", - "support": { - "source": "https://git.drupalcode.org/project/upgrade_status" - } - }, - { - "name": "espend/behat-placeholder-extension", - "version": "1.2", - "source": { - "type": "git", - "url": "https://github.com/Haehnchen/behat-placeholder-extension.git", - "reference": "46bc6d021aa1f61c8fbe6a34cc5412d77ba43ce3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Haehnchen/behat-placeholder-extension/zipball/46bc6d021aa1f61c8fbe6a34cc5412d77ba43ce3", - "reference": "46bc6d021aa1f61c8fbe6a34cc5412d77ba43ce3", - "shasum": "" - }, - "require": { - "behat/behat": "~3.0", - "php": ">=7.0" - }, - "require-dev": { - "behat/symfony2-extension": "^2.1", - "doctrine/common": "~2.0", - "phpunit/phpunit": "^6.0", - "symfony/property-access": "~3.0" - }, - "suggest": { - "behat/symfony2-extension": "Allows usages for Doctrine context", - "doctrine/common": "Needed to support Doctrine context" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "espend\\Behat\\PlaceholderExtension\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Espendiller", - "email": "daniel@espendiller.net" - } - ], - "description": "Behat placeholder extension", - "keywords": [ - "BDD", - "Behat", - "Context", - "extension", - "symfony" - ], - "support": { - "issues": "https://github.com/Haehnchen/behat-placeholder-extension/issues", - "source": "https://github.com/Haehnchen/behat-placeholder-extension/tree/1.2" - }, - "time": "2021-04-11T09:43:06+00:00" - }, - { - "name": "fabpot/goutte", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/Goutte.git", - "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/80a23b64f44d54dd571d114c473d9d7e9ed84ca5", - "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=7.1.3", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" - }, - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Goutte\\": "Goutte" - }, - "exclude-from-classmap": [ - "Goutte/Tests" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "A simple PHP Web Scraper", - "homepage": "https://github.com/FriendsOfPHP/Goutte", - "keywords": [ - "scraper" - ], - "support": { - "issues": "https://github.com/FriendsOfPHP/Goutte/issues", - "source": "https://github.com/FriendsOfPHP/Goutte/tree/v3.3.1" - }, - "time": "2020-11-01T09:30:18+00:00" - }, - { - "name": "genesis/behat-fail-aid", - "version": "2.5.3", - "source": { - "type": "git", - "url": "https://github.com/forceedge01/behat-fail-aid.git", - "reference": "d2003483676a6a0166867b1a0c03d1afbc850300" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/forceedge01/behat-fail-aid/zipball/d2003483676a6a0166867b1a0c03d1afbc850300", - "reference": "d2003483676a6a0166867b1a0c03d1afbc850300", - "shasum": "" - }, - "require": { - "behat/mink": "*@stable", - "behat/mink-extension": "~2.0@stable", - "behat/mink-selenium2-driver": "^1.3" - }, - "require-dev": { - "behat/behat": "^3.5", - "behat/mink-goutte-driver": "^1.2", - "ciaranmcnulty/behat-localwebserverextension": "^1.1", - "phpunit/phpunit": "4.*" - }, - "suggest": { - "genesis/db-backup-restore": "Quickly backup and restore your database.", - "genesis/sql-data-mods": "Extends behat-sql-extension to provide a powerful and simple framework to manage your data modules.", - "genesis/test-routing": "Simplistic routing that can extend main app routing for testing purposes." - }, - "type": "library", - "autoload": { - "psr-4": { - "FailAid\\": "bootstrap/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Abdul Wahhab Qureshi" - } - ], - "description": "Get more out of your test suite by getting it to work with you when tests fail. Screenshots and more. Works with Goutte and MinkExtension.", - "keywords": [ - "Behat", - "behat-error", - "behat-exception", - "behat-fail", - "behat-screenshot", - "error", - "fail", - "screenshot" - ], - "support": { - "issues": "https://github.com/forceedge01/behat-fail-aid/issues", - "source": "https://github.com/forceedge01/behat-fail-aid/tree/2.5.3" - }, - "time": "2020-01-03T17:15:17+00:00" - }, - { - "name": "instaclick/php-webdriver", - "version": "1.4.10", - "source": { - "type": "git", - "url": "https://github.com/instaclick/php-webdriver.git", - "reference": "6bc1f44cf23031e68c326cd61e14ec32486f241b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/6bc1f44cf23031e68c326cd61e14ec32486f241b", - "reference": "6bc1f44cf23031e68c326cd61e14ec32486f241b", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "^4.8", - "satooshi/php-coveralls": "^1.0||^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "WebDriver": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Justin Bishop", - "email": "jubishop@gmail.com", - "role": "Developer" - }, - { - "name": "Anthon Pang", - "email": "apang@softwaredevelopment.ca", - "role": "Fork Maintainer" - } - ], - "description": "PHP WebDriver for Selenium 2", - "homepage": "http://instaclick.com/", - "keywords": [ - "browser", - "selenium", - "webdriver", - "webtest" - ], - "support": { - "issues": "https://github.com/instaclick/php-webdriver/issues", - "source": "https://github.com/instaclick/php-webdriver/tree/1.4.10" - }, - "time": "2021-10-14T03:25:34+00:00" - }, - { - "name": "laminas/laminas-servicemanager", - "version": "3.10.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "e52b985909e0940bf22d34f322eb3f48bbef6bd1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/e52b985909e0940bf22d34f322eb3f48bbef6bd1", - "reference": "e52b985909e0940bf22d34f322eb3f48bbef6bd1", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "^1.2", - "laminas/laminas-stdlib": "^3.2.1", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0", - "psr/container": "^1.0" - }, - "conflict": { - "laminas/laminas-code": "<3.3.1", - "zendframework/zend-code": "<3.3.1", - "zendframework/zend-servicemanager": "*" - }, - "provide": { - "container-interop/container-interop-implementation": "^1.2", - "psr/container-implementation": "^1.0" - }, - "require-dev": { - "composer/package-versions-deprecated": "^1.0", - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-container-config-test": "^0.3", - "laminas/laminas-dependency-plugin": "^2.1.2", - "mikey179/vfsstream": "^1.6.10@alpha", - "ocramius/proxy-manager": "^2.11", - "phpbench/phpbench": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.8" - }, - "suggest": { - "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" - }, - "bin": [ - "bin/generate-deps-for-config-factory", - "bin/generate-factory-for-class" - ], - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\ServiceManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Factory-Driven Dependency Injection Container", - "homepage": "https://laminas.dev", - "keywords": [ - "PSR-11", - "dependency-injection", - "di", - "dic", - "laminas", - "service-manager", - "servicemanager" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-servicemanager/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-servicemanager/issues", - "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", - "source": "https://github.com/laminas/laminas-servicemanager" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-18T20:19:36+00:00" - }, - { - "name": "laminas/laminas-text", - "version": "2.9.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-text.git", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/8879e75d03e09b0d6787e6680cfa255afd4645a7", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7", - "shasum": "" - }, - "require": { - "laminas/laminas-servicemanager": "^3.4", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-text": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Text\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Create FIGlets and text-based tables", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "text" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-text/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-text/issues", - "rss": "https://github.com/laminas/laminas-text/releases.atom", - "source": "https://github.com/laminas/laminas-text" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-02T16:50:53+00:00" - }, - { - "name": "mathieuviossat/arraytotexttable", - "version": "v1.0.8", - "source": { - "type": "git", - "url": "https://github.com/viossat/arraytotexttable.git", - "reference": "6b1af924478cb9c3a903269e304fff006fe0dbf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/viossat/arraytotexttable/zipball/6b1af924478cb9c3a903269e304fff006fe0dbf4", - "reference": "6b1af924478cb9c3a903269e304fff006fe0dbf4", - "shasum": "" - }, - "require": { - "laminas/laminas-text": "^2.7", - "php": ">=5.3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "MathieuViossat\\Util\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mathieu Viossat", - "email": "mathieu@viossat.fr", - "homepage": "https://viossat.fr" - } - ], - "description": "Display arrays in terminal", - "homepage": "https://github.com/viossat/arraytotexttable", - "keywords": [ - "array", - "ascii", - "table", - "terminal", - "text", - "unicode" - ], - "support": { - "issues": "https://github.com/viossat/arraytotexttable/issues", - "source": "https://github.com/viossat/arraytotexttable/tree/v1.0.8" - }, - "time": "2020-06-23T17:14:22+00:00" - }, - { - "name": "mglaman/phpstan-drupal", - "version": "0.12.15", - "source": { - "type": "git", - "url": "https://github.com/mglaman/phpstan-drupal.git", - "reference": "1d65da838f3f5136e30e7a7023c235775f30c53e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/1d65da838f3f5136e30e7a7023c235775f30c53e", - "reference": "1d65da838f3f5136e30e7a7023c235775f30c53e", - "shasum": "" - }, - "require": { - "nette/finder": "^2.5", - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.65", - "symfony/yaml": "~3.4.5|^4.2", - "webflo/drupal-finder": "^1.2" - }, - "require-dev": { - "composer/installers": "^1.9", - "drupal/core-dev": "^8.8@alpha || ^9.0", - "drupal/core-recommended": "^8.8@alpha || ^9.0", - "drush/drush": "^9.6 | ^10.0", - "phpstan/phpstan-deprecation-rules": "~0.12.0", - "phpstan/phpstan-strict-rules": "^0.12.0", - "phpunit/phpunit": "^6.5 || ^7.5 || ^8.0 || ^9", - "squizlabs/php_codesniffer": "^3.3" - }, - "suggest": { - "phpstan/phpstan-deprecation-rules": "For catching deprecations, especially in Drupal core." - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, - "installer-paths": { - "tests/fixtures/drupal/core": [ - "type:drupal-core" - ], - "tests/fixtures/drupal/libraries/{$name}": [ - "type:drupal-library" - ], - "tests/fixtures/drupal/modules/contrib/{$name}": [ - "type:drupal-module" - ], - "tests/fixtures/drupal/profiles/contrib/{$name}": [ - "type:drupal-profile" - ], - "tests/fixtures/drupal/themes/contrib/{$name}": [ - "type:drupal-theme" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "files": [ - "drupal-phpunit-hack.php" - ], - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Glaman", - "email": "nmd.matt@gmail.com" - } - ], - "description": "Drupal extension and rules for PHPStan", - "support": { - "issues": "https://github.com/mglaman/phpstan-drupal/issues", - "source": "https://github.com/mglaman/phpstan-drupal/tree/0.12.15" - }, - "funding": [ - { - "url": "https://github.com/mglaman", - "type": "github" - }, - { - "url": "https://opencollective.com/phpstan-drupal", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/mglaman/phpstan-drupal", - "type": "tidelift" - } - ], - "time": "2021-10-06T20:17:36+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nette/finder", - "version": "v2.5.3", - "source": { - "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "64dc25b7929b731e72a1bc84a9e57727f5d5d3e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/64dc25b7929b731e72a1bc84a9e57727f5d5d3e8", - "reference": "64dc25b7929b731e72a1bc84a9e57727f5d5d3e8", - "shasum": "" - }, - "require": { - "nette/utils": "^2.4 || ^3.0", - "php": ">=7.1" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "phpstan/phpstan": "^0.12", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🔍 Nette Finder: find files and directories with an intuitive API.", - "homepage": "https://nette.org", - "keywords": [ - "filesystem", - "glob", - "iterator", - "nette" - ], - "support": { - "issues": "https://github.com/nette/finder/issues", - "source": "https://github.com/nette/finder/tree/v2.5.3" - }, - "time": "2021-12-12T17:43:24+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.6", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "2f261e55bd6a12057442045bf2c249806abc1d02" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/2f261e55bd6a12057442045bf2c249806abc1d02", - "reference": "2f261e55bd6a12057442045bf2c249806abc1d02", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v3.2.6" - }, - "time": "2021-11-24T15:47:23+00:00" - }, - { - "name": "palantirnet/drupal-rector", - "version": "0.11.4", - "source": { - "type": "git", - "url": "https://github.com/palantirnet/drupal-rector.git", - "reference": "c792c679fb84690a9d0650eda6338f14e5f16af8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/palantirnet/drupal-rector/zipball/c792c679fb84690a9d0650eda6338f14e5f16af8", - "reference": "c792c679fb84690a9d0650eda6338f14e5f16af8", - "shasum": "" - }, - "require": { - "rector/rector": "~0.11.53", - "webflo/drupal-finder": "^1.2" - }, - "replace": { - "drupal8-rector/drupal8-rector": "*", - "palantirnet/drupal8-rector": "*" - }, - "require-dev": { - "php": "^8.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^0.12.82", - "phpstan/phpstan-deprecation-rules": "^0.12.6", - "phpunit/phpunit": "^9.5", - "rector/rector-src": "~0.11.39", - "symfony/yaml": "^5" - }, - "type": "library", - "autoload": { - "psr-4": { - "DrupalRector\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dezső Biczó", - "email": "mxr576@gmail.com" - }, - { - "name": "Ofer Shaal", - "email": "shaal@palantir.net" - }, - { - "name": "Daniel Montgomery", - "email": "montgomery@palantir.net" - }, - { - "name": "Matt Glaman", - "email": "nmd.matt@gmail.com" - } - ], - "description": "Instant fixes for your Drupal code by using Rector.", - "keywords": [ - "Code style", - "Drupal 8", - "ast", - "drupal 9", - "rector" - ], - "support": { - "source": "https://github.com/palantirnet/drupal-rector/tree/0.11.4" - }, - "time": "2021-10-13T15:58:26+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "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" - }, - "time": "2021-02-23T14:00:09+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "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": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "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" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "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": "phpspec/prophecy-phpunit", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy-phpunit.git", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "phpspec/prophecy": "^1.3", - "phpunit/phpunit": "^9.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\PhpUnit\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Integrating the Prophecy mocking library in PHPUnit test cases", - "homepage": "http://phpspec.net", - "keywords": [ - "phpunit", - "prophecy" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy-phpunit/issues", - "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" - }, - "time": "2020-07-09T08:33:42+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "0.12.99", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.99" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2021-09-12T20:09:55+00:00" - }, - { - "name": "phpstan/phpstan-deprecation-rules", - "version": "0.12.6", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "46dbd43c2db973d2876d6653e53f5c2cc3a01fbb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/46dbd43c2db973d2876d6653e53f5c2cc3a01fbb", - "reference": "46dbd43c2db973d2876d6653e53f5c2cc3a01fbb", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.60" - }, - "require-dev": { - "phing/phing": "^2.16.3", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.5.20" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, - "phpstan": { - "includes": [ - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", - "support": { - "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/0.12.6" - }, - "time": "2020-12-13T10:20:54+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-05T09:12:13+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.11", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2406855036db1102126125537adb1406f7242fdd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd", - "reference": "2406855036db1102126125537adb1406f7242fdd", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", - "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/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-25T07:07:57+00:00" - }, - { - "name": "rector/rector", - "version": "0.11.60", - "source": { - "type": "git", - "url": "https://github.com/rectorphp/rector.git", - "reference": "428f593818f8c50fe12c543e8c0a107f9bd899ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/428f593818f8c50fe12c543e8c0a107f9bd899ae", - "reference": "428f593818f8c50fe12c543e8c0a107f9bd899ae", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0", - "phpstan/phpstan": "0.12.99" - }, - "conflict": { - "phpstan/phpdoc-parser": "<=0.5.3", - "phpstan/phpstan": "<=0.12.82", - "rector/rector-cakephp": "*", - "rector/rector-doctrine": "*", - "rector/rector-laravel": "*", - "rector/rector-nette": "*", - "rector/rector-phpoffice": "*", - "rector/rector-phpunit": "*", - "rector/rector-prefixed": "*", - "rector/rector-symfony": "*" - }, - "bin": [ - "bin/rector" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.11-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Prefixed and PHP 7.1 downgraded version of rector/rector", - "support": { - "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.11.60" - }, - "funding": [ - { - "url": "https://github.com/tomasvotruba", - "type": "github" - } - ], - "time": "2021-10-20T13:08:22+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.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" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "symfony/browser-kit", - "version": "v4.4.27", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "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": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.27" - }, - "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-21T12:19:41+00:00" - }, - { - "name": "symfony/config", - "version": "v4.4.36", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "03218ffbd5faeda5e6a97f9109acebf7973ff385" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/03218ffbd5faeda5e6a97f9109acebf7973ff385", - "reference": "03218ffbd5faeda5e6a97f9109acebf7973ff385", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^3.4|^4.0|^5.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/v4.4.36" - }, - "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-12T15:06:47+00:00" - }, - { - "name": "symfony/dom-crawler", - "version": "v4.4.36", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "42de12bee3b5e594977209bcdf58ec4fef8dde39" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/42de12bee3b5e594977209bcdf58ec4fef8dde39", - "reference": "42de12bee3b5e594977209bcdf58ec4fef8dde39", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "masterminds/html5": "<2.6" - }, - "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "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 DOM navigation for HTML and XML documents", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.36" - }, - "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-28T14:48:02+00:00" - }, - { - "name": "symfony/phpunit-bridge", - "version": "v5.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "59bbd98ee7aa15b9f75c0fc088c7a5cbf7aa9b5c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/59bbd98ee7aa15b9f75c0fc088c7a5cbf7aa9b5c", - "reference": "59bbd98ee7aa15b9f75c0fc088c7a5cbf7aa9b5c", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1|^3" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^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" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "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/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/polyfill-php81", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "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\\Php81\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.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-09-13T13:58:11+00:00" - }, - { - "name": "textalk/websocket", - "version": "1.5.5", - "source": { - "type": "git", - "url": "https://github.com/Textalk/websocket-php.git", - "reference": "846542f82658132cd36acb7a7e8ce0f03960c295" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/846542f82658132cd36acb7a7e8ce0f03960c295", - "reference": "846542f82658132cd36acb7a7e8ce0f03960c295", - "shasum": "" - }, - "require": { - "php": "^7.2 | ^8.0", - "psr/log": "^1 | ^2 | ^3" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.0", - "phpunit/phpunit": "^8.0|^9.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "WebSocket\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Fredrik Liljegren" - }, - { - "name": "Sören Jensen", - "email": "soren@abicart.se" - } - ], - "description": "WebSocket client and server", - "support": { - "issues": "https://github.com/Textalk/websocket-php/issues", - "source": "https://github.com/Textalk/websocket-php/tree/1.5.5" - }, - "time": "2021-08-07T10:21:40+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "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" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": { - "drupal/better_normalizers": 10, - "skilldlabs/druxxy": 20 - }, - "prefer-stable": true, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.1.0" -} diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index d8da82c01..d27c4edc6 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -1,8 +1,5 @@ FRONT_PORT?=65200 -# Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" -RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) - # Convert list of commands to json array format expected by "kubectl run --overrides" commands jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; From 8ed8814913557f569d4b7babba4221ad90786513 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Fri, 28 Jan 2022 13:52:33 +0100 Subject: [PATCH 22/38] Update --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 126cd860a..de590b3c4 100644 --- a/Makefile +++ b/Makefile @@ -100,7 +100,8 @@ endif ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif - make -s down + make -s down 2> /dev/null + ## TODO: run make down kubectl command only if something make -s lookfork3s @echo "Build and run containers..." if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)"; fi; From 2d861dbd1b04e34d89bcab1a72a337d58fc2f52a Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Fri, 28 Jan 2022 14:02:08 +0100 Subject: [PATCH 23/38] Update --- Makefile | 4 ++-- composer.json | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index de590b3c4..abec8239e 100644 --- a/Makefile +++ b/Makefile @@ -152,8 +152,8 @@ endif ifneq ($(strip $(MG_MODULES)),) $(call php, drush en $(MG_MODULES) -y) $(call php, drush migrate_generator:generate_migrations /var/www/html/content --update) - $(call php, drush migrate:import --all --group=migrate_generator_group) - $(call php, drush migrate_generator:clean_migrations migrate_generator_group) + $(call php, drush migrate:import --all --group=mgg) + $(call php, drush migrate_generator:clean_migrations mgg) $(call php, drush pmu $(MG_MODULES) -y) endif diff --git a/composer.json b/composer.json index 9bf9a030c..c9d23c6ee 100644 --- a/composer.json +++ b/composer.json @@ -115,9 +115,6 @@ }, "drupal/default_content": { "Do not reimport existing entities": "https://www.drupal.org/files/issues/do_not_reimport-2698425-56.patch" - }, - "drupal/migrate_generator": { - "Ability to remove config of generated migrations": "https://git.drupalcode.org/project/migrate_generator/commit/20dc65e.patch" } } } From 1f43d2f55b5ed3db06343bdd264f800a4d1f69f2 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Fri, 28 Jan 2022 18:13:40 +0100 Subject: [PATCH 24/38] Update --- Makefile | 52 ++++++++++++++++++---------------- helm/templates/deployment.yaml | 7 ++++- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index abec8239e..d2c479821 100644 --- a/Makefile +++ b/Makefile @@ -63,7 +63,8 @@ endif lookfork3s: ifeq ($(KUBECTL_IS_INSTALLED), false) @echo "Downloading and installing container orchestrator..." - curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - +# curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - + curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.23.3+k3s1" sh - @echo @echo "- If your command fail, run same make command again." @echo @@ -100,22 +101,25 @@ endif ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif - make -s down 2> /dev/null +# make -s down 2> /dev/null ## TODO: run make down kubectl command only if something make -s lookfork3s @echo "Build and run containers..." - if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)"; fi; - for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" - # Set composer2 as default - $(call php-0, ln -fs composer2 /usr/bin/composer) -ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) - $(call php-0, apk add --no-cache $(ADDITIONAL_PHP_PACKAGES)) -endif - # Set up timezone - $(call php-0, cp /usr/share/zoneinfo/Europe/Paris /etc/localtime) - # Install newrelic PHP extension if NEW_RELIC_LICENSE_KEY defined - make -s newrelic - $(call php-0, kill -USR2 1) + ## TODO: Debug why this changes owner of web/sites dir to root + if [ $(HELM_IS_INSTALLED) = false ]; then \ + kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ + else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; +# for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" +# # Set composer2 as default +# $(call php-0, ln -fs composer2 /usr/bin/composer) +# ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) +# $(call php-0, apk add --no-cache $(ADDITIONAL_PHP_PACKAGES)) +# endif +# # Set up timezone +# $(call php-0, cp /usr/share/zoneinfo/Europe/Paris /etc/localtime) +# # Install newrelic PHP extension if NEW_RELIC_LICENSE_KEY defined +# make -s newrelic +# $(call php-0, kill -USR2 1) ## Install backend dependencies back: @@ -225,27 +229,27 @@ down: DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites web/themes/contrib vendor v: -# docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' - echo - kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "env": [ { "name": "RMLIST", "value": "$(addprefix web/,$(SCAFFOLD)) $(DIRS)" } ], "command": [ "for","i","in","$$RMLIST;","do","rm","-fr","$$i","&&","echo","Removed","$$i;","done" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 0, "runAsGroup": 0 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' - + xx ## Totally remove project build folder, docker containers and network clean: info make -s down $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) - @docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' +# @docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' + $(eval RMLIST = $(addprefix web/,$(SCAFFOLD)) $(DIRS)) + for i in $(RMLIST); do rm -rf $$i && echo "Removed $$i"; done ifdef DB_MOUNT_DIR @echo "Clean-up database data from $(DB_MOUNT_DIR) ..." - docker run --rm --user 0:0 -v $(shell dirname $(DB_MOUNT_DIR)):/mnt $(IMAGE_PHP) sh -c "rm -fr /mnt/`basename $(DB_MOUNT_DIR)`" +# docker run --rm --user 0:0 -v $(shell dirname $(DB_MOUNT_DIR)):/mnt $(IMAGE_PHP) sh -c "rm -fr /mnt/`basename $(DB_MOUNT_DIR)`" + $(shell rm -fr $(DB_MOUNT_DIR)) endif ifeq ($(CLEAR_FRONT_PACKAGES), yes) make clear-front endif -ifeq ($(KUBECTL_IS_INSTALLED), true) - /usr/local/bin/k3s-killall.sh - /usr/local/bin/k3s-uninstall.sh -endif +# ifeq ($(KUBECTL_IS_INSTALLED), true) +# /usr/local/bin/k3s-killall.sh +# /usr/local/bin/k3s-uninstall.sh +# endif ## Enable development mode and disable caching dev: diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index 873b39099..a5727296c 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -17,6 +17,11 @@ spec: labels: name: {{ .Values.projectName }} spec: + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + fsGroupChangePolicy: "Always" volumes: - name: codebase hostPath: @@ -71,4 +76,4 @@ spec: image: skilldlabs/mailhog restartPolicy: Always nodeSelector: - kubernetes.io/hostname: sdc \ No newline at end of file + kubernetes.io/hostname: sdc From 92305acfdd4b7d1a1c55f717d753546d84113129 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 31 Jan 2022 12:44:23 +0100 Subject: [PATCH 25/38] Update --- Makefile | 46 +++++++++++++++++++++------------- helm/templates/deployment.yaml | 5 ---- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index d2c479821..5a8a44b21 100644 --- a/Makefile +++ b/Makefile @@ -101,25 +101,25 @@ endif ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif -# make -s down 2> /dev/null - ## TODO: run make down kubectl command only if something + make -s down 2> /dev/null + # TODO: run make down kubectl command only if something make -s lookfork3s @echo "Build and run containers..." - ## TODO: Debug why this changes owner of web/sites dir to root if [ $(HELM_IS_INSTALLED) = false ]; then \ kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; -# for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" -# # Set composer2 as default -# $(call php-0, ln -fs composer2 /usr/bin/composer) -# ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) -# $(call php-0, apk add --no-cache $(ADDITIONAL_PHP_PACKAGES)) -# endif -# # Set up timezone -# $(call php-0, cp /usr/share/zoneinfo/Europe/Paris /etc/localtime) -# # Install newrelic PHP extension if NEW_RELIC_LICENSE_KEY defined -# make -s newrelic -# $(call php-0, kill -USR2 1) + for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" + kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "chown","-R","$(CUID)","$(CGID)","." ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 0, "runAsGroup": 0 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' + # Set composer2 as default + $(call php-0, ln -fs composer2 /usr/bin/composer) +ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) + $(call php-0, apk add --no-cache $(ADDITIONAL_PHP_PACKAGES)) +endif + # Set up timezone + $(call php-0, cp /usr/share/zoneinfo/Europe/Paris /etc/localtime) + # Install newrelic PHP extension if NEW_RELIC_LICENSE_KEY defined + make -s newrelic + $(call php-0, kill -USR2 1) ## Install backend dependencies back: @@ -220,21 +220,31 @@ exec0: kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ash down: +ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | tail -1 | wc -l), 1) @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" - if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; + if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; +else + @echo "Deploy is not installed" +endif @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ echo 'Stoping browser driver.' && make -s browser_driver_stop; fi ## TODO: FIX TEST COMMANDS DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites web/themes/contrib vendor -v: - xx + +x: +ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | tail -1 | wc -l), 1) + @echo "Deploy is installed" +else + @echo "Deploy is not installed" +endif + ## Totally remove project build folder, docker containers and network clean: info make -s down - $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) + $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) # @docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' $(eval RMLIST = $(addprefix web/,$(SCAFFOLD)) $(DIRS)) for i in $(RMLIST); do rm -rf $$i && echo "Removed $$i"; done diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index a5727296c..5bde9485d 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -17,11 +17,6 @@ spec: labels: name: {{ .Values.projectName }} spec: - securityContext: - runAsUser: 1000 - runAsGroup: 1000 - fsGroup: 1000 - fsGroupChangePolicy: "Always" volumes: - name: codebase hostPath: From 7b7222fa65d7d4b9813bb8fa678204f38ac63f15 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 31 Jan 2022 13:03:02 +0100 Subject: [PATCH 26/38] Update --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5a8a44b21..10af481d5 100644 --- a/Makefile +++ b/Makefile @@ -109,7 +109,7 @@ endif kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" - kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "chown","-R","$(CUID)","$(CGID)","." ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": 0, "runAsGroup": 0 }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' + $(call php-0, chown -R $(CUID):$(CGID) .) # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) From b6ea48261c46d448271b22438f17be2aa0531c55 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 31 Jan 2022 14:27:07 +0100 Subject: [PATCH 27/38] Update --- Makefile | 12 +----------- helm/templates/deployment.yaml | 2 +- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 10af481d5..5d77a8ccb 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ CGID ?= $(LOCAL_GID) # Define network name. COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front -# SDC_SERVICES=$(shell docker-compose config --services) # TODO: Replace or remove +SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}") # Determine database data directory if defined DB_MOUNT_DIR=$(shell cd docker && realpath $(DB_DATA_DIR))/ ifeq ($(findstring mysql,$(SDC_SERVICES)),mysql) @@ -233,24 +233,14 @@ endif DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites web/themes/contrib vendor -x: -ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | tail -1 | wc -l), 1) - @echo "Deploy is installed" -else - @echo "Deploy is not installed" -endif - - ## Totally remove project build folder, docker containers and network clean: info make -s down $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) -# @docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' $(eval RMLIST = $(addprefix web/,$(SCAFFOLD)) $(DIRS)) for i in $(RMLIST); do rm -rf $$i && echo "Removed $$i"; done ifdef DB_MOUNT_DIR @echo "Clean-up database data from $(DB_MOUNT_DIR) ..." -# docker run --rm --user 0:0 -v $(shell dirname $(DB_MOUNT_DIR)):/mnt $(IMAGE_PHP) sh -c "rm -fr /mnt/`basename $(DB_MOUNT_DIR)`" $(shell rm -fr $(DB_MOUNT_DIR)) endif ifeq ($(CLEAR_FRONT_PACKAGES), yes) diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index 5bde9485d..9b122eeb1 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -67,7 +67,7 @@ spec: name: cache-css - mountPath: /var/www/html/web/sites/default/files/js name: cache-js - - name: mail + - name: mailhog image: skilldlabs/mailhog restartPolicy: Always nodeSelector: From f74e8dbbca30e94db3368cff90327104235f29f5 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 31 Jan 2022 14:30:17 +0100 Subject: [PATCH 28/38] Update --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5d77a8ccb..aac5f0a0b 100644 --- a/Makefile +++ b/Makefile @@ -233,7 +233,7 @@ endif DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites web/themes/contrib vendor -## Totally remove project build folder, docker containers and network +## Totally remove project build folder, containers and network clean: info make -s down $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) From 4137491f2fe873595f81ae55669e75f66e97b10f Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 31 Jan 2022 18:15:06 +0100 Subject: [PATCH 29/38] Update --- Makefile | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index aac5f0a0b..de30b5598 100644 --- a/Makefile +++ b/Makefile @@ -102,10 +102,9 @@ ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif make -s down 2> /dev/null - # TODO: run make down kubectl command only if something make -s lookfork3s @echo "Build and run containers..." - if [ $(HELM_IS_INSTALLED) = false ]; then \ + @if [ $(HELM_IS_INSTALLED) = false ]; then \ kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" @@ -191,16 +190,18 @@ localize: ## Display project's information info: - $(info ) - $(info Containers for "$(COMPOSE_PROJECT_NAME)" info:) - $(info ) ifdef REVIEW_DOMAIN $(eval BASE_URL := $(MAIN_DOMAIN_NAME)) else $(eval BASE_URL := $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}')) endif +ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | wc -l), 1) + $(info ) + $(info Containers for "$(COMPOSE_PROJECT_NAME)" info:) + $(info ) $(info Login as System Admin: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(ADMIN_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) $(info Login as Contributor: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(TESTER_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) +endif $(info ) ifneq ($(shell diff .env .env.default -q),) @echo -e "\x1b[33mWARNING\x1b[0m - .env and .env.default files differ. Use 'make diff' to see details." @@ -209,8 +210,6 @@ endif ## Output diff between local and versioned files diff: diff -u0 --color .env .env.default || true; echo "" - - ## Run shell in PHP container as regular user exec: kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash www-data -c ash @@ -220,7 +219,7 @@ exec0: kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ash down: -ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | tail -1 | wc -l), 1) +ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | wc -l), 1) @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; else @@ -235,7 +234,7 @@ DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites ## Totally remove project build folder, containers and network clean: info - make -s down + make -s down 2> /dev/null $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) $(eval RMLIST = $(addprefix web/,$(SCAFFOLD)) $(DIRS)) for i in $(RMLIST); do rm -rf $$i && echo "Removed $$i"; done From 2063c33650c247c9b8766dea038c7e3e961fcfc2 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Mon, 31 Jan 2022 18:45:52 +0100 Subject: [PATCH 30/38] Update --- Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Makefile b/Makefile index de30b5598..30212d501 100644 --- a/Makefile +++ b/Makefile @@ -188,6 +188,15 @@ localize: $(call php, drush locale:import:all /var/www/html/translations/ --type=customized --override=all) @echo "Localization finished" +PROJECT_IS_UP := $(shell kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && echo true || echo false) +x: +ifeq ($(PROJECT_IS_UP), true) + @echo "Up" +else + @echo "Down" +endif + + ## Display project's information info: ifdef REVIEW_DOMAIN From 872470dd99fa4cfee50dc364fb18c6cf22ed1616 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 1 Feb 2022 13:16:19 +0100 Subject: [PATCH 31/38] Update --- Makefile | 23 ++++++++++++++--------- helm/templates/deployment.yaml | 4 ++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 30212d501..7776c81cd 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ CGID ?= $(LOCAL_GID) # Define network name. COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front -SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}") +SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}" 2>/dev/null) # Determine database data directory if defined DB_MOUNT_DIR=$(shell cd docker && realpath $(DB_DATA_DIR))/ ifeq ($(findstring mysql,$(SDC_SERVICES)),mysql) @@ -47,7 +47,7 @@ php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} # Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) -IMAGE_HELM=alpine/helm +IMAGE_HELM=alpine/helm:3.8.0 KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) JQ_IS_INSTALLED := $(shell [ -e "$(shell which jq 2> /dev/null)" ] || [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) @@ -63,8 +63,8 @@ endif lookfork3s: ifeq ($(KUBECTL_IS_INSTALLED), false) @echo "Downloading and installing container orchestrator..." -# curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - - curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.23.3+k3s1" sh - + curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - +# curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.23.3+k3s1" sh - @echo @echo "- If your command fail, run same make command again." @echo @@ -103,11 +103,13 @@ ifdef DB_MOUNT_DIR endif make -s down 2> /dev/null make -s lookfork3s + for i in {1..50}; do echo "Waiting for default service account..." && kubectl -n default get serviceaccount default -o name &> /dev/null && break || sleep 3; done; echo "Found !" @echo "Build and run containers..." - @if [ $(HELM_IS_INSTALLED) = false ]; then \ + if [ $(HELM_IS_INSTALLED) = false ]; then \ kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" +# for i in {1..50}; do echo "Waiting for PHP container..." && kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' &> /dev/null && break || sleep 3; done; echo "Container is up !" $(call php-0, chown -R $(CUID):$(CGID) .) # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) @@ -188,7 +190,7 @@ localize: $(call php, drush locale:import:all /var/www/html/translations/ --type=customized --override=all) @echo "Localization finished" -PROJECT_IS_UP := $(shell kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && echo true || echo false) +PROJECT_IS_UP := $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null) x: ifeq ($(PROJECT_IS_UP), true) @echo "Up" @@ -197,6 +199,8 @@ else endif + + ## Display project's information info: ifdef REVIEW_DOMAIN @@ -204,7 +208,7 @@ ifdef REVIEW_DOMAIN else $(eval BASE_URL := $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}')) endif -ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | wc -l), 1) +ifeq ($(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null), true) $(info ) $(info Containers for "$(COMPOSE_PROJECT_NAME)" info:) $(info ) @@ -242,8 +246,9 @@ DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites ## Totally remove project build folder, containers and network -clean: info - make -s down 2> /dev/null +clean: + $(info Cleaning project "$(COMPOSE_PROJECT_NAME)"...) + make -s down $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) $(eval RMLIST = $(addprefix web/,$(SCAFFOLD)) $(DIRS)) for i in $(RMLIST); do rm -rf $$i && echo "Removed $$i"; done diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml index 9b122eeb1..b45b4c656 100644 --- a/helm/templates/deployment.yaml +++ b/helm/templates/deployment.yaml @@ -34,6 +34,10 @@ spec: - name: cache-php emptyDir: medium: Memory + dnsConfig: + options: + - name: ndots + value: "2" containers: - name: php image: {{ .Values.imagePhp }} From bb1e0e84a08029b970b776d3b8d86d727430aa57 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 1 Feb 2022 18:10:28 +0100 Subject: [PATCH 32/38] Update --- .env.default | 1 + Makefile | 144 +++++++++++-------------------------- Makefile_docker-compose.mk | 11 +++ Makefile_k3s.mk | 106 +++++++++++++++++++++++++++ 4 files changed, 160 insertions(+), 102 deletions(-) create mode 100644 Makefile_docker-compose.mk create mode 100644 Makefile_k3s.mk diff --git a/.env.default b/.env.default index dfa65d1f7..eea1aab03 100644 --- a/.env.default +++ b/.env.default @@ -28,3 +28,4 @@ REDIS_PORT=6379 REDIS_PASSWD=1234567890 # See readme for basicauth convention RA_BASIC_AUTH= +ORCHESTRATOR=k3s diff --git a/Makefile b/Makefile index 7776c81cd..194cdbe5e 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,3 @@ -# Include utility functions and scripts -include scripts/makefile/*.mk - .PHONY: all fast allfast provision si exec exec0 down clean dev drush info phpcs phpcbf hooksymlink clang cinsp compval watchdogval drupalrectorval upgradestatusval behat sniffers tests front front-install front-build clear-front lintval lint storybook back behatdl behatdi browser_driver browser_driver_stop statusreportval contentgen newlineeof localize local-settings redis-settings content patchval diff .DEFAULT_GOAL := help @@ -12,6 +9,17 @@ include scripts/makefile/*.mk $(shell false | cp -i \.env.default \.env 2>/dev/null) include .env +# Select orchestrator related commands +# include Makefile_$(ORCHESTRATOR).mk +ifeq ($(ORCHESTRATOR), k3s) +include Makefile_k3s.mk +else +include Makefile_docker-compose.mk +endif + +# Include utility functions and scripts +include scripts/makefile/*.mk + # Sanitize PROJECT_NAME input COMPOSE_PROJECT_NAME := $(shell echo "$(PROJECT_NAME)" | tr -cd '[a-zA-Z0-9]' | tr '[:upper:]' '[:lower:]') @@ -23,10 +31,6 @@ LOCAL_GID := $(shell id -g) CUID ?= $(LOCAL_UID) CGID ?= $(LOCAL_GID) -# Define network name. -COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front - -SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}" 2>/dev/null) # Determine database data directory if defined DB_MOUNT_DIR=$(shell cd docker && realpath $(DB_DATA_DIR))/ ifeq ($(findstring mysql,$(SDC_SERVICES)),mysql) @@ -39,78 +43,45 @@ endif # Define current directory only once CURDIR=$(shell pwd) -# Execute php container as regular user -php = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash www-data -c "${1}" -# Execute php container as root user -php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} - -# Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" -RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) - -IMAGE_HELM=alpine/helm:3.8.0 -KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) -HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) -JQ_IS_INSTALLED := $(shell [ -e "$(shell which jq 2> /dev/null)" ] || [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) - - -killall: -ifeq ($(KUBECTL_IS_INSTALLED), true) - /usr/local/bin/k3s-killall.sh - /usr/local/bin/k3s-uninstall.sh -endif - -# Check if k3s is present, install it if not -lookfork3s: -ifeq ($(KUBECTL_IS_INSTALLED), false) - @echo "Downloading and installing container orchestrator..." - curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - -# curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.23.3+k3s1" sh - - @echo - @echo "- If your command fail, run same make command again." - @echo -endif - - # Variables ADDITIONAL_PHP_PACKAGES := tzdata graphicsmagick # php7-intl php7-redis wkhtmltopdf gnu-libiconv php7-pdo_pgsql postgresql-client postgresql-contrib DC_MODULES := project_default_content better_normalizers default_content hal serialization MG_MODULES := migrate_generator migrate migrate_plus migrate_source_csv migrate_tools + ## Full site install from the scratch all: | provision back front si localize hooksymlink info # Install for CI deploy:review. Back & Front tasks are run in a dedicated previous step in order to leverage CI cache all_ci: | provision si localize hooksymlink info # Full site install from the scratch with DB in ram (makes data NOT persistant) -allfast: | fast provision back front si localize hooksymlink info +allfast: | fast ## Update .env to build DB in ram (makes data NOT persistant) fast: $(shell sed -i "s|^#DB_URL=sqlite:///dev/shm/d8.sqlite|DB_URL=sqlite:///dev/shm/d8.sqlite|g" .env) $(shell sed -i "s|^DB_URL=sqlite:./../.cache/d8.sqlite|#DB_URL=sqlite:./../.cache/d8.sqlite|g" .env) + $(info - Your .env file was updated. Run `make all` again.) + exit 1 - -## Provision enviroment -provision: -# Check if enviroment variables has been defined +enforce-project-name: ifeq ($(strip $(COMPOSE_PROJECT_NAME)),projectname) $(eval COMPOSE_PROJECT_NAME = $(strip $(shell read -p "Please enter project name: " REPLY;echo -n $$REPLY))) $(shell sed -i -e '/PROJECT_NAME=/ s/=.*/=$(COMPOSE_PROJECT_NAME)/' .env) $(info - Run `make all` again.) exit 1 endif + +## Provision enviroment +provision: +# Check if enviroment variables has been defined + make -s enforce-project-name ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif make -s down 2> /dev/null - make -s lookfork3s - for i in {1..50}; do echo "Waiting for default service account..." && kubectl -n default get serviceaccount default -o name &> /dev/null && break || sleep 3; done; echo "Found !" + make -s provision-orchestrator @echo "Build and run containers..." - if [ $(HELM_IS_INSTALLED) = false ]; then \ - kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ - else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; - for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" -# for i in {1..50}; do echo "Waiting for PHP container..." && kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' &> /dev/null && break || sleep 3; done; echo "Container is up !" - $(call php-0, chown -R $(CUID):$(CGID) .) + make -s spin-containers # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) @@ -190,27 +161,22 @@ localize: $(call php, drush locale:import:all /var/www/html/translations/ --type=customized --override=all) @echo "Localization finished" -PROJECT_IS_UP := $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null) -x: -ifeq ($(PROJECT_IS_UP), true) - @echo "Up" -else - @echo "Down" -endif - - +x: + $(eval BASE_URL := $(LOCAL_IP)) + echo $(BASE_URL) ## Display project's information info: ifdef REVIEW_DOMAIN $(eval BASE_URL := $(MAIN_DOMAIN_NAME)) else - $(eval BASE_URL := $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}')) + #TODO: Generate variable elsewhere + $(eval BASE_URL := $(LOCAL_IP) endif -ifeq ($(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null), true) +ifeq ($(PROJECT_IS_UP), true) $(info ) - $(info Containers for "$(COMPOSE_PROJECT_NAME)" info:) + $(info Containers for "$(COMPOSE_PROJECT_NAME)":) $(info ) $(info Login as System Admin: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(ADMIN_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) $(info Login as Contributor: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(TESTER_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) @@ -223,46 +189,37 @@ endif ## Output diff between local and versioned files diff: diff -u0 --color .env .env.default || true; echo "" -## Run shell in PHP container as regular user -exec: - kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash www-data -c ash - -## Run shell in PHP container as root -exec0: - kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ash down: -ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | wc -l), 1) +# ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | wc -l), 1) +ifeq ($(PROJECT_IS_UP), true) @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" - if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; + make -s down-containers else - @echo "Deploy is not installed" + @echo "No container to down" endif @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ echo 'Stoping browser driver.' && make -s browser_driver_stop; fi ## TODO: FIX TEST COMMANDS -DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites web/themes/contrib vendor - ## Totally remove project build folder, containers and network clean: + $(eval DIRS = web/core web/libraries web/modules/contrib web/profiles/contrib web/sites web/themes/contrib vendor) $(info Cleaning project "$(COMPOSE_PROJECT_NAME)"...) make -s down - $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) + make -s scaffold-list $(eval RMLIST = $(addprefix web/,$(SCAFFOLD)) $(DIRS)) for i in $(RMLIST); do rm -rf $$i && echo "Removed $$i"; done ifdef DB_MOUNT_DIR @echo "Clean-up database data from $(DB_MOUNT_DIR) ..." $(shell rm -fr $(DB_MOUNT_DIR)) + #TODO: what was doccomp equivalent? endif ifeq ($(CLEAR_FRONT_PACKAGES), yes) make clear-front endif -# ifeq ($(KUBECTL_IS_INSTALLED), true) -# /usr/local/bin/k3s-killall.sh -# /usr/local/bin/k3s-uninstall.sh -# endif + make -s uninstall-orchestrator ## Enable development mode and disable caching dev: @@ -287,30 +244,13 @@ drush: $(call php, $(filter-out "$@",$(MAKECMDGOALS))) $(info "To pass arguments use double dash: "make drush en devel -- -y"") -logs: - kubectl logs -f deploy/$(COMPOSE_PROJECT_NAME) --all-containers=true -h: -ifeq ($(HELM_IS_INSTALLED), true) - @echo "Helm is installed" -else - @echo "Helm is not installed" -endif - -k: -ifeq ($(KUBECTL_IS_INSTALLED), true) - @echo "Kubernetes is installed" -else - @echo "Kubernetes is not installed" -endif - - -j: -ifeq ($(JQ_IS_INSTALLED), true) - @echo "Jq is installed" +up: +ifeq ($(PROJECT_IS_UP), true) + @echo "Up" else - @echo "Jq is not installed" + @echo "Down" endif diff --git a/Makefile_docker-compose.mk b/Makefile_docker-compose.mk new file mode 100644 index 000000000..2dbb388a8 --- /dev/null +++ b/Makefile_docker-compose.mk @@ -0,0 +1,11 @@ + + + +# Define network name. +COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front + + + +xxx: + @echo "im in docker-compose.mk" + diff --git a/Makefile_k3s.mk b/Makefile_k3s.mk new file mode 100644 index 000000000..a55f1bc89 --- /dev/null +++ b/Makefile_k3s.mk @@ -0,0 +1,106 @@ + + +# Used to give a random name to Kubernetes pods executed on the fly by "kubectl run" +RANDOM_STRING ?= $(shell cat /dev/urandom | tr -dc 'a-fA-F0-9' | tr '[:upper:]' '[:lower:]' | fold -w 10 | head -n 1) + +IMAGE_HELM=alpine/helm:3.8.0 +KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) +HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) +JQ_IS_INSTALLED := $(shell [ -e "$(shell which jq 2> /dev/null)" ] || [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) + +# Check if k3s is present, install it if not +lookfork3s: +ifeq ($(KUBECTL_IS_INSTALLED), false) + @echo "Downloading and installing container orchestrator..." + curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.22.5+k3s1" sh - + #curl -sfL https://get.k3s.io | K3S_NODE_NAME=sdc K3S_KUBECONFIG_MODE="644" INSTALL_K3S_VERSION="v1.23.3+k3s1" sh - + @echo + @echo "- If your command fail here, run it again." + @echo +endif + +provision-orchestrator: + make -s lookfork3s + for i in {1..50}; do echo "Waiting for default service account..." && kubectl -n default get serviceaccount default -o name &> /dev/null && break || sleep 3; done; echo "Found !" + +spin-containers: + if [ $(HELM_IS_INSTALLED) = false ]; then \ + kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ + else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; + for i in {1..50}; do echo "Waiting for PHP container..." && kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- "whoami" &> /dev/null && break || sleep 3; done; echo "Container is up !" + $(call php-0, chown -R $(CUID):$(CGID) .) + + + +$(eval PROJECT_IS_UP := $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null)) + +SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}" 2>/dev/null) + +down-containers: + if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; + + +uninstall-orchestrator: +ifeq ($(KUBECTL_IS_INSTALLED), true) + /usr/local/bin/k3s-killall.sh + /usr/local/bin/k3s-uninstall.sh +endif + + +killall: +ifeq ($(KUBECTL_IS_INSTALLED), true) + /usr/local/bin/k3s-killall.sh + /usr/local/bin/k3s-uninstall.sh +endif + +# Execute php container as regular user +php = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash www-data -c "${1}" +# Execute php container as root user +php-0 = kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ${1} + +## Run shell in PHP container as regular user +exec: + kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- su -s /bin/ash www-data -c ash + +## Run shell in PHP container as root +exec0: + kubectl exec -it deploy/$(COMPOSE_PROJECT_NAME) -c php -- ash + +scaffold-list: + $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) + +logs: + kubectl logs -f deploy/$(COMPOSE_PROJECT_NAME) --all-containers=true + + + +h: +ifeq ($(HELM_IS_INSTALLED), true) + @echo "Helm is installed" +else + @echo "Helm is not installed" +endif + + +k: +ifeq ($(KUBECTL_IS_INSTALLED), true) + @echo "Kubernetes is installed" +else + @echo "Kubernetes is not installed" +endif + + +j: +ifeq ($(JQ_IS_INSTALLED), true) + @echo "Jq is installed" +else + @echo "Jq is not installed" +endif + + + +LOCAL_IP := $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}') + + +xxx: + @echo "im in k3s.mk" From 802e27c33e824a609068281d9d3d87647d69fbc0 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 1 Feb 2022 19:12:59 +0100 Subject: [PATCH 33/38] Update --- Makefile | 23 +++++++++-------------- Makefile_docker-compose.mk | 17 ++++++++++++++++- Makefile_k3s.mk | 12 +++++++----- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 194cdbe5e..83d941fcb 100644 --- a/Makefile +++ b/Makefile @@ -79,9 +79,9 @@ ifdef DB_MOUNT_DIR $(shell [ ! -d $(DB_MOUNT_DIR) ] && mkdir -p $(DB_MOUNT_DIR) && chmod 777 $(DB_MOUNT_DIR)) endif make -s down 2> /dev/null - make -s provision-orchestrator + make -s install-orchestrator @echo "Build and run containers..." - make -s spin-containers + make -s up # Set composer2 as default $(call php-0, ln -fs composer2 /usr/bin/composer) ifneq ($(strip $(ADDITIONAL_PHP_PACKAGES)),) @@ -161,18 +161,12 @@ localize: $(call php, drush locale:import:all /var/www/html/translations/ --type=customized --override=all) @echo "Localization finished" - -x: - $(eval BASE_URL := $(LOCAL_IP)) - echo $(BASE_URL) - ## Display project's information info: ifdef REVIEW_DOMAIN $(eval BASE_URL := $(MAIN_DOMAIN_NAME)) else - #TODO: Generate variable elsewhere - $(eval BASE_URL := $(LOCAL_IP) + $(eval BASE_URL := $(LOCAL_IP)) endif ifeq ($(PROJECT_IS_UP), true) $(info ) @@ -190,17 +184,17 @@ endif diff: diff -u0 --color .env .env.default || true; echo "" +#TODO: Redefine what is means to be upé down: -# ifeq ($(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true | wc -l), 1) ifeq ($(PROJECT_IS_UP), true) @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" make -s down-containers else @echo "No container to down" endif - @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ - echo 'Stoping browser driver.' && make -s browser_driver_stop; fi - ## TODO: FIX TEST COMMANDS + make -s down-test-browser + + ## Totally remove project build folder, containers and network @@ -245,9 +239,10 @@ drush: $(info "To pass arguments use double dash: "make drush en devel -- -y"") +## TODO: FIX TEST COMMANDS -up: +check: ifeq ($(PROJECT_IS_UP), true) @echo "Up" else diff --git a/Makefile_docker-compose.mk b/Makefile_docker-compose.mk index 2dbb388a8..b4f3bce87 100644 --- a/Makefile_docker-compose.mk +++ b/Makefile_docker-compose.mk @@ -1,11 +1,26 @@ -# Define network name. +# Define network name COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front +# Define docker-compose files +COMPOSE_FILE=./docker/docker-compose.yml:./docker/docker-compose.override.yml xxx: @echo "im in docker-compose.mk" + + +LOCAL_IP = $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}}' $(COMPOSE_PROJECT_NAME)_web) + + + +# ifneq ($(shell diff docker/docker-compose.override.yml docker/docker-compose.override.yml.default -q),) +# @echo -e "\x1b[33mWARNING\x1b[0m - docker/docker-compose.override.yml and docker/docker-compose.override.yml.default files differ. Use 'make diff' to see details." +# endif + +down-test-browser: + @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ + echo 'Stoping browser driver.' && make -s browser_driver_stop; fi diff --git a/Makefile_k3s.mk b/Makefile_k3s.mk index a55f1bc89..7570b6719 100644 --- a/Makefile_k3s.mk +++ b/Makefile_k3s.mk @@ -19,11 +19,11 @@ ifeq ($(KUBECTL_IS_INSTALLED), false) @echo endif -provision-orchestrator: +install-orchestrator: make -s lookfork3s for i in {1..50}; do echo "Waiting for default service account..." && kubectl -n default get serviceaccount default -o name &> /dev/null && break || sleep 3; done; echo "Found !" -spin-containers: +up: if [ $(HELM_IS_INSTALLED) = false ]; then \ kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "test", "image": "$(IMAGE_HELM)", "command": [ "helm","upgrade","--install","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)","./helm/","--set","projectName=$(COMPOSE_PROJECT_NAME),projectPath=$(CURDIR),imagePhp=$(IMAGE_PHP),imageNginx=$(IMAGE_NGINX),userGroup=$(CGID)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; \ else helm upgrade --install --kubeconfig="/etc/rancher/k3s/k3s.yaml" $(COMPOSE_PROJECT_NAME) ./helm/ --set projectName="$(COMPOSE_PROJECT_NAME)",projectPath="$(CURDIR)",imagePhp="$(IMAGE_PHP)",imageNginx="$(IMAGE_NGINX)",userGroup="$(CGID)"; fi; @@ -32,10 +32,14 @@ spin-containers: -$(eval PROJECT_IS_UP := $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null)) +$(eval PROJECT_IS_UP := $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null && echo true || echo false)) +# $(eval PROJECT_IS_UP := $(shell [ -e "$(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true 2> /dev/null)" ] && echo true || echo false)) + SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}" 2>/dev/null) +LOCAL_IP = $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}') + down-containers: if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; @@ -99,8 +103,6 @@ endif -LOCAL_IP := $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}') - xxx: @echo "im in k3s.mk" From dc600cbc9da92c8b82e833aede2025d1771b4754 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Wed, 2 Feb 2022 16:00:12 +0100 Subject: [PATCH 34/38] Update --- Makefile_docker-compose.mk | 107 +++++++++++++++++++++++++++++++++++-- Makefile_k3s.mk | 17 ++++++ scripts/makefile/front.mk | 12 ----- 3 files changed, 120 insertions(+), 16 deletions(-) diff --git a/Makefile_docker-compose.mk b/Makefile_docker-compose.mk index b4f3bce87..a7acd44ea 100644 --- a/Makefile_docker-compose.mk +++ b/Makefile_docker-compose.mk @@ -1,3 +1,4 @@ +$(shell false | cp -i \.\/docker\/docker-compose\.override\.yml\.default \.\/docker\/docker-compose\.override\.yml 2>/dev/null) @@ -5,22 +6,120 @@ COMPOSE_NET_NAME := $(COMPOSE_PROJECT_NAME)_front # Define docker-compose files COMPOSE_FILE=./docker/docker-compose.yml:./docker/docker-compose.override.yml - +# List docker-compose services +SDC_SERVICES=$(shell docker-compose config --services) xxx: @echo "im in docker-compose.mk" +# Execute php container as regular user +php = docker-compose exec -T --user $(CUID):$(CGID) php ${1} +# Execute php container as root user +php-0 = docker-compose exec -T --user 0:0 php ${1} + + + +## Run shell in PHP container as regular user +exec: + docker-compose exec --user $(CUID):$(CGID) php ash + +## Run shell in PHP container as root +exec0: + docker-compose exec --user 0:0 php ash LOCAL_IP = $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}}' $(COMPOSE_PROJECT_NAME)_web) +## Output diff between local and versioned files +diff: + diff -u0 --color .env .env.default || true; echo "" + diff -u0 --color docker/docker-compose.override.yml docker/docker-compose.override.yml.default || true; echo "" -# ifneq ($(shell diff docker/docker-compose.override.yml docker/docker-compose.override.yml.default -q),) -# @echo -e "\x1b[33mWARNING\x1b[0m - docker/docker-compose.override.yml and docker/docker-compose.override.yml.default files differ. Use 'make diff' to see details." -# endif down-test-browser: @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ echo 'Stoping browser driver.' && make -s browser_driver_stop; fi + + +provision: + docker-compose up -d --remove-orphans + + +## Display project's information +info: + $(info ) + $(info Containers for "$(COMPOSE_PROJECT_NAME)" info:) + $(eval CONTAINERS = $(shell docker ps -f name=$(COMPOSE_PROJECT_NAME) --format "{{ .ID }}" -f 'label=traefik.enable=true')) + $(foreach CONTAINER, $(CONTAINERS),$(info http://$(shell printf '%-19s \n' $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}} {{range $$p, $$conf := .NetworkSettings.Ports}}{{$$p}}{{end}} {{.Name}}' $(CONTAINER) | rev | sed "s/pct\//,pct:/g" | sed "s/,//" | rev | awk '{ print $0}')) )) + $(info ) +ifdef REVIEW_DOMAIN + $(eval BASE_URL := $(MAIN_DOMAIN_NAME)) +else + $(eval BASE_URL := $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}}' $(COMPOSE_PROJECT_NAME)_web)) +endif + $(info Login as System Admin: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(ADMIN_NAME)" /admin/content/ | awk -F "default" '{print $$2}'))))) + $(info Login as Contributor: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(TESTER_NAME)" /admin/content/ | awk -F "default" '{print $$2}'))))) + $(info ) +ifneq ($(shell diff .env .env.default -q),) + @echo -e "\x1b[33mWARNING\x1b[0m - .env and .env.default files differ. Use 'make diff' to see details." +endif +ifneq ($(shell diff docker/docker-compose.override.yml docker/docker-compose.override.yml.default -q),) + @echo -e "\x1b[33mWARNING\x1b[0m - docker/docker-compose.override.yml and docker/docker-compose.override.yml.default files differ. Use 'make diff' to see details." +endif + + +down: + @docker-compose down -v --remove-orphans --rmi local + @if [ ! -z "$(shell docker ps -f 'name=$(COMPOSE_PROJECT_NAME)_chrome' --format '{{.Names}}')" ]; then \ + echo 'Stoping browser driver.' && make -s browser_driver_stop; fi + + +## Totally remove project build folder, docker containers and network +clean: + make -s down + $(eval SCAFFOLD = $(shell docker run --rm -v $(CURDIR):/mnt -w /mnt --user $(CUID):$(CGID) $(IMAGE_PHP) composer run-script list-scaffold-files | grep -P '^(?!>)')) + @docker run --rm --user 0:0 -v $(CURDIR):/mnt -w /mnt -e RMLIST="$(addprefix web/,$(SCAFFOLD)) $(DIRS)" $(IMAGE_PHP) sh -c 'for i in $$RMLIST; do rm -fr $$i && echo "Removed $$i"; done' +ifdef DB_MOUNT_DIR + @echo "Clean-up database data from $(DB_MOUNT_DIR) ..." + docker run --rm --user 0:0 -v $(shell dirname $(DB_MOUNT_DIR)):/mnt $(IMAGE_PHP) sh -c "rm -fr /mnt/`basename $(DB_MOUNT_DIR)`" +endif +ifeq ($(CLEAR_FRONT_PACKAGES), yes) + make clear-front +endif + + +# Execute front container function. +frontexec = docker run \ + --rm \ + --init \ + -u $(CUID):$(CGID) \ + -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ + --workdir /app \ + $(IMAGE_FRONT) ${1} + + + +# Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook. +frontexec-with-port = docker run \ + --rm \ + --init \ + -p $(FRONT_PORT):$(FRONT_PORT) \ + -u $(CUID):$(CGID) \ + -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ + --workdir /app \ + $(IMAGE_FRONT) ${1} + +# Execute front container with TTY. Needed for storybook components creation. +frontexec-with-interactive = docker run \ + --rm \ + --init \ + -u $(CUID):$(CGID) \ + -v $(CURDIR)/web/themes/custom/$(THEME_NAME):/app \ + --workdir /app \ + -it \ + $(IMAGE_FRONT) ${1} + + + diff --git a/Makefile_k3s.mk b/Makefile_k3s.mk index 7570b6719..3e7548f34 100644 --- a/Makefile_k3s.mk +++ b/Makefile_k3s.mk @@ -106,3 +106,20 @@ endif xxx: @echo "im in k3s.mk" + + + + +# Convert list of commands to json array format expected by "kubectl run --overrides" commands +jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; + +# Execute front container function +frontexec = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' + +# Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook +frontexec-with-port = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec-with-port", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' + +# Execute front container with TTY. Needed for storybook components creation +frontexec-with-interactive = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec-with-interactive", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' + + diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index d27c4edc6..8dfbfeb98 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -1,17 +1,5 @@ FRONT_PORT?=65200 -# Convert list of commands to json array format expected by "kubectl run --overrides" commands -jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; - -# Execute front container function -frontexec = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' - -# Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook -frontexec-with-port = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec-with-port", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "ports": [ { "containerPort": $(FRONT_PORT), "protocol": "TCP" } ], "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' - -# Execute front container with TTY. Needed for storybook components creation -frontexec-with-interactive = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec-with-interactive", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' - clear-front: @echo "Clean of node_modules and compiled dist... To skip this action please set CLEAR_FRONT_PACKAGES=no in .env file" From 83e09a184236413a7e26e70be9c55d55194b814e Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Wed, 2 Feb 2022 16:09:04 +0100 Subject: [PATCH 35/38] Update --- Makefile | 2 +- Makefile_docker-compose.mk | 1 - Makefile_k3s.mk | 4 ++++ scripts/makefile/front.mk | 5 ++--- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 83d941fcb..844638a28 100644 --- a/Makefile +++ b/Makefile @@ -184,7 +184,7 @@ endif diff: diff -u0 --color .env .env.default || true; echo "" -#TODO: Redefine what is means to be upé +#TODO: Redefine what is means to be up > THIS FAILS NOW down: ifeq ($(PROJECT_IS_UP), true) @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" diff --git a/Makefile_docker-compose.mk b/Makefile_docker-compose.mk index a7acd44ea..1ff797a67 100644 --- a/Makefile_docker-compose.mk +++ b/Makefile_docker-compose.mk @@ -100,7 +100,6 @@ frontexec = docker run \ $(IMAGE_FRONT) ${1} - # Execute front container function on localhost:FRONT_PORT. Needed for dynamic storybook. frontexec-with-port = docker run \ --rm \ diff --git a/Makefile_k3s.mk b/Makefile_k3s.mk index 3e7548f34..b47326fca 100644 --- a/Makefile_k3s.mk +++ b/Makefile_k3s.mk @@ -108,7 +108,11 @@ xxx: @echo "im in k3s.mk" +testfront: + $(call frontexec,ls -lah) +## TODO: Debug front commands +## TODO: Test front clean # Convert list of commands to json array format expected by "kubectl run --overrides" commands jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; diff --git a/scripts/makefile/front.mk b/scripts/makefile/front.mk index 8dfbfeb98..6224976e5 100644 --- a/scripts/makefile/front.mk +++ b/scripts/makefile/front.mk @@ -1,13 +1,12 @@ FRONT_PORT?=65200 +## Install frontend dependencies & build assets +front: | front-install front-build clear-front: @echo "Clean of node_modules and compiled dist... To skip this action please set CLEAR_FRONT_PACKAGES=no in .env file" $(call frontexec,rm -rf /app/node_modules /app/dist) -## Install frontend dependencies & build assets -front: | front-install front-build - front-install: @if [ -d $(CURDIR)/web/themes/custom/$(THEME_NAME) ]; then \ echo "- Theme directory found. Installing yarn dependencies..."; \ From 51a8fdc58913d8921b39b650eb1181c014b579e7 Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Wed, 2 Feb 2022 16:38:07 +0100 Subject: [PATCH 36/38] Update --- Makefile | 4 ++-- Makefile_k3s.mk | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 844638a28..28b467efa 100644 --- a/Makefile +++ b/Makefile @@ -184,7 +184,7 @@ endif diff: diff -u0 --color .env .env.default || true; echo "" -#TODO: Redefine what is means to be up > THIS FAILS NOW +#TODO: Re-test that later on down: ifeq ($(PROJECT_IS_UP), true) @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" @@ -239,7 +239,7 @@ drush: $(info "To pass arguments use double dash: "make drush en devel -- -y"") -## TODO: FIX TEST COMMANDS +## TODO: CHECK And FIX TEST COMMANDS check: diff --git a/Makefile_k3s.mk b/Makefile_k3s.mk index b47326fca..a82ce5a81 100644 --- a/Makefile_k3s.mk +++ b/Makefile_k3s.mk @@ -31,8 +31,9 @@ up: $(call php-0, chown -R $(CUID):$(CGID) .) - -$(eval PROJECT_IS_UP := $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' 2>/dev/null && echo true || echo false)) +# TODO: This one works +PROJECT_IS_UP = $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' &>/dev/null && echo true || echo false) +# TODO: This one doesn't work # $(eval PROJECT_IS_UP := $(shell [ -e "$(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true 2> /dev/null)" ] && echo true || echo false)) @@ -111,8 +112,7 @@ xxx: testfront: $(call frontexec,ls -lah) -## TODO: Debug front commands -## TODO: Test front clean +## TODO: Re-test front clean # Convert list of commands to json array format expected by "kubectl run --overrides" commands jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; From 4e881fbfe487b15b20f4f48caaeeec51bfcbdb4f Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Thu, 10 Feb 2022 14:57:37 +0100 Subject: [PATCH 37/38] Update --- Makefile | 21 ++++++++------------- Makefile_docker-compose.mk | 12 ++++++++---- Makefile_k3s.mk | 33 ++++++++++++++------------------- 3 files changed, 30 insertions(+), 36 deletions(-) diff --git a/Makefile b/Makefile index 28b467efa..b9afe19ff 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,7 @@ MG_MODULES := migrate_generator migrate migrate_plus migrate_source_csv migrate_ ## Full site install from the scratch -all: | provision back front si localize hooksymlink info +all: | provision back front si localize hooksymlink info xx # Install for CI deploy:review. Back & Front tasks are run in a dedicated previous step in order to leverage CI cache all_ci: | provision si localize hooksymlink info # Full site install from the scratch with DB in ram (makes data NOT persistant) @@ -161,6 +161,11 @@ localize: $(call php, drush locale:import:all /var/www/html/translations/ --type=customized --override=all) @echo "Localization finished" +xx: +ifeq ($(shell $(call PROJECT_IS_UP)),true) + @echo "it's up!" +endif + ## Display project's information info: ifdef REVIEW_DOMAIN @@ -168,13 +173,11 @@ ifdef REVIEW_DOMAIN else $(eval BASE_URL := $(LOCAL_IP)) endif -ifeq ($(PROJECT_IS_UP), true) $(info ) $(info Containers for "$(COMPOSE_PROJECT_NAME)":) $(info ) $(info Login as System Admin: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(ADMIN_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) $(info Login as Contributor: http://$(shell printf '%-19s \n' $(shell echo "$(BASE_URL)"$(shell $(call php, drush user:login --name="$(TESTER_NAME)" /admin/content/ | awk -F "default" '{print \$$2}'))))) -endif $(info ) ifneq ($(shell diff .env .env.default -q),) @echo -e "\x1b[33mWARNING\x1b[0m - .env and .env.default files differ. Use 'make diff' to see details." @@ -184,9 +187,9 @@ endif diff: diff -u0 --color .env .env.default || true; echo "" -#TODO: Re-test that later on +#TODO: Re-test that later on DEFER EVALUATION down: -ifeq ($(PROJECT_IS_UP), true) +ifeq ($(shell $(call PROJECT_IS_UP)),true) @echo "Removing network & containers for $(COMPOSE_PROJECT_NAME)" make -s down-containers else @@ -241,11 +244,3 @@ drush: ## TODO: CHECK And FIX TEST COMMANDS - -check: -ifeq ($(PROJECT_IS_UP), true) - @echo "Up" -else - @echo "Down" -endif - diff --git a/Makefile_docker-compose.mk b/Makefile_docker-compose.mk index 1ff797a67..2e8b89eae 100644 --- a/Makefile_docker-compose.mk +++ b/Makefile_docker-compose.mk @@ -9,9 +9,9 @@ COMPOSE_FILE=./docker/docker-compose.yml:./docker/docker-compose.override.yml # List docker-compose services SDC_SERVICES=$(shell docker-compose config --services) +LOCAL_IP = $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}}' $(COMPOSE_PROJECT_NAME)_web) -xxx: - @echo "im in docker-compose.mk" +PROJECT_IS_UP = # Execute php container as regular user php = docker-compose exec -T --user $(CUID):$(CGID) php ${1} @@ -29,8 +29,6 @@ exec0: docker-compose exec --user 0:0 php ash -LOCAL_IP = $(shell docker inspect --format='{{(index .NetworkSettings.Networks "$(COMPOSE_NET_NAME)").IPAddress}}:{{index .Config.Labels "traefik.port"}}' $(COMPOSE_PROJECT_NAME)_web) - ## Output diff between local and versioned files diff: @@ -122,3 +120,9 @@ frontexec-with-interactive = docker run \ +testfront: + $(call frontexec,ls -lah) + +xxx: + @echo "im in docker-compose.mk" + diff --git a/Makefile_k3s.mk b/Makefile_k3s.mk index a82ce5a81..a31fb85bb 100644 --- a/Makefile_k3s.mk +++ b/Makefile_k3s.mk @@ -7,6 +7,11 @@ IMAGE_HELM=alpine/helm:3.8.0 KUBECTL_IS_INSTALLED := $(shell [ -e "$(shell which kubectl 2> /dev/null)" ] && echo true || echo false) HELM_IS_INSTALLED := $(shell [ -e "$(shell which helm 2> /dev/null)" ] && echo true || echo false) JQ_IS_INSTALLED := $(shell [ -e "$(shell which jq 2> /dev/null)" ] || [ -e "$(shell which gojq 2> /dev/null)" ] && echo true || echo false) +SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}" 2>/dev/null) +LOCAL_IP = $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}') + + +PROJECT_IS_UP = kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' &>/dev/null && echo true || echo false # Check if k3s is present, install it if not lookfork3s: @@ -21,7 +26,7 @@ endif install-orchestrator: make -s lookfork3s - for i in {1..50}; do echo "Waiting for default service account..." && kubectl -n default get serviceaccount default -o name &> /dev/null && break || sleep 3; done; echo "Found !" + for i in {1..50}; do echo "Waiting for default service account..." && kubectl -n default get serviceaccount default -o name &> /dev/null && break || sleep 3; done; echo "Default service account is up !" up: if [ $(HELM_IS_INSTALLED) = false ]; then \ @@ -31,16 +36,6 @@ up: $(call php-0, chown -R $(CUID):$(CGID) .) -# TODO: This one works -PROJECT_IS_UP = $(shell kubectl get deployment $(COMPOSE_PROJECT_NAME) -o go-template='{{ if eq .status.readyReplicas .status.replicas }}{{ "true" }}{{ end }}' &>/dev/null && echo true || echo false) -# TODO: This one doesn't work -# $(eval PROJECT_IS_UP := $(shell [ -e "$(shell kubectl get deploy -l name=$(COMPOSE_PROJECT_NAME) --no-headers=true 2> /dev/null)" ] && echo true || echo false)) - - -SDC_SERVICES=$(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) -o jsonpath="{.items[*].spec.containers[*].name}" 2>/dev/null) - -LOCAL_IP = $(shell kubectl get pods -l name=$(COMPOSE_PROJECT_NAME) --template '{{range .items}}{{.status.podIP}}{{"\n"}}{{end}}') - down-containers: if [ $(HELM_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_HELM) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } }, { "name": "host-k3s-config", "hostPath": { "path": "/etc/rancher/k3s/k3s.yaml", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_HELM)", "command": [ "helm","uninstall","--wait","--kubeconfig=/etc/rancher/k3s/k3s.yaml","$(COMPOSE_PROJECT_NAME)" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" }, { "name": "host-k3s-config", "mountPath": "/etc/rancher/k3s/k3s.yaml" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }'; else helm uninstall --kubeconfig=/etc/rancher/k3s/k3s.yaml --wait $(COMPOSE_PROJECT_NAME); fi; @@ -74,6 +69,7 @@ exec0: scaffold-list: $(eval SCAFFOLD = $(shell kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_PHP) --rm -i --quiet --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)", "type": "" } } ], "containers": [ { "name": "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)", "image": "$(IMAGE_PHP)", "command": [ "composer", "run-script", "list-scaffold-files" ], "workingDir": "/app", "resources": {}, "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "terminationGracePeriodSeconds": 30, "dnsPolicy": "ClusterFirst", "hostNetwork": true, "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) }, "schedulerName": "default-scheduler", "enableServiceLinks": true }, "status": {} }' | grep -P '^(?!>)')) +## Display logs for all services logs: kubectl logs -f deploy/$(COMPOSE_PROJECT_NAME) --all-containers=true @@ -105,14 +101,6 @@ endif -xxx: - @echo "im in k3s.mk" - - -testfront: - $(call frontexec,ls -lah) - -## TODO: Re-test front clean # Convert list of commands to json array format expected by "kubectl run --overrides" commands jsonarrayconverter = if [ $(JQ_IS_INSTALLED) = false ]; then kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=stedolan/jq --restart=Never --quiet -i --rm --command -- jq -c -n --arg groups "${1}" '$$groups | split(" ")' 2> /dev/null; else jq -c -n --arg groups "${1}" '$$groups | split(" ")'; fi; @@ -127,3 +115,10 @@ frontexec-with-port = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$ frontexec-with-interactive = make -s lookfork3s; kubectl run "$(COMPOSE_PROJECT_NAME)-$(RANDOM_STRING)" --image=$(IMAGE_FRONT) --rm -i --overrides='{ "kind": "Pod", "apiVersion": "v1", "spec": { "volumes": [ { "name": "host-volume", "hostPath": { "path": "$(CURDIR)/web/themes/custom/$(THEME_NAME)" } } ], "containers": [ { "name": "frontexec-with-interactive", "image": "$(IMAGE_FRONT)", "command": $(shell $(call jsonarrayconverter,${1})), "stdin": true, "tty": true, "workingDir": "/app", "volumeMounts": [ { "name": "host-volume", "mountPath": "/app" } ], "terminationMessagePolicy": "FallbackToLogsOnError", "imagePullPolicy": "IfNotPresent" } ], "restartPolicy": "Never", "securityContext": { "runAsUser": $(CUID), "runAsGroup": $(CGID) } } }' + +testfront: + $(call frontexec,ls -lah) + +xxx: + @echo "im in k3s.mk" + From 525a808efa19e951d2d24c5379bdc92691b6c55f Mon Sep 17 00:00:00 2001 From: David Ferlay Date: Tue, 10 May 2022 12:37:29 +0200 Subject: [PATCH 38/38] Update --- composer.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/composer.json b/composer.json index c9d23c6ee..d7a36370b 100644 --- a/composer.json +++ b/composer.json @@ -50,6 +50,14 @@ "sort-packages": true, "preferred-install": { "*": "dist" + }, + "allow-plugins": { + "composer/installers": true, + "cweagans/composer-patches": true, + "drupal/core-project-message": true, + "drupal/core-composer-scaffold": true, + "drupal/core-vendor-hardening": true, + "skilldlabs/drupal-cleanup": true } }, "autoload": {