From 91d2e1e4eb4708e10ebb91ab0c1cca5c1d19d59f Mon Sep 17 00:00:00 2001 From: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> Date: Wed, 10 Jan 2024 13:52:19 -0800 Subject: [PATCH 01/42] VACMS-15785: alt text validation (#15787) * VACMS-15435: hard validation for alt text field * VACMS-15436: clientside validation for alt text field * VACMS-15436: updated composer.lock * VACMS-15436: fix linting errors * VACMS-15436: one more linting error fixed * VACMS-15436: more linting fixes * VACMS-15785: updated composer.lock * VACMS-15962: theming changes for image form * VACMS-15962: fix linting errors * VACMS-15962: final fix * VACMS-15783: Alt-Text Validation Testing (#16159) * VACMS-15783 adds alt-text validation tests * VACMS-15785: update composer.lock, fix merge error * VACMS-15785: fix for spacing around error * VACMS-15785: updated composer.lock * Updates content * smdh --------- Co-authored-by: Tony Taylor Co-authored-by: Nathan Douglas --- composer.json | 5 + composer.lock | 78 ++++++- .../sync/clientside_validation.settings.yml | 4 + .../clientside_validation_jquery.settings.yml | 6 + ...ntity_form_display.media.image.default.yml | 24 +- config/sync/core.extension.yml | 2 + .../design-system/components/input/input.scss | 3 +- .../components/tokens/_variables.scss | 2 +- .../EventSubscriber/ThemeEventSubscriber.php | 19 -- .../js/alt_text_validation.es6.js | 78 +++++++ .../va_gov_media/js/alt_text_validation.js | 52 +++++ .../AltTextValidationController.php | 66 ++++++ .../EventSubscriber/MediaEventSubscriber.php | 219 ++++++++++++++++++ .../custom/va_gov_media/va_gov_media.info.yml | 4 + .../va_gov_media/va_gov_media.libraries.yml | 5 + .../custom/va_gov_media/va_gov_media.module | 21 +- .../va_gov_media/va_gov_media.routing.yml | 8 + .../va_gov_media/va_gov_media.services.yml | 8 + .../assets/scss/components/_fields.scss | 11 + .../assets/scss/components/_media.scss | 34 +++ .../content-edit/file-managed-file.html.twig | 25 +- patches/2949540-31.patch | 219 ++++++++++++++++++ phpstan-baseline.neon | 5 + .../platform/alt_text_validation.feature | 42 ++++ .../common/i_create_an_image_with_alt_text.js | 59 +++++ .../common/i_save_an_image_with_alt_text.js | 45 ++++ 26 files changed, 987 insertions(+), 57 deletions(-) create mode 100644 config/sync/clientside_validation.settings.yml create mode 100644 config/sync/clientside_validation_jquery.settings.yml create mode 100644 docroot/modules/custom/va_gov_media/js/alt_text_validation.es6.js create mode 100644 docroot/modules/custom/va_gov_media/js/alt_text_validation.js create mode 100644 docroot/modules/custom/va_gov_media/src/Controller/AltTextValidationController.php create mode 100644 docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php create mode 100644 docroot/modules/custom/va_gov_media/va_gov_media.libraries.yml create mode 100644 docroot/modules/custom/va_gov_media/va_gov_media.routing.yml create mode 100644 docroot/modules/custom/va_gov_media/va_gov_media.services.yml create mode 100644 patches/2949540-31.patch create mode 100644 tests/cypress/integration/features/platform/alt_text_validation.feature create mode 100644 tests/cypress/integration/step_definitions/common/i_create_an_image_with_alt_text.js create mode 100644 tests/cypress/integration/step_definitions/common/i_save_an_image_with_alt_text.js diff --git a/composer.json b/composer.json index 7dd19e59c55..372eda027c8 100644 --- a/composer.json +++ b/composer.json @@ -34,6 +34,7 @@ "drupal/block_content_permissions": "^1.6", "drupal/cer": "^5.0@beta", "drupal/change_labels": "dev-3326097-remove-dependency-on-drupal-autoservices#7f92f90b456ac2f394dd434257e39e1d9b3086eb", + "drupal/clientside_validation": "^4.0", "drupal/ckeditor_abbreviation": "^4.0@alpha", "drupal/coder": "^8.3", "drupal/codit_menu_tools": "^1.0@alpha", @@ -204,6 +205,7 @@ "mikey179/vfsstream": "^1.6", "mnsami/composer-custom-directory-installer": "^2.0", "npm-asset/dropzone": "^5.5", + "npm-asset/jquery-validation": "^1.17", "npm-asset/yarn": "1.19.1", "oomphinc/composer-installers-extender": "^2.0", "orakili/composer-drupal-info-file-patch-helper": "*", @@ -366,6 +368,9 @@ "3200122 - Remove delete hook": "https://www.drupal.org/files/issues/2021-02-24/delete-hook-added-in-dev-causes-test-failures.patch", "3254663 - Notice: Undefined index: target_bundles on Drupal\\cer\\Entity\\CorrespondingReference->synchronizeCorrespondingField()": "https://www.drupal.org/files/issues/2022-02-14/prevent-undefined-index-3254663-6.patch" }, + "drupal/clientside_validation": { + "2949540 - Allow specific form ids for clientside validation": "https://www.drupal.org/files/issues/2023-10-27/2949540-31.patch" + }, "drupal/consumer_image_styles": { "3301224 - Follow-up: Very slow JSON:API responses when images are stored on AWS bucket": "https://www.drupal.org/files/issues/2023-02-07/3301224-9.patch" }, diff --git a/composer.lock b/composer.lock index 566767364a9..c7f79601c01 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "dd7a8b38039836aeebdc472d433eaf95", + "content-hash": "519122c85d79517c409d1c39cf3c0b00", "packages": [ { "name": "asm89/stack-cors", @@ -2990,6 +2990,68 @@ "issues": "http://drupal.org/project/issues/ckeditor_abbreviation" } }, + { + "name": "drupal/clientside_validation", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/clientside_validation.git", + "reference": "4.0.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/clientside_validation-4.0.2.zip", + "reference": "4.0.2", + "shasum": "bfaf0fa81d645427c1b3ccfd2d5e493a10b7f483" + }, + "require": { + "drupal/core": "^9.4 || ^10.0", + "php": ">=7.4.0" + }, + "require-dev": { + "drupal/clientside_validation_demo": "*", + "drupal/clientside_validation_jquery": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "4.0.2", + "datestamp": "1676011269", + "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": "attiks", + "homepage": "https://www.drupal.org/user/105002" + }, + { + "name": "Jelle_S", + "homepage": "https://www.drupal.org/user/829198" + }, + { + "name": "joseph.olstad", + "homepage": "https://www.drupal.org/user/1321830" + }, + { + "name": "nikunjkotecha", + "homepage": "https://www.drupal.org/user/694082" + } + ], + "description": "This module adds clientside validation", + "homepage": "https://www.drupal.org/project/clientside_validation", + "support": { + "source": "https://git.drupalcode.org/project/clientside_validation", + "issues": "https://drupal.org/project/issues/clientside_validation" + } + }, { "name": "drupal/coder", "version": "8.3.22", @@ -17070,6 +17132,18 @@ "MIT" ] }, + { + "name": "npm-asset/jquery-validation", + "version": "1.20.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.0.tgz" + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, { "name": "npm-asset/yarn", "version": "1.19.1", @@ -26771,5 +26845,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/config/sync/clientside_validation.settings.yml b/config/sync/clientside_validation.settings.yml new file mode 100644 index 00000000000..4814ea29e3c --- /dev/null +++ b/config/sync/clientside_validation.settings.yml @@ -0,0 +1,4 @@ +_core: + default_config_hash: GfA9lmRURupNRAARLoOTo1Ihq1-M3ktT0sKSjUcL2sw +enable_all_forms: true +enabled_forms: { } diff --git a/config/sync/clientside_validation_jquery.settings.yml b/config/sync/clientside_validation_jquery.settings.yml new file mode 100644 index 00000000000..1c68f90ce1d --- /dev/null +++ b/config/sync/clientside_validation_jquery.settings.yml @@ -0,0 +1,6 @@ +_core: + default_config_hash: 3YUV4RQQ4k8drO7uzYJ7lNc5Az0iDAH5YW8KbZVxjeY +use_cdn: false +cdn_base_url: 'https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/' +validate_all_ajax_forms: 2 +force_validate_on_blur: 0 diff --git a/config/sync/core.entity_form_display.media.image.default.yml b/config/sync/core.entity_form_display.media.image.default.yml index 1b2576ac170..ed14648e9b3 100644 --- a/config/sync/core.entity_form_display.media.image.default.yml +++ b/config/sync/core.entity_form_display.media.image.default.yml @@ -8,9 +8,10 @@ dependencies: - field.field.media.image.field_media_submission_guideline - field.field.media.image.field_owner - field.field.media.image.image - - image.style.3_2_medium_thumbnail + - image.style.full_content_width - media.type.image module: + - change_labels - field_group - image_widget_crop - markup @@ -47,6 +48,7 @@ content: maxlength: 300 counter_position: after js_prevent_submit: true + count_only_mode: false count_html_characters: true textcount_status_message: 'Characters Remaining: @remaining_count' third_party_settings: { } @@ -68,14 +70,23 @@ content: region: content settings: progress_indicator: throbber - preview_image_style: 3_2_medium_thumbnail + preview_image_style: full_content_width crop_preview_image_style: crop_thumbnail - crop_list: { } + crop_list: + - '2_1' + - '2_3' + - '3_2' + - '7_2' + - freeform + - original + - square crop_types_required: { } warn_multiple_usages: false show_crop_area: true show_default_crop: true - third_party_settings: { } + third_party_settings: + change_labels: + remove_label: '' name: type: string_textfield weight: 1 @@ -84,6 +95,11 @@ content: size: 60 placeholder: '' third_party_settings: { } + translation: + weight: 10 + region: content + settings: { } + third_party_settings: { } hidden: created: true field_media_in_library: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 67e9b284032..d7ad4a2d381 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -24,6 +24,8 @@ module: change_labels: 0 ckeditor5: 0 ckeditor_abbreviation: 0 + clientside_validation: 0 + clientside_validation_jquery: 0 codit_menu_tools: 0 components: 0 computed_breadcrumbs: 0 diff --git a/docroot/design-system/components/input/input.scss b/docroot/design-system/components/input/input.scss index 50cc01ec0df..9ab24f9452a 100644 --- a/docroot/design-system/components/input/input.scss +++ b/docroot/design-system/components/input/input.scss @@ -23,5 +23,6 @@ } .form-item--error-message { - color: var(--va-red-bright); + color: var(--va-red-dark); + margin: 5px 0; } diff --git a/docroot/design-system/components/tokens/_variables.scss b/docroot/design-system/components/tokens/_variables.scss index a86e64bfa49..fbbc25b89c2 100644 --- a/docroot/design-system/components/tokens/_variables.scss +++ b/docroot/design-system/components/tokens/_variables.scss @@ -95,7 +95,7 @@ --color-absolutezero-hover: var(--va-blue-dark); --color-absolutezero-active: var(--va-blue-darker); --color-sunglow: var(--va-gold-med); - --color-maximumred: var(--va-red-bright); + --color-maximumred: var(--va-red-dark); --color-lightninggreen: var(--va-green); --color-lightgray: var(--va-gray-lighter); --color-whitesmoke: var(--va-gray-lightest); diff --git a/docroot/modules/custom/va_gov_backend/src/EventSubscriber/ThemeEventSubscriber.php b/docroot/modules/custom/va_gov_backend/src/EventSubscriber/ThemeEventSubscriber.php index d3b8ab3f77e..70de2485279 100644 --- a/docroot/modules/custom/va_gov_backend/src/EventSubscriber/ThemeEventSubscriber.php +++ b/docroot/modules/custom/va_gov_backend/src/EventSubscriber/ThemeEventSubscriber.php @@ -7,9 +7,6 @@ use Drupal\core_event_dispatcher\Event\Theme\ThemeSuggestionsAlterEvent; use Drupal\core_event_dispatcher\FormHookEvents; use Drupal\core_event_dispatcher\ThemeHookEvents; -use Drupal\field_event_dispatcher\Event\Field\WidgetSingleElementFormAlterEvent; -use Drupal\field_event_dispatcher\FieldHookEvents; -use Drupal\image\Plugin\Field\FieldWidget\ImageWidget; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** @@ -22,27 +19,11 @@ class ThemeEventSubscriber implements EventSubscriberInterface { */ public static function getSubscribedEvents(): array { return [ - FieldHookEvents::WIDGET_SINGLE_ELEMENT_FORM_ALTER => 'formWidgetAlter', FormHookEvents::FORM_ALTER => 'formAlter', ThemeHookEvents::THEME_SUGGESTIONS_ALTER => 'themeSuggestionsAlter', ]; } - /** - * Widget form alter Event call. - * - * @param \Drupal\field_event_dispatcher\Event\Field\WidgetSingleElementFormAlterEvent $event - * The event. - */ - public function formWidgetAlter(WidgetSingleElementFormAlterEvent $event): void { - $element = &$event->getElement(); - $context = $event->getContext(); - // If this is an image field type of instance. - if ($context['widget'] instanceof ImageWidget) { - $element['#process'][] = '_va_gov_media_image_field_widget_process'; - } - } - /** * Form alter Event call. * diff --git a/docroot/modules/custom/va_gov_media/js/alt_text_validation.es6.js b/docroot/modules/custom/va_gov_media/js/alt_text_validation.es6.js new file mode 100644 index 00000000000..5601ef0e639 --- /dev/null +++ b/docroot/modules/custom/va_gov_media/js/alt_text_validation.es6.js @@ -0,0 +1,78 @@ +/** + * @file + * Attaches behaviors VA GOv Media module. + */ +(($, Drupal, once, drupalSettings) => { + if (typeof drupalSettings.cvJqueryValidateOptions === "undefined") { + drupalSettings.cvJqueryValidateOptions = {}; + } + + if (drupalSettings.clientside_validation_jquery.force_validate_on_blur) { + drupalSettings.cvJqueryValidateOptions.onfocusout = (element) => { + // "eager" validation + this.element(element); + }; + } + + drupalSettings.cvJqueryValidateOptions.rules = { + "image[0][alt]": { + remote: { + url: `${drupalSettings.path.baseUrl}media/validate`, + type: "post", + data: { + value() { + return $("textarea[data-drupal-selector='edit-image-0-alt']").val(); + }, + }, + dataType: "json", + }, + }, + "media[0][fields][image][0][alt]": { + remote: { + url: `${drupalSettings.path.baseUrl}media/validate`, + type: "post", + data: { + value() { + return $( + "textarea[data-drupal-selector='edit-media-0-fields-image-0-alt']" + ).val(); + }, + }, + dataType: "json", + }, + }, + }; + + // Add messages with translations from backend. + $.extend( + $.validator.messages, + drupalSettings.clientside_validation_jquery.messages + ); + + /** + * Attaches jQuery validate behavior to forms. + * + * @type {Drupal~behavior} + * + * @prop {Drupal~behaviorAttach} attach + * Attaches the outline behavior to the right context. + */ + Drupal.behaviors.altTextValidate = { + // eslint-disable-next-line no-unused-vars + attach(context) { + // Allow all modules to update the validate options. + // Example of how to do this is shown below. + $(document).trigger( + "cv-jquery-validate-options-update", + drupalSettings.cvJqueryValidateOptions + ); + + // Process for all the forms on the page everytime, + // we already use once so we should be good. + once("altTextValidate", "body form").forEach((element) => { + $(element).validate(drupalSettings.cvJqueryValidateOptions); + }); + }, + }; + // eslint-disable-next-line no-undef +})(jQuery, Drupal, once, drupalSettings); diff --git a/docroot/modules/custom/va_gov_media/js/alt_text_validation.js b/docroot/modules/custom/va_gov_media/js/alt_text_validation.js new file mode 100644 index 00000000000..62b484ddf09 --- /dev/null +++ b/docroot/modules/custom/va_gov_media/js/alt_text_validation.js @@ -0,0 +1,52 @@ +/** +* DO NOT EDIT THIS FILE. +* See the following change record for more information, +* https://www.drupal.org/node/2815083 +* @preserve +**/ +var _this = this; +(function ($, Drupal, once, drupalSettings) { + if (typeof drupalSettings.cvJqueryValidateOptions === "undefined") { + drupalSettings.cvJqueryValidateOptions = {}; + } + if (drupalSettings.clientside_validation_jquery.force_validate_on_blur) { + drupalSettings.cvJqueryValidateOptions.onfocusout = function (element) { + _this.element(element); + }; + } + drupalSettings.cvJqueryValidateOptions.rules = { + "image[0][alt]": { + remote: { + url: drupalSettings.path.baseUrl + "media/validate", + type: "post", + data: { + value: function value() { + return $("textarea[data-drupal-selector='edit-image-0-alt']").val(); + } + }, + dataType: "json" + } + }, + "media[0][fields][image][0][alt]": { + remote: { + url: drupalSettings.path.baseUrl + "media/validate", + type: "post", + data: { + value: function value() { + return $("textarea[data-drupal-selector='edit-media-0-fields-image-0-alt']").val(); + } + }, + dataType: "json" + } + } + }; + $.extend($.validator.messages, drupalSettings.clientside_validation_jquery.messages); + Drupal.behaviors.altTextValidate = { + attach: function attach(context) { + $(document).trigger("cv-jquery-validate-options-update", drupalSettings.cvJqueryValidateOptions); + once("altTextValidate", "body form").forEach(function (element) { + $(element).validate(drupalSettings.cvJqueryValidateOptions); + }); + } + }; +})(jQuery, Drupal, once, drupalSettings); \ No newline at end of file diff --git a/docroot/modules/custom/va_gov_media/src/Controller/AltTextValidationController.php b/docroot/modules/custom/va_gov_media/src/Controller/AltTextValidationController.php new file mode 100644 index 00000000000..8ce7af0f374 --- /dev/null +++ b/docroot/modules/custom/va_gov_media/src/Controller/AltTextValidationController.php @@ -0,0 +1,66 @@ +loggerFactory = $loggerFactory; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('logger.factory') + ); + } + + /** + * Validate the alt text. + */ + public function validate(Request $req) { + $logger = $this->loggerFactory->get('va_gov_media'); + $value = $req->request->get('value'); + $value_length = MediaEventSubscriber::getLengthOfSubmittedValue($value); + $res = TRUE; + if ($value_length > 150) { + $logger->error("[CC] Alternative text ({$value}) cannot be longer than 150 characters. {$value_length} characters were submitted."); + $res = $this->t('Alternative text cannot be longer than 150 characters.'); + } + if (preg_match('/\.(jpg|jpeg|png|gif)$/i', $value)) { + $logger->error("[FN] Alternative text cannot contain file names. {$value} was submitted."); + $res = $this->t('Alternative text cannot contain file names.'); + } + if (preg_match('/(image|photo|graphic|picture) of/i', $value)) { + $logger->error("[RP] Alternative text cannot contain repetitive phrases. {$value} was submitted."); + $res = $this->t('Alternative text cannot contain phrases like “image of”, “photo of”, “graphic of”, “picture of”, etc.'); + } + return new JsonResponse($res); + } + +} diff --git a/docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php b/docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php new file mode 100644 index 00000000000..7f78cdc0a8e --- /dev/null +++ b/docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php @@ -0,0 +1,219 @@ + 'formWidgetAlter', + FormHookEvents::FORM_ALTER => 'formAlter', + ]; + } + + /** + * Form alter Event call. + * + * @param \Drupal\core_event_dispatcher\Event\Form\FormAlterEvent $event + * The event. + */ + public function formAlter(FormAlterEvent $event): void { + $form = &$event->getForm(); + + $form_id = $form['#id']; + if ($form_id === 'media-image-add-form') { + $form['name']['widget'][0]['value']['#description'] = $this->t('Provide a name that will help other users of the CMS find and reuse this image. The name is not visible to end users.'); + unset($form['field_media_submission_guideline']); + } + } + + /** + * Widget form alter Event call. + * + * @param \Drupal\field_event_dispatcher\Event\Field\WidgetSingleElementFormAlterEvent $event + * The event. + */ + public function formWidgetAlter(WidgetSingleElementFormAlterEvent $event): void { + $element = &$event->getElement(); + $context = $event->getContext(); + // If this is an image field type of instance. + if ($context['widget'] instanceof ImageWidget) { + $element['#process'][] = [static::class, 'imageFieldWidgetProcess']; + } + } + + /** + * Changes the alt text description to be more helpful and add validation. + * + * @param array $element + * The element to change the alt text description. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The form state. + * @param array $form + * The form. + * + * @return array + * The element. + */ + public static function imageFieldWidgetProcess(array $element, FormStateInterface &$form_state, array $form) { + if (isset($element['alt'])) { + $element['alt']['#description'] = t('Adding a clear and meaningful description of the image is important for accessibility.'); + $element['alt']['#element_validate'] = [ + [static::class, 'validateAltText'], + ]; + $element['alt']['#type'] = 'textarea'; + $element['alt']['#rows'] = 3; + + // Add the textfield counter to the alt text field. + $position = 'after'; + $form_id = $form['#form_id']; + if ($form_id === 'media_library_add_form_dropzonejs') { + $form_storage = $form_state->getStorage(); + $entity = $form_storage['media'][0]; + } + else { + /* var $form_object \Drupal\media\MediaForm */ + $form_object = $form_state->getFormObject(); + /* var $entity \Drupal\media\MediaInterface */ + $entity = $form_object->getEntity(); + } + + $delta = $element['#delta']; + $fieldDefinition = $entity->getFieldDefinition('image'); + + $keys = [$element['#entity_type']]; + $keys[] = $entity->id() ? $entity->id() : 0; + if (method_exists($fieldDefinition, 'id')) { + $field_definition_id = str_replace('.', '--', $fieldDefinition->id()); + } + else { + $field_definition_id = "{$entity->getEntityTypeId()}--{$entity->bundle()}--{$fieldDefinition->getName()}"; + } + + $keys[] = $field_definition_id; + $keys[] = $delta; + $keys[] = 'alt'; + + $key = implode('-', $keys); + + $element['alt']['#attributes']['class'][] = $key; + $element['alt']['#attributes']['class'][] = 'textfield-counter-element'; + $element['alt']['#attributes']['data-field-definition-id'] = $field_definition_id; + + $element['alt']['#attached']['library'][] = 'textfield_counter/counter'; + $element['alt']['#attached']['drupalSettings']['textfieldCounter'][$key]['key'][$delta] = $key; + $element['alt']['#attached']['drupalSettings']['textfieldCounter'][$key]['maxlength'] = (int) self::MAX_LENGTH; + $element['alt']['#attached']['drupalSettings']['textfieldCounter'][$key]['counterPosition'] = $position; + $element['alt']['#attached']['drupalSettings']['textfieldCounter'][$key]['textCountStatusMessage'] = 'Characters remaining: @remaining_count'; + + $element['alt']['#attached']['drupalSettings']['textfieldCounter'][$key]['preventSubmit'] = TRUE; + + $element['alt']['#attached']['drupalSettings']['textfieldCounter'][$key]['countHTMLCharacters'] = self::COUNT_HTML; + + } + + // Return the altered element. + return $element; + } + + /** + * Custom validation of image widget alt text field. + * + * @param array $element + * The image widget alt text element. + * @param \Drupal\Core\Form\FormStateInterface $formState + * The form state. + */ + public static function validateAltText(array $element, FormStateInterface $formState) { + // Only perform validation if the function is triggered from other places + // than the image process form. We don't want this validation to run when an + // image was just uploaded, and they haven't had an opportunity to provide + // the alt text. ImageWidget does this too, see ::validateRequiredFields. + $triggering_element = $formState->getTriggeringElement(); + if (!empty($triggering_element['#submit']) && in_array('file_managed_file_submit', $triggering_element['#submit'], TRUE)) { + $formState->setLimitValidationErrors([]); + return; + } + + $parents = $element['#parents']; + array_pop($parents); + + // Back out if no image was submitted. + $fid_form_element = array_merge($parents, ['fids']); + if (empty($formState->getValue($fid_form_element))) { + return; + } + + $logger = \Drupal::logger('va_gov_media'); + $value = $formState->getValue($element['#parents']); + $value_length = static::getLengthOfSubmittedValue($value); + if ($value_length > self::MAX_LENGTH) { + $formState->setErrorByName(implode('][', $element['#parents']), t('Alternative text cannot be longer than 150 characters.')); + $logger->error("[CC] Alternative text ({$value}) cannot be longer than 150 characters. {$value_length} characters were submitted."); + } + + if (preg_match('/\.(jpg|jpeg|png|gif)$/i', $value)) { + $formState->setErrorByName(implode('][', $element['#parents']), t('Alternative text cannot contain file names.')); + $logger->error("[FN] Alternative text cannot contain file names. {$value} was submitted."); + } + + if (preg_match('/(image|photo|graphic|picture) of/i', $value)) { + $formState->setErrorByName(implode('][', $element['#parents']), t('Alternative text cannot contain phrases like “image of”, “photo of”, “graphic of”, “picture of”, etc.')); + $logger->error("[RP] Alternative text cannot contain repetitive phrases. {$value} was submitted."); + } + } + + /** + * Get the length of the submitted text value. + * + * @param string $value + * The value whose length is to be calculated. + * + * @return int + * The length of the value. + */ + public static function getLengthOfSubmittedValue(string $value): int { + $parts = explode(PHP_EOL, $value); + $newline_count = count($parts) - 1; + + if (self::COUNT_HTML) { + $value_length = mb_strlen($value) - $newline_count; + } + else { + $value_length = str_replace(' ', ' ', $value); + $value_length = trim($value_length); + $value_length = preg_replace("/(\r?\n|\r)+/", "\n", $value_length); + $value_length = mb_strlen(strip_tags($value_length)); + } + + return $value_length; + } + +} diff --git a/docroot/modules/custom/va_gov_media/va_gov_media.info.yml b/docroot/modules/custom/va_gov_media/va_gov_media.info.yml index e2d945d8963..3d4f8130431 100644 --- a/docroot/modules/custom/va_gov_media/va_gov_media.info.yml +++ b/docroot/modules/custom/va_gov_media/va_gov_media.info.yml @@ -3,3 +3,7 @@ type: module description: 'Manage images and other media' core_version_requirement: ^9 || ^10 package: 'Custom' + +dependencies: + - drupal:clientside_validation + - drupal:clientside_validation_jquery diff --git a/docroot/modules/custom/va_gov_media/va_gov_media.libraries.yml b/docroot/modules/custom/va_gov_media/va_gov_media.libraries.yml new file mode 100644 index 00000000000..a26a5f6e2de --- /dev/null +++ b/docroot/modules/custom/va_gov_media/va_gov_media.libraries.yml @@ -0,0 +1,5 @@ +cv.alt-text.validate: + js: + js/alt_text_validation.js: {} + dependencies: + - clientside_validation_jquery/jquery.validate diff --git a/docroot/modules/custom/va_gov_media/va_gov_media.module b/docroot/modules/custom/va_gov_media/va_gov_media.module index f9970c83ced..745d2367af3 100644 --- a/docroot/modules/custom/va_gov_media/va_gov_media.module +++ b/docroot/modules/custom/va_gov_media/va_gov_media.module @@ -74,23 +74,10 @@ function _va_gov_media_image_style_warmer_warm_up(EntityInterface $entity) { } /** - * Changes the alt text description to be more helpful. - * - * @param array $element - * The element to change the alt text description. - * @param \Drupal\Core\Form\FormStateInterface $form_state - * The form state. - * @param array $form - * The form. - * - * @return array - * The element. + * Implements hook_clientside_validation_validator_info_alter(). */ -function _va_gov_media_image_field_widget_process(array $element, FormStateInterface &$form_state, array $form) { - if (isset($element['alt'])) { - $element['alt']['#description'] = t('Adding a clear and meaningful description of the image is important for accessibility.'); +function va_gov_media_clientside_validation_validator_info_alter(&$validators) { + foreach ($validators as &$validator) { + $validator['attachments']['library'][] = 'va_gov_media/cv.alt-text.validate'; } - - // Return the altered element. - return $element; } diff --git a/docroot/modules/custom/va_gov_media/va_gov_media.routing.yml b/docroot/modules/custom/va_gov_media/va_gov_media.routing.yml new file mode 100644 index 00000000000..7e4e00af327 --- /dev/null +++ b/docroot/modules/custom/va_gov_media/va_gov_media.routing.yml @@ -0,0 +1,8 @@ +va_gov_media.alt_text_validate: + path: /media/validate + defaults: + _title: 'Validate Alt Text' + _controller: '\Drupal\va_gov_media\Controller\AltTextValidationController::validate' + methods: ['POST'] + requirements: + _user_is_logged_in: 'TRUE' diff --git a/docroot/modules/custom/va_gov_media/va_gov_media.services.yml b/docroot/modules/custom/va_gov_media/va_gov_media.services.yml new file mode 100644 index 00000000000..97babefb39a --- /dev/null +++ b/docroot/modules/custom/va_gov_media/va_gov_media.services.yml @@ -0,0 +1,8 @@ +services: + logger.channel.va_gov_media: + parent: logger.channel_base + arguments: [ 'va_gov_media' ] + va_gov_media.event_subscriber: + class: Drupal\va_gov_media\EventSubscriber\MediaEventSubscriber + tags: + - { name: event_subscriber } diff --git a/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss b/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss index b6d17bdb7d9..2578550a089 100644 --- a/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss +++ b/docroot/themes/custom/vagovclaro/assets/scss/components/_fields.scss @@ -227,6 +227,17 @@ body:not(.role-admin) { margin-left: var(--spacing-xl); } +.form-item--media-0-fields-image-0-alt, +.form-item--image-0-alt { + .form-item--error-message { + margin: 5px 0; + } +} + +#edit-field-publish-to-outreach-cal-wrapper div.form-item--field-publish-to-outreach-cal-value { + margin-left: auto; +} + #edit-field-publish-to-outreach-cal-wrapper label { margin-left: var(--spacing-xs); } diff --git a/docroot/themes/custom/vagovclaro/assets/scss/components/_media.scss b/docroot/themes/custom/vagovclaro/assets/scss/components/_media.scss index 0af2976882e..aea6e81ecab 100644 --- a/docroot/themes/custom/vagovclaro/assets/scss/components/_media.scss +++ b/docroot/themes/custom/vagovclaro/assets/scss/components/_media.scss @@ -52,3 +52,37 @@ max-width: calc(100% - 1.7rem); } } + +.form-item--image-0 { + .form-managed-file.no-upload { + display: flex; + } +} + +.image-widget { + &.form-managed-file.has-meta .form-managed-file__image-preview { + margin: 0 0 1rem 1rem; + max-width: 600px; + } + + .form-managed-file__main { + display: flex; + } + + .form-managed-file__meta-items { + .form-item__description { + margin-right: 16px; + } + } + + .image-preview__img-wrapper { + box-shadow: unset; + display: flex; + flex-direction: row; + justify-content: end; + + img { + width: 100%; + } + } +} diff --git a/docroot/themes/custom/vagovclaro/templates/content-edit/file-managed-file.html.twig b/docroot/themes/custom/vagovclaro/templates/content-edit/file-managed-file.html.twig index 3df68c5278a..3c9c482b1e2 100644 --- a/docroot/themes/custom/vagovclaro/templates/content-edit/file-managed-file.html.twig +++ b/docroot/themes/custom/vagovclaro/templates/content-edit/file-managed-file.html.twig @@ -40,13 +40,6 @@ {% if has_meta or data.preview %}
- {% if data.preview %} -
-
- {{ data.preview }} -
-
- {% endif %} {% if data.description or display or data.alt or data.title %}
{{ data.description }} @@ -63,22 +56,28 @@ {% set inlineguidance %}

Best practices

    -
  • Be accurate and descriptive, clearly identifying the main purpose of the image.
  • -
  • Be concise, ideally no more that 150 characters.
  • -
  • Avoid phrases like “image of”, “photo of”, “graphic of”, etc.
  • -
  • Leave the file name of the image out of the alt text.
  • -
  • Learn more about alt text guidelines
  • +
  • Be accurate and descriptive.
  • +
  • Don’t use phrases that screen readers already use to describe images such as “image of”, “photo of”, “graphic of”, or “picture of”.
  • +
  • Don't use the name of the image file as alt text. This does not provide clear information to people that use a screen reader.
  • +
  • Learn more about alt text guidelines (opens in a new tab)
{% endset %} {% include '@components/inline-guidance/text-box.twig' with { "content": inlineguidance, - "classes": 'show', + "classes": 'hide', } %} {{ data.alt|without('#title', '#description') }} {{ data.title }}
{% endif %} + {% if data.preview %} +
+
+ {{ data.preview }} +
+
+ {% endif %}
{% endif %} diff --git a/patches/2949540-31.patch b/patches/2949540-31.patch new file mode 100644 index 00000000000..55487454f1f --- /dev/null +++ b/patches/2949540-31.patch @@ -0,0 +1,219 @@ +diff --git a/clientside_validation.links.menu.yml b/clientside_validation.links.menu.yml +new file mode 100644 +index 0000000..0803f80 +--- /dev/null ++++ b/clientside_validation.links.menu.yml +@@ -0,0 +1,5 @@ ++clientside_validation.settings_form: ++ title: 'Clientside Validation Settings' ++ description: 'Configure clientside validation settings.' ++ route_name: clientside_validation.settings_form ++ parent: system.admin_config_ui +diff --git a/clientside_validation.module b/clientside_validation.module +index 50fa8b3..6da4e71 100644 +--- a/clientside_validation.module ++++ b/clientside_validation.module +@@ -12,7 +12,49 @@ use Drupal\Core\Render\Element; + * Implements hook_form_alter(). + */ + function clientside_validation_form_alter(&$form, FormStateInterface &$form_state, $form_id) { +- $form['#after_build'][] = 'clientside_validation_form_after_build'; ++ $config = \Drupal::config('clientside_validation.settings'); ++ ++ // Add cache tags for the config. ++ if (!empty($form['#cache']['tags'])) { ++ $form['#cache']['tags'] = array_merge($form['#cache']['tags'], $config->getCacheTags()); ++ } ++ else { ++ $form['#cache']['tags'] = $config->getCacheTags(); ++ } ++ ++ // If enabled for all forms, add the after build function. ++ $enable_all_forms = $config->get('enable_all_forms'); ++ if ($enable_all_forms) { ++ $form['#after_build'][] = 'clientside_validation_form_after_build'; ++ } ++ // Else, add it only if the form ID was added in configuration. ++ else { ++ $enabled_forms = $config->get('enabled_forms'); ++ if (!empty($enabled_forms) && in_array($form_id, $enabled_forms)) { ++ $form['#after_build'][] = 'clientside_validation_form_after_build'; ++ } ++ } ++ ++ // Webform has its own checkbox for disabling clientside validation, ++ // making it always enabled unless there is a novalidate attribute. ++ if ( ++ substr($form_id, 0, 19) == 'webform_submission_' && ++ !empty($form['#webform_id']) && ++ isset($form['#after_build']) && ++ !in_array('clientside_validation_form_after_build', $form['#after_build']) ++ ) { ++ $form['#after_build'][] = 'clientside_validation_form_after_build'; ++ } ++ ++ // Remove the clientside validation if the novalidate attribute was set. ++ if ( ++ isset($form['#attributes']['novalidate']) && ++ isset($form['#after_build']) && ++ in_array('clientside_validation_form_after_build', $form['#after_build']) ++ ) { ++ $validation_key = array_search('clientside_validation_form_after_build', $form['#after_build']); ++ unset($form['#after_build'][$validation_key]); ++ } + } + + /** +diff --git a/clientside_validation.permissions.yml b/clientside_validation.permissions.yml +new file mode 100644 +index 0000000..579ecaa +--- /dev/null ++++ b/clientside_validation.permissions.yml +@@ -0,0 +1,4 @@ ++administer clientside validation: ++ description: 'Grants access to the clientside validation configuration form.' ++ title: 'Administer clientside validation' ++ restrict access: TRUE +diff --git a/clientside_validation.routing.yml b/clientside_validation.routing.yml +new file mode 100644 +index 0000000..9cf0f16 +--- /dev/null ++++ b/clientside_validation.routing.yml +@@ -0,0 +1,7 @@ ++clientside_validation.settings_form: ++ path: '/admin/config/user-interface/clientside-validation' ++ defaults: ++ _form: '\Drupal\clientside_validation\Form\ClientsideValidationSettingsForm' ++ _title: 'Clientside Validation Settings' ++ requirements: ++ _permission: 'administer clientside validation' +diff --git a/config/install/clientside_validation.settings.yml b/config/install/clientside_validation.settings.yml +new file mode 100644 +index 0000000..dd9fdb9 +--- /dev/null ++++ b/config/install/clientside_validation.settings.yml +@@ -0,0 +1,2 @@ ++enable_all_forms: true ++enabled_forms: { } +diff --git a/config/schema/clientside_validation.schema.yml b/config/schema/clientside_validation.schema.yml +new file mode 100644 +index 0000000..6f8ec51 +--- /dev/null ++++ b/config/schema/clientside_validation.schema.yml +@@ -0,0 +1,12 @@ ++clientside_validation.settings: ++ type: config_object ++ mapping: ++ enable_all_forms: ++ type: boolean ++ label: 'Setting to enable all forms for clientside validation' ++ enabled_forms: ++ type: sequence ++ label: 'A list of clientside validation enabled forms' ++ sequence: ++ type: string ++ label: 'The form ID' +diff --git a/src/Form/ClientsideValidationSettingsForm.php b/src/Form/ClientsideValidationSettingsForm.php +new file mode 100644 +index 0000000..36b2547 +--- /dev/null ++++ b/src/Form/ClientsideValidationSettingsForm.php +@@ -0,0 +1,98 @@ ++config('clientside_validation.settings'); ++ ++ // Add a note in regards to the overrides with the novalidate attribute. ++ $form['novalidate_note'] = [ ++ '#markup' => $this->t('Forms with the "novalidate" attribute will not have clientside validation enabled, regardless of these settings.'), ++ ]; ++ ++ // General enabling for all forms. ++ $form['enable_all_forms'] = [ ++ '#type' => 'checkbox', ++ '#title' => $this->t('Use Clientside Validation in all forms'), ++ '#description' => $this->t('Enable Clientside Validation for all forms on this site.'), ++ '#default_value' => $config->get('enable_all_forms'), ++ ]; ++ ++ // Enabled forms. ++ $enabled_forms = (!empty($config->get('enabled_forms'))) ? $config->get('enabled_forms') : []; ++ $form['enabled_forms'] = [ ++ '#type' => 'textarea', ++ '#title' => $this->t('Clientside Validation Enabled Forms'), ++ '#description' => $this->t('Enter form IDs for all forms that should have clientside validation enabled, separated by a new line.'), ++ '#default_value' => implode(PHP_EOL, $enabled_forms), ++ '#states' => [ ++ // Hide this textarea when all forms are enabled. ++ 'invisible' => [ ++ 'input[name="enable_all_forms"]' => ['checked' => TRUE], ++ ], ++ ], ++ ]; ++ ++ return $form; ++ } ++ ++ /** ++ * {@inheritdoc} ++ */ ++ public function submitForm(array &$form, FormStateInterface $form_state) { ++ parent::submitForm($form, $form_state); ++ $config = $this->config('clientside_validation.settings'); ++ $values = $form_state->getValues(); ++ ++ $config->set('enable_all_forms', $values['enable_all_forms']); ++ $enabled_forms = preg_split("[\n|\r]", $values['enabled_forms']); ++ $enabled_forms = array_filter($enabled_forms); ++ $config->set('enabled_forms', $enabled_forms); ++ $config->save(); ++ } ++ ++} diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 744efcbf120..211a18632c7 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -494,3 +494,8 @@ parameters: message: "#^Variable \\$process might not be defined\\.$#" count: 7 path: tests/scaling_performance.php + + - + message: "#^Call to an undefined method Drupal\\\\Core\\\\\Form\\\\\FormInterface\\:\\:getEntity\\(\\)\\.$#" + count: 1 + path: docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php diff --git a/tests/cypress/integration/features/platform/alt_text_validation.feature b/tests/cypress/integration/features/platform/alt_text_validation.feature new file mode 100644 index 00000000000..a818c5967eb --- /dev/null +++ b/tests/cypress/integration/features/platform/alt_text_validation.feature @@ -0,0 +1,42 @@ + +Feature: Alt-Text Validation + In order to enhance the veteran experience + As an editor + I need just-in-time guidance as to best practices surrounding alt-text content + + Scenario: An editor supplies verbose alt-text content (server-side validation) + Given I am logged in as a user with the "administrator" role + When I save an image with 152 characters of alt-text content + Then I should see "Alternative text cannot be longer than 150 characters." + + Scenario: An editor supplies redundant alt-text content (server-side validation) + Given I am logged in as a user with the "administrator" role + When I save an image with "Image of polygon" as alt-text + Then I should see "Alternative text cannot contain phrases like “image of”, “photo of”, “graphic of”, “picture of”, etc." + + Scenario: An editor supplies the name of the image file as alt-text content (server-side validation) + Given I am logged in as a user with the "administrator" role + When I save an image with "polygon_image.png" as alt-text + Then I should see "Alternative text cannot contain file names." + + Scenario: An editor supplies verbose alt-text content (element blur validation) + Given I am logged in as a user with the "administrator" role + When I create an image with 152 characters of alt-text content + Then I should see "Alternative text cannot be longer than 150 characters." + + Scenario: An editor supplies redundant alt-text content (element blur validation) + Given I am logged in as a user with the "administrator" role + When I create an image with "Image of polygon" as alt-text + Then I should see "Alternative text cannot contain phrases like “image of”, “photo of”, “graphic of”, “picture of”, etc." + + Scenario: An editor supplies the name of the image file as alt-text content (element blur validation) + Given I am logged in as a user with the "administrator" role + When I create an image with "polygon_image.png" as alt-text + Then I should see "Alternative text cannot contain file names." + + Scenario: An editor supplies the name of the image file and then correctly edits field + Given I am logged in as a user with the "administrator" role + When I create an image with "polygon_image.png" as alt-text + Then I should see "Alternative text cannot contain file names." + When I update alt-text content to display "a simple polygon placeholder" + Then I should see no error message diff --git a/tests/cypress/integration/step_definitions/common/i_create_an_image_with_alt_text.js b/tests/cypress/integration/step_definitions/common/i_create_an_image_with_alt_text.js new file mode 100644 index 00000000000..4b4a52a5ee3 --- /dev/null +++ b/tests/cypress/integration/step_definitions/common/i_create_an_image_with_alt_text.js @@ -0,0 +1,59 @@ +import { When, Then } from "@badeball/cypress-cucumber-preprocessor"; +import { faker } from "@faker-js/faker"; + +const navigateToAndFillMediaForm = () => { + cy.visit("/media/add/image"); + cy.injectAxe(); + cy.scrollTo("top"); + cy.findAllByLabelText("Name").type(`[Test Data] ${faker.lorem.sentence()}`, { + force: true, + }); + cy.findAllByLabelText("Description").type(faker.lorem.sentence(), { + force: true, + }); + cy.findAllByLabelText("Section").select("VACO"); + cy.get("#edit-image-0-upload") + .attachFile("images/polygon_image.png") + .wait(1000); +}; + +const focusOnNameField = () => { + cy.findAllByLabelText("Name").focus(); +}; + +When("I create an image with {string} as alt-text", (altTextContent) => { + navigateToAndFillMediaForm(); + cy.findAllByLabelText("Alternative text").type(altTextContent, { + force: true, + }); + focusOnNameField(); +}); + +When( + "I create an image with {int} characters of alt-text content", + (charCount) => { + navigateToAndFillMediaForm(); + cy.findAllByLabelText("Alternative text").type( + faker.helpers.repeatString("a", charCount), + { + force: true, + } + ); + focusOnNameField(); + } +); + +When("I update alt-text content to display {string}", (altTextContent) => { + cy.findAllByLabelText("Alternative text").clear(); + cy.findAllByLabelText("Alternative text").type(altTextContent, { + force: true, + }); +}); + +Then("I should see no error message", () => { + cy.get("div.form-item--error-message > strong").should( + "have.attr", + "style", + "display: none;" + ); +}); diff --git a/tests/cypress/integration/step_definitions/common/i_save_an_image_with_alt_text.js b/tests/cypress/integration/step_definitions/common/i_save_an_image_with_alt_text.js new file mode 100644 index 00000000000..900ad1954f1 --- /dev/null +++ b/tests/cypress/integration/step_definitions/common/i_save_an_image_with_alt_text.js @@ -0,0 +1,45 @@ +import { When } from "@badeball/cypress-cucumber-preprocessor"; +import { faker } from "@faker-js/faker"; + +const navigateToAndFillMediaForm = () => { + cy.visit("/media/add/image"); + cy.injectAxe(); + cy.scrollTo("top"); + cy.findAllByLabelText("Name").type(`[Test Data] ${faker.lorem.sentence()}`, { + force: true, + }); + cy.findAllByLabelText("Description").type(faker.lorem.sentence(), { + force: true, + }); + cy.findAllByLabelText("Section").select("VACO"); + cy.get("#edit-image-0-upload") + .attachFile("images/polygon_image.png") + .wait(1000); +}; + +const clickSaveButton = () => { + cy.get("form.media-form input#edit-submit").click(); + cy.wait(1000); +}; + +When("I save an image with {string} as alt-text", (altTextContent) => { + navigateToAndFillMediaForm(); + cy.findAllByLabelText("Alternative text").type(altTextContent, { + force: true, + }); + clickSaveButton(); +}); + +When( + "I save an image with {int} characters of alt-text content", + (charCount) => { + navigateToAndFillMediaForm(); + cy.findAllByLabelText("Alternative text").type( + faker.helpers.repeatString("a", charCount), + { + force: true, + } + ); + clickSaveButton(); + } +); From 48a33f99e16eaa48e823a9c9149af75c8ea1ab97 Mon Sep 17 00:00:00 2001 From: Jill Adams <85581471+jilladams@users.noreply.github.com> Date: Wed, 10 Jan 2024 16:03:06 -0800 Subject: [PATCH 02/42] [docs] Update pw-clp-request.md --- .github/ISSUE_TEMPLATE/pw-clp-request.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/pw-clp-request.md b/.github/ISSUE_TEMPLATE/pw-clp-request.md index 76fe9cc1527..11d040cac61 100644 --- a/.github/ISSUE_TEMPLATE/pw-clp-request.md +++ b/.github/ISSUE_TEMPLATE/pw-clp-request.md @@ -25,6 +25,15 @@ Help desk ticket: - [ ] Name of submitter (if applicable) Submitter: +- Campaign title: +- Who the editor(s) will be for the Campaign Landing Page and any appropriate stakeholders for awareness: +- The goals/outcomes you are looking to achieve with the campaign: +- Outcome success measurement & how it will be measured (note: "Page views" is not a generally accepted success measurement): +- Target Audience(s): +- Campaign start/end dates: +- Is this a seasonal campaign? +- If not: when campaign ends, should campaign page be archived or redirected? +- If redirected, where should it redirect? ## Acceptance criteria From 527788d65a6c4eead458ad1b0d33a2cf0a8689ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 20:05:43 -0600 Subject: [PATCH 03/42] Bump va-gov/content-build from 0.0.3417 to 0.0.3418 (#16818) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3417 to 0.0.3418. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3417...v0.0.3418) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 372eda027c8..94cab6d0fcb 100644 --- a/composer.json +++ b/composer.json @@ -223,7 +223,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3417", + "va-gov/content-build": "^0.0.3418", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index c7f79601c01..5e96fad2ea6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "519122c85d79517c409d1c39cf3c0b00", + "content-hash": "21c59271e15bc0551ecc0096ed1c62ff", "packages": [ { "name": "asm89/stack-cors", @@ -25775,16 +25775,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3417", + "version": "v0.0.3418", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "62ce570e4c1a240c46381ca02a635ea191aa82ec" + "reference": "31943d821cadcb209e7c051ad45cebc88e3d7195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/62ce570e4c1a240c46381ca02a635ea191aa82ec", - "reference": "62ce570e4c1a240c46381ca02a635ea191aa82ec", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/31943d821cadcb209e7c051ad45cebc88e3d7195", + "reference": "31943d821cadcb209e7c051ad45cebc88e3d7195", "shasum": "" }, "type": "node-project", @@ -25811,9 +25811,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3417" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3418" }, - "time": "2024-01-08T21:06:54+00:00" + "time": "2024-01-10T19:00:37+00:00" }, { "name": "vlucas/phpdotenv", @@ -26808,6 +26808,7 @@ "drupal/entity_block": 10, "drupal/entity_clone": 15, "drupal/entity_diff_ui": 15, + "drupal/entity_field_fetch": 10, "drupal/entity_reference_hierarchy": 10, "drupal/entity_reference_validators": 15, "drupal/entity_route_context": 5, @@ -26845,5 +26846,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From 09f51dc269580ca3abff6c7038aeda6d669fe1fa Mon Sep 17 00:00:00 2001 From: Christian Burk Date: Thu, 11 Jan 2024 12:40:55 -0600 Subject: [PATCH 04/42] VACMS-16522: Move VAMC System pages to restricted_archive workflow (#16779) * VACMS-16522: Changes workflow config to restricted archive * VACMS-16522: Changes form displays to restricted archive * VACMS-16522: Adds hook_update_N for revision db updates --- ...y.node.health_care_region_page.default.yml | 2 +- ...display.node.locations_listing.default.yml | 2 +- ...mc_operating_status_and_alerts.default.yml | 2 +- ....vamc_system_billing_insurance.default.yml | 2 +- ...mc_system_medical_records_offi.default.yml | 2 +- ...node.vamc_system_policies_page.default.yml | 2 +- ....vamc_system_register_for_care.default.yml | 2 +- ...lay.node.vamc_system_va_police.default.yml | 2 +- config/sync/workflows.workflow.editorial.yml | 16 ------------ .../workflows.workflow.restricted_archive.yml | 16 ++++++++++++ .../va_gov_workflow/va_gov_workflow.install | 26 +++++++++++++++++++ 11 files changed, 50 insertions(+), 24 deletions(-) diff --git a/config/sync/core.entity_form_display.node.health_care_region_page.default.yml b/config/sync/core.entity_form_display.node.health_care_region_page.default.yml index f72aca1fde6..5a013764e5f 100644 --- a/config/sync/core.entity_form_display.node.health_care_region_page.default.yml +++ b/config/sync/core.entity_form_display.node.health_care_region_page.default.yml @@ -26,7 +26,7 @@ dependencies: - field.field.node.health_care_region_page.field_vamc_system_official_name - field.field.node.health_care_region_page.field_youtube - node.type.health_care_region_page - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - content_moderation - field_group diff --git a/config/sync/core.entity_form_display.node.locations_listing.default.yml b/config/sync/core.entity_form_display.node.locations_listing.default.yml index ca779bc2759..dfd98c48821 100644 --- a/config/sync/core.entity_form_display.node.locations_listing.default.yml +++ b/config/sync/core.entity_form_display.node.locations_listing.default.yml @@ -10,7 +10,7 @@ dependencies: - field.field.node.locations_listing.field_meta_tags - field.field.node.locations_listing.field_office - node.type.locations_listing - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - allow_only_one - content_moderation diff --git a/config/sync/core.entity_form_display.node.vamc_operating_status_and_alerts.default.yml b/config/sync/core.entity_form_display.node.vamc_operating_status_and_alerts.default.yml index 44714eca67e..d48cf3b36e5 100644 --- a/config/sync/core.entity_form_display.node.vamc_operating_status_and_alerts.default.yml +++ b/config/sync/core.entity_form_display.node.vamc_operating_status_and_alerts.default.yml @@ -14,7 +14,7 @@ dependencies: - field.field.node.vamc_operating_status_and_alerts.field_office - field.field.node.vamc_operating_status_and_alerts.field_operating_status_emerg_inf - node.type.vamc_operating_status_and_alerts - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - allow_only_one - content_moderation diff --git a/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml b/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml index 47f11523595..2eeb0bdbaab 100644 --- a/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml +++ b/config/sync/core.entity_form_display.node.vamc_system_billing_insurance.default.yml @@ -17,7 +17,7 @@ dependencies: - field.field.node.vamc_system_billing_insurance.field_phone_number - field.field.node.vamc_system_billing_insurance.field_service_name_and_descripti - node.type.vamc_system_billing_insurance - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - allow_only_one - content_moderation diff --git a/config/sync/core.entity_form_display.node.vamc_system_medical_records_offi.default.yml b/config/sync/core.entity_form_display.node.vamc_system_medical_records_offi.default.yml index 2a3cc6f5153..bf5bfece834 100644 --- a/config/sync/core.entity_form_display.node.vamc_system_medical_records_offi.default.yml +++ b/config/sync/core.entity_form_display.node.vamc_system_medical_records_offi.default.yml @@ -21,7 +21,7 @@ dependencies: - field.field.node.vamc_system_medical_records_offi.field_service_name_and_descripti - field.field.node.vamc_system_medical_records_offi.field_vamc_med_records_mailing - node.type.vamc_system_medical_records_offi - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - address - allow_only_one diff --git a/config/sync/core.entity_form_display.node.vamc_system_policies_page.default.yml b/config/sync/core.entity_form_display.node.vamc_system_policies_page.default.yml index f0e1275d33a..8cf2c8fe1bd 100644 --- a/config/sync/core.entity_form_display.node.vamc_system_policies_page.default.yml +++ b/config/sync/core.entity_form_display.node.vamc_system_policies_page.default.yml @@ -15,7 +15,7 @@ dependencies: - field.field.node.vamc_system_policies_page.field_vamc_other_policies - field.field.node.vamc_system_policies_page.field_vamc_visitation_policy - node.type.vamc_system_policies_page - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - allow_only_one - content_moderation diff --git a/config/sync/core.entity_form_display.node.vamc_system_register_for_care.default.yml b/config/sync/core.entity_form_display.node.vamc_system_register_for_care.default.yml index 5f48b5cdade..67262f7c825 100644 --- a/config/sync/core.entity_form_display.node.vamc_system_register_for_care.default.yml +++ b/config/sync/core.entity_form_display.node.vamc_system_register_for_care.default.yml @@ -14,7 +14,7 @@ dependencies: - field.field.node.vamc_system_register_for_care.field_office - field.field.node.vamc_system_register_for_care.field_service_name_and_descripti - node.type.vamc_system_register_for_care - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - allow_only_one - content_moderation diff --git a/config/sync/core.entity_form_display.node.vamc_system_va_police.default.yml b/config/sync/core.entity_form_display.node.vamc_system_va_police.default.yml index 7f38f10b754..dbd802eb5c2 100644 --- a/config/sync/core.entity_form_display.node.vamc_system_va_police.default.yml +++ b/config/sync/core.entity_form_display.node.vamc_system_va_police.default.yml @@ -15,7 +15,7 @@ dependencies: - field.field.node.vamc_system_va_police.field_office - field.field.node.vamc_system_va_police.field_phone_numbers_paragraph - node.type.vamc_system_va_police - - workflows.workflow.editorial + - workflows.workflow.restricted_archive module: - allow_only_one - change_labels diff --git a/config/sync/workflows.workflow.editorial.yml b/config/sync/workflows.workflow.editorial.yml index 1cba2486a1f..8f2215978c5 100644 --- a/config/sync/workflows.workflow.editorial.yml +++ b/config/sync/workflows.workflow.editorial.yml @@ -20,11 +20,9 @@ dependencies: - node.type.health_care_local_facility - node.type.health_care_local_health_service - node.type.health_care_region_detail_page - - node.type.health_care_region_page - node.type.health_services_listing - node.type.landing_page - node.type.leadership_listing - - node.type.locations_listing - node.type.media_list_images - node.type.media_list_videos - node.type.nca_facility @@ -44,12 +42,6 @@ dependencies: - node.type.support_resources_detail_page - node.type.support_service - node.type.va_form - - node.type.vamc_operating_status_and_alerts - - node.type.vamc_system_billing_insurance - - node.type.vamc_system_medical_records_offi - - node.type.vamc_system_policies_page - - node.type.vamc_system_register_for_care - - node.type.vamc_system_va_police - node.type.vba_facility_service - node.type.vet_center - node.type.vet_center_cap @@ -161,11 +153,9 @@ type_settings: - health_care_local_facility - health_care_local_health_service - health_care_region_detail_page - - health_care_region_page - health_services_listing - landing_page - leadership_listing - - locations_listing - media_list_images - media_list_videos - nca_facility @@ -185,12 +175,6 @@ type_settings: - support_resources_detail_page - support_service - va_form - - vamc_operating_status_and_alerts - - vamc_system_billing_insurance - - vamc_system_medical_records_offi - - vamc_system_policies_page - - vamc_system_register_for_care - - vamc_system_va_police - vba_facility_service - vet_center - vet_center_cap diff --git a/config/sync/workflows.workflow.restricted_archive.yml b/config/sync/workflows.workflow.restricted_archive.yml index 71d33174fda..731793da067 100644 --- a/config/sync/workflows.workflow.restricted_archive.yml +++ b/config/sync/workflows.workflow.restricted_archive.yml @@ -3,7 +3,15 @@ langcode: en status: true dependencies: config: + - node.type.health_care_region_page + - node.type.locations_listing - node.type.service_region + - node.type.vamc_operating_status_and_alerts + - node.type.vamc_system_billing_insurance + - node.type.vamc_system_medical_records_offi + - node.type.vamc_system_policies_page + - node.type.vamc_system_register_for_care + - node.type.vamc_system_va_police - node.type.vba_facility module: - content_moderation @@ -91,6 +99,14 @@ type_settings: weight: 2 entity_types: node: + - health_care_region_page + - locations_listing - service_region + - vamc_operating_status_and_alerts + - vamc_system_billing_insurance + - vamc_system_medical_records_offi + - vamc_system_policies_page + - vamc_system_register_for_care + - vamc_system_va_police - vba_facility default_moderation_state: draft diff --git a/docroot/modules/custom/va_gov_workflow/va_gov_workflow.install b/docroot/modules/custom/va_gov_workflow/va_gov_workflow.install index cad35552694..6edabbda72a 100644 --- a/docroot/modules/custom/va_gov_workflow/va_gov_workflow.install +++ b/docroot/modules/custom/va_gov_workflow/va_gov_workflow.install @@ -67,3 +67,29 @@ function va_gov_workflow_update_9001() { $contentType, $oldWorkflow, $newWorklow ); } + +/** + * Change the workflow of the revisions of VAMC system pages. + */ +function va_gov_workflow_update_9002() { + $contentTypes = [ + 'health_care_region_page', + 'locations_listing', + 'vamc_operating_status_and_alerts', + 'vamc_system_billing_insurance', + 'vamc_system_medical_records_offi', + 'vamc_system_policies_page', + 'vamc_system_register_for_care', + 'vamc_system_va_police', + ]; + $message = ''; + foreach ($contentTypes as $contentType) { + $oldWorkflow = 'editorial'; + $newWorkflow = 'restricted_archive'; + $message .= _va_gov_workflow_change_content_type_workflow( + $contentType, $oldWorkflow, $newWorkflow + ) . PHP_EOL; + } + return $message; + +} From a2fb32ac5b23078e1c42120f97fda692b5573f35 Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Thu, 11 Jan 2024 13:42:13 -0500 Subject: [PATCH 05/42] VACMS-16146 Add VBA banner cypress test. (#16737) * VACMS-16146 Reorganize Facilities Cypress tests. * Add check for banner element visibility. * VACMS-16146 Verify that disabled VBA banner data does not persist. --- .../facilities/facilities_api.feature | 0 .../vamc}/full_width_banner_alert.feature | 0 .../vamc}/health_care_local_facility.feature | 0 .../health_care_local_health_service.feature | 0 .../health_care_region_detail_page.feature | 0 .../regional_health_care_service_des.feature | 0 .../facilities/vamc}/vamc_lovell.feature | 0 .../vamc_operating_status_and_alerts.feature | 0 .../facilities/vba/vba_facility.feature | 47 +++++++++++++++++++ .../content_type/vba_facility.feature | 12 ----- tests/cypress/integration/weights.json | 2 +- 11 files changed, 48 insertions(+), 13 deletions(-) rename tests/cypress/integration/features/{ => content_type}/facilities/facilities_api.feature (100%) rename tests/cypress/integration/features/content_type/{ => facilities/vamc}/full_width_banner_alert.feature (100%) rename tests/cypress/integration/features/content_type/{ => facilities/vamc}/health_care_local_facility.feature (100%) rename tests/cypress/integration/features/content_type/{ => facilities/vamc}/health_care_local_health_service.feature (100%) rename tests/cypress/integration/features/content_type/{ => facilities/vamc}/health_care_region_detail_page.feature (100%) rename tests/cypress/integration/features/content_type/{ => facilities/vamc}/regional_health_care_service_des.feature (100%) rename tests/cypress/integration/features/{facilities => content_type/facilities/vamc}/vamc_lovell.feature (100%) rename tests/cypress/integration/features/content_type/{ => facilities/vamc}/vamc_operating_status_and_alerts.feature (100%) create mode 100644 tests/cypress/integration/features/content_type/facilities/vba/vba_facility.feature delete mode 100644 tests/cypress/integration/features/content_type/vba_facility.feature diff --git a/tests/cypress/integration/features/facilities/facilities_api.feature b/tests/cypress/integration/features/content_type/facilities/facilities_api.feature similarity index 100% rename from tests/cypress/integration/features/facilities/facilities_api.feature rename to tests/cypress/integration/features/content_type/facilities/facilities_api.feature diff --git a/tests/cypress/integration/features/content_type/full_width_banner_alert.feature b/tests/cypress/integration/features/content_type/facilities/vamc/full_width_banner_alert.feature similarity index 100% rename from tests/cypress/integration/features/content_type/full_width_banner_alert.feature rename to tests/cypress/integration/features/content_type/facilities/vamc/full_width_banner_alert.feature diff --git a/tests/cypress/integration/features/content_type/health_care_local_facility.feature b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_facility.feature similarity index 100% rename from tests/cypress/integration/features/content_type/health_care_local_facility.feature rename to tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_facility.feature diff --git a/tests/cypress/integration/features/content_type/health_care_local_health_service.feature b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature similarity index 100% rename from tests/cypress/integration/features/content_type/health_care_local_health_service.feature rename to tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature diff --git a/tests/cypress/integration/features/content_type/health_care_region_detail_page.feature b/tests/cypress/integration/features/content_type/facilities/vamc/health_care_region_detail_page.feature similarity index 100% rename from tests/cypress/integration/features/content_type/health_care_region_detail_page.feature rename to tests/cypress/integration/features/content_type/facilities/vamc/health_care_region_detail_page.feature diff --git a/tests/cypress/integration/features/content_type/regional_health_care_service_des.feature b/tests/cypress/integration/features/content_type/facilities/vamc/regional_health_care_service_des.feature similarity index 100% rename from tests/cypress/integration/features/content_type/regional_health_care_service_des.feature rename to tests/cypress/integration/features/content_type/facilities/vamc/regional_health_care_service_des.feature diff --git a/tests/cypress/integration/features/facilities/vamc_lovell.feature b/tests/cypress/integration/features/content_type/facilities/vamc/vamc_lovell.feature similarity index 100% rename from tests/cypress/integration/features/facilities/vamc_lovell.feature rename to tests/cypress/integration/features/content_type/facilities/vamc/vamc_lovell.feature diff --git a/tests/cypress/integration/features/content_type/vamc_operating_status_and_alerts.feature b/tests/cypress/integration/features/content_type/facilities/vamc/vamc_operating_status_and_alerts.feature similarity index 100% rename from tests/cypress/integration/features/content_type/vamc_operating_status_and_alerts.feature rename to tests/cypress/integration/features/content_type/facilities/vamc/vamc_operating_status_and_alerts.feature diff --git a/tests/cypress/integration/features/content_type/facilities/vba/vba_facility.feature b/tests/cypress/integration/features/content_type/facilities/vba/vba_facility.feature new file mode 100644 index 00000000000..375e546b2f5 --- /dev/null +++ b/tests/cypress/integration/features/content_type/facilities/vba/vba_facility.feature @@ -0,0 +1,47 @@ +@content_type__vba_facility +Feature: CMS User may effectively interact with the VBA Facility form + In order to confirm that cms user have access to the necessary functionality + As anyone involved in the project + I need to have certain functionality available + + Scenario: Log in and try to edit an archived VBA Facility as a VBA editor + When I am logged in as a user with the roles "content_creator_vba, content_publisher" + # Columbia VA Regional Benefit Office + And my workbench access sections are set to "1065" + # Fort Jackson Satelite office - an archived facility in that section. + Then I am at "/node/4071/" + Then the primary tab "View" should exist + Then the primary tab "Edit" should not exist + + Scenario: Enable banner segment and ensure expected fields are present + Given I am logged in as a user with the "content_admin" role + And my workbench access sections are set to "1065" + # Columbia VA Regional Benefit Office + When I am at "/node/4063/edit" + # Banner related fields should not be visible. + And I scroll to element '#edit-field-show-banner-value' + And I uncheck the "Display a banner alert on this facility" checkbox + Then I should not see an element with the selector "#edit-field-alert-type" + And I should not see an element with the selector "#edit-field-dismissible-option--wrapper" + And I should not see an element with the selector "#edit-field-banner-title-0-value" + And I should not see an element with the selector "#edit-field-banner-content-wrapper" + When I check the "Display a banner alert on this facility" checkbox + # Banner related fields should be visible. + Then I should see an element with the selector "#edit-field-alert-type" + And I should see an element with the selector "#edit-field-dismissible-option--wrapper" + And I should see an element with the selector "#edit-field-banner-title-0-value" + And I should see an element with the selector "#edit-field-banner-content-wrapper" + # Banner field data should not persist if it is disabled. + When I select option "Information" from dropdown "Banner alert type" + And I select the "Allow site visitors to dismiss banner" radio button + And I fill in field with selector "#edit-field-banner-title-0-value" with value "[Test Data] Test banner title." + And I fill in ckeditor "edit-field-banner-content-0-value" with "[Test Data] Banner Body" + And I fill in field with selector "#edit-revision-log-0-value" with value "[Test Data] Revision log message." + And I uncheck the "Display a banner alert on this facility" checkbox + And I save the node + Then I should see "VBA Facility Columbia VA Regional Benefit Office has been updated." + When I am at "/node/4063/edit" + And I scroll to element '#edit-field-show-banner-value' + And I check the "Display a banner alert on this facility" checkbox + Then an element with the selector "#edit-field-banner-title-0-value" should be empty + And the option "- Select a value -" from dropdown with selector "#edit-field-alert-type" should be selected diff --git a/tests/cypress/integration/features/content_type/vba_facility.feature b/tests/cypress/integration/features/content_type/vba_facility.feature deleted file mode 100644 index 0af4c7d16bb..00000000000 --- a/tests/cypress/integration/features/content_type/vba_facility.feature +++ /dev/null @@ -1,12 +0,0 @@ -@content_type__vba_facility -Feature: CMS User may effectively interact with the VBA Facility form - In order to confirm that cms user have access to the necessary functionality - As anyone involved in the project - I need to have certain functionality available - - Scenario: Log in and try to edit an archived VBA Facility as a VBA editor - When I am logged in as a user with the roles "content_creator_vba, content_publisher" - And my workbench access sections are set to "1065" - Then I am at "/node/4071/" - Then the primary tab "View" should exist - Then the primary tab "Edit" should not exist diff --git a/tests/cypress/integration/weights.json b/tests/cypress/integration/weights.json index 0fa67f952a7..8bfdaf92a68 100644 --- a/tests/cypress/integration/weights.json +++ b/tests/cypress/integration/weights.json @@ -1 +1 @@ -{"tests/cypress/integration/features/content_type/banner.feature":{"time":41656,"weight":5},"tests/cypress/integration/features/content_type/basic_landing_page.feature":{"time":57915,"weight":7},"tests/cypress/integration/features/content_type/campaign_landing_page.feature":{"time":68632,"weight":8},"tests/cypress/integration/features/content_type/checklist.feature":{"time":96389,"weight":12},"tests/cypress/integration/features/content_type/documentation_page.feature":{"time":31999,"weight":4},"tests/cypress/integration/features/content_type/event.feature":{"time":191765,"weight":24},"tests/cypress/integration/features/content_type/full_width_banner_alert.feature":{"time":69385,"weight":8},"tests/cypress/integration/features/content_type/health_care_local_facility.feature":{"time":100,"weight":0},"tests/cypress/integration/features/content_type/health_care_local_health_service.feature":{"time":116987,"weight":15},"tests/cypress/integration/features/content_type/health_care_region_detail_page.feature":{"time":38262,"weight":4},"tests/cypress/integration/features/content_type/landing_page.feature":{"time":70951,"weight":9},"tests/cypress/integration/features/content_type/office.feature":{"time":27849,"weight":3},"tests/cypress/integration/features/content_type/person_profile.feature":{"time":134270,"weight":17},"tests/cypress/integration/features/content_type/press_release.feature":{"time":22282,"weight":2},"tests/cypress/integration/features/content_type/regional_health_care_service_des.feature":{"time":111440,"weight":14},"tests/cypress/integration/features/content_type/step_by_step.feature":{"time":41618,"weight":5},"tests/cypress/integration/features/content_type/vamc_operating_status_and_alerts.feature":{"time":66677,"weight":8},"tests/cypress/integration/features/facilities/facilities_api.feature":{"time":159639,"weight":20},"tests/cypress/integration/features/facilities/vamc_lovell.feature":{"time":4716,"weight":0},"tests/cypress/integration/features/meta/ewa_block.feature":{"time":117670,"weight":15},"tests/cypress/integration/features/meta/step_definitions.feature":{"time":161885,"weight":20},"tests/cypress/integration/features/platform/content_release.feature":{"time":151357,"weight":19},"tests/cypress/integration/features/platform/entity_reference_validation.feature":{"time":65271,"weight":8},"tests/cypress/integration/features/platform/file_upload.feature":{"time":68310,"weight":8},"tests/cypress/integration/features/platform/generate_automatic_url_alias.feature":{"time":64351,"weight":8},"tests/cypress/integration/features/platform/help_center.feature":{"time":37695,"weight":4},"tests/cypress/integration/features/platform/image_crop.feature":{"time":94,"weight":0},"tests/cypress/integration/features/platform/media.feature":{"time":310540,"weight":40},"tests/cypress/integration/features/platform/navigation.feature":{"time":16790,"weight":2},"tests/cypress/integration/features/platform/password_policy.feature":{"time":35899,"weight":4},"tests/cypress/integration/features/platform/permissions.feature":{"time":84030,"weight":10},"tests/cypress/integration/features/platform/text_validation.feature":{"time":104535,"weight":13},"tests/cypress/integration/features/platform/tooltip.feature":{"time":8767,"weight":1},"tests/cypress/integration/features/platform/translation.feature":{"time":128853,"weight":16},"tests/cypress/integration/features/platform/user_login.feature":{"time":43462,"weight":5},"tests/cypress/integration/features/taxonomy_type/va_benefit_taxonomy.feature":{"time":36221,"weight":4}} \ No newline at end of file +{"tests/cypress/integration/features/content_type/banner.feature":{"time":41656,"weight":5},"tests/cypress/integration/features/content_type/basic_landing_page.feature":{"time":57915,"weight":7},"tests/cypress/integration/features/content_type/campaign_landing_page.feature":{"time":68632,"weight":8},"tests/cypress/integration/features/content_type/checklist.feature":{"time":96389,"weight":12},"tests/cypress/integration/features/content_type/documentation_page.feature":{"time":31999,"weight":4},"tests/cypress/integration/features/content_type/event.feature":{"time":191765,"weight":24},"tests/cypress/integration/features/content_type/facilities/vamc/full_width_banner_alert.feature":{"time":69385,"weight":8},"tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_facility.feature":{"time":100,"weight":0},"tests/cypress/integration/features/content_type/facilities/vamc/health_care_local_health_service.feature":{"time":116987,"weight":15},"tests/cypress/integration/features/content_type/facilities/vamc/health_care_region_detail_page.feature":{"time":38262,"weight":4},"tests/cypress/integration/features/content_type/landing_page.feature":{"time":70951,"weight":9},"tests/cypress/integration/features/content_type/office.feature":{"time":27849,"weight":3},"tests/cypress/integration/features/content_type/person_profile.feature":{"time":134270,"weight":17},"tests/cypress/integration/features/content_type/press_release.feature":{"time":22282,"weight":2},"tests/cypress/integration/features/content_type/facilities/vamc/regional_health_care_service_des.feature":{"time":111440,"weight":14},"tests/cypress/integration/features/content_type/step_by_step.feature":{"time":41618,"weight":5},"tests/cypress/integration/features/content_type/facilities/vamc/vamc_operating_status_and_alerts.feature":{"time":66677,"weight":8},"tests/cypress/integration/features/facilities/facilities_api.feature":{"time":159639,"weight":20},"tests/cypress/integration/features/facilities/vamc/vamc_lovell.feature":{"time":4716,"weight":0},"tests/cypress/integration/features/meta/ewa_block.feature":{"time":117670,"weight":15},"tests/cypress/integration/features/meta/step_definitions.feature":{"time":161885,"weight":20},"tests/cypress/integration/features/platform/content_release.feature":{"time":151357,"weight":19},"tests/cypress/integration/features/platform/entity_reference_validation.feature":{"time":65271,"weight":8},"tests/cypress/integration/features/platform/file_upload.feature":{"time":68310,"weight":8},"tests/cypress/integration/features/platform/generate_automatic_url_alias.feature":{"time":64351,"weight":8},"tests/cypress/integration/features/platform/help_center.feature":{"time":37695,"weight":4},"tests/cypress/integration/features/platform/image_crop.feature":{"time":94,"weight":0},"tests/cypress/integration/features/platform/media.feature":{"time":310540,"weight":40},"tests/cypress/integration/features/platform/navigation.feature":{"time":16790,"weight":2},"tests/cypress/integration/features/platform/password_policy.feature":{"time":35899,"weight":4},"tests/cypress/integration/features/platform/permissions.feature":{"time":84030,"weight":10},"tests/cypress/integration/features/platform/text_validation.feature":{"time":104535,"weight":13},"tests/cypress/integration/features/platform/tooltip.feature":{"time":8767,"weight":1},"tests/cypress/integration/features/platform/translation.feature":{"time":128853,"weight":16},"tests/cypress/integration/features/platform/user_login.feature":{"time":43462,"weight":5},"tests/cypress/integration/features/taxonomy_type/va_benefit_taxonomy.feature":{"time":36221,"weight":4}} From 195a90d07e80d5c3c3fd8e33f33a7e6b649e1bd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 19:46:52 -0600 Subject: [PATCH 06/42] Bump va-gov/content-build from 0.0.3418 to 0.0.3419 (#16829) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3418 to 0.0.3419. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3418...v0.0.3419) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 94cab6d0fcb..865e74fa439 100644 --- a/composer.json +++ b/composer.json @@ -223,7 +223,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3418", + "va-gov/content-build": "^0.0.3419", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 5e96fad2ea6..c21f56a0456 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "21c59271e15bc0551ecc0096ed1c62ff", + "content-hash": "ed263192329e27177993e459afb2ddf8", "packages": [ { "name": "asm89/stack-cors", @@ -25775,16 +25775,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3418", + "version": "v0.0.3419", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "31943d821cadcb209e7c051ad45cebc88e3d7195" + "reference": "f6dd5503b6ac4e95479eb8c246cde88fff8d5b1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/31943d821cadcb209e7c051ad45cebc88e3d7195", - "reference": "31943d821cadcb209e7c051ad45cebc88e3d7195", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/f6dd5503b6ac4e95479eb8c246cde88fff8d5b1e", + "reference": "f6dd5503b6ac4e95479eb8c246cde88fff8d5b1e", "shasum": "" }, "type": "node-project", @@ -25811,9 +25811,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3418" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3419" }, - "time": "2024-01-10T19:00:37+00:00" + "time": "2024-01-11T16:07:47+00:00" }, { "name": "vlucas/phpdotenv", From 86d2f1e6fc6d82d791948efa73fa51adb7e29582 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 19:52:04 -0600 Subject: [PATCH 07/42] Bump va-gov/content-build from 0.0.3419 to 0.0.3420 (#16842) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3419 to 0.0.3420. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3419...v0.0.3420) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 865e74fa439..0ab79aca5fd 100644 --- a/composer.json +++ b/composer.json @@ -223,7 +223,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3419", + "va-gov/content-build": "^0.0.3420", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index c21f56a0456..fcdebc7a573 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ed263192329e27177993e459afb2ddf8", + "content-hash": "f24abeb512bf5e7d5958f0a2786efea6", "packages": [ { "name": "asm89/stack-cors", @@ -25775,16 +25775,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3419", + "version": "v0.0.3420", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "f6dd5503b6ac4e95479eb8c246cde88fff8d5b1e" + "reference": "cc55d7de660c8248d7a0d3df3aa3787073a65d28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/f6dd5503b6ac4e95479eb8c246cde88fff8d5b1e", - "reference": "f6dd5503b6ac4e95479eb8c246cde88fff8d5b1e", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/cc55d7de660c8248d7a0d3df3aa3787073a65d28", + "reference": "cc55d7de660c8248d7a0d3df3aa3787073a65d28", "shasum": "" }, "type": "node-project", @@ -25811,9 +25811,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3419" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3420" }, - "time": "2024-01-11T16:07:47+00:00" + "time": "2024-01-12T18:55:08+00:00" }, { "name": "vlucas/phpdotenv", From 1c53d788b2b9fc7cb3753465b32fdae3ec477f1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:49:40 -0500 Subject: [PATCH 08/42] Bump mglaman/phpstan-drupal from 1.2.4 to 1.2.6 (#16845) Bumps [mglaman/phpstan-drupal](https://github.com/mglaman/phpstan-drupal) from 1.2.4 to 1.2.6. - [Release notes](https://github.com/mglaman/phpstan-drupal/releases) - [Commits](https://github.com/mglaman/phpstan-drupal/compare/1.2.4...1.2.6) --- updated-dependencies: - dependency-name: mglaman/phpstan-drupal dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/composer.lock b/composer.lock index fcdebc7a573..f005875c957 100644 --- a/composer.lock +++ b/composer.lock @@ -16597,21 +16597,21 @@ }, { "name": "mglaman/phpstan-drupal", - "version": "1.2.4", + "version": "1.2.6", "source": { "type": "git", "url": "https://github.com/mglaman/phpstan-drupal.git", - "reference": "57b2cc67fb4416e8484db37a3d8502ac8fb3c0d6" + "reference": "ba8678f8cbea42cc41022c21751004eb677cf5a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/57b2cc67fb4416e8484db37a3d8502ac8fb3c0d6", - "reference": "57b2cc67fb4416e8484db37a3d8502ac8fb3c0d6", + "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/ba8678f8cbea42cc41022c21751004eb677cf5a4", + "reference": "ba8678f8cbea42cc41022c21751004eb677cf5a4", "shasum": "" }, "require": { "php": "^7.4 || ^8.0", - "phpstan/phpstan": "^1.10.1", + "phpstan/phpstan": "^1.10.56", "phpstan/phpstan-deprecation-rules": "^1.1.4", "symfony/finder": "^4.2 || ^5.0 || ^6.0 || ^7.0", "symfony/yaml": "^4.2|| ^5.0 || ^6.0 || ^7.0", @@ -16681,7 +16681,7 @@ "description": "Drupal extension and rules for PHPStan", "support": { "issues": "https://github.com/mglaman/phpstan-drupal/issues", - "source": "https://github.com/mglaman/phpstan-drupal/tree/1.2.4" + "source": "https://github.com/mglaman/phpstan-drupal/tree/1.2.6" }, "funding": [ { @@ -16697,7 +16697,7 @@ "type": "tidelift" } ], - "time": "2023-11-14T22:47:32+00:00" + "time": "2024-01-16T00:42:10+00:00" }, { "name": "michelf/php-markdown", @@ -18914,16 +18914,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.55", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -18972,7 +18972,7 @@ "type": "tidelift" } ], - "time": "2024-01-08T12:32:40+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From fdbeb6b618229498ff1908d1bcd803633611d09a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:50:29 -0500 Subject: [PATCH 09/42] Bump actions/cache from 3.3.2 to 3.3.3 (#16844) Bumps [actions/cache](https://github.com/actions/cache) from 3.3.2 to 3.3.3. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/704facf57e6136b1bc63b828d79edcd491f0ee84...e12d46a63a90f2fae62d114769bbf2a179198b5c) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/tugboat-pr-closed.yml | 2 +- .github/workflows/tugboat-pr-opened.yml | 2 +- .github/workflows/tugboat-pr-updated.yml | 2 +- .github/workflows/tugboat-refresh-cache-responder.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tugboat-pr-closed.yml b/.github/workflows/tugboat-pr-closed.yml index 26501bbe2a6..fe8e7da6176 100644 --- a/.github/workflows/tugboat-pr-closed.yml +++ b/.github/workflows/tugboat-pr-closed.yml @@ -14,7 +14,7 @@ jobs: name: Delete Tugboat Preview steps: - name: Restore Preview ID - uses: actions/cache/restore@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 + uses: actions/cache/restore@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3 with: path: .tugboat_preview.txt key: ${{ runner.os }}-tugboat-preview-id-pr-${{ github.event.pull_request.number }} diff --git a/.github/workflows/tugboat-pr-opened.yml b/.github/workflows/tugboat-pr-opened.yml index 1bc92b76207..25ec18f294e 100644 --- a/.github/workflows/tugboat-pr-opened.yml +++ b/.github/workflows/tugboat-pr-opened.yml @@ -39,7 +39,7 @@ jobs: key: `${{ runner.os }}-tugboat-preview-id-pr-${{ github.event.pull_request.number }}`, }); - name: Save Preview ID - uses: actions/cache/save@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 + uses: actions/cache/save@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3 with: path: .tugboat_preview.txt key: ${{ runner.os }}-tugboat-preview-id-pr-${{ github.event.pull_request.number }} diff --git a/.github/workflows/tugboat-pr-updated.yml b/.github/workflows/tugboat-pr-updated.yml index 1e0adb4461c..44adbe87ec2 100644 --- a/.github/workflows/tugboat-pr-updated.yml +++ b/.github/workflows/tugboat-pr-updated.yml @@ -14,7 +14,7 @@ jobs: name: Rebuild Tugboat Preview steps: - name: Restore Preview ID - uses: actions/cache/restore@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 + uses: actions/cache/restore@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3 with: path: .tugboat_preview.txt key: ${{ runner.os }}-tugboat-preview-id-pr-${{ github.event.pull_request.number }} diff --git a/.github/workflows/tugboat-refresh-cache-responder.yml b/.github/workflows/tugboat-refresh-cache-responder.yml index 9186df928af..1e87d3d9856 100644 --- a/.github/workflows/tugboat-refresh-cache-responder.yml +++ b/.github/workflows/tugboat-refresh-cache-responder.yml @@ -11,7 +11,7 @@ jobs: if: ${{ github.event.label.name == 'refresh-tugboat-cache' }} steps: - name: Refresh Preview ID - uses: actions/cache/restore@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 + uses: actions/cache/restore@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3 with: path: .tugboat_preview.txt key: ${{ runner.os }}-tugboat-preview-id-pr-${{ github.event.pull_request.number }} From 6640ab4b532ef289b99ef8499a0b97190c0476fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:51:01 -0500 Subject: [PATCH 10/42] Bump int128/datadog-actions-metrics from 1.64.0 to 1.66.0 (#16843) Bumps [int128/datadog-actions-metrics](https://github.com/int128/datadog-actions-metrics) from 1.64.0 to 1.66.0. - [Release notes](https://github.com/int128/datadog-actions-metrics/releases) - [Commits](https://github.com/int128/datadog-actions-metrics/compare/6c6a657047c0452b33ec3c254009c331e47c1370...6fd267b3028cb1c6557959cef54fa3194d0955f1) --- updated-dependencies: - dependency-name: int128/datadog-actions-metrics dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/actions-metrics.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions-metrics.yml b/.github/workflows/actions-metrics.yml index 6054149c832..ee4b09f1399 100644 --- a/.github/workflows/actions-metrics.yml +++ b/.github/workflows/actions-metrics.yml @@ -11,7 +11,7 @@ jobs: timeout-minutes: 10 steps: - name: Send GitHub Actions metrics to DataDog - uses: int128/datadog-actions-metrics@6c6a657047c0452b33ec3c254009c331e47c1370 # v1.64.0 + uses: int128/datadog-actions-metrics@6fd267b3028cb1c6557959cef54fa3194d0955f1 # v1.66.0 with: datadog-api-key: ${{ secrets.DATADOG_API_KEY }} collect-job-metrics: true From 2eb630b502a2818f8fb3ff06cb043ff428c3ef71 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:51:50 -0500 Subject: [PATCH 11/42] Bump squizlabs/php_codesniffer from 3.8.0 to 3.8.1 (#16830) Bumps [squizlabs/php_codesniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) from 3.8.0 to 3.8.1. - [Release notes](https://github.com/PHPCSStandards/PHP_CodeSniffer/releases) - [Changelog](https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.8.0...3.8.1) --- updated-dependencies: - dependency-name: squizlabs/php_codesniffer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.lock b/composer.lock index f005875c957..d03827a57c8 100644 --- a/composer.lock +++ b/composer.lock @@ -21711,16 +21711,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -21730,11 +21730,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -21787,7 +21787,7 @@ "type": "open_collective" } ], - "time": "2023-12-08T12:32:31+00:00" + "time": "2024-01-11T20:47:48+00:00" }, { "name": "steverhoades/oauth2-openid-connect-server", From cd4c1d5e91dcb5fc2c939de0963c97dc2ec05d70 Mon Sep 17 00:00:00 2001 From: Michael Kinnunen Date: Tue, 16 Jan 2024 12:38:12 -0500 Subject: [PATCH 12/42] VACMS-16575: Add extra validation to allow for combination of reusable and single page QAs. (#16838) * VACMS-16575: Add Entity event listener to va_gov_clp module. * VACMS-16575: Add new constrait for validating two paragraph fields together. * VACMS-16575: Add the requiredErrorDisplayAsMessage option. * VACMS-16575: Adds additional label properties to constraint. * VACMS-16575: Uses new labels in validation. * VACMS-16575: Adds some segment open/close commands to cypress. * VACMS-16575: Updates CLP faq segment test. * VACMS-16575: Ensures the FAQ tab is open before selecting elements inside. * VACMS-16575: Updates to make sure the dropdowns can be toggled to remove paragraphs. --------- Co-authored-by: Daniel Sasser --- .../Constraint/RequiredParagraphAB.php | 75 +++++++++++ .../RequiredParagraphABValidator.php | 117 ++++++++++++++++++ .../va_gov_backend/va_gov_backend.module | 9 -- .../EventSubscriber/EntityEventSubscriber.php | 58 +++++++++ .../custom/va_gov_clp/va_gov_clp.services.yml | 5 + .../campaign_landing_page/clp_faq.feature | 43 +++++++ .../common/i_enable_the_segment.js | 16 +++ 7 files changed, 314 insertions(+), 9 deletions(-) create mode 100644 docroot/modules/custom/va_gov_backend/src/Plugin/Validation/Constraint/RequiredParagraphAB.php create mode 100644 docroot/modules/custom/va_gov_backend/src/Plugin/Validation/Constraint/RequiredParagraphABValidator.php create mode 100644 docroot/modules/custom/va_gov_clp/src/EventSubscriber/EntityEventSubscriber.php create mode 100644 docroot/modules/custom/va_gov_clp/va_gov_clp.services.yml diff --git a/docroot/modules/custom/va_gov_backend/src/Plugin/Validation/Constraint/RequiredParagraphAB.php b/docroot/modules/custom/va_gov_backend/src/Plugin/Validation/Constraint/RequiredParagraphAB.php new file mode 100644 index 00000000000..0ea62ecce60 --- /dev/null +++ b/docroot/modules/custom/va_gov_backend/src/Plugin/Validation/Constraint/RequiredParagraphAB.php @@ -0,0 +1,75 @@ +hasField($constraint->toggle) && !$entity->hasField($constraint->fieldParagraphA) && !$entity->hasField($constraint->fieldParagraphB)) { + return; + } + /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */ + $panel_enabled = $entity->get($constraint->toggle)->getString(); + $countA = $this->getCountForParagraphField($constraint->fieldParagraphA); + $countB = $this->getCountForParagraphField($constraint->fieldParagraphB); + $number = $countA + $countB; + $paragraphAField = $this->getBaseField($constraint->fieldParagraphA); + $paragraphBField = $this->getBaseField($constraint->fieldParagraphB); + $errorPath = $countA ? $paragraphAField : $paragraphBField; + if ($panel_enabled && $number < $constraint->min && $number > 0) { + $this->context->buildViolation($constraint->tooFew, [ + '%plurlLabel' => $constraint->pluralLabel, + '%readable' => $constraint->readable, + '%min' => $constraint->min, + ]) + ->atPath($errorPath) + ->addViolation(); + } + elseif ($panel_enabled && $number > $constraint->max) { + $this->context->buildViolation($constraint->tooMany, [ + '%plurlLabel' => $constraint->pluralLabel, + '%readable' => $constraint->readable, + '%max' => $constraint->max, + ]) + ->atPath($errorPath) + ->addViolation(); + } + elseif ($panel_enabled && $number === 0) { + // Adding a violation in this way ensures that it is displayed even if + // paragraphA and paragraphB have no values. + $this->context->addViolation($constraint->required, [ + '%min' => $constraint->min, + '%panelLabel' => $constraint->panelLabel, + '%readable' => $constraint->readable, + ]); + } + } + + /** + * Gets the item count from a paragraph field. + * + * To target a nested field (a field within a paragraph), specify the $field + * with a colon ":" between the parent and child field names. Only one level + * of nesting is supported. eg: field_faq_group:field_faq_items. + * + * @param string $field + * The field name to get the count from. + * + * @return int + * The item count for the number of nested items. + */ + private function getCountForParagraphField(string $field): int { + $count = 0; + $entity = $this->context->getRoot()->getEntity(); + if (str_contains($field, ':')) { + $fields = explode(":", $field); + if (!empty($fields)) { + [$outerParagraphField, $innerParagraphField] = $fields; + if ($entity->hasField($outerParagraphField)) { + /** @var \Drupal\entity_reference_revisions\Plugin\Field\FieldType\EntityReferenceRevisionsItem $item */ + foreach ($entity->get($outerParagraphField) as $item) { + /** @var \Drupal\paragraphs\ParagraphInterface $paragraph */ + $paragraph = $item->entity; + if ($paragraph->hasField($innerParagraphField)) { + $count += $paragraph->get($innerParagraphField)->count(); + } + } + } + } + } + else { + $count = $entity->get($field)->count(); + } + return $count; + } + + /** + * Get a base field from a given paragraph field identifier. + * + * Since fields can contain colon's (":") to separate parent:child, this + * method is used to get the base field. + * + * @return string + * The base field name. + */ + private function getBaseField(string $field): string { + if (str_contains($field, ':')) { + [$baseField] = explode(":", $field); + return $baseField; + } + else { + return $field; + } + } + +} diff --git a/docroot/modules/custom/va_gov_backend/va_gov_backend.module b/docroot/modules/custom/va_gov_backend/va_gov_backend.module index c6a4af772ea..750f87a12b5 100644 --- a/docroot/modules/custom/va_gov_backend/va_gov_backend.module +++ b/docroot/modules/custom/va_gov_backend/va_gov_backend.module @@ -1323,15 +1323,6 @@ function va_gov_backend_entity_bundle_field_info_alter(&$fields, EntityTypeInter } // Add paragraph checks on clp panels. if ($entity_type->id() === 'node' && $bundle === 'campaign_landing_page') { - // Add range check on faq panel. - if (isset($fields['field_clp_faq_paragraphs'])) { - $fields['field_clp_faq_paragraphs']->addConstraint('RequiredParagraph', [ - 'toggle' => 'field_clp_faq_panel', - 'readable' => 'Q&A', - 'min' => 3, - 'max' => 10, - ]); - } // Add range check on stories panel. if (isset($fields['field_clp_stories_teasers'])) { $fields['field_clp_stories_teasers']->addConstraint('RequiredParagraph', [ diff --git a/docroot/modules/custom/va_gov_clp/src/EventSubscriber/EntityEventSubscriber.php b/docroot/modules/custom/va_gov_clp/src/EventSubscriber/EntityEventSubscriber.php new file mode 100644 index 00000000000..1964b2235ae --- /dev/null +++ b/docroot/modules/custom/va_gov_clp/src/EventSubscriber/EntityEventSubscriber.php @@ -0,0 +1,58 @@ + 'entityTypeAlter', + ]; + } + + /** + * Equivalent of hook_entity_type_alter(). + * + * @param \Drupal\core_event_dispatcher\Event\Entity\EntityTypeAlterEvent $event + * The event for entityTypeAlter. + */ + public function entityTypeAlter(EntityTypeAlterEvent $event): void { + $entity_types = $event->getEntityTypes(); + if (!empty($entity_types['node'])) { + $nodeEntityType = $entity_types['node']; + $this->addConstraintsToClp($nodeEntityType); + } + } + + /** + * Adds constraints to Campaign Landing Page Nodes. + * + * @param \Drupal\Core\Entity\EntityTypeInterface $entityType + * The entity type. + */ + public function addConstraintsToClp(EntityTypeInterface $entityType): void { + $entityType->addConstraint('RequiredParagraphAB', [ + 'toggle' => 'field_clp_faq_panel', + 'readable' => 'Q&A', + 'pluralLabel' => 'Page-Specific or Reusable Q&As', + 'panelLabel' => 'FAQ', + 'fieldParagraphA' => 'field_clp_faq_paragraphs', + 'fieldParagraphB' => 'field_clp_reusable_q_a:field_q_as', + 'requiredErrorDisplayAsMessage' => TRUE, + 'min' => 3, + 'max' => 10, + ]); + } + +} diff --git a/docroot/modules/custom/va_gov_clp/va_gov_clp.services.yml b/docroot/modules/custom/va_gov_clp/va_gov_clp.services.yml new file mode 100644 index 00000000000..bef76fd0ad0 --- /dev/null +++ b/docroot/modules/custom/va_gov_clp/va_gov_clp.services.yml @@ -0,0 +1,5 @@ +services: + va_gov_clp.entity_event_subscriber: + class: Drupal\va_gov_clp\EventSubscriber\EntityEventSubscriber + tags: + - { name: event_subscriber } diff --git a/tests/cypress/integration/features/content_type/campaign_landing_page/clp_faq.feature b/tests/cypress/integration/features/content_type/campaign_landing_page/clp_faq.feature index 32a539314db..1ef29e939d8 100644 --- a/tests/cypress/integration/features/content_type/campaign_landing_page/clp_faq.feature +++ b/tests/cypress/integration/features/content_type/campaign_landing_page/clp_faq.feature @@ -12,3 +12,46 @@ Feature: Content Type: Campaign Landing Page And I can fill in "Text" field with fake text And I should see "Add Reusable Q&A" And I should see "Add a link to more FAQs" + + Scenario: Test FAQ page segment requirements + Given I am logged in as a user with the "content_admin" role + Then I create a "campaign_landing_page" node and continue + + # Test maximum FAQs cannot be exceeded. + When I click to expand "FAQs" + And I enable the page segment within selector "#edit-group-faqs" + And I click the "Add Page-Specific Q&A" button + And I fill in "Question" field with fake text + And I fill in ckeditor "edit-field-clp-faq-paragraphs-0-subform-field-answer-0-subform-field-wysiwyg-0-value" with "Adding Page-Specific Q&As..." + And I click the "Add Reusable Q&A Group" button + And I click to expand "Q&As" + And I select 10 items from the "Add Reusable Q&As" Entity Browser modal + And I wait "2" seconds + And I fill in field with selector "#edit-revision-log-0-value" with fake text + And I save the node + Then I should see an element with the selector "#edit-field-clp-faq-paragraphs-0-subform-field-question-0-value.error" + And I should see "Remove Page-Specific or Reusable Q&As" + + # Test fewer than minimum FAQs cannot be added. + When I click the button with selector "[data-drupal-selector='edit-field-clp-reusable-q-a-0-top'] .paragraphs-dropdown-toggle" + And I click the button with selector "[name='field_clp_reusable_q_a_0_remove']" + And I fill in field with selector "#edit-revision-log-0-value" with fake text + And I save the node + Then I should see an element with the selector "#edit-field-clp-faq-paragraphs-0-subform-field-question-0-value.error" + And I should see "Add Page-Specific or Reusable Q&As" + + # Test required Q&As if FAQ segment is enabled + When I click the button with selector "[data-drupal-selector='edit-field-clp-faq-paragraphs-0-top'] .paragraphs-dropdown-toggle" + And I click the button with selector "[name='field_clp_faq_paragraphs_0_remove']" + And I fill in field with selector "#edit-revision-log-0-value" with fake text + And I save the node + Then I should see "A minimum of 3 Q&As is required when the FAQ page segment is enabled. Disable the FAQs page segment if there are no Q&As to add." + + # Test that no Q&A is required if the FAQ page segment is disabled + When I click to expand "FAQs" + And I disable the page segment + And I fill in field with selector "#edit-revision-log-0-value" with fake text + And I save the node + Then the element with selector ".messages__content" should contain "Campaign Landing Page" + And the element with selector ".messages__content" should contain "has been updated." + diff --git a/tests/cypress/integration/step_definitions/common/i_enable_the_segment.js b/tests/cypress/integration/step_definitions/common/i_enable_the_segment.js index 7c7898034d0..6f0517daec5 100644 --- a/tests/cypress/integration/step_definitions/common/i_enable_the_segment.js +++ b/tests/cypress/integration/step_definitions/common/i_enable_the_segment.js @@ -3,3 +3,19 @@ import { Given } from "@badeball/cypress-cucumber-preprocessor"; Given("I enable the page segment", () => { cy.findAllByLabelText("Enable this page segment").check({ force: true }); }); + +Given("I disable the page segment", () => { + cy.findAllByLabelText("Enable this page segment").uncheck({ force: true }); +}); + +Given("I enable the page segment within selector {string}", (text) => { + cy.get(text) + .findAllByLabelText("Enable this page segment") + .check({ force: true }); +}); + +Given("I disable the page segment within selector {string}", (text) => { + cy.get(text) + .findAllByLabelText("Enable this page segment") + .uncheck({ force: true }); +}); From 51a8473c27b14ce0cad06fb7570616a7952aff65 Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Tue, 16 Jan 2024 12:52:11 -0500 Subject: [PATCH 13/42] VACMS-9717 Make CMS the source of truth for VAMC mental health phone (#15585) * VACMS-14213 Make CMS the source of truth for VAMC mental health phone number (#15468) * VACMS-14213 Move VAMC mental health number to editable region. * VACMS-14213 Remove Mental health phone number from VACMS facility migration. * VAMC-14213 Updated help text. * VACMS-14213 Change phone field labels to title case. * VACMS-15647 Add new vamc mental health field. (#15679) * Revert "VACMS-14213 Make CMS the source of truth for VAMC mental health phone number (#15468)" This reverts commit 2575fc380572f582ac1afd23fbfbf096167aa89a. in order to restore the field location in the api data and its place in the migration. * VACMS-15647 Add editable mental health contact field to VAMC facility * Add sample phone number. --- ...ode.health_care_local_facility.default.yml | 31 +++++++++++++------ ...care_local_facility.inline_entity_form.yml | 2 ++ ...ode.health_care_local_facility.default.yml | 22 +++++++++---- ...h_care_local_facility.external_content.yml | 8 ++--- ...e.health_care_local_facility.ief_table.yml | 2 ++ ...node.health_care_local_facility.teaser.yml | 2 ++ ...ility.field_mental_health_contact_phon.yml | 25 +++++++++++++++ ...cal_facility.field_mental_health_phone.yml | 6 +++- ...care_local_facility.field_phone_number.yml | 6 +++- ....node.field_mental_health_contact_phon.yml | 19 ++++++++++++ 10 files changed, 100 insertions(+), 23 deletions(-) create mode 100644 config/sync/field.field.node.health_care_local_facility.field_mental_health_contact_phon.yml create mode 100644 config/sync/field.storage.node.field_mental_health_contact_phon.yml diff --git a/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml b/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml index d8b3a76b70a..55a7e6fcc40 100644 --- a/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml +++ b/config/sync/core.entity_form_display.node.health_care_local_facility.default.yml @@ -15,6 +15,7 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media + - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -30,7 +31,6 @@ dependencies: - workflows.workflow.editorial module: - address - - allowed_formats - content_moderation - field_group - geofield @@ -49,7 +49,7 @@ third_party_settings: label: 'Section settings' region: content parent_name: '' - weight: 8 + weight: 9 format_type: details_sidebar format_settings: classes: '' @@ -65,7 +65,7 @@ third_party_settings: label: 'Editorial Workflow' region: content parent_name: '' - weight: 9 + weight: 10 format_type: fieldset format_settings: classes: '' @@ -78,7 +78,7 @@ third_party_settings: label: '"Prepare for your visit"' region: content parent_name: '' - weight: 6 + weight: 7 format_type: details format_settings: classes: '' @@ -119,7 +119,7 @@ third_party_settings: label: 'Social Media' region: content parent_name: '' - weight: 5 + weight: 6 format_type: fieldset format_settings: classes: '' @@ -158,6 +158,7 @@ third_party_settings: group_locations_and_contact_info: children: - group_facility_data_from_vast + - field_mental_health_contact_phon label: 'Locations and contact information' region: content parent_name: '' @@ -204,7 +205,7 @@ third_party_settings: label: 'COVID-19 health protection guidelines' region: hidden parent_name: '' - weight: 19 + weight: 21 format_type: html_element format_settings: classes: '' @@ -246,6 +247,7 @@ content: maxlength: 300 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } @@ -280,12 +282,13 @@ content: maxlength: 600 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } field_last_saved_by_an_editor: type: datetime_timestamp - weight: 10 + weight: 11 region: content settings: { } third_party_settings: { } @@ -315,6 +318,13 @@ content: settings: media_types: { } third_party_settings: { } + field_mental_health_contact_phon: + type: telephone_default + weight: 21 + region: content + settings: + placeholder: '' + third_party_settings: { } field_mental_health_phone: type: telephone_default weight: 28 @@ -333,7 +343,8 @@ content: type: office_hours_default weight: 29 region: content - settings: { } + settings: + collapsed: false third_party_settings: { } field_operating_status_facility: type: options_buttons @@ -351,6 +362,7 @@ content: maxlength: 300 counter_position: after js_prevent_submit: true + count_only_mode: false count_html_characters: true textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } @@ -386,7 +398,7 @@ content: third_party_settings: { } path: type: path - weight: 7 + weight: 8 region: content settings: { } third_party_settings: { } @@ -401,6 +413,7 @@ content: maxlength: 150 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: true textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } diff --git a/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml b/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml index e8f2e84b497..bb8face28e3 100644 --- a/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml +++ b/config/sync/core.entity_form_display.node.health_care_local_facility.inline_entity_form.yml @@ -16,6 +16,7 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media + - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -150,6 +151,7 @@ hidden: field_location_services: true field_main_location: true field_media: true + field_mental_health_contact_phon: true field_mental_health_phone: true field_meta_tags: true field_mobile: true diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml index a1ddf0e5699..8a2ea63cebb 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.default.yml @@ -15,6 +15,7 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media + - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -94,6 +95,7 @@ third_party_settings: group_locations_and_contact_info: children: - group_facility_data_from_vast + - field_mental_health_contact_phon label: 'Locations and contact information' parent_name: '' region: content @@ -155,7 +157,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 17 + weight: 16 region: content field_description: type: string @@ -200,7 +202,7 @@ content: third_party_settings: { } weight: 0 region: content - field_mental_health_phone: + field_mental_health_contact_phon: type: telephone_link label: inline settings: @@ -208,6 +210,14 @@ content: third_party_settings: { } weight: 20 region: content + field_mental_health_phone: + type: telephone_link + label: inline + settings: + title: '' + third_party_settings: { } + weight: 19 + region: content field_mobile: type: boolean label: inline @@ -216,7 +226,7 @@ content: format_custom_false: '' format_custom_true: '' third_party_settings: { } - weight: 19 + weight: 18 region: content field_office_hours: type: office_hours @@ -249,7 +259,7 @@ content: schema: enabled: false third_party_settings: { } - weight: 21 + weight: 20 region: content field_operating_status_facility: type: list_default @@ -271,14 +281,14 @@ content: settings: title: '' third_party_settings: { } - weight: 18 + weight: 17 region: content field_timezone: type: basic_string label: above settings: { } third_party_settings: { } - weight: 22 + weight: 21 region: content flag_email_node: settings: { } diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml index 166c5fe7a6e..c148f6326ce 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.external_content.yml @@ -16,6 +16,7 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media + - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -219,7 +220,6 @@ content: grouped: false show_closed: all closed_format: Closed - all_day_format: 'All day open' separator: days: '
' grouped_days: ' - ' @@ -230,11 +230,6 @@ content: position: '' open_text: 'Currently open!' closed_text: 'Currently closed' - exceptions: - title: 'Exception hours' - restrict_exceptions_to_num_days: 7 - date_format: long - all_day_format: 'All day open' timezone_field: '' office_hours_first_day: '' schema: @@ -273,6 +268,7 @@ hidden: field_location_services: true field_main_location: true field_media: true + field_mental_health_contact_phon: true field_meta_tags: true field_meta_title: true field_operating_status_facility: true diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml index d978097d787..54d54c1bd56 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.ief_table.yml @@ -16,6 +16,7 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media + - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -119,6 +120,7 @@ hidden: field_local_health_care_service_: true field_location_services: true field_main_location: true + field_mental_health_contact_phon: true field_mental_health_phone: true field_meta_tags: true field_mobile: true diff --git a/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml b/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml index 23950b24f12..45398d62610 100644 --- a/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml +++ b/config/sync/core.entity_view_display.node.health_care_local_facility.teaser.yml @@ -16,6 +16,7 @@ dependencies: - field.field.node.health_care_local_facility.field_location_services - field.field.node.health_care_local_facility.field_main_location - field.field.node.health_care_local_facility.field_media + - field.field.node.health_care_local_facility.field_mental_health_contact_phon - field.field.node.health_care_local_facility.field_mental_health_phone - field.field.node.health_care_local_facility.field_meta_tags - field.field.node.health_care_local_facility.field_mobile @@ -95,6 +96,7 @@ hidden: field_location_services: true field_main_location: true field_media: true + field_mental_health_contact_phon: true field_mental_health_phone: true field_meta_tags: true field_mobile: true diff --git a/config/sync/field.field.node.health_care_local_facility.field_mental_health_contact_phon.yml b/config/sync/field.field.node.health_care_local_facility.field_mental_health_contact_phon.yml new file mode 100644 index 00000000000..f62a8a60d62 --- /dev/null +++ b/config/sync/field.field.node.health_care_local_facility.field_mental_health_contact_phon.yml @@ -0,0 +1,25 @@ +uuid: 85b46732-b695-42f5-be09-413287698196 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_mental_health_contact_phon + - node.type.health_care_local_facility + module: + - telephone + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.health_care_local_facility.field_mental_health_contact_phon +field_name: field_mental_health_contact_phon +entity_type: node +bundle: health_care_local_facility +label: 'Mental health contact phone number' +description: 'Enter the number Veterans should call to access mental health services at your facility, for example 202-555-1234, ext. 23. If your facility doesn''t offer these services, enter the most appropriate system number. This number will be displayed everywhere your facility appears across VA.gov. View guidelines for editing VAMC facilities (opens in a new tab)' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: telephone diff --git a/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml b/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml index bb2fc3160a5..ff107baf8ee 100644 --- a/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml +++ b/config/sync/field.field.node.health_care_local_facility.field_mental_health_phone.yml @@ -7,11 +7,15 @@ dependencies: - node.type.health_care_local_facility module: - telephone + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false id: node.health_care_local_facility.field_mental_health_phone field_name: field_mental_health_phone entity_type: node bundle: health_care_local_facility -label: 'Mental Health Phone' +label: 'Mental health phone number' description: '' required: false translatable: false diff --git a/config/sync/field.field.node.health_care_local_facility.field_phone_number.yml b/config/sync/field.field.node.health_care_local_facility.field_phone_number.yml index 0859ff7da1e..45b797bbb9e 100644 --- a/config/sync/field.field.node.health_care_local_facility.field_phone_number.yml +++ b/config/sync/field.field.node.health_care_local_facility.field_phone_number.yml @@ -7,11 +7,15 @@ dependencies: - node.type.health_care_local_facility module: - telephone + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false id: node.health_care_local_facility.field_phone_number field_name: field_phone_number entity_type: node bundle: health_care_local_facility -label: 'Phone Number' +label: 'Phone number' description: '' required: false translatable: false diff --git a/config/sync/field.storage.node.field_mental_health_contact_phon.yml b/config/sync/field.storage.node.field_mental_health_contact_phon.yml new file mode 100644 index 00000000000..a32d2da3892 --- /dev/null +++ b/config/sync/field.storage.node.field_mental_health_contact_phon.yml @@ -0,0 +1,19 @@ +uuid: 0b19fe89-c843-4663-a729-1244f4931208 +langcode: en +status: true +dependencies: + module: + - node + - telephone +id: node.field_mental_health_contact_phon +field_name: field_mental_health_contact_phon +entity_type: node +type: telephone +settings: { } +module: telephone +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false From ffbefda5e1ad738f2e0670ac882992ca6f90ee53 Mon Sep 17 00:00:00 2001 From: Michael Kinnunen Date: Tue, 16 Jan 2024 14:56:08 -0500 Subject: [PATCH 14/42] VACMS-16574: Remove tag topic restrictions. (#16854) * VACMS-16574: Remove function to enforce max number of tags. * VACMS-16574: Update help text. * VACMS-16574: Remove portions of test related to restricting the tags. * VACMS-16574: Allow for unlimited topics. * VACMS-16574: Remove validation for 4 or more topic/audience tags. --------- Co-authored-by: Steve Wirt --- ...paragraph.audience_topics.field_markup.yml | 2 +- .../field.storage.paragraph.field_topics.yml | 2 +- .../va_gov_backend/js/audience_topics.es6.js | 78 ------------------- .../va_gov_backend/js/audience_topics.js | 43 ---------- .../va_gov_backend/va_gov_backend.module | 3 - .../support_resources_detail_page.feature | 6 -- 6 files changed, 2 insertions(+), 132 deletions(-) diff --git a/config/sync/field.field.paragraph.audience_topics.field_markup.yml b/config/sync/field.field.paragraph.audience_topics.field_markup.yml index 7bf6f6d5144..f514c78b771 100644 --- a/config/sync/field.field.paragraph.audience_topics.field_markup.yml +++ b/config/sync/field.field.paragraph.audience_topics.field_markup.yml @@ -20,6 +20,6 @@ default_value: default_value_callback: '' settings: markup: - value: "

Select tags for your article (minimum of 1, max of 4).
\r\nTags allow users to see more articles for that tag.
\r\nSelect one to four tags that are most relevant for this article.
\r\nYou can select a combination of Topics and Audiences.

\r\n" + value: "

Select tags for your article.
\r\nTags allow users to see more articles for that tag.
\r\nYou can select a combination of Topics and Audiences.

\r\n" format: rich_text field_type: markup diff --git a/config/sync/field.storage.paragraph.field_topics.yml b/config/sync/field.storage.paragraph.field_topics.yml index 98341fe1906..b7fc49f3dc5 100644 --- a/config/sync/field.storage.paragraph.field_topics.yml +++ b/config/sync/field.storage.paragraph.field_topics.yml @@ -13,7 +13,7 @@ settings: target_type: taxonomy_term module: core locked: false -cardinality: 4 +cardinality: -1 translatable: true indexes: { } persist_with_no_fields: false diff --git a/docroot/modules/custom/va_gov_backend/js/audience_topics.es6.js b/docroot/modules/custom/va_gov_backend/js/audience_topics.es6.js index 048866247fa..83aacc69d79 100644 --- a/docroot/modules/custom/va_gov_backend/js/audience_topics.es6.js +++ b/docroot/modules/custom/va_gov_backend/js/audience_topics.es6.js @@ -3,80 +3,6 @@ */ (($, Drupal) => { - /** - * Ensure that a maximum of 4 tags + audiences may be selected. - */ - function enforceMaximumNumberOfTags() { - // Get the total number of tags selected in the Topics fields. - let total = $('div[id^="edit-field-tags-0-subform-field-topics"]').find( - "input:checked" - ).length; - - // Prevent showing the Beneficiaries field if we already have 4 topic tags. - if (total >= 4) { - $( - 'select[id^="edit-field-tags-0-subform-field-audience-selection"]' - ).attr("disabled", true); - $("div.form-item-field-tags-0-subform-field-audience-selection").addClass( - "form-disabled" - ); - - $( - 'div[id^="edit-field-tags-0-subform-field-audience-beneficiares-none"]' - ).attr("checked", true); - $( - 'div[id^="edit-field-tags-0-subform-field-non-beneficiares-none"]' - ).attr("checked", true); - - $( - 'div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]' - ).hide(); - $( - 'div[id^="edit-field-tags-0-subform-field-audience-beneficiares-wrapper"]' - ).hide(); - $('select[id^="edit-field-tags-0-subform-field-audience-selection"]').val( - "_none" - ); - } else { - $( - 'select[id^="edit-field-tags-0-subform-field-audience-selection"]' - ).attr("disabled", false); - $( - "div.form-item-field-tags-0-subform-field-audience-selection" - ).removeClass("form-disabled"); - } - // Find out if there is a Beneficiary/Non-beneficiary term selected and increase the total if so. - let audienceSelected = $( - 'div[id^="edit-field-tags-0-subform-field-audience-beneficiares-wrapper"]' - ).find( - 'input:not([id^="edit-field-tags-0-subform-field-audience-beneficiares-none"]):checked' - ).length; - if ( - $( - 'select[id^="edit-field-tags-0-subform-field-audience-selection"]' - ).val() === "non-beneficiaries" - ) { - audienceSelected = $( - 'div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]' - ).find( - 'input:not([id^="edit-field-tags-0-subform-field-non-beneficiares-none"]):checked' - ).length; - } - - total += audienceSelected; - - if (total >= 4) { - // If a total of four or more tags have been selected, prevent the user from selecting more. - $('div[id^="edit-field-tags-0-subform-field-topics"]') - .find("input[type=checkbox]:not(:checked)") - .attr("disabled", true); - } else { - // Otherwise, ensure that more tags may be selected. - $('div[id^="edit-field-tags-0-subform-field-topics"]') - .find("input[type=checkbox]") - .attr("disabled", false); - } - } Drupal.behaviors.vaGovAudienceTopics = { attach() { @@ -123,8 +49,6 @@ .parent() .hide(); - // Enforce tag selection rules. - enforceMaximumNumberOfTags(); // React when the tags fieldset changes. $("fieldset#edit-group-tags").change(() => { const selection = $( @@ -174,8 +98,6 @@ true ); } - // Enforce tag selection rules. - enforceMaximumNumberOfTags(); }); }, }; diff --git a/docroot/modules/custom/va_gov_backend/js/audience_topics.js b/docroot/modules/custom/va_gov_backend/js/audience_topics.js index 072751aa81b..730bbd9ef2a 100644 --- a/docroot/modules/custom/va_gov_backend/js/audience_topics.js +++ b/docroot/modules/custom/va_gov_backend/js/audience_topics.js @@ -4,40 +4,7 @@ * https://www.drupal.org/node/2815083 * @preserve **/ - (function ($, Drupal) { - function enforceMaximumNumberOfTags() { - var total = $('div[id^="edit-field-tags-0-subform-field-topics"]').find("input:checked").length; - - if (total >= 4) { - $('select[id^="edit-field-tags-0-subform-field-audience-selection"]').attr("disabled", true); - $("div.form-item-field-tags-0-subform-field-audience-selection").addClass("form-disabled"); - - $('div[id^="edit-field-tags-0-subform-field-audience-beneficiares-none"]').attr("checked", true); - $('div[id^="edit-field-tags-0-subform-field-non-beneficiares-none"]').attr("checked", true); - - $('div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]').hide(); - $('div[id^="edit-field-tags-0-subform-field-audience-beneficiares-wrapper"]').hide(); - $('select[id^="edit-field-tags-0-subform-field-audience-selection"]').val("_none"); - } else { - $('select[id^="edit-field-tags-0-subform-field-audience-selection"]').attr("disabled", false); - $("div.form-item-field-tags-0-subform-field-audience-selection").removeClass("form-disabled"); - } - - var audienceSelected = $('div[id^="edit-field-tags-0-subform-field-audience-beneficiares-wrapper"]').find('input:not([id^="edit-field-tags-0-subform-field-audience-beneficiares-none"]):checked').length; - if ($('select[id^="edit-field-tags-0-subform-field-audience-selection"]').val() === "non-beneficiaries") { - audienceSelected = $('div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]').find('input:not([id^="edit-field-tags-0-subform-field-non-beneficiares-none"]):checked').length; - } - - total += audienceSelected; - - if (total >= 4) { - $('div[id^="edit-field-tags-0-subform-field-topics"]').find("input[type=checkbox]:not(:checked)").attr("disabled", true); - } else { - $('div[id^="edit-field-tags-0-subform-field-topics"]').find("input[type=checkbox]").attr("disabled", false); - } - } - Drupal.behaviors.vaGovAudienceTopics = { attach: function attach() { if ($('div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]').find('input:not([id^="edit-field-tags-0-subform-field-non-beneficiares-none"]):checked').length) { @@ -49,36 +16,26 @@ $('div[id^="edit-field-tags-0-subform-field-audience-beneficiares-wrapper"]').show(); $('div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]').hide(); } - $("#edit-group-tags > legend").addClass("form-required"); - $('input[id^="edit-field-tags-0-subform-field-audience-beneficiares-none"]').parent().hide(); $('input[id^="edit-field-tags-0-subform-field-non-beneficiares-none"]').parent().hide(); - - enforceMaximumNumberOfTags(); - $("fieldset#edit-group-tags").change(function () { var selection = $('select[id^="edit-field-tags-0-subform-field-audience-selection"]').val(); - $('fieldset#edit-group-tags input[type="radio"]').attr("checked", false); $('div[id^="edit-field-tags-0-subform-field-audience-beneficiares-wrapper"]').hide(); $('div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]').hide(); if (selection === "beneficiaries") { $('div[id^="edit-field-tags-0-subform-field-audience-beneficiares-wrapper"]').show(); - $("#edit-field-tags-0-subform-field-non-beneficiares-none").attr("checked", true); } if (selection === "non-beneficiaries") { $('div[id^="edit-field-tags-0-subform-field-non-beneficiares-wrapper"]').show(); - $("#edit-field-tags-0-subform-field-audience-beneficiares-none").attr("checked", true); } if (selection === "_none") { $("#edit-field-tags-0-subform-field-non-beneficiares-none").attr("checked", true); $("#edit-field-tags-0-subform-field-audience-beneficiares-none").attr("checked", true); } - - enforceMaximumNumberOfTags(); }); } }; diff --git a/docroot/modules/custom/va_gov_backend/va_gov_backend.module b/docroot/modules/custom/va_gov_backend/va_gov_backend.module index 750f87a12b5..dae1ff12291 100644 --- a/docroot/modules/custom/va_gov_backend/va_gov_backend.module +++ b/docroot/modules/custom/va_gov_backend/va_gov_backend.module @@ -786,9 +786,6 @@ function _va_gov_backend_audience_topics_validation(array $form, FormStateInterf if ($tag_count == 0) { $form_state->setErrorByName('field_tags][0][subform][field_topics', t('Please select at least one Topic or Audience tag.')); } - elseif ($tag_count > 4) { - $form_state->setErrorByName('field_tags][0][subform][field_topics', t('No more than 4 Topic/Audience tags may be selected.')); - } } } diff --git a/tests/cypress/integration/features/content_type/support_resources_detail_page.feature b/tests/cypress/integration/features/content_type/support_resources_detail_page.feature index f1978e4a4f6..12b9978dd47 100644 --- a/tests/cypress/integration/features/content_type/support_resources_detail_page.feature +++ b/tests/cypress/integration/features/content_type/support_resources_detail_page.feature @@ -18,9 +18,3 @@ Feature: Content Type: Resources and Support Detail Page Given I select option "Non-beneficiaries" from dropdown "Audience" Then I should not see an element with the selector "#edit-field-tags-0-subform-field-audience-beneficiares-wrapper" And I should see an element with the selector "#edit-field-tags-0-subform-field-non-beneficiares-wrapper" - - Given I check all checkboxes within "#edit-field-tags-0-subform-field-topics--wrapper" - Then an element with the selector "#edit-field-tags-0-subform-field-audience-selection" should be disabled - - Given I uncheck the first checkbox within "#edit-field-tags-0-subform-field-topics--wrapper" - Then an element with the selector "#edit-field-tags-0-subform-field-audience-selection" should not be disabled From 4563cbf0645edd6135c308b3b4faa552d8a80894 Mon Sep 17 00:00:00 2001 From: Michael Kinnunen Date: Tue, 16 Jan 2024 17:20:25 -0500 Subject: [PATCH 15/42] VACMS-16545: Patch smart_date recurring date validation. (#16826) * VACMS-16545: Patch smart_date recurring date validation. * VACMS-16545: Update composer.lock --- composer.json | 3 ++- composer.lock | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 0ab79aca5fd..6e3c6660567 100644 --- a/composer.json +++ b/composer.json @@ -508,7 +508,8 @@ }, "drupal/smart_date": { "3260965 - Undefined index: #value": "https://www.drupal.org/files/issues/2022-01-27/smart_date_undefined_value_in_validation.patch", - "3385720 - Implement errorElement() in Widgets": "https://www.drupal.org/files/issues/2023-09-08/smart_date-implement-errorelement-3385720-3.patch" + "3385720 - Implement errorElement() in Widgets": "https://www.drupal.org/files/issues/2023-09-08/smart_date-implement-errorelement-3385720-3.patch", + "3413612 - The repeat end date should not be allowed to come before the start time": "https://www.drupal.org/files/issues/2024-01-11/smart_date-repeat-end-date-3413612-0.patch" }, "drupal/tablefield": { "3100109 - 0 string value in cell throws empty error": "https://www.drupal.org/files/issues/2019-12-10/0-value-throwing-empty-error.patch", diff --git a/composer.lock b/composer.lock index d03827a57c8..95714e7fd53 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f24abeb512bf5e7d5958f0a2786efea6", + "content-hash": "278a78fb3e953f12430e44360485741e", "packages": [ { "name": "asm89/stack-cors", @@ -9311,12 +9311,12 @@ "homepage": "https://www.drupal.org/user/57511" }, { - "name": "Grayside", - "homepage": "https://www.drupal.org/user/346868" + "name": "bluegeek9", + "homepage": "https://www.drupal.org/user/1286304" }, { - "name": "itamar", - "homepage": "https://www.drupal.org/user/1757910" + "name": "Grayside", + "homepage": "https://www.drupal.org/user/346868" }, { "name": "jhedstrom", From f61baa25f53cbdecbdc670dafb0e07eb6645d733 Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Tue, 16 Jan 2024 17:29:13 -0500 Subject: [PATCH 16/42] VACMS-16827 Fix loading of alt text field definitions. (#16832) --- .../va_gov_media/src/EventSubscriber/MediaEventSubscriber.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php b/docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php index 7f78cdc0a8e..aba483d3486 100644 --- a/docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php +++ b/docroot/modules/custom/va_gov_media/src/EventSubscriber/MediaEventSubscriber.php @@ -106,11 +106,11 @@ public static function imageFieldWidgetProcess(array $element, FormStateInterfac } $delta = $element['#delta']; - $fieldDefinition = $entity->getFieldDefinition('image'); + $fieldDefinition = $entity->getFieldDefinition($element['#field_name']); $keys = [$element['#entity_type']]; $keys[] = $entity->id() ? $entity->id() : 0; - if (method_exists($fieldDefinition, 'id')) { + if (is_object($fieldDefinition) && method_exists($fieldDefinition, 'id')) { $field_definition_id = str_replace('.', '--', $fieldDefinition->id()); } else { From 951bfcd95dc9b3ba9c5a543a49e1430600506b4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 09:28:04 -0500 Subject: [PATCH 17/42] Bump drupal/entity_reference_revisions from 1.10.0 to 1.11.0 (#16848) Bumps drupal/entity_reference_revisions from 1.10.0 to 1.11.0. --- updated-dependencies: - dependency-name: drupal/entity_reference_revisions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index 95714e7fd53..9863ae1a145 100644 --- a/composer.lock +++ b/composer.lock @@ -5562,17 +5562,17 @@ }, { "name": "drupal/entity_reference_revisions", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entity_reference_revisions.git", - "reference": "8.x-1.10" + "reference": "8.x-1.11" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity_reference_revisions-8.x-1.10.zip", - "reference": "8.x-1.10", - "shasum": "edd23b91c4a34db65ea22c4db54b7458edc7513b" + "url": "https://ftp.drupal.org/files/projects/entity_reference_revisions-8.x-1.11.zip", + "reference": "8.x-1.11", + "shasum": "de21cbb0d8a0344dc3496addcad4ed536747cec5" }, "require": { "drupal/core": "^9 || ^10" @@ -5583,8 +5583,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.10", - "datestamp": "1660664712", + "version": "8.x-1.11", + "datestamp": "1705140721", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -18480,16 +18480,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -18532,9 +18532,9 @@ "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.7.3" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpmailer/phpmailer", From 9f910a8dcf648bbf1e326a8771ab37a41619bce6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 09:29:19 -0500 Subject: [PATCH 18/42] Bump drupal/paragraphs from 1.16.0 to 1.17.0 (#16847) Bumps drupal/paragraphs from 1.16.0 to 1.17.0. --- updated-dependencies: - dependency-name: drupal/paragraphs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.lock b/composer.lock index 9863ae1a145..9d71a1263a9 100644 --- a/composer.lock +++ b/composer.lock @@ -10648,17 +10648,17 @@ }, { "name": "drupal/paragraphs", - "version": "1.16.0", + "version": "1.17.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/paragraphs.git", - "reference": "8.x-1.16" + "reference": "8.x-1.17" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.16.zip", - "reference": "8.x-1.16", - "shasum": "48f60810fd8086a52d56e84af8b212cce7a270e8" + "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.17.zip", + "reference": "8.x-1.17", + "shasum": "81c05f6a1eb59ab957c9ac97b2e79d6c9837bd72" }, "require": { "drupal/core": "^9.3 || ^10", @@ -10673,7 +10673,7 @@ "drupal/inline_entity_form": "1.x-dev", "drupal/paragraphs-paragraphs_library": "*", "drupal/replicate": "1.x-dev", - "drupal/search_api": "1.x-dev", + "drupal/search_api": "^1", "drupal/search_api_db": "*" }, "suggest": { @@ -10682,8 +10682,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.16", - "datestamp": "1694007797", + "version": "8.x-1.17", + "datestamp": "1705234146", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" From d75c779d9d19c85abf11ed1a1c27657be072cdb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:05:51 -0800 Subject: [PATCH 19/42] Bump drupal/paragraphs_features from 2.0.0-beta3 to 2.0.0-beta4 (#16869) Bumps drupal/paragraphs_features from 2.0.0-beta3 to 2.0.0-beta4. --- updated-dependencies: - dependency-name: drupal/paragraphs_features dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/composer.lock b/composer.lock index 9d71a1263a9..56b4ce78159 100644 --- a/composer.lock +++ b/composer.lock @@ -10785,17 +10785,17 @@ }, { "name": "drupal/paragraphs_features", - "version": "2.0.0-beta3", + "version": "2.0.0-beta4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/paragraphs_features.git", - "reference": "2.0.0-beta3" + "reference": "2.0.0-beta4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/paragraphs_features-2.0.0-beta3.zip", - "reference": "2.0.0-beta3", - "shasum": "b040ba0048101f578752050bc55cc039939a649c" + "url": "https://ftp.drupal.org/files/projects/paragraphs_features-2.0.0-beta4.zip", + "reference": "2.0.0-beta4", + "shasum": "c3137491ba5f73e8395d9c2178beac3a10e33f7d" }, "require": { "drupal/core": "^9.2 || ^10", @@ -10807,8 +10807,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0-beta3", - "datestamp": "1692697161", + "version": "2.0.0-beta4", + "datestamp": "1705329204", "security-coverage": { "status": "not-covered", "message": "Beta releases are not covered by Drupal security advisories." @@ -26828,7 +26828,6 @@ "drupal/no_table_drag": 15, "drupal/openapi": 5, "drupal/openapi_ui": 5, - "drupal/paragraphs_features": 10, "drupal/password_strength": 20, "drupal/pathologic": 15, "drupal/prometheus_exporter": 10, From 34500eee049f7be840be992fb85f0d6fb3b5f5e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 13:37:24 -0600 Subject: [PATCH 20/42] Bump int128/datadog-actions-metrics from 1.66.0 to 1.68.0 (#16849) Bumps [int128/datadog-actions-metrics](https://github.com/int128/datadog-actions-metrics) from 1.66.0 to 1.68.0. - [Release notes](https://github.com/int128/datadog-actions-metrics/releases) - [Commits](https://github.com/int128/datadog-actions-metrics/compare/6fd267b3028cb1c6557959cef54fa3194d0955f1...12d225bf2f764e5103a994157c1316df39dc3fae) --- updated-dependencies: - dependency-name: int128/datadog-actions-metrics dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/actions-metrics.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/actions-metrics.yml b/.github/workflows/actions-metrics.yml index ee4b09f1399..74ac8979a09 100644 --- a/.github/workflows/actions-metrics.yml +++ b/.github/workflows/actions-metrics.yml @@ -11,7 +11,7 @@ jobs: timeout-minutes: 10 steps: - name: Send GitHub Actions metrics to DataDog - uses: int128/datadog-actions-metrics@6fd267b3028cb1c6557959cef54fa3194d0955f1 # v1.66.0 + uses: int128/datadog-actions-metrics@12d225bf2f764e5103a994157c1316df39dc3fae # v1.68.0 with: datadog-api-key: ${{ secrets.DATADOG_API_KEY }} collect-job-metrics: true From 0a9b14a678706d2237515555c056d13fda9ea24a Mon Sep 17 00:00:00 2001 From: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> Date: Wed, 17 Jan 2024 13:07:39 -0800 Subject: [PATCH 21/42] VACMS-16591: Update Drupal Core to v10.2 (#16620) * VACMS16591: drupal core update, removed aliases * VACMS-16591: rerolled patch * VACMS-16591: updated composer.lock * VACMS-16592: updated composer.lock * VACMS-16591: updated composer.lock * VACMS-16591: update composer.lock * VACMS-16591: updated composer.lock * VACMS-16591: update drupal core for security vulnerability --- composer.json | 11 +- composer.lock | 1678 +++++++++-------- docroot/robots.txt | 10 +- docroot/sites/default/default.services.yml | 2 + docroot/sites/default/default.settings.php | 37 +- docroot/sites/example.settings.local.php | 4 - ...06205-length-menu-tree-too-short-48.patch} | 2 +- 7 files changed, 920 insertions(+), 824 deletions(-) rename patches/{3106205-length-menu-tree-too-short.patch => 3106205-length-menu-tree-too-short-48.patch} (98%) diff --git a/composer.json b/composer.json index 6e3c6660567..ba7be3445b8 100644 --- a/composer.json +++ b/composer.json @@ -49,9 +49,8 @@ "drupal/consumers": "^1.17.0", "drupal/content_lock": "^2.3", "drupal/content_model_documentation": "^1.0.19", - "drupal/core": "10.1.7 as 9.5", - "drupal/core-composer-scaffold": "10.1.7 as 9.5", - "drupal/core-recommended": "10.1.7 as 9.5", + "drupal/core-composer-scaffold": "^10.2.0", + "drupal/core-recommended": "10.2.0", "drupal/crop": "^2.0", "drupal/csv_serialization": "^4.0", "drupal/ctools_block": "^4.0", @@ -194,7 +193,7 @@ "drupal/views_local_tasks": "^1.0", "drupal/workbench_access": "^2.0", "drupal/workbench_menu_access": "^2.0", - "drush/drush": "^11", + "drush/drush": "^12", "easyrdf/easyrdf": "1.1.1 as 0.9.1", "geocoder-php/mapbox-provider": "^1.3", "gitonomy/gitlib": "^1.2", @@ -390,10 +389,10 @@ "2767243 - Create a theme suggestion for taxonomy terms by view mode": "https://www.drupal.org/files/issues/core-theme-suggestion-for-taxonomy-view-modes-2767243-14.patch", "2775665 - MenuLinkContent updateLink function generates a PHP Warning for override-able keys that are not present in the loaded entity": "https://www.drupal.org/files/issues/2021-09-17/updateLink-2775665-14.patch", "Claro claro_preprocess_input()": "patches/drupal-core-claro_preprocess_input.patch", - "1156338 - Fixed maximum number of field values, but use «add more» similar to when cardinality «unlimited» is used": "https://www.drupal.org/files/issues/2022-01-27/drupal-fix-limited-cardinality-fields-1156338-23.patch", + "1156338 - Fixed maximum number of field values, but use «add more» similar to when cardinality «unlimited» is used": "https://www.drupal.org/files/issues/2023-12-20/1156338-31.patch", "2942404 - Contentinfo landmark" : "https://www.drupal.org/files/issues/2023-06-30/2942404-messages-should-have-role-status.patch", "3047110 - Add workflow to taxonomy" : "https://www.drupal.org/files/issues/2023-04-14/3047110-45.patch", - "3106205 - Length of menu_tree.url and menu_tree.route_param_key are too short (255 characters)": "https://www.drupal.org/files/issues/2023-05-24/3106205-length-menu-tree-too-short.patch", + "3106205 - Length of menu_tree.url and menu_tree.route_param_key are too short (255 characters)": "https://www.drupal.org/files/issues/2024-01-02/3106205-length-menu-tree-too-short-48.patch", "3333401 - Pager h4 cause accessibility flag on many pages": "https://www.drupal.org/files/issues/2023-11-01/3333401-64.patch", "3382759 - Add multiple workflow content moderation filter to Views.": "https://www.drupal.org/files/issues/2023-08-24/3382759-8.patch", "3241295 - CKEditor 5 isn't respecting field widgets row settings": "https://www.drupal.org/files/issues/2023-11-14/3241295-d10.1.6-114.patch", diff --git a/composer.lock b/composer.lock index 56b4ce78159..4331c29571a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,35 +4,35 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "278a78fb3e953f12430e44360485741e", + "content-hash": "d7d79fcec81d79a5fc5ef670d20ad66d", "packages": [ { "name": "asm89/stack-cors", - "version": "v2.1.1", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/50f57105bad3d97a43ec4a485eb57daf347eafea", + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" + "php": "^7.3|^8.0", + "symfony/http-foundation": "^5.3|^6|^7", + "symfony/http-kernel": "^5.3|^6|^7" }, "require-dev": { - "phpunit/phpunit": "^7|^9", + "phpunit/phpunit": "^9", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" } }, "autoload": { @@ -58,9 +58,9 @@ ], "support": { "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + "source": "https://github.com/asm89/stack-cors/tree/v2.2.0" }, - "time": "2022-01-18T09:12:03+00:00" + "time": "2023-11-14T13:51:46+00:00" }, { "name": "bjeavons/zxcvbn-php", @@ -195,49 +195,48 @@ }, { "name": "chi-teck/drupal-code-generator", - "version": "2.6.2", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/Chi-teck/drupal-code-generator.git", - "reference": "22ed1cc02dc47814e8239de577da541e9b9bd980" + "reference": "56da9209b24a5a5b5d27bec9e523f02bdd101770" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/22ed1cc02dc47814e8239de577da541e9b9bd980", - "reference": "22ed1cc02dc47814e8239de577da541e9b9bd980", + "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/56da9209b24a5a5b5d27bec9e523f02bdd101770", + "reference": "56da9209b24a5a5b5d27bec9e523f02bdd101770", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=7.4", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "symfony/console": "^4.4.15 || ^5.1 || ^6.0", - "symfony/filesystem": "^4.4 || ^5.1 || ^6", - "symfony/polyfill-php80": "^1.23", - "symfony/string": "^5.1 || ^6", - "twig/twig": "^2.14.11 || ^3.1" + "php": ">=8.1.0", + "psr/event-dispatcher": "^1.0", + "psr/log": "^3.0", + "symfony/console": "^6.3", + "symfony/dependency-injection": "^6.3.2", + "symfony/filesystem": "^6.3", + "symfony/string": "^6.3", + "twig/twig": "^3.4" }, "conflict": { "squizlabs/php_codesniffer": "<3.6" }, "require-dev": { - "chi-teck/drupal-coder-extension": "^1.2", - "drupal/coder": "^8.3.14", + "chi-teck/drupal-coder-extension": "^2.0.0-alpha4", + "drupal/coder": "8.3.22", + "drupal/core": "10.1.x-dev", + "ext-simplexml": "*", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.4", - "squizlabs/php_codesniffer": "^3.5", - "symfony/var-dumper": "^5.2 || ^6.0", - "symfony/yaml": "^5.2 || ^6.0" + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "^3.7", + "symfony/var-dumper": "^6.3", + "symfony/yaml": "^6.3", + "vimeo/psalm": "^5.14.0" }, "bin": [ "bin/dcg" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { "psr-4": { "DrupalCodeGenerator\\": "src" @@ -250,9 +249,9 @@ "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/2.6.2" + "source": "https://github.com/Chi-teck/drupal-code-generator/tree/3.3.0" }, - "time": "2022-11-11T15:34:04+00:00" + "time": "2023-10-21T12:57:05+00:00" }, { "name": "clue/stream-filter", @@ -531,16 +530,16 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -590,9 +589,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -608,20 +607,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "consolidation/annotated-command", - "version": "4.9.1", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9" + "reference": "b5255dcbee1de95036185062a103dabc622224de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", - "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/b5255dcbee1de95036185062a103dabc622224de", + "reference": "b5255dcbee1de95036185062a103dabc622224de", "shasum": "" }, "require": { @@ -662,9 +661,9 @@ "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.9.1" + "source": "https://github.com/consolidation/annotated-command/tree/4.9.2" }, - "time": "2023-05-20T04:19:01+00:00" + "time": "2023-12-26T14:30:50+00:00" }, { "name": "consolidation/config", @@ -2593,17 +2592,17 @@ }, { "name": "drupal/animated_gif", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/animated_gif.git", - "reference": "2.0.3" + "reference": "2.0.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/animated_gif-2.0.3.zip", - "reference": "2.0.3", - "shasum": "44c3ef0f8b6c0a1d39dc1715013c1f9071938397" + "url": "https://ftp.drupal.org/files/projects/animated_gif-2.0.4.zip", + "reference": "2.0.4", + "shasum": "157277d80d0c9b3a1b25f712bea7e1b9b9227e1e" }, "require": { "drupal/core": "^9.3 || ^10" @@ -2611,8 +2610,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.3", - "datestamp": "1682278376", + "version": "2.0.4", + "datestamp": "1700934453", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3829,16 +3828,16 @@ }, { "name": "drupal/core", - "version": "10.1.7", + "version": "10.2.0", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "54415049a721ede65318e3980b402af59bc35913" + "reference": "2f6c400cd6200f6e5900754e7e363cac811546b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/54415049a721ede65318e3980b402af59bc35913", - "reference": "54415049a721ede65318e3980b402af59bc35913", + "url": "https://api.github.com/repos/drupal/core/zipball/2f6c400cd6200f6e5900754e7e363cac811546b8", + "reference": "2f6c400cd6200f6e5900754e7e363cac811546b8", "shasum": "" }, "require": { @@ -3868,23 +3867,26 @@ "php": ">=8.1.0", "psr/log": "^3.0", "sebastian/diff": "^4", - "symfony/console": "^6.3", - "symfony/dependency-injection": "^6.3", - "symfony/event-dispatcher": "^6.3", - "symfony/http-foundation": "^6.3", - "symfony/http-kernel": "^6.3", - "symfony/mime": "^6.3", + "symfony/console": "^6.4", + "symfony/dependency-injection": "^6.4", + "symfony/event-dispatcher": "^6.4", + "symfony/filesystem": "^6.4", + "symfony/finder": "^6.4", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.4", + "symfony/mailer": "^6.4", + "symfony/mime": "^6.4", "symfony/polyfill-iconv": "^1.26", - "symfony/process": "^6.3", - "symfony/psr-http-message-bridge": "^2.1", - "symfony/routing": "^6.3", - "symfony/serializer": "^6.3", - "symfony/validator": "^6.3", - "symfony/yaml": "^6.3", + "symfony/process": "^6.4", + "symfony/psr-http-message-bridge": "^2.1|^6.4", + "symfony/routing": "^6.4", + "symfony/serializer": "^6.4", + "symfony/validator": "^6.4", + "symfony/yaml": "^6.4", "twig/twig": "^3.5.0" }, "conflict": { - "drush/drush": "<8.1.10" + "drush/drush": "<12.4.3" }, "replace": { "drupal/core-annotation": "self.version", @@ -3983,22 +3985,22 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.1.7" + "source": "https://github.com/drupal/core/tree/10.2.0" }, - "time": "2023-12-06T09:22:56+00:00" + "time": "2023-12-15T22:46:04+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "10.1.7", + "version": "10.2.2", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", - "reference": "6a2d817ccb59fdb7e6b3720a1478b0d00b475445" + "reference": "97bd91856535a354e9b1b815f0957893e26b6622" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/6a2d817ccb59fdb7e6b3720a1478b0d00b475445", - "reference": "6a2d817ccb59fdb7e6b3720a1478b0d00b475445", + "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/97bd91856535a354e9b1b815f0957893e26b6622", + "reference": "97bd91856535a354e9b1b815f0957893e26b6622", "shasum": "" }, "require": { @@ -4033,76 +4035,80 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/10.1.7" + "source": "https://github.com/drupal/core-composer-scaffold/tree/10.2.2" }, - "time": "2023-11-15T23:23:43+00:00" + "time": "2023-11-15T23:23:28+00:00" }, { "name": "drupal/core-recommended", - "version": "10.1.7", + "version": "10.2.0", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "e4726a4a0173a4b9acdac8cab5d4009d6085fd2e" + "reference": "13b68ef925c75455fd6cb6766d5879790727d83f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/e4726a4a0173a4b9acdac8cab5d4009d6085fd2e", - "reference": "e4726a4a0173a4b9acdac8cab5d4009d6085fd2e", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/13b68ef925c75455fd6cb6766d5879790727d83f", + "reference": "13b68ef925c75455fd6cb6766d5879790727d83f", "shasum": "" }, "require": { - "asm89/stack-cors": "~v2.1.1", - "composer/semver": "~3.3.2", + "asm89/stack-cors": "~v2.2.0", + "composer/semver": "~3.4.0", "doctrine/annotations": "~1.14.3", - "doctrine/deprecations": "~v1.1.1", + "doctrine/deprecations": "~1.1.2", "doctrine/lexer": "~2.1.0", - "drupal/core": "10.1.7", - "egulias/email-validator": "~4.0.1", - "guzzlehttp/guzzle": "~7.7.0", - "guzzlehttp/psr7": "~2.5.0", - "masterminds/html5": "~2.8.0", + "drupal/core": "10.2.0", + "egulias/email-validator": "~4.0.2", + "guzzlehttp/guzzle": "~7.8.1", + "guzzlehttp/promises": "~2.0.2", + "guzzlehttp/psr7": "~2.6.2", + "masterminds/html5": "~2.8.1", "mck89/peast": "~v1.15.4", "pear/archive_tar": "~1.4.14", "pear/console_getopt": "~v1.4.3", - "pear/pear-core-minimal": "~v1.10.13", + "pear/pear-core-minimal": "~v1.10.14", "pear/pear_exception": "~v1.0.2", "psr/cache": "~3.0.0", "psr/container": "~2.0.2", "psr/event-dispatcher": "~1.0.0", - "psr/http-client": "~1.0.2", + "psr/http-client": "~1.0.3", "psr/http-factory": "~1.0.2", "psr/log": "~3.0.0", "ralouphie/getallheaders": "~3.0.3", "sebastian/diff": "~4.0.5", - "symfony/console": "~v6.3.0", - "symfony/dependency-injection": "~v6.3.0", - "symfony/deprecation-contracts": "~v3.3.0", - "symfony/error-handler": "~v6.3.0", - "symfony/event-dispatcher": "~v6.3.0", - "symfony/event-dispatcher-contracts": "~v3.3.0", - "symfony/http-foundation": "~v6.3.0", - "symfony/http-kernel": "~v6.3.0", - "symfony/mime": "~v6.3.0", - "symfony/polyfill-ctype": "~v1.27.0", - "symfony/polyfill-iconv": "~v1.27.0", - "symfony/polyfill-intl-grapheme": "~v1.27.0", - "symfony/polyfill-intl-idn": "~v1.27.0", - "symfony/polyfill-intl-normalizer": "~v1.27.0", - "symfony/polyfill-mbstring": "~v1.27.0", - "symfony/polyfill-php83": "~v1.27.0", - "symfony/process": "~v6.3.0", - "symfony/psr-http-message-bridge": "~v2.2.0", - "symfony/routing": "~v6.3.0", - "symfony/serializer": "~v6.3.0", - "symfony/service-contracts": "~v3.3.0", - "symfony/string": "~v6.3.0", - "symfony/translation-contracts": "~v3.3.0", - "symfony/validator": "~v6.3.0", - "symfony/var-dumper": "~v6.3.0", - "symfony/var-exporter": "~v6.3.0", - "symfony/yaml": "~v6.3.0", - "twig/twig": "~v3.6.0" + "symfony/console": "~v6.4.1", + "symfony/dependency-injection": "~v6.4.1", + "symfony/deprecation-contracts": "~v3.4.0", + "symfony/error-handler": "~v6.4.0", + "symfony/event-dispatcher": "~v6.4.0", + "symfony/event-dispatcher-contracts": "~v3.4.0", + "symfony/filesystem": "~v6.4.0", + "symfony/finder": "~v6.4.0", + "symfony/http-foundation": "~v6.4.0", + "symfony/http-kernel": "~v6.4.1", + "symfony/mailer": "~v6.4.0", + "symfony/mime": "~v6.4.0", + "symfony/polyfill-ctype": "~v1.28.0", + "symfony/polyfill-iconv": "~v1.28.0", + "symfony/polyfill-intl-grapheme": "~v1.28.0", + "symfony/polyfill-intl-idn": "~v1.28.0", + "symfony/polyfill-intl-normalizer": "~v1.28.0", + "symfony/polyfill-mbstring": "~v1.28.0", + "symfony/polyfill-php83": "~v1.28.0", + "symfony/process": "~v6.4.0", + "symfony/psr-http-message-bridge": "~v6.4.0", + "symfony/routing": "~v6.4.1", + "symfony/serializer": "~v6.4.1", + "symfony/service-contracts": "~v3.4.0", + "symfony/string": "~v6.4.0", + "symfony/translation-contracts": "~v3.4.0", + "symfony/validator": "~v6.4.0", + "symfony/var-dumper": "~v6.4.0", + "symfony/var-exporter": "~v6.4.1", + "symfony/yaml": "~v6.4.0", + "twig/twig": "~v3.8.0" }, "conflict": { "webflo/drupal-core-strict": "*" @@ -4114,25 +4120,25 @@ ], "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/10.1.7" + "source": "https://github.com/drupal/core-recommended/tree/10.2.0" }, - "time": "2023-12-06T09:22:56+00:00" + "time": "2023-12-15T22:46:04+00:00" }, { "name": "drupal/core_event_dispatcher", - "version": "3.3.4", + "version": "4.0.0-rc1", "require": { - "drupal/core": "^9.3", + "drupal/core": "^9.3 || ^10", "drupal/hook_event_dispatcher": "*" }, "type": "metapackage", "extra": { "drupal": { - "version": "3.3.4", - "datestamp": "1691759682", + "version": "4.0.0-rc1", + "datestamp": "1691676068", "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" + "status": "not-covered", + "message": "RC releases are not covered by Drupal security advisories." } } }, @@ -4447,17 +4453,17 @@ }, { "name": "drupal/danse", - "version": "2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/danse.git", - "reference": "2.3.0" + "reference": "2.3.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/danse-2.3.0.zip", - "reference": "2.3.0", - "shasum": "202b5ec257177bb9e93aaa74f400a4b8581e7dbf" + "url": "https://ftp.drupal.org/files/projects/danse-2.3.1.zip", + "reference": "2.3.1", + "shasum": "cf98e448b2564fdc61991b971548e67685c48c6f" }, "require": { "drupal/core": "^10 || ^11", @@ -4470,8 +4476,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.3.0", - "datestamp": "1702473774", + "version": "2.3.1", + "datestamp": "1703759808", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6235,19 +6241,19 @@ }, { "name": "drupal/field_event_dispatcher", - "version": "3.3.4", + "version": "4.0.0-rc1", "require": { - "drupal/core": "^9.3", + "drupal/core": "^9.3 || ^10", "drupal/hook_event_dispatcher": "*" }, "type": "metapackage", "extra": { "drupal": { - "version": "3.3.4", - "datestamp": "1691759682", + "version": "4.0.0-rc1", + "datestamp": "1691676068", "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" + "status": "not-covered", + "message": "RC releases are not covered by Drupal security advisories." } } }, @@ -6566,17 +6572,17 @@ }, { "name": "drupal/geocoder", - "version": "4.17.0", + "version": "4.18.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/geocoder.git", - "reference": "8.x-4.17" + "reference": "8.x-4.18" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-4.17.zip", - "reference": "8.x-4.17", - "shasum": "15d197d1fd76b30999721fbbe820c880103e2acd" + "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-4.18.zip", + "reference": "8.x-4.18", + "shasum": "5ad95a5e6eceecdd32ebb42b3dc5b35487dfda7b" }, "require": { "davedevelopment/stiphle": "^0.9.2", @@ -6621,8 +6627,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-4.17", - "datestamp": "1703116289", + "version": "8.x-4.18", + "datestamp": "1703166690", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6663,27 +6669,31 @@ }, { "name": "drupal/geofield", - "version": "1.56.0", + "version": "1.57.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/geofield.git", - "reference": "8.x-1.56" + "reference": "8.x-1.57" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/geofield-8.x-1.56.zip", - "reference": "8.x-1.56", - "shasum": "edcb25304edb860d0fe907b8aa2dc73b6fc83f39" + "url": "https://ftp.drupal.org/files/projects/geofield-8.x-1.57.zip", + "reference": "8.x-1.57", + "shasum": "17155834e7abe78b5710907d1f2897f3a01c5702" }, "require": { "drupal/core": "^8.8 || ^9 || ^10", "itamair/geophp": "^1.3" }, + "require-dev": { + "drupal/diff": "^1.1", + "drupal/feeds": "^3.0@beta" + }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.56", - "datestamp": "1698017493", + "version": "8.x-1.57", + "datestamp": "1701039529", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6956,7 +6966,7 @@ }, { "name": "drupal/graphql_core", - "version": "3.3.0", + "version": "3.4.0", "require": { "drupal/core": "^9 || ^10", "drupal/graphql": "*" @@ -6964,8 +6974,8 @@ "type": "metapackage", "extra": { "drupal": { - "version": "8.x-3.3", - "datestamp": "1694177393", + "version": "8.x-3.4", + "datestamp": "1699463394", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -7521,17 +7531,17 @@ }, { "name": "drupal/inline_entity_form", - "version": "1.0.0-rc15", + "version": "1.0.0-rc17", "source": { "type": "git", "url": "https://git.drupalcode.org/project/inline_entity_form.git", - "reference": "8.x-1.0-rc15" + "reference": "8.x-1.0-rc17" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/inline_entity_form-8.x-1.0-rc15.zip", - "reference": "8.x-1.0-rc15", - "shasum": "7702801f7e599956fc3d10cff8257809f53ac3ec" + "url": "https://ftp.drupal.org/files/projects/inline_entity_form-8.x-1.0-rc17.zip", + "reference": "8.x-1.0-rc17", + "shasum": "626622e01cf7a2d2977fdc06ae09afd5a814e09b" }, "require": { "drupal/core": "^8.8 || ^9 || ^10", @@ -7543,8 +7553,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.0-rc15", - "datestamp": "1678126675", + "version": "8.x-1.0-rc17", + "datestamp": "1703020130", "security-coverage": { "status": "not-covered", "message": "RC releases are not covered by Drupal security advisories." @@ -12100,17 +12110,17 @@ }, { "name": "drupal/simple_oauth", - "version": "5.2.4", + "version": "5.2.5", "source": { "type": "git", "url": "https://git.drupalcode.org/project/simple_oauth.git", - "reference": "5.2.4" + "reference": "5.2.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/simple_oauth-5.2.4.zip", - "reference": "5.2.4", - "shasum": "19e6a7842855aa1ea1d632e91cceaba29d21a515" + "url": "https://ftp.drupal.org/files/projects/simple_oauth-5.2.5.zip", + "reference": "5.2.5", + "shasum": "3517d07e4896a32eddda7446b85a2afa945321a2" }, "require": { "drupal/consumers": "^1.14", @@ -12126,8 +12136,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "5.2.4", - "datestamp": "1697698824", + "version": "5.2.5", + "datestamp": "1700206902", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -12602,17 +12612,17 @@ }, { "name": "drupal/subrequests", - "version": "3.0.7", + "version": "3.0.10", "source": { "type": "git", "url": "https://git.drupalcode.org/project/subrequests.git", - "reference": "3.0.7" + "reference": "3.0.10" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/subrequests-3.0.7.zip", - "reference": "3.0.7", - "shasum": "f78f5a382583007b8844fc26b9f4ba7b58f9fa3d" + "url": "https://ftp.drupal.org/files/projects/subrequests-3.0.10.zip", + "reference": "3.0.10", + "shasum": "52d176f5fc813f7a11dbb42e4aaf654a9232e4c0" }, "require": { "drupal/core": "^8 || ^9 || ^10", @@ -12624,8 +12634,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.0.7", - "datestamp": "1682600732", + "version": "3.0.10", + "datestamp": "1703173149", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -13572,33 +13582,33 @@ }, { "name": "drupal/views_bulk_operations", - "version": "4.2.5", + "version": "4.2.6", "source": { "type": "git", "url": "https://git.drupalcode.org/project/views_bulk_operations.git", - "reference": "4.2.5" + "reference": "4.2.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-4.2.5.zip", - "reference": "4.2.5", - "shasum": "220479c5187b1619d5703f64c6f8c272afecf897" + "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-4.2.6.zip", + "reference": "4.2.6", + "shasum": "20c6f77c0cebda75edfa570a8dc53fb133d6283a" }, "require": { "drupal/core": "^9.4 || ^10", "php": ">=7.4.0" }, "require-dev": { - "drush/drush": "^11" + "drush/drush": "^12" }, "suggest": { - "drush/drush": "^10 || ^11" + "drush/drush": "^11 || ^12" }, "type": "drupal-module", "extra": { "drupal": { - "version": "4.2.5", - "datestamp": "1691066184", + "version": "4.2.6", + "datestamp": "1704281842", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -13912,57 +13922,55 @@ }, { "name": "drush/drush", - "version": "11.6.0", + "version": "12.4.3", "source": { "type": "git", "url": "https://github.com/drush-ops/drush.git", - "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78" + "reference": "8245acede57ecc62a90aa0f19ff3b29e5f11f971" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", - "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/8245acede57ecc62a90aa0f19ff3b29e5f11f971", + "reference": "8245acede57ecc62a90aa0f19ff3b29e5f11f971", "shasum": "" }, "require": { - "chi-teck/drupal-code-generator": "^2.4", + "chi-teck/drupal-code-generator": "^3.0", + "composer-runtime-api": "^2.2", "composer/semver": "^1.4 || ^3", - "consolidation/annotated-command": "^4.8.2", - "consolidation/config": "^2", - "consolidation/filter-via-dot-access-data": "^2", - "consolidation/robo": "^3.0.9 || ^4.0.1", - "consolidation/site-alias": "^3.1.6 || ^4", - "consolidation/site-process": "^4.1.3 || ^5", - "enlightn/security-checker": "^1", + "consolidation/annotated-command": "^4.9.1", + "consolidation/config": "^2.1.2", + "consolidation/filter-via-dot-access-data": "^2.0.2", + "consolidation/output-formatters": "^4.3.2", + "consolidation/robo": "^4.0.6", + "consolidation/site-alias": "^4", + "consolidation/site-process": "^5.2.0", "ext-dom": "*", - "guzzlehttp/guzzle": "^6.5 || ^7.0", - "league/container": "^3.4 || ^4", - "php": ">=7.4", + "grasmash/yaml-cli": "^3.1", + "guzzlehttp/guzzle": "^7.0", + "league/container": "^4", + "php": ">=8.1", "psy/psysh": "~0.11", - "symfony/event-dispatcher": "^4.0 || ^5.0 || ^6.0", - "symfony/filesystem": "^4.4 || ^5.4 || ^6.1", - "symfony/finder": "^4.0 || ^5 || ^6", - "symfony/polyfill-php80": "^1.23", - "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0", - "symfony/yaml": "^4.0 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^6", + "symfony/filesystem": "^6.1", + "symfony/finder": "^6", + "symfony/var-dumper": "^6.0", + "symfony/yaml": "^6.0", "webflo/drupal-finder": "^1.2" }, "conflict": { - "drupal/core": "< 9.2", + "drupal/core": "< 10.0", "drupal/migrate_run": "*", "drupal/migrate_tools": "<= 5" }, "require-dev": { - "composer/installers": "^1.7", + "composer/installers": "^2", "cweagans/composer-patches": "~1.0", - "david-garcia/phpwhois": "4.3.0", - "drupal/core-recommended": "^9 || ^10", + "drupal/core-recommended": "^10", "drupal/semver_example": "2.3.0", - "phpunit/phpunit": ">=7.5.20", + "phpunit/phpunit": "^9", "rector/rector": "^0.12", - "squizlabs/php_codesniffer": "^3.6", - "vlucas/phpdotenv": "^2.4", - "yoast/phpunit-polyfills": "^0.2.0" + "squizlabs/php_codesniffer": "^3.7" }, "bin": [ "drush" @@ -14044,8 +14052,9 @@ "support": { "forum": "http://drupal.stackexchange.com/questions/tagged/drush", "issues": "https://github.com/drush-ops/drush/issues", + "security": "https://github.com/drush-ops/drush/security/advisories", "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/11.6.0" + "source": "https://github.com/drush-ops/drush/tree/12.4.3" }, "funding": [ { @@ -14053,7 +14062,7 @@ "type": "github" } ], - "time": "2023-06-06T18:46:18+00:00" + "time": "2023-11-16T22:57:24+00:00" }, { "name": "e0ipso/shaper", @@ -14243,88 +14252,22 @@ ], "time": "2023-10-06T06:47:41+00:00" }, - { - "name": "enlightn/security-checker", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/enlightn/security-checker.git", - "reference": "196bacc76e7a72a63d0e1220926dbb190272db97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/enlightn/security-checker/zipball/196bacc76e7a72a63d0e1220926dbb190272db97", - "reference": "196bacc76e7a72a63d0e1220926dbb190272db97", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6", - "symfony/console": "^3.4|^4|^5|^6", - "symfony/finder": "^3|^4|^5|^6", - "symfony/process": "^3.4|^4|^5|^6", - "symfony/yaml": "^3.4|^4|^5|^6" - }, - "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^2.18|^3.0", - "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.10.0" - }, - "time": "2022-02-21T22:40:16+00:00" - }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -14366,9 +14309,9 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "galbar/jsonpath", @@ -14424,16 +14367,16 @@ }, { "name": "geocoder-php/common-http", - "version": "dev-master", + "version": "4.6.0", "source": { "type": "git", "url": "https://github.com/geocoder-php/php-common-http.git", - "reference": "15629fd7bf771f525282ad1b60d2106bcf630ce9" + "reference": "d8c22a66120daed35ba8017467bc1ebfec28a63e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/geocoder-php/php-common-http/zipball/15629fd7bf771f525282ad1b60d2106bcf630ce9", - "reference": "15629fd7bf771f525282ad1b60d2106bcf630ce9", + "url": "https://api.github.com/repos/geocoder-php/php-common-http/zipball/d8c22a66120daed35ba8017467bc1ebfec28a63e", + "reference": "d8c22a66120daed35ba8017467bc1ebfec28a63e", "shasum": "" }, "require": { @@ -14450,7 +14393,6 @@ "phpunit/phpunit": "^9.5", "symfony/stopwatch": "~2.5 || ~5.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -14483,7 +14425,7 @@ "support": { "source": "https://github.com/geocoder-php/php-common-http/tree/4.6.0" }, - "time": "2023-07-31T20:07:24+00:00" + "time": "2023-12-28T10:51:54+00:00" }, { "name": "geocoder-php/mapbox-provider", @@ -14768,34 +14710,30 @@ }, { "name": "gitonomy/gitlib", - "version": "v1.3.8", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/gitonomy/gitlib.git", - "reference": "9fea656e75ad6e3452feb2cac46a6c1239cd7f74" + "reference": "2c7fbbd9814178474d0bb1b6292701cb4ab508f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/9fea656e75ad6e3452feb2cac46a6c1239cd7f74", - "reference": "9fea656e75ad6e3452feb2cac46a6c1239cd7f74", + "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/2c7fbbd9814178474d0bb1b6292701cb4ab508f9", + "reference": "2c7fbbd9814178474d0bb1b6292701cb4ab508f9", "shasum": "" }, "require": { "ext-pcre": "*", - "php": "^5.6 || ^7.0 || ^8.0", + "php": "^8.0", "symfony/polyfill-mbstring": "^1.7", - "symfony/process": "^3.4 || ^4.4 || ^5.0 || ^6.0" + "symfony/process": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "ext-fileinfo": "*", - "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.20 || ^9.5.9", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.20 || ^9.5.9", "psr/log": "^1.0" }, - "suggest": { - "ext-fileinfo": "Required to determine the mimetype of a blob", - "psr/log": "Required to use loggers for reporting of execution" - }, "type": "library", "autoload": { "psr-4": { @@ -14831,7 +14769,7 @@ "description": "Library for accessing git", "support": { "issues": "https://github.com/gitonomy/gitlib/issues", - "source": "https://github.com/gitonomy/gitlib/tree/v1.3.8" + "source": "https://github.com/gitonomy/gitlib/tree/v1.4.0" }, "funding": [ { @@ -14839,7 +14777,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T08:29:06+00:00" + "time": "2023-12-20T13:02:08+00:00" }, { "name": "graham-campbell/result-type", @@ -14955,24 +14893,80 @@ }, "time": "2022-05-10T13:14:49+00:00" }, + { + "name": "grasmash/yaml-cli", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/yaml-cli.git", + "reference": "00f3fd775f6abbfacd44432f1999c3c3b02791f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/yaml-cli/zipball/00f3fd775f6abbfacd44432f1999c3c3b02791f0", + "reference": "00f3fd775f6abbfacd44432f1999c3c3b02791f0", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3", + "php": ">=8.0", + "symfony/console": "^6", + "symfony/filesystem": "^6", + "symfony/yaml": "^6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.0" + }, + "bin": [ + "bin/yaml-cli" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\YamlCli\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "A command line tool for reading and manipulating yaml files.", + "support": { + "issues": "https://github.com/grasmash/yaml-cli/issues", + "source": "https://github.com/grasmash/yaml-cli/tree/3.1.0" + }, + "time": "2022-05-09T20:22:34+00:00" + }, { "name": "guzzlehttp/guzzle", - "version": "7.7.1", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "085b026db54d4b5012f727c80c9958e8b8cbc454" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/085b026db54d4b5012f727c80c9958e8b8cbc454", - "reference": "085b026db54d4b5012f727c80c9958e8b8cbc454", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -14981,11 +14975,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -15063,7 +15057,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.1" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -15079,7 +15073,7 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:02:06+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", @@ -15166,16 +15160,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.5.1", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a0b3a03e8e8005257fbc408ce5f0fd0a8274dc7f" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a0b3a03e8e8005257fbc408ce5f0fd0a8274dc7f", - "reference": "a0b3a03e8e8005257fbc408ce5f0fd0a8274dc7f", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { @@ -15189,9 +15183,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -15262,7 +15256,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.1" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -15278,7 +15272,7 @@ "type": "tidelift" } ], - "time": "2023-08-03T15:02:42+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "http-interop/http-factory-guzzle", @@ -15340,16 +15334,16 @@ }, { "name": "itamair/geophp", - "version": "1.5", + "version": "1.6", "source": { "type": "git", "url": "https://github.com/itamair/geoPHP.git", - "reference": "645f3262ebaa7443d58910207c65f386c733f614" + "reference": "f210e37ab3d4706b7e8cfe3183fec2f5be8a85e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/itamair/geoPHP/zipball/645f3262ebaa7443d58910207c65f386c733f614", - "reference": "645f3262ebaa7443d58910207c65f386c733f614", + "url": "https://api.github.com/repos/itamair/geoPHP/zipball/f210e37ab3d4706b7e8cfe3183fec2f5be8a85e6", + "reference": "f210e37ab3d4706b7e8cfe3183fec2f5be8a85e6", "shasum": "" }, "require-dev": { @@ -15380,9 +15374,9 @@ "description": "GeoPHP is a open-source native PHP library for doing geometry operations. It is written entirely in PHP and can therefore run on shared hosts. It can read and write a wide variety of formats: WKT (including EWKT), WKB (including EWKB), GeoJSON, KML, GPX, GeoRSS). It works with all Simple-Feature geometries (Point, LineString, Polygon, GeometryCollection etc.) and can be used to get centroids, bounding-boxes, area, and a wide variety of other useful information.", "homepage": "https://github.com/itamair/geoPHP", "support": { - "source": "https://github.com/itamair/geoPHP/tree/1.5" + "source": "https://github.com/itamair/geoPHP/tree/1.6" }, - "time": "2023-04-26T23:16:44+00:00" + "time": "2023-12-23T23:28:59+00:00" }, { "name": "jean85/pretty-package-versions", @@ -16256,16 +16250,16 @@ }, { "name": "league/uri", - "version": "7.3.0", + "version": "7.4.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "36743c3961bb82bf93da91917b6bced0358a8d45" + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/36743c3961bb82bf93da91917b6bced0358a8d45", - "reference": "36743c3961bb82bf93da91917b6bced0358a8d45", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5", + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5", "shasum": "" }, "require": { @@ -16334,7 +16328,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.3.0" + "source": "https://github.com/thephpleague/uri/tree/7.4.0" }, "funding": [ { @@ -16342,20 +16336,20 @@ "type": "github" } ], - "time": "2023-09-09T17:21:43+00:00" + "time": "2023-12-01T06:24:25+00:00" }, { "name": "league/uri-interfaces", - "version": "7.3.0", + "version": "7.4.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "c409b60ed2245ff94c965a8c798a60166db53361" + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c409b60ed2245ff94c965a8c798a60166db53361", - "reference": "c409b60ed2245ff94c965a8c798a60166db53361", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3", + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3", "shasum": "" }, "require": { @@ -16418,7 +16412,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.3.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0" }, "funding": [ { @@ -16426,7 +16420,7 @@ "type": "github" } ], - "time": "2023-09-09T17:21:43+00:00" + "time": "2023-11-24T15:40:42+00:00" }, { "name": "masterminds/html5", @@ -17066,16 +17060,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -17116,9 +17110,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "npm-asset/dropzone", @@ -17818,16 +17812,16 @@ }, { "name": "php-http/cache-plugin", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/php-http/cache-plugin.git", - "reference": "6bf9fbf66193f61d90c2381b75eb1fa0202fd314" + "reference": "b3e6c25d89ee5e4ac82115ed23b21ba87986d614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/6bf9fbf66193f61d90c2381b75eb1fa0202fd314", - "reference": "6bf9fbf66193f61d90c2381b75eb1fa0202fd314", + "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/b3e6c25d89ee5e4ac82115ed23b21ba87986d614", + "reference": "b3e6c25d89ee5e4ac82115ed23b21ba87986d614", "shasum": "" }, "require": { @@ -17835,7 +17829,7 @@ "php-http/client-common": "^1.9 || ^2.0", "php-http/message-factory": "^1.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" @@ -17866,9 +17860,9 @@ ], "support": { "issues": "https://github.com/php-http/cache-plugin/issues", - "source": "https://github.com/php-http/cache-plugin/tree/1.8.0" + "source": "https://github.com/php-http/cache-plugin/tree/1.8.1" }, - "time": "2023-04-28T10:56:55+00:00" + "time": "2023-11-21T08:52:56+00:00" }, { "name": "php-http/client-common", @@ -19024,23 +19018,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.30", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -19090,7 +19084,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" }, "funding": [ { @@ -19098,7 +19092,7 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -19942,25 +19936,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.22", + "version": "v0.12.0", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/750bf031a48fd07c673dbe3f11f72362ea306d0d", + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -19971,8 +19965,7 @@ "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." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -19980,7 +19973,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-0.11": "0.11.x-dev" + "dev-main": "0.12.x-dev" }, "bamarni-bin": { "bin-links": false, @@ -20016,9 +20009,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.0" }, - "time": "2023-10-14T21:56:36+00:00" + "time": "2023-12-20T15:28:09+00:00" }, { "name": "querypath/querypath", @@ -20395,20 +20388,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -20440,7 +20433,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -20448,7 +20441,7 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", @@ -20722,20 +20715,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -20767,7 +20760,7 @@ "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" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -20775,7 +20768,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -21493,16 +21486,16 @@ }, { "name": "simplesamlphp/simplesamlphp-assets-base", - "version": "v2.1.6", + "version": "v2.1.8", "source": { "type": "git", "url": "https://github.com/simplesamlphp/simplesamlphp-assets-base.git", - "reference": "ab7fdad861877ab439860ec5f77727ff2dc99327" + "reference": "16ce8123311b93af783858eccf7ce01eceded84e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/ab7fdad861877ab439860ec5f77727ff2dc99327", - "reference": "ab7fdad861877ab439860ec5f77727ff2dc99327", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-assets-base/zipball/16ce8123311b93af783858eccf7ce01eceded84e", + "reference": "16ce8123311b93af783858eccf7ce01eceded84e", "shasum": "" }, "require": { @@ -21523,9 +21516,9 @@ "description": "Assets for the SimpleSAMLphp main repository", "support": { "issues": "https://github.com/simplesamlphp/simplesamlphp-assets-base/issues", - "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.1.6" + "source": "https://github.com/simplesamlphp/simplesamlphp-assets-base/tree/v2.1.8" }, - "time": "2023-10-26T09:03:43+00:00" + "time": "2023-12-24T00:59:54+00:00" }, { "name": "simshaun/recurr", @@ -21965,16 +21958,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a" + "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a", + "url": "https://api.github.com/repos/symfony/cache/zipball/14a75869bbb41cb35bc5d9d322473928c6f3f978", + "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978", "shasum": "" }, "require": { @@ -22041,7 +22034,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.0" + "source": "https://github.com/symfony/cache/tree/v6.4.2" }, "funding": [ { @@ -22057,7 +22050,7 @@ "type": "tidelift" } ], - "time": "2023-11-24T19:28:07+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/cache-contracts", @@ -22212,16 +22205,16 @@ }, { "name": "symfony/console", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ca73e92b0ab86d3c5347f58ec6d822cce6ded1b0" + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ca73e92b0ab86d3c5347f58ec6d822cce6ded1b0", - "reference": "ca73e92b0ab86d3c5347f58ec6d822cce6ded1b0", + "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", "shasum": "" }, "require": { @@ -22229,7 +22222,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -22243,12 +22236,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -22282,7 +22279,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.11" + "source": "https://github.com/symfony/console/tree/v6.4.2" }, "funding": [ { @@ -22298,20 +22295,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T14:03:40+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "891c195b2aa6beed145adf2c9cf0dcbdb58f71b4" + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/891c195b2aa6beed145adf2c9cf0dcbdb58f71b4", - "reference": "891c195b2aa6beed145adf2c9cf0dcbdb58f71b4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/226ea431b1eda6f0d9f5a4b278757171960bb195", + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195", "shasum": "" }, "require": { @@ -22319,7 +22316,7 @@ "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10" + "symfony/var-exporter": "^6.2.10|^7.0" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -22333,9 +22330,9 @@ "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.1", - "symfony/expression-language": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/config": "^6.1|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -22363,7 +22360,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.3.11" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.2" }, "funding": [ { @@ -22379,11 +22376,11 @@ "type": "tidelift" } ], - "time": "2023-12-28T19:16:47+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -22430,7 +22427,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -22517,30 +22514,31 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "1f69476b64fb47105c06beef757766c376b548c4" + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", - "reference": "1f69476b64fb47105c06beef757766c376b548c4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5" + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -22571,7 +22569,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.5" + "source": "https://github.com/symfony/error-handler/tree/v6.4.0" }, "funding": [ { @@ -22587,20 +22585,20 @@ "type": "tidelift" } ], - "time": "2023-09-12T06:57:20+00:00" + "time": "2023-10-18T09:43:34+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "4b4738c49f4dc2f6cf750301c7781dd0d715c0b8" + "reference": "e95216850555cd55e71b857eb9d6c2674124603a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4b4738c49f4dc2f6cf750301c7781dd0d715c0b8", - "reference": "4b4738c49f4dc2f6cf750301c7781dd0d715c0b8", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a", + "reference": "e95216850555cd55e71b857eb9d6c2674124603a", "shasum": "" }, "require": { @@ -22617,13 +22615,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -22651,7 +22649,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.11" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2" }, "funding": [ { @@ -22667,11 +22665,11 @@ "type": "tidelift" } ], - "time": "2023-12-27T22:16:07+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -22727,7 +22725,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -22874,34 +22872,34 @@ }, { "name": "symfony/framework-bundle", - "version": "v6.3.9", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda" + "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f83d20092e98c3ae8b5874b8f0787546c5c61cda", - "reference": "f83d20092e98c3ae8b5874b8f0787546c5c61cda", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c26a221e0462027d1f9d4a802ed63f8ab07a43d0", + "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.1", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^6.1", - "symfony/dependency-injection": "^6.3.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.1", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-foundation": "^6.3", - "symfony/http-kernel": "^6.3", + "symfony/error-handler": "^6.1|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^5.4|^6.0" + "symfony/routing": "^6.4|^7.0" }, "conflict": { "doctrine/annotations": "<1.13.1", @@ -22909,67 +22907,71 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/asset": "<5.4", + "symfony/asset-mapper": "<6.4", "symfony/clock": "<6.3", - "symfony/console": "<5.4", - "symfony/dom-crawler": "<6.3", + "symfony/console": "<5.4|>=7.0", + "symfony/dom-crawler": "<6.4", "symfony/dotenv": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<6.3", "symfony/lock": "<5.4", "symfony/mailer": "<5.4", "symfony/messenger": "<6.3", - "symfony/mime": "<6.2", + "symfony/mime": "<6.4", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", + "symfony/scheduler": "<6.4", "symfony/security-core": "<5.4", "symfony/security-csrf": "<5.4", - "symfony/serializer": "<6.3", + "symfony/serializer": "<6.4", "symfony/stopwatch": "<5.4", - "symfony/translation": "<6.2.8", + "symfony/translation": "<6.4", "symfony/twig-bridge": "<5.4", "symfony/twig-bundle": "<5.4", - "symfony/validator": "<6.3", - "symfony/web-profiler-bundle": "<5.4", - "symfony/workflow": "<5.4" + "symfony/validator": "<6.4", + "symfony/web-profiler-bundle": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { "doctrine/annotations": "^1.13.1|^2", "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.4|^6.0", - "symfony/asset-mapper": "^6.3", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/console": "^5.4.9|^6.0.9", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dom-crawler": "^6.3", - "symfony/dotenv": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/form": "^5.4|^6.0", - "symfony/html-sanitizer": "^6.1", - "symfony/http-client": "^6.3", - "symfony/lock": "^5.4|^6.0", - "symfony/mailer": "^5.4|^6.0", - "symfony/messenger": "^6.3", - "symfony/mime": "^6.2", - "symfony/notifier": "^5.4|^6.0", + "seld/jsonlint": "^1.10", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/console": "^5.4.9|^6.0.9|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/dotenv": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.3|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/notifier": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/rate-limiter": "^5.4|^6.0", - "symfony/scheduler": "^6.3", - "symfony/security-bundle": "^5.4|^6.0", - "symfony/semaphore": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/string": "^5.4|^6.0", - "symfony/translation": "^6.2.8", - "symfony/twig-bundle": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/web-link": "^5.4|^6.0", - "symfony/workflow": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/scheduler": "^6.4|^7.0", + "symfony/security-bundle": "^5.4|^6.0|^7.0", + "symfony/semaphore": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", "twig/twig": "^2.10|^3.0" }, "type": "symfony-bundle", @@ -22998,7 +23000,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.3.9" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.2" }, "funding": [ { @@ -23014,20 +23016,20 @@ "type": "tidelift" } ], - "time": "2023-11-24T10:25:33+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "63a2041d055f17cdbd454838e2fbb822e2abc266" + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/63a2041d055f17cdbd454838e2fbb822e2abc266", - "reference": "63a2041d055f17cdbd454838e2fbb822e2abc266", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", "shasum": "" }, "require": { @@ -23042,12 +23044,12 @@ "require-dev": { "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -23075,7 +23077,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.11" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" }, "funding": [ { @@ -23091,29 +23093,29 @@ "type": "tidelift" } ], - "time": "2023-12-27T22:16:07+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9e9966d27dfe612898ffb3c507a1db2f29faefd1" + "reference": "13e8387320b5942d0dc408440c888e2d526efef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9e9966d27dfe612898ffb3c507a1db2f29faefd1", - "reference": "9e9966d27dfe612898ffb3c507a1db2f29faefd1", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.3.4", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -23121,7 +23123,7 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3.4", + "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", @@ -23131,7 +23133,7 @@ "symfony/translation": "<5.4", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.4", "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, @@ -23140,26 +23142,26 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3.4", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4.5|^6.0.5", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, "type": "library", @@ -23188,7 +23190,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.11" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" }, "funding": [ { @@ -23204,20 +23206,20 @@ "type": "tidelift" } ], - "time": "2023-12-30T13:09:13+00:00" + "time": "2023-12-30T15:31:44+00:00" }, { "name": "symfony/intl", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "41d16f0294b9ca6e5540728580c65cfa3848fbf5" + "reference": "4f45148f7eb984ef12b1f7e123205ab904828839" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/41d16f0294b9ca6e5540728580c65cfa3848fbf5", - "reference": "41d16f0294b9ca6e5540728580c65cfa3848fbf5", + "url": "https://api.github.com/repos/symfony/intl/zipball/4f45148f7eb984ef12b1f7e123205ab904828839", + "reference": "4f45148f7eb984ef12b1f7e123205ab904828839", "shasum": "" }, "require": { @@ -23270,7 +23272,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.0" + "source": "https://github.com/symfony/intl/tree/v6.4.2" }, "funding": [ { @@ -23286,20 +23288,100 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:12:08+00:00" + "time": "2023-12-26T18:38:00+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "6da89e5c9202f129717a770a03183fb140720168" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168", + "reference": "6da89e5c9202f129717a770a03183fb140720168", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "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 sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.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": "2023-12-19T09:12:31+00:00" }, { "name": "symfony/mime", - "version": "v6.3.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", "shasum": "" }, "require": { @@ -23313,16 +23395,16 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + "symfony/serializer": "<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "~6.2.13|^6.3.2" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -23354,7 +23436,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.5" + "source": "https://github.com/symfony/mime/tree/v6.4.0" }, "funding": [ { @@ -23370,7 +23452,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T06:59:36+00:00" + "time": "2023-10-17T11:49:05+00:00" }, { "name": "symfony/options-resolver", @@ -23441,16 +23523,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v5.4.26", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "d04639b395e25efa4260fc5b12a9fa1eafb38a64" + "reference": "b3f772189bfc52e870233a040e888fc3b64c2a22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d04639b395e25efa4260fc5b12a9fa1eafb38a64", - "reference": "d04639b395e25efa4260fc5b12a9fa1eafb38a64", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/b3f772189bfc52e870233a040e888fc3b64c2a22", + "reference": "b3f772189bfc52e870233a040e888fc3b64c2a22", "shasum": "" }, "require": { @@ -23504,7 +23586,7 @@ "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.26" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.34" }, "funding": [ { @@ -23520,20 +23602,20 @@ "type": "tidelift" } ], - "time": "2023-07-12T15:44:31+00:00" + "time": "2023-12-18T14:56:06+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -23548,7 +23630,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -23586,7 +23668,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -23602,20 +23684,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "927013f3aac555983a5059aada98e1907d842695" + "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", - "reference": "927013f3aac555983a5059aada98e1907d842695", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6de50471469b8c9afc38164452ab2b6170ee71c1", + "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1", "shasum": "" }, "require": { @@ -23630,7 +23712,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -23669,7 +23751,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.28.0" }, "funding": [ { @@ -23685,20 +23767,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -23710,7 +23792,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -23750,7 +23832,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -23766,7 +23848,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-icu", @@ -23857,16 +23939,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -23880,7 +23962,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -23924,7 +24006,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -23940,20 +24022,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -23965,7 +24047,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24008,7 +24090,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -24024,20 +24106,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -24052,7 +24134,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24091,7 +24173,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -24107,7 +24189,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", @@ -24349,16 +24431,16 @@ }, { "name": "symfony/polyfill-php83", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { @@ -24368,7 +24450,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -24381,7 +24463,10 @@ ], "psr-4": { "Symfony\\Polyfill\\Php83\\": "" - } + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -24406,7 +24491,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -24422,20 +24507,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { "name": "symfony/process", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "0a4e8fac947b0f1720b0f634a13a2273cc4cc1ad" + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0a4e8fac947b0f1720b0f634a13a2273cc4cc1ad", - "reference": "0a4e8fac947b0f1720b0f634a13a2273cc4cc1ad", + "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", "shasum": "" }, "require": { @@ -24467,7 +24552,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.11" + "source": "https://github.com/symfony/process/tree/v6.4.2" }, "funding": [ { @@ -24483,7 +24568,7 @@ "type": "tidelift" } ], - "time": "2023-12-02T12:48:42+00:00" + "time": "2023-12-22T16:42:54+00:00" }, { "name": "symfony/property-access", @@ -24564,34 +24649,34 @@ }, { "name": "symfony/property-info", - "version": "v6.3.9", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729" + "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/664ae7ad443d7cc591ff3e15496b954e4cefe729", - "reference": "664ae7ad443d7cc591ff3e15496b954e4cefe729", + "url": "https://api.github.com/repos/symfony/property-info/zipball/288be71bae2ebc88676f5d3a03d23f70b278fcc1", + "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", "phpdocumentor/type-resolver": "<1.5.1", - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/serializer": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -24627,7 +24712,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.3.9" + "source": "https://github.com/symfony/property-info/tree/v6.4.0" }, "funding": [ { @@ -24643,46 +24728,42 @@ "type": "tidelift" } ], - "time": "2023-11-24T11:57:32+00:00" + "time": "2023-11-25T16:57:46+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.2.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993" + "reference": "d32f5898f163266230182432b877ab7623ff252d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/28a732c05bbad801304ad5a5c674cf2970508993", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/d32f5898f163266230182432b877ab7623ff252d", + "reference": "d32f5898f163266230182432b877ab7623ff252d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0", - "symfony/http-foundation": "^5.4 || ^6.0" + "php": ">=8.1", + "psr/http-message": "^1.0|^2.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-kernel": "<6.2" }, "require-dev": { "nyholm/psr7": "^1.1", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/framework-bundle": "^5.4 || ^6.0", - "symfony/http-kernel": "^5.4 || ^6.0", - "symfony/phpunit-bridge": "^6.2" - }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + "php-http/discovery": "^1.15", + "psr/log": "^1.1.4|^2|^3", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.2|^7.0", + "symfony/http-kernel": "^6.2|^7.0" }, "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-main": "2.2-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bridge\\PsrHttpMessage\\": "" @@ -24702,11 +24783,11 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", + "homepage": "https://symfony.com", "keywords": [ "http", "http-message", @@ -24714,8 +24795,7 @@ "psr-7" ], "support": { - "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.2.0" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.2" }, "funding": [ { @@ -24731,20 +24811,20 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:40:19+00:00" + "time": "2023-12-28T07:55:26+00:00" }, { "name": "symfony/routing", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "5f1b4eb8e7b7d8487389bd774fb76f51dba57452" + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/5f1b4eb8e7b7d8487389bd774fb76f51dba57452", - "reference": "5f1b4eb8e7b7d8487389bd774fb76f51dba57452", + "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", "shasum": "" }, "require": { @@ -24760,11 +24840,11 @@ "require-dev": { "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -24798,7 +24878,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.11" + "source": "https://github.com/symfony/routing/tree/v6.4.2" }, "funding": [ { @@ -24814,20 +24894,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:20:22+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/serializer", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "83a2e5ec60dddfb227b28ef9bffb7da073e50cfc" + "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/83a2e5ec60dddfb227b28ef9bffb7da073e50cfc", - "reference": "83a2e5ec60dddfb227b28ef9bffb7da073e50cfc", + "url": "https://api.github.com/repos/symfony/serializer/zipball/f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", + "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", "shasum": "" }, "require": { @@ -24843,28 +24923,32 @@ "symfony/property-access": "<5.4", "symfony/property-info": "<5.4.24|>=6,<6.2.11", "symfony/uid": "<5.4", + "symfony/validator": "<6.4", "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/form": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4.24|^6.2.11", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0", - "symfony/var-exporter": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "seld/jsonlint": "^1.10", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4.24|^6.2.11|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -24892,7 +24976,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.3.11" + "source": "https://github.com/symfony/serializer/tree/v6.4.2" }, "funding": [ { @@ -24908,25 +24992,25 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:20:22+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -24974,7 +25058,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -24990,20 +25074,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "6a4b1e7b315cf420c814c8e29d8af1e96ae4b674" + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/6a4b1e7b315cf420c814c8e29d8af1e96ae4b674", - "reference": "6a4b1e7b315cf420c814c8e29d8af1e96ae4b674", + "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", "shasum": "" }, "require": { @@ -25017,11 +25101,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -25060,7 +25144,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.11" + "source": "https://github.com/symfony/string/tree/v6.4.2" }, "funding": [ { @@ -25076,20 +25160,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T14:03:40+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.3.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -25138,7 +25222,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -25154,20 +25238,20 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:17:10+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/validator", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "e35e841744bc8d3c54ffd35f06e22e02b36d6209" + "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/e35e841744bc8d3c54ffd35f06e22e02b36d6209", - "reference": "e35e841744bc8d3c54ffd35f06e22e02b36d6209", + "url": "https://api.github.com/repos/symfony/validator/zipball/15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", + "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", "shasum": "" }, "require": { @@ -25192,21 +25276,21 @@ "require-dev": { "doctrine/annotations": "^1.13|^2", "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -25234,7 +25318,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.3.11" + "source": "https://github.com/symfony/validator/tree/v6.4.2" }, "funding": [ { @@ -25250,20 +25334,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T16:33:47+00:00" + "time": "2023-12-29T16:34:12+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "376d3c652c17c33d88db7a7e2e5288ecf3e327dc" + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/376d3c652c17c33d88db7a7e2e5288ecf3e327dc", - "reference": "376d3c652c17c33d88db7a7e2e5288ecf3e327dc", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", "shasum": "" }, "require": { @@ -25276,10 +25360,11 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, "bin": [ @@ -25318,7 +25403,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.11" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" }, "funding": [ { @@ -25334,27 +25419,28 @@ "type": "tidelift" } ], - "time": "2023-12-28T15:37:35+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.11", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "a8a93f02c528066a3ee66ed823dff839b602e1c1" + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a8a93f02c528066a3ee66ed823dff839b602e1c1", - "reference": "a8a93f02c528066a3ee66ed823dff839b602e1c1", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e", + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -25392,7 +25478,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.11" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.2" }, "funding": [ { @@ -25408,20 +25494,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T12:32:59+00:00" + "time": "2023-12-27T08:18:35+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.8", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92" + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3493af8a8dad7fa91c77fa473ba23ecd95334a92", - "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", "shasum": "" }, "require": { @@ -25433,7 +25519,7 @@ "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -25464,7 +25550,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.8" + "source": "https://github.com/symfony/yaml/tree/v6.4.0" }, "funding": [ { @@ -25480,7 +25566,7 @@ "type": "tidelift" } ], - "time": "2023-11-06T10:58:05+00:00" + "time": "2023-11-06T11:00:25+00:00" }, { "name": "theseer/tokenizer", @@ -25704,26 +25790,27 @@ }, { "name": "twig/twig", - "version": "v3.6.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd" + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd", - "reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", "autoload": { @@ -25759,7 +25846,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.6.1" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -25771,7 +25858,7 @@ "type": "tidelift" } ], - "time": "2023-06-08T12:52:13+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { "name": "va-gov/content-build", @@ -26771,24 +26858,6 @@ } ], "aliases": [ - { - "package": "drupal/core", - "version": "10.1.7.0", - "alias": "9.5", - "alias_normalized": "9.5.0.0" - }, - { - "package": "drupal/core-composer-scaffold", - "version": "10.1.7.0", - "alias": "9.5", - "alias_normalized": "9.5.0.0" - }, - { - "package": "drupal/core-recommended", - "version": "10.1.7.0", - "alias": "9.5", - "alias_normalized": "9.5.0.0" - }, { "package": "easyrdf/easyrdf", "version": "1.1.1.0", @@ -26828,6 +26897,7 @@ "drupal/no_table_drag": 15, "drupal/openapi": 5, "drupal/openapi_ui": 5, + "drupal/paragraphs_features": 10, "drupal/password_strength": 20, "drupal/pathologic": 15, "drupal/prometheus_exporter": 10, diff --git a/docroot/robots.txt b/docroot/robots.txt index ebcd04b96ca..3ad8e2e8dec 100644 --- a/docroot/robots.txt +++ b/docroot/robots.txt @@ -37,7 +37,15 @@ Allow: /profiles/*.svg Disallow: /core/ Disallow: /profiles/ # Files -Disallow: /README.txt +Disallow: /README.md +Disallow: /composer/Metapackage/README.txt +Disallow: /composer/Plugin/ProjectMessage/README.md +Disallow: /composer/Plugin/Scaffold/README.md +Disallow: /composer/Plugin/VendorHardening/README.txt +Disallow: /composer/Template/README.txt +Disallow: /modules/README.txt +Disallow: /sites/README.txt +Disallow: /themes/README.txt Disallow: /web.config # Paths (clean URLs) Disallow: /admin/ diff --git a/docroot/sites/default/default.services.yml b/docroot/sites/default/default.services.yml index 8a6cdf2f77f..c4b964fc290 100644 --- a/docroot/sites/default/default.services.yml +++ b/docroot/sites/default/default.services.yml @@ -214,6 +214,8 @@ parameters: # Configure requests allowed from specific origins. Do not include trailing # slashes with URLs. allowedOrigins: ['*'] + # Configure requests allowed from origins, matching against regex patterns. + allowedOriginsPatterns: [] # Sets the Access-Control-Expose-Headers header. exposedHeaders: false # Sets the Access-Control-Max-Age header. diff --git a/docroot/sites/default/default.settings.php b/docroot/sites/default/default.settings.php index c0b18427ae9..d69b1865ecf 100644 --- a/docroot/sites/default/default.settings.php +++ b/docroot/sites/default/default.settings.php @@ -78,8 +78,8 @@ * @code * $databases['default']['default'] = [ * 'database' => 'databasename', - * 'username' => 'sqlusername', - * 'password' => 'sqlpassword', + * 'username' => 'sql_username', + * 'password' => 'sql_password', * 'host' => 'localhost', * 'port' => '3306', * 'driver' => 'mysql', @@ -194,8 +194,8 @@ * $databases['default']['default'] = [ * 'driver' => 'pgsql', * 'database' => 'databasename', - * 'username' => 'sqlusername', - * 'password' => 'sqlpassword', + * 'username' => 'sql_username', + * 'password' => 'sql_password', * 'host' => 'localhost', * 'prefix' => '', * ]; @@ -205,7 +205,7 @@ * @code * $databases['default']['default'] = [ * 'driver' => 'sqlite', - * 'database' => '/path/to/databasefilename', + * 'database' => '/path/to/database_filename', * ]; * @endcode * @@ -216,12 +216,33 @@ * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', * 'database' => 'databasename', - * 'username' => 'sqlusername', - * 'password' => 'sqlpassword', + * 'username' => 'sql_username', + * 'password' => 'sql_password', * 'host' => 'localhost', * 'prefix' => '', * ]; * @endcode + * + * Sample Database configuration format for a driver that is extending another + * database driver. + * @code + * $databases['default']['default'] = [ + * 'driver' => 'my_driver', + * 'namespace' => 'Drupal\my_module\Driver\Database\my_driver', + * 'autoload' => 'modules/my_module/src/Driver/Database/my_driver/', + * 'database' => 'databasename', + * 'username' => 'sql_username', + * 'password' => 'sql_password', + * 'host' => 'localhost', + * 'prefix' => '', + * 'dependencies' => [ + * 'parent_module' => [ + * 'namespace' => 'Drupal\parent_module', + * 'autoload' => 'core/modules/parent_module/src/', + * ], + * ], + * ]; + * @endcode */ /** @@ -567,7 +588,7 @@ * the output of phpinfo(). The full output can contain sensitive information * so by default Drupal removes some sections. * - * This behaviour can be configured by setting this variable to a different + * This behavior can be configured by setting this variable to a different * value corresponding to the flags parameter of phpinfo(). * * If you need to expose more information in the report - for example to debug a diff --git a/docroot/sites/example.settings.local.php b/docroot/sites/example.settings.local.php index 7cb0e685773..bfe061d0565 100644 --- a/docroot/sites/example.settings.local.php +++ b/docroot/sites/example.settings.local.php @@ -29,11 +29,7 @@ * It is strongly recommended that you set zend.assertions=1 in the PHP.ini file * (It cannot be changed from .htaccess or runtime) on development machines and * to 0 or -1 in production. - * - * @see https://wiki.php.net/rfc/expectations */ -assert_options(ASSERT_ACTIVE, TRUE); -assert_options(ASSERT_EXCEPTION, TRUE); /** * Enable local development services. diff --git a/patches/3106205-length-menu-tree-too-short.patch b/patches/3106205-length-menu-tree-too-short-48.patch similarity index 98% rename from patches/3106205-length-menu-tree-too-short.patch rename to patches/3106205-length-menu-tree-too-short-48.patch index 8dd681406aa..85beb189e6e 100644 --- a/patches/3106205-length-menu-tree-too-short.patch +++ b/patches/3106205-length-menu-tree-too-short-48.patch @@ -31,7 +31,7 @@ index a896ba9897435a082dcab1fd3097ca1bff785939..32f1f8f9ffa0961c97fea07f545cd0cb +/** + * Update length of menu_tree fields url and route_param_key from 255 to 2048. + */ -+function system_update_10101() { ++function system_update_10102() { + $schema = \Drupal::database()->schema(); + $spec = [ + 'description' => 'The external path this link points to (when not using a route).', From c33d8d073f3e8dd2d41cf193c442a81b36893917 Mon Sep 17 00:00:00 2001 From: Steve Wirt Date: Wed, 17 Jan 2024 18:09:46 -0500 Subject: [PATCH 22/42] VACMS-16858 Fix VBA banner typo. (#16860) --- ...d.field.node.vba_facility.field_banner_types_description.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/sync/field.field.node.vba_facility.field_banner_types_description.yml b/config/sync/field.field.node.vba_facility.field_banner_types_description.yml index f111a20eb3d..54465c6f514 100644 --- a/config/sync/field.field.node.vba_facility.field_banner_types_description.yml +++ b/config/sync/field.field.node.vba_facility.field_banner_types_description.yml @@ -24,6 +24,6 @@ default_value: default_value_callback: '' settings: markup: - value: "

Two types of Banner alerts are supported:

\r\n\r\n
    \r\n\t
  1. Informational alerts: These are used to provide helpful information or call attention to an announcement.
  2. \r\n\t
  3. Warning alertsP These are used to warn a user and call out negative consequences. Warning alerts are necessary when something has gone wrong.
  4. \r\n
\r\n

You can read more about these banner types on the site in the VA Design System (opens in a new window), or learn how to create them in the CMS in the Knowledge Base (opens in a new window).

" + value: "

Two types of Banner alerts are supported:

\r\n\r\n
    \r\n\t
  1. Informational alerts: These are used to provide helpful information or call attention to an announcement.
  2. \r\n\t
  3. Warning alerts: These are used to warn a user and call out negative consequences. Warning alerts are necessary when something has gone wrong.
  4. \r\n
\r\n

You can read more about these banner types on the site in the VA Design System (opens in a new window), or learn how to create them in the CMS in the Knowledge Base (opens in a new window).

" format: rich_text field_type: markup From 813e5560d1f228e447cd0c5866ea45b2604db238 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 20:49:39 -0600 Subject: [PATCH 23/42] Bump va-gov/content-build from 0.0.3420 to 0.0.3422 (#16894) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3420 to 0.0.3422. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3420...v0.0.3422) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index ba7be3445b8..1f35a3382a5 100644 --- a/composer.json +++ b/composer.json @@ -222,7 +222,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3420", + "va-gov/content-build": "^0.0.3422", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 4331c29571a..3a68a6716ec 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d7d79fcec81d79a5fc5ef670d20ad66d", + "content-hash": "bcf35a9e2344b65730db884e9d446951", "packages": [ { "name": "asm89/stack-cors", @@ -25862,16 +25862,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3420", + "version": "v0.0.3422", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "cc55d7de660c8248d7a0d3df3aa3787073a65d28" + "reference": "6c82218da1661c090d2883b26f40cf18e173ff98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/cc55d7de660c8248d7a0d3df3aa3787073a65d28", - "reference": "cc55d7de660c8248d7a0d3df3aa3787073a65d28", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/6c82218da1661c090d2883b26f40cf18e173ff98", + "reference": "6c82218da1661c090d2883b26f40cf18e173ff98", "shasum": "" }, "type": "node-project", @@ -25898,9 +25898,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3420" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3422" }, - "time": "2024-01-12T18:55:08+00:00" + "time": "2024-01-17T18:59:30+00:00" }, { "name": "vlucas/phpdotenv", From 19e338dfdf52414287e42270e7ff9d3b86d470ac Mon Sep 17 00:00:00 2001 From: Christian Burk Date: Thu, 18 Jan 2024 12:48:09 -0600 Subject: [PATCH 24/42] VACMS-14623: Staff profile has no alias on publish (#16820) * VACMS-14623: Checks for path alias before disabling pathauto * VACMS-14623: Adds a comment about the preg_match pattern * VACMS-14623: Adds explicit alias toggle --- .../va_gov_backend/va_gov_backend.module | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/docroot/modules/custom/va_gov_backend/va_gov_backend.module b/docroot/modules/custom/va_gov_backend/va_gov_backend.module index dae1ff12291..166de635c31 100644 --- a/docroot/modules/custom/va_gov_backend/va_gov_backend.module +++ b/docroot/modules/custom/va_gov_backend/va_gov_backend.module @@ -1933,12 +1933,24 @@ function _va_gov_backend_disable_autopath_alias(FieldableEntityInterface $entity $toggled_on_this_save = $current_use_alias_pattern && !$original_use_alias_pattern; $active_entity = \Drupal::entityTypeManager()->getStorage('node')->load($entity->id()); $published_previously = ($active_entity instanceof NodeInterface) ? $active_entity->isPublished() : FALSE; - - if ($published_previously && !$toggled_on_this_save) { - // This was published and this was not an intentional toggle on. + $path = '/node/' . (int) $active_entity->nid->value; + $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId(); + $path_alias = \Drupal::service('path_alias.manager')->getAliasByPath($path, $langcode); + // If the path_alias is the node path, alias is not set. + $path_alias_set = (bool) preg_match('/\/node\/\d+/', $path_alias) ? FALSE : TRUE; + + if ($path_alias_set && $published_previously && !$toggled_on_this_save) { + // This has a path alias, was published, + // and was not an intentional toggle on. // Disable the pathauto pattern. $entity->path->pathauto = 0; } + elseif (!$path_alias_set) { + // If this is not set pathauto already is 0, + // so we need to explicitly set it to 1 + // to get an alias generated. + $entity->path->pathauto = 1; + } } } From 28dcae864af631f643b3b52f97152a9116345bc7 Mon Sep 17 00:00:00 2001 From: Nate Douglas Date: Thu, 18 Jan 2024 14:02:19 -0500 Subject: [PATCH 25/42] Update tugboat.md --- READMES/devops/tugboat.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/READMES/devops/tugboat.md b/READMES/devops/tugboat.md index bb0ab10c4e4..c2446d76153 100644 --- a/READMES/devops/tugboat.md +++ b/READMES/devops/tugboat.md @@ -33,3 +33,23 @@ Can only update CPU and memory at a project level, not repository level. 1. `tugboat ls 5fd3b8ee7b465711575722d5 -j | grep memory` # Get current limit 1. `tugboat update 5fd3b8ee7b465711575722d5 memory=16384` # Set limit to 16GB 1. `tugboat ls 5fd3b8ee7b465711575722d5 -j | grep memory` # Verify new limit + +## Tugboat Crisis Intervention + +### Overload + +**Symptoms**: Tugboat is slow, requests to Tugboat dashboard return 502/504 status codes, previews disappear and reappear, etc. + +**Diagnosis**: Tugboat might be overloaded; too many previews might be running simultaneously. + +**Verification**: + +1. Log into the Tugboat server (`ssm-session utility tugboat auto`). +2. Check system load and free memory (e.g. `top`). +3. If load is incredibly high, and available memory is very low, then the Tugboat server might be dealing with too many open previews. + +**Remediation**: + +1. Close unused previews in the CMS/Pull Requests project. Target older previews and those corresponding to closed/merged PRs; these should be closed automatically, but there may be issues somewhere in the system that impair communication and cause these to remain open. +2. Suspend older previews. This normally happens automatically (for Pull Request-based previews that haven't been touched in some period of time), but a flurry of previews might have been created inadvertently. +3. Consider upscaling the Tugboat server or migrating to an alternative architecture. From 2dc5a04637246908e856e89bc11c10c56b5eadbb Mon Sep 17 00:00:00 2001 From: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> Date: Thu, 18 Jan 2024 11:16:00 -0800 Subject: [PATCH 26/42] VACMS-16898: upgrade drupal core to 10.2.2 (#16899) --- composer.json | 2 +- composer.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index 1f35a3382a5..0b387fffb63 100644 --- a/composer.json +++ b/composer.json @@ -50,7 +50,7 @@ "drupal/content_lock": "^2.3", "drupal/content_model_documentation": "^1.0.19", "drupal/core-composer-scaffold": "^10.2.0", - "drupal/core-recommended": "10.2.0", + "drupal/core-recommended": "^10.2.0", "drupal/crop": "^2.0", "drupal/csv_serialization": "^4.0", "drupal/ctools_block": "^4.0", diff --git a/composer.lock b/composer.lock index 3a68a6716ec..44418084eeb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bcf35a9e2344b65730db884e9d446951", + "content-hash": "92837bef92f64efab3ee312d90e1f52e", "packages": [ { "name": "asm89/stack-cors", @@ -3828,16 +3828,16 @@ }, { "name": "drupal/core", - "version": "10.2.0", + "version": "10.2.2", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "2f6c400cd6200f6e5900754e7e363cac811546b8" + "reference": "fc9abad1ab687635a5eddec00aa1a5f2a29a23bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/2f6c400cd6200f6e5900754e7e363cac811546b8", - "reference": "2f6c400cd6200f6e5900754e7e363cac811546b8", + "url": "https://api.github.com/repos/drupal/core/zipball/fc9abad1ab687635a5eddec00aa1a5f2a29a23bd", + "reference": "fc9abad1ab687635a5eddec00aa1a5f2a29a23bd", "shasum": "" }, "require": { @@ -3985,9 +3985,9 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.2.0" + "source": "https://github.com/drupal/core/tree/10.2.2" }, - "time": "2023-12-15T22:46:04+00:00" + "time": "2024-01-16T21:10:58+00:00" }, { "name": "drupal/core-composer-scaffold", @@ -4041,16 +4041,16 @@ }, { "name": "drupal/core-recommended", - "version": "10.2.0", + "version": "10.2.2", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "13b68ef925c75455fd6cb6766d5879790727d83f" + "reference": "d8cb769d86449af5ad763f3517c7f3c0e226ed60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/13b68ef925c75455fd6cb6766d5879790727d83f", - "reference": "13b68ef925c75455fd6cb6766d5879790727d83f", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/d8cb769d86449af5ad763f3517c7f3c0e226ed60", + "reference": "d8cb769d86449af5ad763f3517c7f3c0e226ed60", "shasum": "" }, "require": { @@ -4059,7 +4059,7 @@ "doctrine/annotations": "~1.14.3", "doctrine/deprecations": "~1.1.2", "doctrine/lexer": "~2.1.0", - "drupal/core": "10.2.0", + "drupal/core": "10.2.2", "egulias/email-validator": "~4.0.2", "guzzlehttp/guzzle": "~7.8.1", "guzzlehttp/promises": "~2.0.2", @@ -4120,9 +4120,9 @@ ], "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/10.2.0" + "source": "https://github.com/drupal/core-recommended/tree/10.2.2" }, - "time": "2023-12-15T22:46:04+00:00" + "time": "2024-01-16T21:10:58+00:00" }, { "name": "drupal/core_event_dispatcher", From 91b756cf2ce55b17c3f20a05eb3e54c6f0c45cdb Mon Sep 17 00:00:00 2001 From: Dave Pickett <51967950+davidmpickett@users.noreply.github.com> Date: Thu, 18 Jan 2024 16:55:26 -0600 Subject: [PATCH 27/42] Centralized content - purpose - character count - status message (#16807) Approved. Confirmed intended behavior in slack https://dsva.slack.com/archives/C0FQSS30V/p1705605619240659 --- ...ore.entity_form_display.node.centralized_content.default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/sync/core.entity_form_display.node.centralized_content.default.yml b/config/sync/core.entity_form_display.node.centralized_content.default.yml index 11f5fad9fb2..ed66f4ecbd9 100644 --- a/config/sync/core.entity_form_display.node.centralized_content.default.yml +++ b/config/sync/core.entity_form_display.node.centralized_content.default.yml @@ -71,7 +71,7 @@ content: counter_position: after js_prevent_submit: true count_html_characters: false - textcount_status_message: 'Maxlength: @maxlength
Used: @current_length
Remaining: @remaining_count' + textcount_status_message: '@remaining_count characters remaining' third_party_settings: allowed_formats: hide_help: '0' From d44d81aad8893f82cefe944f5c710a037976ba49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 20:38:30 -0600 Subject: [PATCH 28/42] Bump datadog/dd-trace from 0.96.0 to 0.97.0 (#16919) Bumps [datadog/dd-trace](https://github.com/DataDog/dd-trace-php) from 0.96.0 to 0.97.0. - [Release notes](https://github.com/DataDog/dd-trace-php/releases) - [Commits](https://github.com/DataDog/dd-trace-php/compare/0.96.0...0.97.0) --- updated-dependencies: - dependency-name: datadog/dd-trace dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 0b387fffb63..e54534e4ec5 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ "composer/installers": "^2.2", "consolidation/site-process": "^5.2", "cweagans/composer-patches": "^1.7", - "datadog/dd-trace": "^0.96.0", + "datadog/dd-trace": "^0.97.0", "dealerdirect/phpcodesniffer-composer-installer": "0.7.2", "drupal/address": "^1.4", "drupal/admin_feedback": "^2.2", diff --git a/composer.lock b/composer.lock index 44418084eeb..4c33401cfc2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "92837bef92f64efab3ee312d90e1f52e", + "content-hash": "51d220ecfe8df989362d2542bd555bee", "packages": [ { "name": "asm89/stack-cors", @@ -1175,16 +1175,16 @@ }, { "name": "datadog/dd-trace", - "version": "0.96.0", + "version": "0.97.0", "source": { "type": "git", "url": "https://github.com/DataDog/dd-trace-php.git", - "reference": "96ce8786574a1cc1f0fbcf8570a5b9025cdabca9" + "reference": "e76850105e99ba5d5b36697b3e4553ee70cfdae9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DataDog/dd-trace-php/zipball/96ce8786574a1cc1f0fbcf8570a5b9025cdabca9", - "reference": "96ce8786574a1cc1f0fbcf8570a5b9025cdabca9", + "url": "https://api.github.com/repos/DataDog/dd-trace-php/zipball/e76850105e99ba5d5b36697b3e4553ee70cfdae9", + "reference": "e76850105e99ba5d5b36697b3e4553ee70cfdae9", "shasum": "" }, "require": { @@ -1273,9 +1273,9 @@ ], "support": { "issues": "https://github.com/DataDog/dd-trace-php/issues", - "source": "https://github.com/DataDog/dd-trace-php/tree/0.96.0" + "source": "https://github.com/DataDog/dd-trace-php/tree/0.97.0" }, - "time": "2023-12-19T09:26:52+00:00" + "time": "2024-01-18T10:15:17+00:00" }, { "name": "davedevelopment/stiphle", From 7715b91f0f04907c710e20c5b315492e7e45222b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 20:23:26 -0600 Subject: [PATCH 29/42] Bump va-gov/content-build from 0.0.3422 to 0.0.3424 (#16932) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3422 to 0.0.3424. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3422...v0.0.3424) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index e54534e4ec5..f4a27adbd9d 100644 --- a/composer.json +++ b/composer.json @@ -222,7 +222,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3422", + "va-gov/content-build": "^0.0.3424", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 4c33401cfc2..63cbbf30f98 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "51d220ecfe8df989362d2542bd555bee", + "content-hash": "fd6aedc5fcaf7b1b85a3a3ba52650962", "packages": [ { "name": "asm89/stack-cors", @@ -25862,7 +25862,7 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3422", + "version": "v0.0.3424", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", @@ -25898,7 +25898,7 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3422" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3424" }, "time": "2024-01-17T18:59:30+00:00" }, From a72e5cd5ce322cc930cc8c44287f92bbaa348b34 Mon Sep 17 00:00:00 2001 From: Jane Xiong Date: Mon, 22 Jan 2024 09:54:17 -0600 Subject: [PATCH 30/42] [docs] Update user_management.md --- READMES/user_management.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/READMES/user_management.md b/READMES/user_management.md index a5b6a2a0852..4701188e8c3 100644 --- a/READMES/user_management.md +++ b/READMES/user_management.md @@ -18,7 +18,7 @@ To resolve this issue: To import users: -1. go to [the import page](https://prod.cms.va.gov/migrate_source_ui) +1. go to [the import page](https://prod.cms.va.gov/admin/content/migrate_source_ui)) 1. Select "User Import (supports csv)" from the **Migrations** dropdown 1. Upload a CSV file in the following format: ``` From e11ef264d27f935448109ef3c1ef532a1aeb74fe Mon Sep 17 00:00:00 2001 From: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> Date: Mon, 22 Jan 2024 08:48:30 -0800 Subject: [PATCH 31/42] VACMS_16449: updated date formats (#16946) --- config/sync/views.view.user_admin_people.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/config/sync/views.view.user_admin_people.yml b/config/sync/views.view.user_admin_people.yml index 971377b471a..955be03908c 100644 --- a/config/sync/views.view.user_admin_people.yml +++ b/config/sync/views.view.user_admin_people.yml @@ -1466,7 +1466,7 @@ display: type: timestamp settings: date_format: custom - custom_date_format: 'F j, Y, g:ia' + custom_date_format: 'Y-m-d H:i:s' timezone: '' tooltip: date_format: '' @@ -1477,6 +1477,7 @@ display: past_format: '@interval ago' granularity: 2 refresh: 60 + description: '' group_column: value group_columns: { } group_rows: true @@ -1501,7 +1502,7 @@ display: exclude: false alter: alter_text: true - text: "{% if access__value %}\r\n {{ access__value|format_date('custom', 'F j, Y, g:ia') }}\r\n{% else %}\r\n Never\r\n{% endif %}" + text: "{% if access__value %}\r\n {{ access__value|format_date('custom', 'Y-m-d H:i:s') }}\r\n{% else %}\r\n Never\r\n{% endif %}" make_link: false path: '' absolute: false @@ -2006,7 +2007,7 @@ display: type: timestamp settings: date_format: custom - custom_date_format: 'F j, Y, g:ia' + custom_date_format: 'Y-m-d H:i:s' timezone: '' tooltip: date_format: '' @@ -2042,7 +2043,7 @@ display: exclude: false alter: alter_text: true - text: "{% if access__value %}\r\n {{ access__value|format_date('custom', 'F j, Y, g:ia') }}\r\n{% else %}\r\n Never\r\n{% endif %}" + text: "{% if access__value %}\r\n {{ access__value|format_date('custom', 'Y-m-d H:i:s') }}\r\n{% else %}\r\n Never\r\n{% endif %}" make_link: false path: '' absolute: false From 2ca4409dbb1a9fdd2a2d163baa509b31f902d463 Mon Sep 17 00:00:00 2001 From: Daniel Sasser Date: Mon, 22 Jan 2024 12:19:06 -0800 Subject: [PATCH 32/42] VACMS-16882: Resolves Error: Call to a member function getValue() on null (#16900) * VACMS-16882: Simplify the check for outreach cal field value. * VACMS-16882: Adds the 'I feature the content' step definition. * VACMS-16882: Adds test for creating featured events. --------- Co-authored-by: Daniel Sasser Co-authored-by: Jill Adams <85581471+jilladams@users.noreply.github.com> --- .../src/Traits/EventOutreachTrait.php | 5 +++-- .../integration/features/content_type/event.feature | 8 ++++++++ .../step_definitions/common/i_feature_the_content.js | 5 +++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 tests/cypress/integration/step_definitions/common/i_feature_the_content.js diff --git a/docroot/modules/custom/va_gov_content_types/src/Traits/EventOutreachTrait.php b/docroot/modules/custom/va_gov_content_types/src/Traits/EventOutreachTrait.php index 41b2398e487..a604d7afee0 100644 --- a/docroot/modules/custom/va_gov_content_types/src/Traits/EventOutreachTrait.php +++ b/docroot/modules/custom/va_gov_content_types/src/Traits/EventOutreachTrait.php @@ -46,10 +46,11 @@ public function addToNationalOutreachCalendar(EventInterface $node): void { if ($node->hasField(EventOutreachInterface::LISTING_FIELD) && $node->hasField(EventOutreachInterface::PUBLISH_TO_OUTREACH_CAL_FIELD) && $node->hasField(EventOutreachInterface::ADDITIONAL_LISTING_FIELD)) { - $addToCalValue = $node->get(EventOutreachInterface::PUBLISH_TO_OUTREACH_CAL_FIELD)->first()->getValue(); - if (isset($addToCalValue['value'])) { + if ($node->get(EventOutreachInterface::PUBLISH_TO_OUTREACH_CAL_FIELD)->first()) { + $addToCalValue = $node->get(EventOutreachInterface::PUBLISH_TO_OUTREACH_CAL_FIELD)->first()->getValue(); $listings = $node->get(EventOutreachInterface::LISTING_FIELD)->getValue(); $additionalListings = $node->get(EventOutreachInterface::ADDITIONAL_LISTING_FIELD)->getValue(); + assert(array_key_exists('value', $addToCalValue)); if ($addToCalValue['value'] === 1 || $this->outreachHubOnlyUser()) { // Add to Outreach calendar selected, or user is Outreach Hub only // user. diff --git a/tests/cypress/integration/features/content_type/event.feature b/tests/cypress/integration/features/content_type/event.feature index b4779d0e4ac..8f5496374be 100644 --- a/tests/cypress/integration/features/content_type/event.feature +++ b/tests/cypress/integration/features/content_type/event.feature @@ -144,3 +144,11 @@ Feature: Content Type: Event Given I am logged in as a user with the "content_admin" role When I am at "node/add/event" Then an element with the selector "#edit-field-datetime-range-timezone-wrapper button.tabledrag-toggle-weight" should not exist + + Scenario: Confirm creating "Featured" Events is possible. + Given I am logged in as a user with the "content_admin" role + And I create a "event" node and continue + And I fill in field with selector "#edit-revision-log-0-value" with fake text + And I feature the content + When I save the node + Then I should see "has been updated." diff --git a/tests/cypress/integration/step_definitions/common/i_feature_the_content.js b/tests/cypress/integration/step_definitions/common/i_feature_the_content.js new file mode 100644 index 00000000000..4e3fcb8d23d --- /dev/null +++ b/tests/cypress/integration/step_definitions/common/i_feature_the_content.js @@ -0,0 +1,5 @@ +import { Given } from "@badeball/cypress-cucumber-preprocessor"; + +Given("I feature the content", () => { + cy.get("#edit-field-featured-value").check({ force: true }); +}); From 992186841d5c8d6ee5688b1b36188e05564458ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 20:11:36 -0600 Subject: [PATCH 33/42] Bump va-gov/content-build from 0.0.3424 to 0.0.3425 (#16968) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3424 to 0.0.3425. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3424...v0.0.3425) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index f4a27adbd9d..f689c18d314 100644 --- a/composer.json +++ b/composer.json @@ -222,7 +222,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3424", + "va-gov/content-build": "^0.0.3425", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 63cbbf30f98..8e7d907f11c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fd6aedc5fcaf7b1b85a3a3ba52650962", + "content-hash": "57c2908d2309e44f8a31050b6b3aac55", "packages": [ { "name": "asm89/stack-cors", @@ -25862,7 +25862,7 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3424", + "version": "v0.0.3425", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", @@ -25898,7 +25898,7 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3424" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3425" }, "time": "2024-01-17T18:59:30+00:00" }, From beb85293c5f27f3aaa0366b39172b591dbfbc4c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 18:27:44 -0800 Subject: [PATCH 34/42] Bump va-gov/content-build from 0.0.3425 to 0.0.3426 (#16996) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3425 to 0.0.3426. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3425...v0.0.3426) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index f689c18d314..a56b0dadb4a 100644 --- a/composer.json +++ b/composer.json @@ -222,7 +222,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3425", + "va-gov/content-build": "^0.0.3426", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 8e7d907f11c..2284143fa38 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "57c2908d2309e44f8a31050b6b3aac55", + "content-hash": "26605fda111f4e1307b6d375ffc3e4b8", "packages": [ { "name": "asm89/stack-cors", @@ -25862,16 +25862,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3425", + "version": "v0.0.3426", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "6c82218da1661c090d2883b26f40cf18e173ff98" + "reference": "c2ca35a8d4ac657b53b3f1b69eadb185eda1147a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/6c82218da1661c090d2883b26f40cf18e173ff98", - "reference": "6c82218da1661c090d2883b26f40cf18e173ff98", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/c2ca35a8d4ac657b53b3f1b69eadb185eda1147a", + "reference": "c2ca35a8d4ac657b53b3f1b69eadb185eda1147a", "shasum": "" }, "type": "node-project", @@ -25898,9 +25898,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3425" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3426" }, - "time": "2024-01-17T18:59:30+00:00" + "time": "2024-01-23T17:57:20+00:00" }, { "name": "vlucas/phpdotenv", From 5b906f2902d49f2b9fc581468fca302fca2bff57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 11:12:11 -0800 Subject: [PATCH 35/42] Bump drupal/geocoder from 4.18.0 to 4.19.0 (#16995) Bumps drupal/geocoder from 4.18.0 to 4.19.0. --- updated-dependencies: - dependency-name: drupal/geocoder dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> --- composer.lock | 54 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/composer.lock b/composer.lock index 2284143fa38..59e6779b081 100644 --- a/composer.lock +++ b/composer.lock @@ -6572,17 +6572,17 @@ }, { "name": "drupal/geocoder", - "version": "4.18.0", + "version": "4.19.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/geocoder.git", - "reference": "8.x-4.18" + "reference": "8.x-4.19" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-4.18.zip", - "reference": "8.x-4.18", - "shasum": "5ad95a5e6eceecdd32ebb42b3dc5b35487dfda7b" + "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-4.19.zip", + "reference": "8.x-4.19", + "shasum": "ff8b5ff0eed16c11cb721471a70339ad325db5a2" }, "require": { "davedevelopment/stiphle": "^0.9.2", @@ -6627,8 +6627,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-4.18", - "datestamp": "1703166690", + "version": "8.x-4.19", + "datestamp": "1706037829", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -15687,16 +15687,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.18.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" + "reference": "6a192dd0882b514e45506f533b833b623b78fff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", + "reference": "6a192dd0882b514e45506f533b833b623b78fff3", "shasum": "" }, "require": { @@ -15707,10 +15707,10 @@ }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.14", - "phpunit/phpunit": "^10.3.3", + "phpbench/phpbench": "^1.2.15", + "phpunit/phpunit": "^10.5.8", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "vimeo/psalm": "^5.20.0" }, "type": "library", "autoload": { @@ -15742,7 +15742,7 @@ "type": "community_bridge" } ], - "time": "2023-09-19T10:15:21+00:00" + "time": "2024-01-19T12:39:49+00:00" }, { "name": "laminas/laminas-text", @@ -18312,16 +18312,16 @@ }, { "name": "php-http/promise", - "version": "1.2.1", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/php-http/promise.git", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", + "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", "shasum": "" }, "require": { @@ -18358,9 +18358,9 @@ ], "support": { "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.2.1" + "source": "https://github.com/php-http/promise/tree/1.3.0" }, - "time": "2023-11-08T12:57:08+00:00" + "time": "2024-01-04T18:49:48+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -19337,16 +19337,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", "shasum": "" }, "require": { @@ -19420,7 +19420,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" }, "funding": [ { @@ -19436,7 +19436,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:03:14+00:00" }, { "name": "politsin/jquery-ui-touch-punch", From 0ef8e57380c3a801114f069ee7da32a0251895fb Mon Sep 17 00:00:00 2001 From: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> Date: Wed, 24 Jan 2024 12:04:13 -0800 Subject: [PATCH 36/42] VACMS-16959: enabled Work with us parent menu item (#16975) --- .../va_gov_menu_access/src/Service/MenuReductionService.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docroot/modules/custom/va_gov_menu_access/src/Service/MenuReductionService.php b/docroot/modules/custom/va_gov_menu_access/src/Service/MenuReductionService.php index 4e23518c846..bc2cd80b5bd 100644 --- a/docroot/modules/custom/va_gov_menu_access/src/Service/MenuReductionService.php +++ b/docroot/modules/custom/va_gov_menu_access/src/Service/MenuReductionService.php @@ -270,7 +270,11 @@ protected function applyVamcMenuRulesForDetailPage(array &$form) { $menu_element_type = $this->getMenuItemType($alias); $menu_element_type = $menu_element_type ?? $this->checkForSeparator($allowed_separators, $menu_item); - + if (str_contains($subject_uuid['option'], 'Work with us')) { + // This is a special case where we want to allow the menu item + // to be enabled. + $menu_element_type = self::ENABLED; + } $this->addAllowedParent($allowed_parents, $enabled_count, $menu_element_type, $subject_uuid); } } From 3a59e673ed3ec7531a62fedc67eb13c72d33780a Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 24 Jan 2024 12:18:59 -0800 Subject: [PATCH 37/42] VACMS-16289 bump next-build preview secret timer (#16839) * bump preview secret timer to 1 daay * Update next.settings.yml --- config/sync/next.settings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/sync/next.settings.yml b/config/sync/next.settings.yml index 6a6d3d95484..d5cb9d91d41 100644 --- a/config/sync/next.settings.yml +++ b/config/sync/next.settings.yml @@ -8,5 +8,5 @@ site_previewer_configuration: sync_route_skip_routes: '' preview_url_generator: simple_oauth preview_url_generator_configuration: - secret_expiration: 300 + secret_expiration: 86400 debug: false From c3806cfb940065eb69ec07b83b9ae3c7a173daa8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 12:56:29 -0800 Subject: [PATCH 38/42] Bump phpunit/phpunit from 9.6.15 to 9.6.16 (#16933) Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.15 to 9.6.16. - [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.16/ChangeLog-9.6.md) - [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.15...9.6.16) --- updated-dependencies: - dependency-name: phpunit/phpunit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> From 9e5492b93de7f6d41f038d1ff1da57029e4e3b80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 18:24:35 -0800 Subject: [PATCH 39/42] Bump va-gov/content-build from 0.0.3426 to 0.0.3427 (#17028) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3426 to 0.0.3427. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3426...v0.0.3427) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index a56b0dadb4a..7494defa904 100644 --- a/composer.json +++ b/composer.json @@ -222,7 +222,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^6.3", "symfony/routing": "^6.3", - "va-gov/content-build": "^0.0.3426", + "va-gov/content-build": "^0.0.3427", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index 59e6779b081..5e0206d6f49 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "26605fda111f4e1307b6d375ffc3e4b8", + "content-hash": "38b7f3830a1e681f80076cb379b2023e", "packages": [ { "name": "asm89/stack-cors", @@ -25862,16 +25862,16 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3426", + "version": "v0.0.3427", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", - "reference": "c2ca35a8d4ac657b53b3f1b69eadb185eda1147a" + "reference": "d98e082265882b311383cb6a0b83ef6cf6d72f42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/c2ca35a8d4ac657b53b3f1b69eadb185eda1147a", - "reference": "c2ca35a8d4ac657b53b3f1b69eadb185eda1147a", + "url": "https://api.github.com/repos/department-of-veterans-affairs/content-build/zipball/d98e082265882b311383cb6a0b83ef6cf6d72f42", + "reference": "d98e082265882b311383cb6a0b83ef6cf6d72f42", "shasum": "" }, "type": "node-project", @@ -25898,9 +25898,9 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3426" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3427" }, - "time": "2024-01-23T17:57:20+00:00" + "time": "2024-01-24T17:14:58+00:00" }, { "name": "vlucas/phpdotenv", From 34585290ac74c1512f8dc0297935f05646b72e35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 07:52:58 -0800 Subject: [PATCH 40/42] Bump drupal/geocoder from 4.19.0 to 4.20.0 (#17030) Bumps drupal/geocoder from 4.19.0 to 4.20.0. --- updated-dependencies: - dependency-name: drupal/geocoder dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 5e0206d6f49..deb925249bf 100644 --- a/composer.lock +++ b/composer.lock @@ -6572,17 +6572,17 @@ }, { "name": "drupal/geocoder", - "version": "4.19.0", + "version": "4.20.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/geocoder.git", - "reference": "8.x-4.19" + "reference": "8.x-4.20" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-4.19.zip", - "reference": "8.x-4.19", - "shasum": "ff8b5ff0eed16c11cb721471a70339ad325db5a2" + "url": "https://ftp.drupal.org/files/projects/geocoder-8.x-4.20.zip", + "reference": "8.x-4.20", + "shasum": "1bf5ff7082e64f55128032b61c7333fd611c5347" }, "require": { "davedevelopment/stiphle": "^0.9.2", @@ -6627,8 +6627,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-4.19", - "datestamp": "1706037829", + "version": "8.x-4.20", + "datestamp": "1706097387", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" From d5e8a0455ed69162534c869d30cc9cca4bf14ae2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 08:41:00 -0800 Subject: [PATCH 41/42] Bump drupal/ief_table_view_mode from 2.3.0 to 3.0.0 (#16918) * Bump drupal/ief_table_view_mode from 2.3.0 to 3.0.0 Bumps drupal/ief_table_view_mode from 2.3.0 to 3.0.0. --- updated-dependencies: - dependency-name: drupal/ief_table_view_mode dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Removed patch that had been merged * update composer.lock --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Edmund Dunn --- composer.json | 5 ++--- composer.lock | 36 ++++++++++++++++++------------------ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/composer.json b/composer.json index 7494defa904..59d526e6295 100644 --- a/composer.json +++ b/composer.json @@ -98,7 +98,7 @@ "drupal/hierarchy_manager": "^3.0", "drupal/hms_field": "^2.0", "drupal/hook_event_dispatcher": "^4.0@beta", - "drupal/ief_table_view_mode": "^2.1", + "drupal/ief_table_view_mode": "^3.0", "drupal/image_style_warmer": "^1.2@RC", "drupal/image_widget_crop": "^2.2", "drupal/jsonapi_extras": "^3.19", @@ -447,8 +447,7 @@ }, "drupal/inline_entity_form": { "3226473 - Opt-in system delete.": "https://www.drupal.org/files/issues/2023-03-28/3226473-opt-in-system-delete-2.patch", - "3061620 - Cancel closes all forms": "https://www.drupal.org/files/issues/2022-07-21/inline_entity_form-close-only-forms-where-close-clicked-3061620-13.patch", - "3311501 - Add label to weight select field for accessibility": "https://www.drupal.org/files/issues/2022-09-23/Adding_labels_to_weight_selects_for_accessibility.patch" + "3061620 - Cancel closes all forms": "https://www.drupal.org/files/issues/2022-07-21/inline_entity_form-close-only-forms-where-close-clicked-3061620-13.patch" }, "drupal/jsonapi_menu_items": { "3276561 - Add support for the Menu Item Extras module": "https://www.drupal.org/files/issues/2022-08-01/3276561-05-menu_item_extras_support.patch" diff --git a/composer.lock b/composer.lock index deb925249bf..75be7ddbac7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "38b7f3830a1e681f80076cb379b2023e", + "content-hash": "26320bc610a7b624865efbbf2f06c0b2", "packages": [ { "name": "asm89/stack-cors", @@ -122,7 +122,7 @@ "version": "v4.1.0", "source": { "type": "git", - "url": "https://github.com/fengyuanchen/cropper.git", + "url": "git@github.com:fengyuanchen/cropper.git", "reference": "617d9bdb8688cc4edb3b03bc49a04b83c7facbe7" }, "dist": { @@ -7356,27 +7356,27 @@ }, { "name": "drupal/ief_table_view_mode", - "version": "2.3.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/ief_table_view_mode.git", - "reference": "8.x-2.3" + "reference": "3.0.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/ief_table_view_mode-8.x-2.3.zip", - "reference": "8.x-2.3", - "shasum": "8f5f2d38745a7654ce72b311f0333478fa7f2aeb" + "url": "https://ftp.drupal.org/files/projects/ief_table_view_mode-3.0.0.zip", + "reference": "3.0.0", + "shasum": "4a434bbe8ccebffa6dd3efcd818bfd5667b6f571" }, "require": { - "drupal/core": "^8.7.7 || ^9 || ^10", - "drupal/inline_entity_form": "^1.0" + "drupal/core": "^9 || ^10", + "drupal/inline_entity_form": "^1.0 || ^2.0 || ^3.0" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.3", - "datestamp": "1671410068", + "version": "3.0.0", + "datestamp": "1705614692", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -7531,17 +7531,17 @@ }, { "name": "drupal/inline_entity_form", - "version": "1.0.0-rc17", + "version": "3.0.0-rc19", "source": { "type": "git", "url": "https://git.drupalcode.org/project/inline_entity_form.git", - "reference": "8.x-1.0-rc17" + "reference": "3.0.0-rc19" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/inline_entity_form-8.x-1.0-rc17.zip", - "reference": "8.x-1.0-rc17", - "shasum": "626622e01cf7a2d2977fdc06ae09afd5a814e09b" + "url": "https://ftp.drupal.org/files/projects/inline_entity_form-3.0.0-rc19.zip", + "reference": "3.0.0-rc19", + "shasum": "d8976940dd3f85412ba5e274af15fbcdd22ee27a" }, "require": { "drupal/core": "^8.8 || ^9 || ^10", @@ -7553,8 +7553,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.0-rc17", - "datestamp": "1703020130", + "version": "3.0.0-rc19", + "datestamp": "1704729077", "security-coverage": { "status": "not-covered", "message": "RC releases are not covered by Drupal security advisories." From 376659b386b8920b31b052eb1283a7a910d3df7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 09:36:24 -0800 Subject: [PATCH 42/42] Bump phpstan/phpstan from 1.10.56 to 1.10.57 (#17031) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.56 to 1.10.57. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.56...1.10.57) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> --- composer.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.lock b/composer.lock index 75be7ddbac7..38b81fca252 100644 --- a/composer.lock +++ b/composer.lock @@ -18908,16 +18908,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.56", + "version": "1.10.57", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "27816a01aea996191ee14d010f325434c0ee76fa" + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", - "reference": "27816a01aea996191ee14d010f325434c0ee76fa", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", "shasum": "" }, "require": { @@ -18966,7 +18966,7 @@ "type": "tidelift" } ], - "time": "2024-01-15T10:43:00+00:00" + "time": "2024-01-24T11:51:34+00:00" }, { "name": "phpstan/phpstan-deprecation-rules",