From 05316f794412ec2b73d85b693ecc7348c8715665 Mon Sep 17 00:00:00 2001 From: Bec White Date: Fri, 21 Feb 2025 16:31:30 -0600 Subject: [PATCH 01/40] Experiment: convert the_build_utility to a Drupal recipe --- recipes/.gitignore | 1 + .../config_split.config_split.development.yml | 15 ++++++++++ .../config_split.config_split.production.yml | 14 +++++++++ .../config_split.config_split.staging.yml | 14 +++++++++ .../3537f64f-3266-4e15-a442-9004bb5f8e09.yml | 15 ++++++++++ .../b3080349-aa05-484a-a2c0-e22281a750cf.yml | 15 ++++++++++ .../e7bf6331-6781-47ae-8de6-e5bde7a04703.yml | 15 ++++++++++ recipes/skeleton/recipe.yml | 30 +++++++++++++++++++ 8 files changed, 119 insertions(+) create mode 100644 recipes/.gitignore create mode 100644 recipes/skeleton/config/install/config_split.config_split.development.yml create mode 100644 recipes/skeleton/config/install/config_split.config_split.production.yml create mode 100644 recipes/skeleton/config/install/config_split.config_split.staging.yml create mode 100644 recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml create mode 100644 recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml create mode 100644 recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml create mode 100644 recipes/skeleton/recipe.yml diff --git a/recipes/.gitignore b/recipes/.gitignore new file mode 100644 index 0000000..739a339 --- /dev/null +++ b/recipes/.gitignore @@ -0,0 +1 @@ +/README.txt \ No newline at end of file diff --git a/recipes/skeleton/config/install/config_split.config_split.development.yml b/recipes/skeleton/config/install/config_split.config_split.development.yml new file mode 100644 index 0000000..3c33641 --- /dev/null +++ b/recipes/skeleton/config/install/config_split.config_split.development.yml @@ -0,0 +1,15 @@ +langcode: en +status: false +dependencies: { } +id: development +label: Development +description: 'Configuration for local development environments.' +folder: ../config/config_split/development +module: + devel: 0 +theme: { } +blacklist: { } +graylist: { } +graylist_dependents: true +graylist_skip_equal: true +weight: -3 diff --git a/recipes/skeleton/config/install/config_split.config_split.production.yml b/recipes/skeleton/config/install/config_split.config_split.production.yml new file mode 100644 index 0000000..3b46723 --- /dev/null +++ b/recipes/skeleton/config/install/config_split.config_split.production.yml @@ -0,0 +1,14 @@ +langcode: en +status: false +dependencies: { } +id: production +label: Production +description: 'Configuration for use on the production environment only.' +folder: ../config/config_split/production +module: { } +theme: { } +blacklist: { } +graylist: { } +graylist_dependents: true +graylist_skip_equal: true +weight: -1 diff --git a/recipes/skeleton/config/install/config_split.config_split.staging.yml b/recipes/skeleton/config/install/config_split.config_split.staging.yml new file mode 100644 index 0000000..8fc66ed --- /dev/null +++ b/recipes/skeleton/config/install/config_split.config_split.staging.yml @@ -0,0 +1,14 @@ +langcode: en +status: false +dependencies: { } +id: staging +label: Staging +description: 'Configuration for use on shared staging environments.' +folder: ../config/config_split/staging +module: { } +theme: { } +blacklist: { } +graylist: { } +graylist_dependents: true +graylist_skip_equal: true +weight: -2 diff --git a/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml b/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml new file mode 100644 index 0000000..959dbdd --- /dev/null +++ b/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml @@ -0,0 +1,15 @@ +_meta: + version: '1.0' + entity_type: shortcut + uuid: 3537f64f-3266-4e15-a442-9004bb5f8e09 + bundle: default + default_langcode: en +default: + title: + - + value: 'Manage Taxonomy' + link: + - + uri: 'internal:/admin/structure/taxonomy' + title: '' + options: { } diff --git a/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml b/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml new file mode 100644 index 0000000..2d1b681 --- /dev/null +++ b/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml @@ -0,0 +1,15 @@ +_meta: + version: '1.0' + entity_type: shortcut + uuid: b3080349-aa05-484a-a2c0-e22281a750cf + bundle: default + default_langcode: en +default: + title: + - + value: 'Status Report' + link: + - + uri: 'internal:/admin/reports/status' + title: '' + options: { } diff --git a/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml b/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml new file mode 100644 index 0000000..371ce54 --- /dev/null +++ b/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml @@ -0,0 +1,15 @@ +_meta: + version: '1.0' + entity_type: shortcut + uuid: e7bf6331-6781-47ae-8de6-e5bde7a04703 + bundle: default + default_langcode: en +default: + title: + - + value: 'Manage Menus' + link: + - + uri: 'internal:/admin/structure/menu' + title: '' + options: { } diff --git a/recipes/skeleton/recipe.yml b/recipes/skeleton/recipe.yml new file mode 100644 index 0000000..4283798 --- /dev/null +++ b/recipes/skeleton/recipe.yml @@ -0,0 +1,30 @@ +name: Skeleton +description: Replacement for the_build_utility +type: 'Administration' + +install: + - admin_toolbar + - admin_toolbar_tools + - config_ignore + - config_split + - config_split + - devel + - workbench + - workbench_tabs + +config: + user.settings: + register: admin_only + + system.date: + country: + default: US + timezone: + default: 'America/Chicago' + timezone: + user: + configurable: FALSE + +# todo: delete fields on comment entity +# todo: delete state variable 'comment.node_comment_statistics_scale' +# todo: uninstall if installed: automated_cron, big_pipe, comment, contact, history, search, tour From dbed58f1641dad747627e03fecd6be6942cc8fc8 Mon Sep 17 00:00:00 2001 From: Bec White Date: Mon, 24 Feb 2025 15:24:57 -0600 Subject: [PATCH 02/40] Fix shortcut case. --- .../content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml | 2 +- .../content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml | 2 +- .../content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml b/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml index 959dbdd..97e8060 100644 --- a/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml +++ b/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml @@ -7,7 +7,7 @@ _meta: default: title: - - value: 'Manage Taxonomy' + value: 'Manage taxonomy' link: - uri: 'internal:/admin/structure/taxonomy' diff --git a/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml b/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml index 2d1b681..d0daf4e 100644 --- a/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml +++ b/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml @@ -7,7 +7,7 @@ _meta: default: title: - - value: 'Status Report' + value: 'Status report' link: - uri: 'internal:/admin/reports/status' diff --git a/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml b/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml index 371ce54..90c93bf 100644 --- a/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml +++ b/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml @@ -7,7 +7,7 @@ _meta: default: title: - - value: 'Manage Menus' + value: 'Manage menus' link: - uri: 'internal:/admin/structure/menu' From cbf098b8c3217b6b19e50a9d6513f27507bd4bd7 Mon Sep 17 00:00:00 2001 From: Bec White Date: Mon, 24 Feb 2025 15:25:14 -0600 Subject: [PATCH 03/40] Working config. --- recipes/skeleton/recipe.yml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/recipes/skeleton/recipe.yml b/recipes/skeleton/recipe.yml index 4283798..503df0e 100644 --- a/recipes/skeleton/recipe.yml +++ b/recipes/skeleton/recipe.yml @@ -13,17 +13,21 @@ install: - workbench_tabs config: - user.settings: - register: admin_only + strict: false + actions: + user.settings: + simpleConfigUpdate: + register: admin_only + system.date: + simpleConfigUpdate: + country.default: US + timezone.default: 'America/Chicago' + timezone.user.configurable: FALSE + field.storage.node.comment: + disable: [] + field.field.node.article.comment: + disable: [] - system.date: - country: - default: US - timezone: - default: 'America/Chicago' - timezone: - user: - configurable: FALSE # todo: delete fields on comment entity # todo: delete state variable 'comment.node_comment_statistics_scale' From b3bc54e286760b0d232364333563ec52682d9e8e Mon Sep 17 00:00:00 2001 From: Bec White Date: Mon, 24 Feb 2025 15:47:14 -0600 Subject: [PATCH 04/40] Full replacement for 'standard' install profile. --- .../config_split.config_split.development.yml | 0 .../config_split.config_split.production.yml | 0 .../config_split.config_split.staging.yml | 0 recipes/skeleton/recipe.yml | 95 ++++++++++++++++--- 4 files changed, 84 insertions(+), 11 deletions(-) rename recipes/skeleton/config/{install => }/config_split.config_split.development.yml (100%) rename recipes/skeleton/config/{install => }/config_split.config_split.production.yml (100%) rename recipes/skeleton/config/{install => }/config_split.config_split.staging.yml (100%) diff --git a/recipes/skeleton/config/install/config_split.config_split.development.yml b/recipes/skeleton/config/config_split.config_split.development.yml similarity index 100% rename from recipes/skeleton/config/install/config_split.config_split.development.yml rename to recipes/skeleton/config/config_split.config_split.development.yml diff --git a/recipes/skeleton/config/install/config_split.config_split.production.yml b/recipes/skeleton/config/config_split.config_split.production.yml similarity index 100% rename from recipes/skeleton/config/install/config_split.config_split.production.yml rename to recipes/skeleton/config/config_split.config_split.production.yml diff --git a/recipes/skeleton/config/install/config_split.config_split.staging.yml b/recipes/skeleton/config/config_split.config_split.staging.yml similarity index 100% rename from recipes/skeleton/config/install/config_split.config_split.staging.yml rename to recipes/skeleton/config/config_split.config_split.staging.yml diff --git a/recipes/skeleton/recipe.yml b/recipes/skeleton/recipe.yml index 503df0e..ceca57d 100644 --- a/recipes/skeleton/recipe.yml +++ b/recipes/skeleton/recipe.yml @@ -1,34 +1,107 @@ name: Skeleton -description: Replacement for the_build_utility -type: 'Administration' +description: Replacement for Standard install profile + the_build_utility +type: 'Site' + +recipes: + - core/recipes/basic_block_type + - core/recipes/basic_shortcuts + - core/recipes/article_tags + - core/recipes/article_content_type + - core/recipes/page_content_type + - core/recipes/basic_html_format_editor + - core/recipes/full_html_format_editor + - core/recipes/core_recommended_performance + - core/recipes/core_recommended_maintenance + - core/recipes/core_recommended_admin_theme + - core/recipes/core_recommended_front_end_theme + - core/recipes/restricted_html_format + - core/recipes/administrator_role + - core/recipes/content_editor_role install: - admin_toolbar - admin_toolbar_tools + - config - config_ignore - config_split - config_split + - contextual + - datetime - devel + - field_ui + - help + - image + - menu_link_content + - menu_ui + - options + - shortcut + - toolbar + - views_ui - workbench - workbench_tabs +# This recipe is intended to set up a full site from scratch, replacing the 'Standard' recipe. config: strict: false + import: + claro: + - block.block.claro_help + help: + - search.page.help_search + - block.block.claro_help_search + image: + - image.style.large + - image.style.thumbnail + node: + - views.view.content + - views.view.frontpage + - views.view.glossary + olivero: + - block.block.olivero_help + - block.block.olivero_syndicate + user: + - search.page.user_search + - views.view.user_admin_people + actions: + node.settings: + simpleConfigUpdate: + use_admin_theme: true + system.site: + simpleConfigUpdate: + page.front: /node + user.role.anonymous: + grantPermission: 'access content' + user.role.authenticated: + grantPermissions: + - 'access content' + - 'delete own files' + user.role.content_editor: + grantPermissions: + - 'access content overview' + - 'access contextual links' + - 'access files overview' + - 'access toolbar' + - 'administer url aliases' + - 'create terms in tags' + - 'create url aliases' + - 'edit terms in tags' + - 'delete own files' + - 'revert all revisions' + - 'view all revisions' + - 'view the administration theme' + grantPermissionsForEachNodeType: + - 'create %bundle content' + - 'delete %bundle revisions' + - 'delete own %bundle content' + - 'edit own %bundle content' user.settings: simpleConfigUpdate: + verify_mail: true register: admin_only + cancel_method: user_cancel_block system.date: simpleConfigUpdate: country.default: US timezone.default: 'America/Chicago' timezone.user.configurable: FALSE - field.storage.node.comment: - disable: [] - field.field.node.article.comment: - disable: [] - - -# todo: delete fields on comment entity -# todo: delete state variable 'comment.node_comment_statistics_scale' -# todo: uninstall if installed: automated_cron, big_pipe, comment, contact, history, search, tour From 092c856559877bdbb598c9af90aed4b042e4257b Mon Sep 17 00:00:00 2001 From: Bec White Date: Tue, 25 Feb 2025 10:22:45 -0600 Subject: [PATCH 05/40] Don't create article content type/taxonomy because we won't use them as-is. --- recipes/skeleton/recipe.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/recipes/skeleton/recipe.yml b/recipes/skeleton/recipe.yml index ceca57d..1399696 100644 --- a/recipes/skeleton/recipe.yml +++ b/recipes/skeleton/recipe.yml @@ -5,8 +5,6 @@ type: 'Site' recipes: - core/recipes/basic_block_type - core/recipes/basic_shortcuts - - core/recipes/article_tags - - core/recipes/article_content_type - core/recipes/page_content_type - core/recipes/basic_html_format_editor - core/recipes/full_html_format_editor @@ -35,6 +33,7 @@ install: - menu_ui - options - shortcut + - taxonomy - toolbar - views_ui - workbench @@ -83,9 +82,7 @@ config: - 'access files overview' - 'access toolbar' - 'administer url aliases' - - 'create terms in tags' - 'create url aliases' - - 'edit terms in tags' - 'delete own files' - 'revert all revisions' - 'view all revisions' From a402c0a21c75414e934ca2bac78efa87f39cf396 Mon Sep 17 00:00:00 2001 From: Bec White Date: Tue, 25 Feb 2025 10:28:21 -0600 Subject: [PATCH 06/40] Move recipes into the Drupal root because drush likes this location better. --- {recipes => docroot/recipes}/.gitignore | 0 .../skeleton/config/config_split.config_split.development.yml | 0 .../skeleton/config/config_split.config_split.production.yml | 0 .../skeleton/config/config_split.config_split.staging.yml | 0 .../content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml | 0 .../content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml | 0 .../content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml | 0 {recipes => docroot/recipes}/skeleton/recipe.yml | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename {recipes => docroot/recipes}/.gitignore (100%) rename {recipes => docroot/recipes}/skeleton/config/config_split.config_split.development.yml (100%) rename {recipes => docroot/recipes}/skeleton/config/config_split.config_split.production.yml (100%) rename {recipes => docroot/recipes}/skeleton/config/config_split.config_split.staging.yml (100%) rename {recipes => docroot/recipes}/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml (100%) rename {recipes => docroot/recipes}/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml (100%) rename {recipes => docroot/recipes}/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml (100%) rename {recipes => docroot/recipes}/skeleton/recipe.yml (100%) diff --git a/recipes/.gitignore b/docroot/recipes/.gitignore similarity index 100% rename from recipes/.gitignore rename to docroot/recipes/.gitignore diff --git a/recipes/skeleton/config/config_split.config_split.development.yml b/docroot/recipes/skeleton/config/config_split.config_split.development.yml similarity index 100% rename from recipes/skeleton/config/config_split.config_split.development.yml rename to docroot/recipes/skeleton/config/config_split.config_split.development.yml diff --git a/recipes/skeleton/config/config_split.config_split.production.yml b/docroot/recipes/skeleton/config/config_split.config_split.production.yml similarity index 100% rename from recipes/skeleton/config/config_split.config_split.production.yml rename to docroot/recipes/skeleton/config/config_split.config_split.production.yml diff --git a/recipes/skeleton/config/config_split.config_split.staging.yml b/docroot/recipes/skeleton/config/config_split.config_split.staging.yml similarity index 100% rename from recipes/skeleton/config/config_split.config_split.staging.yml rename to docroot/recipes/skeleton/config/config_split.config_split.staging.yml diff --git a/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml b/docroot/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml similarity index 100% rename from recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml rename to docroot/recipes/skeleton/content/shortcut/3537f64f-3266-4e15-a442-9004bb5f8e09.yml diff --git a/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml b/docroot/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml similarity index 100% rename from recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml rename to docroot/recipes/skeleton/content/shortcut/b3080349-aa05-484a-a2c0-e22281a750cf.yml diff --git a/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml b/docroot/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml similarity index 100% rename from recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml rename to docroot/recipes/skeleton/content/shortcut/e7bf6331-6781-47ae-8de6-e5bde7a04703.yml diff --git a/recipes/skeleton/recipe.yml b/docroot/recipes/skeleton/recipe.yml similarity index 100% rename from recipes/skeleton/recipe.yml rename to docroot/recipes/skeleton/recipe.yml From 7ede72bb24d7ff3c9f98a01660cf50af6068fab9 Mon Sep 17 00:00:00 2001 From: Bec White Date: Tue, 25 Feb 2025 10:28:41 -0600 Subject: [PATCH 07/40] Add a recipe readme. --- docroot/recipes/skeleton/README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docroot/recipes/skeleton/README.md diff --git a/docroot/recipes/skeleton/README.md b/docroot/recipes/skeleton/README.md new file mode 100644 index 0000000..1de1086 --- /dev/null +++ b/docroot/recipes/skeleton/README.md @@ -0,0 +1,24 @@ +# Recipe: Drupal Skeleton + +This is a replacement for the core 'Standard' recipe. The goal is to install and configure "just enough" that it feels like a complete Drupal site, while not installing things that will need to be removed or reconfigured later. + +This recipe can be used on a fresh install: + +``` +drush site:install recipes/skeleton +``` + +... or applied to an existing site: + +``` +drush recipe recipes/skeleton +``` + +## What it does + +* Installs basic modules +* Sets up administration UI +* Configures text formats +* Configures a "Basic page" content type +* Configures user and date settings +* Adds an initial shortcut set From aece7891cfe5c15dc87302c4851ccb97495a0778 Mon Sep 17 00:00:00 2001 From: Bec White Date: Tue, 25 Feb 2025 16:50:07 -0600 Subject: [PATCH 08/40] Use the recipe version of the-build --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5a6d257..a376b11 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,7 @@ "dmore/behat-chrome-extension": "^1.4", "drupal/core-dev": "^11", "drupal/drupal-extension": "^5", - "palantirnet/the-build": "^4.3" + "palantirnet/the-build": "dev-experimental-use-recipe" }, "suggest": { "acquia/memcache-settings": "If your acquia project uses Cloud Platform (and not Cloud Next), add this package and update acquia settings file based on: https://docs.acquia.com/cloud-platform/performance/memcached/enable/#configuration-for-drupal-9-or-later .", From ec39fa77f10951a714f420fa8fb38c75b58040f5 Mon Sep 17 00:00:00 2001 From: Bec White Date: Wed, 26 Feb 2025 14:43:52 -0600 Subject: [PATCH 09/40] Base install --- .circleci/config.yml | 99 +- .circleci/deploy-acquia-example | 66 + .circleci/deploy-pantheon.example | 72 + .the-build/build.circleci.yml | 15 + .the-build/build.yml | 61 + behat.yml | 40 + build.xml | 187 + composer.json | 12 +- composer.lock | 14912 ++++++++++++++++ config/salt.txt | 1 + .../sites/default/admin_toolbar.settings.yml | 1 + .../default/admin_toolbar_tools.settings.yml | 3 + .../default/announcements_feed.settings.yml | 3 + .../sites/default/automated_cron.settings.yml | 1 + .../default/block.block.claro_breadcrumbs.yml | 22 + .../default/block.block.claro_content.yml | 22 + .../sites/default/block.block.claro_help.yml | 22 + .../default/block.block.claro_help_search.yml | 31 + .../block.block.claro_local_actions.yml | 20 + .../default/block.block.claro_messages.yml | 22 + .../default/block.block.claro_page_title.yml | 18 + .../block.block.claro_primary_local_tasks.yml | 22 + ...lock.block.claro_secondary_local_tasks.yml | 22 + .../block.block.olivero_account_menu.yml | 27 + .../block.block.olivero_breadcrumbs.yml | 22 + .../default/block.block.olivero_content.yml | 22 + .../default/block.block.olivero_help.yml | 22 + .../default/block.block.olivero_main_menu.yml | 27 + .../default/block.block.olivero_messages.yml | 20 + .../block.block.olivero_page_title.yml | 18 + .../default/block.block.olivero_powered.yml | 22 + ...ck.block.olivero_primary_admin_actions.yml | 20 + ...lock.block.olivero_primary_local_tasks.yml | 22 + ...ck.block.olivero_secondary_local_tasks.yml | 22 + .../block.block.olivero_site_branding.yml | 25 + .../default/block.block.olivero_syndicate.yml | 23 + .../default/block_content.type.basic.yml | 10 + config/sites/default/claro.settings.yml | 3 + .../sites/default/config_ignore.settings.yml | 2 + .../config_split.config_split.development.yml | 19 + .../config_split.config_split.production.yml | 18 + .../config_split.config_split.staging.yml | 18 + ....base_field_override.node.page.promote.yml | 24 + .../default/core.date_format.fallback.yml | 10 + .../default/core.date_format.html_date.yml | 10 + .../core.date_format.html_datetime.yml | 10 + .../default/core.date_format.html_month.yml | 10 + .../default/core.date_format.html_time.yml | 10 + .../default/core.date_format.html_week.yml | 10 + .../default/core.date_format.html_year.yml | 10 + .../core.date_format.html_yearless_date.yml | 10 + .../sites/default/core.date_format.long.yml | 10 + .../sites/default/core.date_format.medium.yml | 10 + .../core.date_format.olivero_medium.yml | 13 + .../sites/default/core.date_format.short.yml | 10 + ...rm_display.block_content.basic.default.yml | 35 + ....entity_form_display.node.page.default.yml | 79 + .../core.entity_form_mode.user.register.yml | 13 + ...ew_display.block_content.basic.default.yml | 24 + ....entity_view_display.node.page.default.yml | 28 + ...e.entity_view_display.node.page.teaser.yml | 30 + ...re.entity_view_mode.block_content.full.yml | 13 + .../core.entity_view_mode.node.full.yml | 13 + .../core.entity_view_mode.node.rss.yml | 13 + .../core.entity_view_mode.node.teaser.yml | 13 + .../core.entity_view_mode.user.compact.yml | 13 + .../core.entity_view_mode.user.full.yml | 13 + config/sites/default/core.extension.yml | 49 + .../core.menu.static_menu_link_overrides.yml | 3 + config/sites/default/dblog.settings.yml | 1 + .../default/editor.editor.basic_html.yml | 68 + .../sites/default/editor.editor.full_html.yml | 105 + .../field.field.block_content.basic.body.yml | 26 + .../default/field.field.node.page.body.yml | 26 + config/sites/default/field.settings.yml | 1 + .../field.storage.block_content.body.yml | 21 + .../sites/default/field.storage.node.body.yml | 21 + config/sites/default/field_ui.settings.yml | 1 + config/sites/default/file.settings.yml | 13 + .../default/filter.format.basic_html.yml | 51 + .../sites/default/filter.format.full_html.yml | 42 + .../default/filter.format.plain_text.yml | 29 + .../default/filter.format.restricted_html.yml | 32 + config/sites/default/filter.settings.yml | 2 + config/sites/default/image.settings.yml | 3 + config/sites/default/image.style.large.yml | 23 + .../sites/default/image.style.thumbnail.yml | 23 + config/sites/default/menu_ui.settings.yml | 1 + config/sites/default/node.settings.yml | 1 + config/sites/default/node.type.page.yml | 13 + config/sites/default/olivero.settings.yml | 15 + .../sites/default/search.page.help_search.yml | 13 + .../sites/default/search.page.user_search.yml | 13 + config/sites/default/shortcut.set.default.yml | 8 + .../system.action.node_delete_action.yml | 13 + .../system.action.node_make_sticky_action.yml | 13 + ...ystem.action.node_make_unsticky_action.yml | 13 + .../system.action.node_promote_action.yml | 13 + .../system.action.node_publish_action.yml | 13 + .../system.action.node_save_action.yml | 13 + .../system.action.node_unpromote_action.yml | 13 + .../system.action.node_unpublish_action.yml | 13 + ...ion.user_add_role_action.administrator.yml | 14 + ...on.user_add_role_action.content_editor.yml | 14 + .../system.action.user_block_user_action.yml | 13 + .../system.action.user_cancel_user_action.yml | 13 + ....user_remove_role_action.administrator.yml | 14 + ...user_remove_role_action.content_editor.yml | 14 + ...system.action.user_unblock_user_action.yml | 13 + config/sites/default/system.advisories.yml | 4 + config/sites/default/system.cron.yml | 6 + config/sites/default/system.date.yml | 11 + config/sites/default/system.diff.yml | 5 + config/sites/default/system.feature_flags.yml | 3 + config/sites/default/system.file.yml | 5 + config/sites/default/system.image.gd.yml | 3 + config/sites/default/system.image.yml | 3 + config/sites/default/system.logging.yml | 3 + config/sites/default/system.mail.yml | 11 + config/sites/default/system.maintenance.yml | 4 + config/sites/default/system.menu.account.yml | 10 + config/sites/default/system.menu.admin.yml | 10 + config/sites/default/system.menu.footer.yml | 10 + config/sites/default/system.menu.main.yml | 10 + config/sites/default/system.menu.tools.yml | 10 + config/sites/default/system.performance.yml | 16 + config/sites/default/system.rss.yml | 4 + config/sites/default/system.site.yml | 15 + config/sites/default/system.theme.global.yml | 16 + config/sites/default/system.theme.yml | 4 + config/sites/default/taxonomy.settings.yml | 3 + config/sites/default/text.settings.yml | 1 + config/sites/default/update.settings.yml | 13 + config/sites/default/user.flood.yml | 7 + config/sites/default/user.mail.yml | 116 + .../sites/default/user.role.administrator.yml | 11 + config/sites/default/user.role.anonymous.yml | 18 + .../sites/default/user.role.authenticated.yml | 24 + .../default/user.role.content_editor.yml | 36 + config/sites/default/user.settings.yml | 18 + config/sites/default/views.settings.yml | 45 + .../default/views.view.block_content.yml | 553 + config/sites/default/views.view.content.yml | 693 + config/sites/default/views.view.frontpage.yml | 313 + config/sites/default/views.view.glossary.yml | 481 + .../default/views.view.user_admin_people.yml | 928 + config/sites/default/views.view.watchdog.yml | 713 + config/sites/default/workbench.settings.yml | 5 + .../sites/default/workbench_tabs.settings.yml | 1 + docroot/.gitignore | 11 + docroot/.htaccess | 185 + docroot/modules/.gitignore | 1 + docroot/profiles/.gitignore | 1 + docroot/sites/.gitignore | 4 + docroot/sites/default/.gitignore | 2 + docroot/sites/default/settings.php | 13 + docroot/themes/.gitignore | 1 + drush/drush.yml | 26 + drush/sites/drupal-skeleton.site.yml | 2 + phpcs.xml | 40 + phpmd.xml | 78 + recipes/.gitignore | 1 + 162 files changed, 21729 insertions(+), 51 deletions(-) create mode 100644 .circleci/deploy-acquia-example create mode 100644 .circleci/deploy-pantheon.example create mode 100644 .the-build/build.circleci.yml create mode 100644 .the-build/build.yml create mode 100644 behat.yml create mode 100644 build.xml create mode 100644 composer.lock create mode 100644 config/salt.txt create mode 100644 config/sites/default/admin_toolbar.settings.yml create mode 100644 config/sites/default/admin_toolbar_tools.settings.yml create mode 100644 config/sites/default/announcements_feed.settings.yml create mode 100644 config/sites/default/automated_cron.settings.yml create mode 100644 config/sites/default/block.block.claro_breadcrumbs.yml create mode 100644 config/sites/default/block.block.claro_content.yml create mode 100644 config/sites/default/block.block.claro_help.yml create mode 100644 config/sites/default/block.block.claro_help_search.yml create mode 100644 config/sites/default/block.block.claro_local_actions.yml create mode 100644 config/sites/default/block.block.claro_messages.yml create mode 100644 config/sites/default/block.block.claro_page_title.yml create mode 100644 config/sites/default/block.block.claro_primary_local_tasks.yml create mode 100644 config/sites/default/block.block.claro_secondary_local_tasks.yml create mode 100644 config/sites/default/block.block.olivero_account_menu.yml create mode 100644 config/sites/default/block.block.olivero_breadcrumbs.yml create mode 100644 config/sites/default/block.block.olivero_content.yml create mode 100644 config/sites/default/block.block.olivero_help.yml create mode 100644 config/sites/default/block.block.olivero_main_menu.yml create mode 100644 config/sites/default/block.block.olivero_messages.yml create mode 100644 config/sites/default/block.block.olivero_page_title.yml create mode 100644 config/sites/default/block.block.olivero_powered.yml create mode 100644 config/sites/default/block.block.olivero_primary_admin_actions.yml create mode 100644 config/sites/default/block.block.olivero_primary_local_tasks.yml create mode 100644 config/sites/default/block.block.olivero_secondary_local_tasks.yml create mode 100644 config/sites/default/block.block.olivero_site_branding.yml create mode 100644 config/sites/default/block.block.olivero_syndicate.yml create mode 100644 config/sites/default/block_content.type.basic.yml create mode 100644 config/sites/default/claro.settings.yml create mode 100644 config/sites/default/config_ignore.settings.yml create mode 100644 config/sites/default/config_split.config_split.development.yml create mode 100644 config/sites/default/config_split.config_split.production.yml create mode 100644 config/sites/default/config_split.config_split.staging.yml create mode 100644 config/sites/default/core.base_field_override.node.page.promote.yml create mode 100644 config/sites/default/core.date_format.fallback.yml create mode 100644 config/sites/default/core.date_format.html_date.yml create mode 100644 config/sites/default/core.date_format.html_datetime.yml create mode 100644 config/sites/default/core.date_format.html_month.yml create mode 100644 config/sites/default/core.date_format.html_time.yml create mode 100644 config/sites/default/core.date_format.html_week.yml create mode 100644 config/sites/default/core.date_format.html_year.yml create mode 100644 config/sites/default/core.date_format.html_yearless_date.yml create mode 100644 config/sites/default/core.date_format.long.yml create mode 100644 config/sites/default/core.date_format.medium.yml create mode 100644 config/sites/default/core.date_format.olivero_medium.yml create mode 100644 config/sites/default/core.date_format.short.yml create mode 100644 config/sites/default/core.entity_form_display.block_content.basic.default.yml create mode 100644 config/sites/default/core.entity_form_display.node.page.default.yml create mode 100644 config/sites/default/core.entity_form_mode.user.register.yml create mode 100644 config/sites/default/core.entity_view_display.block_content.basic.default.yml create mode 100644 config/sites/default/core.entity_view_display.node.page.default.yml create mode 100644 config/sites/default/core.entity_view_display.node.page.teaser.yml create mode 100644 config/sites/default/core.entity_view_mode.block_content.full.yml create mode 100644 config/sites/default/core.entity_view_mode.node.full.yml create mode 100644 config/sites/default/core.entity_view_mode.node.rss.yml create mode 100644 config/sites/default/core.entity_view_mode.node.teaser.yml create mode 100644 config/sites/default/core.entity_view_mode.user.compact.yml create mode 100644 config/sites/default/core.entity_view_mode.user.full.yml create mode 100644 config/sites/default/core.extension.yml create mode 100644 config/sites/default/core.menu.static_menu_link_overrides.yml create mode 100644 config/sites/default/dblog.settings.yml create mode 100644 config/sites/default/editor.editor.basic_html.yml create mode 100644 config/sites/default/editor.editor.full_html.yml create mode 100644 config/sites/default/field.field.block_content.basic.body.yml create mode 100644 config/sites/default/field.field.node.page.body.yml create mode 100644 config/sites/default/field.settings.yml create mode 100644 config/sites/default/field.storage.block_content.body.yml create mode 100644 config/sites/default/field.storage.node.body.yml create mode 100644 config/sites/default/field_ui.settings.yml create mode 100644 config/sites/default/file.settings.yml create mode 100644 config/sites/default/filter.format.basic_html.yml create mode 100644 config/sites/default/filter.format.full_html.yml create mode 100644 config/sites/default/filter.format.plain_text.yml create mode 100644 config/sites/default/filter.format.restricted_html.yml create mode 100644 config/sites/default/filter.settings.yml create mode 100644 config/sites/default/image.settings.yml create mode 100644 config/sites/default/image.style.large.yml create mode 100644 config/sites/default/image.style.thumbnail.yml create mode 100644 config/sites/default/menu_ui.settings.yml create mode 100644 config/sites/default/node.settings.yml create mode 100644 config/sites/default/node.type.page.yml create mode 100644 config/sites/default/olivero.settings.yml create mode 100644 config/sites/default/search.page.help_search.yml create mode 100644 config/sites/default/search.page.user_search.yml create mode 100644 config/sites/default/shortcut.set.default.yml create mode 100644 config/sites/default/system.action.node_delete_action.yml create mode 100644 config/sites/default/system.action.node_make_sticky_action.yml create mode 100644 config/sites/default/system.action.node_make_unsticky_action.yml create mode 100644 config/sites/default/system.action.node_promote_action.yml create mode 100644 config/sites/default/system.action.node_publish_action.yml create mode 100644 config/sites/default/system.action.node_save_action.yml create mode 100644 config/sites/default/system.action.node_unpromote_action.yml create mode 100644 config/sites/default/system.action.node_unpublish_action.yml create mode 100644 config/sites/default/system.action.user_add_role_action.administrator.yml create mode 100644 config/sites/default/system.action.user_add_role_action.content_editor.yml create mode 100644 config/sites/default/system.action.user_block_user_action.yml create mode 100644 config/sites/default/system.action.user_cancel_user_action.yml create mode 100644 config/sites/default/system.action.user_remove_role_action.administrator.yml create mode 100644 config/sites/default/system.action.user_remove_role_action.content_editor.yml create mode 100644 config/sites/default/system.action.user_unblock_user_action.yml create mode 100644 config/sites/default/system.advisories.yml create mode 100644 config/sites/default/system.cron.yml create mode 100644 config/sites/default/system.date.yml create mode 100644 config/sites/default/system.diff.yml create mode 100644 config/sites/default/system.feature_flags.yml create mode 100644 config/sites/default/system.file.yml create mode 100644 config/sites/default/system.image.gd.yml create mode 100644 config/sites/default/system.image.yml create mode 100644 config/sites/default/system.logging.yml create mode 100644 config/sites/default/system.mail.yml create mode 100644 config/sites/default/system.maintenance.yml create mode 100644 config/sites/default/system.menu.account.yml create mode 100644 config/sites/default/system.menu.admin.yml create mode 100644 config/sites/default/system.menu.footer.yml create mode 100644 config/sites/default/system.menu.main.yml create mode 100644 config/sites/default/system.menu.tools.yml create mode 100644 config/sites/default/system.performance.yml create mode 100644 config/sites/default/system.rss.yml create mode 100644 config/sites/default/system.site.yml create mode 100644 config/sites/default/system.theme.global.yml create mode 100644 config/sites/default/system.theme.yml create mode 100644 config/sites/default/taxonomy.settings.yml create mode 100644 config/sites/default/text.settings.yml create mode 100644 config/sites/default/update.settings.yml create mode 100644 config/sites/default/user.flood.yml create mode 100644 config/sites/default/user.mail.yml create mode 100644 config/sites/default/user.role.administrator.yml create mode 100644 config/sites/default/user.role.anonymous.yml create mode 100644 config/sites/default/user.role.authenticated.yml create mode 100644 config/sites/default/user.role.content_editor.yml create mode 100644 config/sites/default/user.settings.yml create mode 100644 config/sites/default/views.settings.yml create mode 100644 config/sites/default/views.view.block_content.yml create mode 100644 config/sites/default/views.view.content.yml create mode 100644 config/sites/default/views.view.frontpage.yml create mode 100644 config/sites/default/views.view.glossary.yml create mode 100644 config/sites/default/views.view.user_admin_people.yml create mode 100644 config/sites/default/views.view.watchdog.yml create mode 100644 config/sites/default/workbench.settings.yml create mode 100644 config/sites/default/workbench_tabs.settings.yml create mode 100644 docroot/.gitignore create mode 100644 docroot/.htaccess create mode 100644 docroot/modules/.gitignore create mode 100644 docroot/profiles/.gitignore create mode 100644 docroot/sites/.gitignore create mode 100644 docroot/sites/default/.gitignore create mode 100644 docroot/themes/.gitignore create mode 100644 drush/drush.yml create mode 100644 drush/sites/drupal-skeleton.site.yml create mode 100644 phpcs.xml create mode 100644 phpmd.xml create mode 100644 recipes/.gitignore diff --git a/.circleci/config.yml b/.circleci/config.yml index 257cba6..e41e89f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,10 @@ -# This CircleCI configuration is for testing the drupal-skeleton. For project-specific -# testing, use the configuration installed by palantirnet/the-build. - version: 2.1 +# To use browsers on CircleCI, uncomment the lines below and add steps to install them. +# For example, add these to `jobs.build.steps`: +# - browser-tools/install-chrome +# - browser-tools/install-chromedriver +# orbs: +# browser-tools: circleci/browser-tools@1.2.3 jobs: build: working_directory: ~/drupal-skeleton @@ -16,39 +19,41 @@ jobs: environment: - PALANTIR_ENVIRONMENT: circleci - - DRUPAL_ROOT: web - - NODE_VERSION: 18 + - DRUPAL_ROOT: docroot + - NODE_VERSION: 20 steps: - run: name: Install packages - command: sudo apt-get update && sudo apt-get install -y default-mysql-client + command: | + sudo apt-get update && sudo apt-get install -y libpng-dev default-mysql-client + - run: + name: Install nvm + command: | + set +e + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash + touch $BASH_ENV + echo 'export NVM_DIR="$HOME/.nvm"' >> $BASH_ENV + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV - run: name: Configure PHP command: | echo "sendmail_path=/bin/true" | sudo tee -a "/etc/php.d/circleci.ini" + - run: + name: Update Composer + command: | + sudo composer self-update - run: name: Create artifacts directory command: mkdir /tmp/artifacts - run: name: Configure URL in /etc/hosts command: echo 127.0.0.1 ${CIRCLE_PROJECT_REPONAME}.local | sudo tee -a /etc/hosts - - run: - name: Update to latest version of Composer - command: sudo composer self-update - # Note: phing and drupal-check have mutually exclusive requirements. - # It'd be better to add drupal-check as a dependency of the drupal project - # rather than as part of the virtual environment, but this will have to do - # for now. Also note, drupal-check is added as part of the-vagrant so it - # is available to run within our VM. - - run: - name: Install drupal-check - command: | - curl -O -L https://github.com/mglaman/drupal-check/releases/download/1.0.9/drupal-check.phar - mkdir --parents ~/bin - mv drupal-check.phar ~/bin/drupal-check - chmod +x ~/bin/drupal-check + # Package cache + - restore_cache: + keys: + - package-cache-v1- # Source cache - restore_cache: @@ -57,33 +62,31 @@ jobs: - source-v1- - checkout - - # Source cache - update when branch changes - - save_cache: - key: source-v1-{{ .Branch }} - paths: - - ".git" - - # Composer package cache - - restore_cache: - keys: - - composer-v1- - - run: name: Composer install command: composer install --no-interaction --prefer-dist + - run: + name: Yarn install + command: yarn install - # Composer package cache - update when the contents of the Composer cache directory - # change - - run: ls -1R ~/.cache/composer/ > /tmp/composer-cache.txt + # Package cache. This is updated when the contents of the ~/.cache directory change. + # Both Composer and Yarn use this directory. + - run: ls -1R ~/.cache/ > /tmp/package-cache.txt - save_cache: - key: composer-v1-{{ checksum "/tmp/composer-cache.txt" }} + key: package-cache-v1-{{ checksum "/tmp/package-cache.txt" }} paths: - - ~/.cache/composer + - ~/.cache + # Source cache. This is updated for each different branch. + - save_cache: + key: source-v1-{{ .Branch }} + paths: + - ".git" + + # Run code reviews before installing Drupal, so that tests fail earlier. - run: - name: Install the-build in the project - command: printf 'drupal-skeleton\nhttp://drupal-skeleton.local\npantheon\nn' | vendor/bin/the-build-installer + name: Run code reviews + command: vendor/bin/phing code-review - run: name: Wait for DB @@ -95,15 +98,19 @@ jobs: command: vendor/bin/phing build - run: name: Install Drupal - command: printf 'y' | vendor/bin/phing install -Ddrupal.validate_clean_config.bypass=yes -Ddrupal.sites.default.profile=standard + command: vendor/bin/phing install + - run: + name: Run any migrations + command: vendor/bin/phing migrate - run: name: Run Behat tests command: | - cd ${DRUPAL_ROOT} - nohup php -S example.ddev.site:8000 .ht.router.php > /tmp/artifacts/phpd.log 2>&1 & - google-chrome --headless --remote-debugging-port=9222 &>/dev/null & - cd .. - vendor/bin/behat --profile=circleci --suite=default --strict --format=junit --out=/tmp/artifacts + cd ${DRUPAL_ROOT} + nohup php -S ${CIRCLE_PROJECT_REPONAME}.local:8000 .ht.router.php > /tmp/artifacts/phpd.log 2>&1 & + google-chrome --headless --remote-debugging-port=9222 &>/dev/null & + cd .. + vendor/bin/phing test + - store_artifacts: path: /tmp/artifacts - store_test_results: diff --git a/.circleci/deploy-acquia-example b/.circleci/deploy-acquia-example new file mode 100644 index 0000000..3205f90 --- /dev/null +++ b/.circleci/deploy-acquia-example @@ -0,0 +1,66 @@ +# Example snippet for deploy job in config.yml. Add this code to deploy to Acquia. Update ACQUIA_PUBKEY +# with the entry from your known_hosts file for the Git remote host. +# +# You will also need to add a step to the build job to persist to workspace: +# +# - persist_to_workspace: +# root: .. +# paths: +# - project +# +# And, finally, add the new job to the workflow section: +# +# - deploy: +# requires: +# - build +# filters: +# branches: +# only: +# - develop + + deploy: + working_directory: ~/project + docker: + - image: cimg/php:8.3-browsers + environment: + - NODE_VERSION: 20 + - GITHUB_PUBKEY: "github.com,192.30.253.113 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" + - ACQUIA_PUBKEY: "svn-23450.prod.hosting.acquia.com,54.245.120.237 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDit0Rj8j59i9Gj2vOg2TXjIbPswIc27PwncapyBLi9R3FtECXq+md1BfykBJjME83m78CtqkTlWwNZu+LyhF+IYlshKo82JXQzV4kWwi5L9H7KpdyFDMDLVCNVYmU4EQY9ngRq1cwbMBYsfWxv4sSlbsvZv2C8U7luNoc4SiBY4sGpgiMJLFOHWRw6YvhOamLTKfxSoJUT8uRbfkamxas1EK21XjvrdUSN0Bf5LmTdvs/9iIaUH4AlYr0SW0tc2IbIuoFVxuvSzZj2GJjmtCcW1poDMQLTGq+EuO4Mk1WyoUSJC9L8CFonKH7++EPHopvIbPMinO4r2zLEot3lL5TH" + + steps: + - attach_workspace: + at: .. + - add_ssh_keys + - run: + name: Install packages + command: sudo apt-get update && sudo apt-get install -y libpng-dev + + - run: + name: Install nvm + command: | + set +e + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash + touch $BASH_ENV + echo 'export NVM_DIR="$HOME/.nvm"' >> $BASH_ENV + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV + - run: + name: Configure PHP + command: | + echo "sendmail_path=/bin/true" | sudo tee -a "/etc/php.d/circleci.ini" + - run: + name: Configure Git + command: | + git config --global user.email "circle@palantir.net" + git config --global user.name "Circle Deploy" + - run: + name: Add public keys to known hosts file. + command: | + mkdir -p ~/.ssh + echo $GITHUB_PUBKEY >> ~/.ssh/known_hosts + echo $ACQUIA_PUBKEY >> ~/.ssh/known_hosts + - run: + name: Make sites/default writable for artifact build + command: chmod u+w docroot/sites/default + - run: + name: Build and deploy an artifact + command: vendor/bin/phing artifact -Dpush=y diff --git a/.circleci/deploy-pantheon.example b/.circleci/deploy-pantheon.example new file mode 100644 index 0000000..c17fc13 --- /dev/null +++ b/.circleci/deploy-pantheon.example @@ -0,0 +1,72 @@ +# Example snippet for deploy job in config.yml. Add this code to deploy to Pantheon. +# Update PANTHEON_PUBKEY with the entry from your known_hosts file for the code server. +# (To get the known_hosts entry, git clone the SSH URL of the Pantheon repository.) +# +# You will also need to add a step to the build job to persist to workspace: +# +# - persist_to_workspace: +# root: .. +# paths: +# - project +# +# And, finally, add the new job to the workflow section: +# +# - deploy: +# requires: +# - build +# filters: +# branches: +# only: +# - develop +# - master +# - /multidev-.*/ + + deploy: + working_directory: ~/project + docker: + - image: cimg/php:8.3-browsers + environment: + - NODE_VERSION: 20 + - GITHUB_PUBKEY: "github.com,192.30.253.113 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" + - PANTHEON_PUBKEY: "[codeserver.dev.56f20816-b4b7-4517-a90f-667b4785708d.drush.in]:2222,[35.193.151.123]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSY3gnr0DrbqJJSnEFy6jazDmAdBm4Zs/EkWIQa7x31qgSYyYJMz5V+pk62lBf2BN42VtubwO83vW9G+yG2K1RGOvZJaK5GBvBb/Ws2ZPcp/4sNHpPzkdd75e5/Pk8AWA59XUbJcBWmrDrHMbWV1j2zqPPikxbqGeTTjSx4QR18LIRei5OwT6VQnaVnJqPAqFZ+oCbpr0DL96foL3UEY8EWT/6GH2cANEGZO4ppbhdDw4uG6TaI7S0lxWMQEVy+iwjCNH/nanjd73cwoYd90E0OVdgNDr3hVbIuE6sUW6UwlaAwuyOM/xJYPg1y0rF66958pyVJlZ9KD5A0kY3bHg7" + + steps: + - attach_workspace: + at: .. + - add_ssh_keys + - run: + name: Install packages + command: sudo apt-get update && sudo apt-get install -y libpng-dev + + - run: + name: Install nvm + command: | + set +e + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash + touch $BASH_ENV + echo 'export NVM_DIR="$HOME/.nvm"' >> $BASH_ENV + echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV + - run: + name: Configure PHP + command: | + echo "sendmail_path=/bin/true" | sudo tee -a "/etc/php.d/circleci.ini" + - run: + name: Configure Git + command: | + git config --global user.email "circle@palantir.net" + git config --global user.name "Circle Deploy" + - run: + name: Add public keys to known hosts file. + command: | + mkdir -p ~/.ssh + echo $GITHUB_PUBKEY >> ~/.ssh/known_hosts + echo $PANTHEON_PUBKEY >> ~/.ssh/known_hosts + - run: + name: Make sites/default writable for artifact build + command: chmod u+w web/sites/default + - run: + name: Build and deploy an artifact + command: | + # Shorten multidev branch names from 'multidev-foo' to 'foo', max 11 characters + ARTIFACT_BRANCH=$(echo ${CIRCLE_BRANCH} | sed -E 's/^(multidev-)?(.{1,11}).*/\2/') + vendor/bin/phing artifact -Dartifact.result=push -Dartifact.git.remote_branch=${ARTIFACT_BRANCH} diff --git a/.the-build/build.circleci.yml b/.the-build/build.circleci.yml new file mode 100644 index 0000000..e122e1a --- /dev/null +++ b/.the-build/build.circleci.yml @@ -0,0 +1,15 @@ +# @file +# Configuration properties specific to the CircleCI environment. +drupal: + twig: + debug: false + sites: + default: + database: + database: circle_test + username: root + password: "" + host: 127.0.0.1 + +behat: + args: "--profile=circleci --suite=default --strict --format=junit --out=/tmp/artifacts --tags=~@skipci" diff --git a/.the-build/build.yml b/.the-build/build.yml new file mode 100644 index 0000000..27a4d1e --- /dev/null +++ b/.the-build/build.yml @@ -0,0 +1,61 @@ +# @file +# Default build configuration properties. +# +# This file may be customized for your project. The full set of default values can be +# found in the-build's repository. +# @see https://github.com/palantirnet/the-build/blob/release-2.0/defaults.yml + +projectname: drupal-skeleton + +# These properties are used when building the settings.php and settings.yml for your +# Drupal site, and by some of the targets in the default build.xml file. +# @see .the-build/drupal/services.build.yml +# @see .the-build/drupal/settings.build.php +build: + host: acquia + +drupal: + root: "docroot" + + twig: + debug: true + + sites: + default: + # REQUIRED: Name of the sites subdirectory where the `settings.php` file + # should live. + dir: default + + # REQUIRED: Your site's URI; the default should be the URI of your local + # development environment. + uri: "https://drupal-skeleton.ddev.site" + + # OPTIONAL: Drupal hash salt defaults to "temporary". + hash_salt: "temporary" + + # OPTIONAL: The Drupal database name defaults to the site's "dir" value. + database: + database: "db" + + # Multisites created by `phing drupal-add-multisite` will be automatically added here. + # @multisite_placeholder@ + + # Defaults for all sites; these can be overridden for individual sites. + _defaults: + database: + username: "db" + password: "db" + host: "db" + +# Putting these flags in configuration allows you to vary the behat configuration per +# environment. Sometimes, there are tests that are appropriate to skip on CI. Compare +# these values to the defaults in build.circleci.yml. +behat: + args: "--suite=default --strict" + +# To build an artifact from your code, add the URL to your artifact git repository. +# @see https://github.com/palantirnet/the-build/blob/release-2.0/defaults.yml +# +# artifact: +# git: +# remote: diff --git a/behat.yml b/behat.yml new file mode 100644 index 0000000..5b4b46d --- /dev/null +++ b/behat.yml @@ -0,0 +1,40 @@ +default: + suites: + default: + contexts: + - FeatureContext + - Drupal\DrupalExtension\Context\DrupalContext + - Drupal\DrupalExtension\Context\MinkContext + - Drupal\DrupalExtension\Context\MessageContext + - Drupal\DrupalExtension\Context\DrushContext + filters: + tags: "~@skipci" + gherkin: + cache: ~ + extensions: + DMore\ChromeExtension\Behat\ServiceContainer\ChromeExtension: ~ + Drupal\MinkExtension: + browserkit_http: ~ + chrome: + api_url: "http://chrome:9222" + browser_name: chrome + javascript_session: chrome + base_url: http://drupal-skeleton.ddev.site + Drupal\DrupalExtension: + blackbox: ~ + api_driver: 'drupal' + drupal: + drupal_root: 'docroot' + text: + username_field: 'name' + password_field: 'pass' + log_out: 'Log out' + region_map: + anywhere: "*" + +circleci: + extensions: + Drupal\MinkExtension: + chrome: + api_url: "http://localhost:9222" + base_url: http://drupal-skeleton.ddev.site:8000 diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..faf113d --- /dev/null +++ b/build.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Configure this target to load sample data and run the migrations. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/composer.json b/composer.json index a376b11..673bdac 100644 --- a/composer.json +++ b/composer.json @@ -17,15 +17,17 @@ ], "require": { "composer/installers": "^2.0", - "drupal/admin_toolbar": "^3", + "drupal/admin_toolbar": "^3.5", "drupal/config_ignore": "^3", - "drupal/config_split": "^2", + "drupal/config_split": "^2.0", "drupal/core-composer-scaffold": "^11", "drupal/core-recommended": "^11", - "drupal/devel": "^5", - "drupal/workbench": "^1.5", + "drupal/devel": "^5.3", + "drupal/memcache": "^2.7", + "drupal/workbench": "^1.6", "drupal/workbench_tabs": "^1.8", - "drush/drush": "^13" + "drush/drush": "^13", + "typhonius/acquia-php-sdk-v2": "^3.4" }, "require-dev": { "behat/behat": "^3.12", diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..f60dda3 --- /dev/null +++ b/composer.lock @@ -0,0 +1,14912 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "1477d3ee45e3355a964084e7bf3955cd", + "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/50f57105bad3d97a43ec4a485eb57daf347eafea", + "reference": "50f57105bad3d97a43ec4a485eb57daf347eafea", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0", + "symfony/http-foundation": "^5.3|^6|^7", + "symfony/http-kernel": "^5.3|^6|^7" + }, + "require-dev": { + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.2.0" + }, + "time": "2023-11-14T13:51:46+00:00" + }, + { + "name": "chi-teck/drupal-code-generator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/Chi-teck/drupal-code-generator.git", + "reference": "9a5501beb1a7aa2400afa5e5679bf21c526c497c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/9a5501beb1a7aa2400afa5e5679bf21c526c497c", + "reference": "9a5501beb1a7aa2400afa5e5679bf21c526c497c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=8.3.0", + "psr/event-dispatcher": "^1.0", + "psr/log": "^3.0", + "symfony/console": "^7.1", + "symfony/dependency-injection": "^7.1", + "symfony/filesystem": "^7.1", + "symfony/string": "^7.0", + "twig/twig": "^3.4" + }, + "conflict": { + "nikic/php-parser": "<4.17", + "squizlabs/php_codesniffer": "<3.6" + }, + "require-dev": { + "chi-teck/drupal-coder-extension": "^2.0.0-beta3", + "drupal/coder": "8.3.24", + "drupal/core": "11.x-dev", + "ext-simplexml": "*", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^10.5", + "squizlabs/php_codesniffer": "^3.9", + "symfony/var-dumper": "^7.1", + "symfony/yaml": "^7.1", + "vimeo/psalm": "^5.24.0" + }, + "bin": [ + "bin/dcg" + ], + "type": "library", + "autoload": { + "psr-4": { + "DrupalCodeGenerator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Drupal code generator", + "support": { + "issues": "https://github.com/Chi-teck/drupal-code-generator/issues", + "source": "https://github.com/Chi-teck/drupal-code-generator/tree/4.1.0" + }, + "time": "2024-10-30T18:25:43+00:00" + }, + { + "name": "composer/installers", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/12fb2dfe5e16183de69e784a7b84046c43d97e8e", + "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "composer/composer": "^1.10.27 || ^2.7", + "composer/semver": "^1.7.2 || ^3.4.0", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-phpunit": "^1", + "symfony/phpunit-bridge": "^7.1.1", + "symfony/process": "^5 || ^6 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-main": "2.x-dev" + }, + "plugin-modifies-install-path": true + }, + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "MantisBT", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Starbug", + "Thelia", + "Whmcs", + "WolfCMS", + "agl", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "concreteCMS", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "known", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "matomo", + "mediawiki", + "miaoxing", + "modulework", + "modx", + "moodle", + "osclass", + "pantheon", + "phpbb", + "piwik", + "ppi", + "processwire", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "sylius", + "tastyigniter", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "support": { + "issues": "https://github.com/composer/installers/issues", + "source": "https://github.com/composer/installers/tree/v2.3.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-06-24T20:46:46+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-09-19T14:15:21+00:00" + }, + { + "name": "consolidation/annotated-command", + "version": "4.10.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/annotated-command.git", + "reference": "362310b13ececa9f6f0a4a880811fa08fecc348b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/362310b13ececa9f6f0a4a880811fa08fecc348b", + "reference": "362310b13ececa9f6f0a4a880811fa08fecc348b", + "shasum": "" + }, + "require": { + "consolidation/output-formatters": "^4.3.1", + "php": ">=7.1.3", + "psr/log": "^1 || ^2 || ^3", + "symfony/console": "^4.4.8 || ^5 || ^6 || ^7", + "symfony/event-dispatcher": "^4.4.8 || ^5 || ^6 || ^7", + "symfony/finder": "^4.4.8 || ^5 || ^6 || ^7" + }, + "require-dev": { + "composer-runtime-api": "^2.0", + "phpunit/phpunit": "^7.5.20 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\AnnotatedCommand\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Initialize Symfony Console commands from annotated command class methods.", + "support": { + "issues": "https://github.com/consolidation/annotated-command/issues", + "source": "https://github.com/consolidation/annotated-command/tree/4.10.1" + }, + "time": "2024-12-13T19:55:40+00:00" + }, + { + "name": "consolidation/config", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/consolidation/config.git", + "reference": "0615499781449ab773ffc609b97b934b3357b3f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/config/zipball/0615499781449ab773ffc609b97b934b3357b3f9", + "reference": "0615499781449ab773ffc609b97b934b3357b3f9", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3", + "grasmash/expander": "^3", + "php": ">=8.2.0", + "symfony/event-dispatcher": "^7" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3", + "symfony/console": "^7", + "symfony/yaml": "^7", + "yoast/phpunit-polyfills": "^1" + }, + "suggest": { + "symfony/event-dispatcher": "Required to inject configuration into Command options", + "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Provide configuration services for a commandline tool.", + "support": { + "issues": "https://github.com/consolidation/config/issues", + "source": "https://github.com/consolidation/config/tree/3.1.0" + }, + "time": "2024-11-28T14:37:27+00:00" + }, + { + "name": "consolidation/filter-via-dot-access-data", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/consolidation/filter-via-dot-access-data.git", + "reference": "cb2eeba41f8e2e3c61698a5cf70ef048ff6c9d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/filter-via-dot-access-data/zipball/cb2eeba41f8e2e3c61698a5cf70ef048ff6c9d5b", + "reference": "cb2eeba41f8e2e3c61698a5cf70ef048ff6c9d5b", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0 || ^2.0.0 || ^3.0.0", + "php": ">=7.1.3" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.20 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Filter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "This project uses dflydev/dot-access-data to provide simple output filtering for applications built with annotated-command / Robo.", + "support": { + "source": "https://github.com/consolidation/filter-via-dot-access-data/tree/2.0.2" + }, + "time": "2021-12-30T03:56:08+00:00" + }, + { + "name": "consolidation/log", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/consolidation/log.git", + "reference": "c27a3beb36137c141ccbce0d89f64befb243c015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/log/zipball/c27a3beb36137c141ccbce0d89f64befb243c015", + "reference": "c27a3beb36137c141ccbce0d89f64befb243c015", + "shasum": "" + }, + "require": { + "php": ">=8.0.0", + "psr/log": "^3", + "symfony/console": "^5 || ^6 || ^7" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.20 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "platform": { + "php": "8.2.17" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", + "support": { + "issues": "https://github.com/consolidation/log/issues", + "source": "https://github.com/consolidation/log/tree/3.1.0" + }, + "time": "2024-04-04T23:50:25+00:00" + }, + { + "name": "consolidation/output-formatters", + "version": "4.6.0", + "source": { + "type": "git", + "url": "https://github.com/consolidation/output-formatters.git", + "reference": "5fd5656718d7068a02d046f418a7ba873d5abbfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/5fd5656718d7068a02d046f418a7ba873d5abbfe", + "reference": "5fd5656718d7068a02d046f418a7ba873d5abbfe", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", + "php": ">=7.1.3", + "symfony/console": "^4 || ^5 || ^6 || ^7", + "symfony/finder": "^4 || ^5 || ^6 || ^7" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.4.2", + "phpunit/phpunit": "^7 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3", + "symfony/var-dumper": "^4 || ^5 || ^6 || ^7", + "symfony/yaml": "^4 || ^5 || ^6 || ^7", + "yoast/phpunit-polyfills": "^1" + }, + "suggest": { + "symfony/var-dumper": "For using the var_dump formatter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Consolidation\\OutputFormatters\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Format text by applying transformations provided by plug-in formatters.", + "support": { + "issues": "https://github.com/consolidation/output-formatters/issues", + "source": "https://github.com/consolidation/output-formatters/tree/4.6.0" + }, + "time": "2024-10-18T14:02:48+00:00" + }, + { + "name": "consolidation/robo", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/consolidation/robo.git", + "reference": "dde6bd88de5e1e8a7f6ed8906f80353817647ad9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/robo/zipball/dde6bd88de5e1e8a7f6ed8906f80353817647ad9", + "reference": "dde6bd88de5e1e8a7f6ed8906f80353817647ad9", + "shasum": "" + }, + "require": { + "consolidation/annotated-command": "^4.8.1", + "consolidation/config": "^3", + "consolidation/log": "^3", + "consolidation/output-formatters": "^4.1.2", + "league/container": "^3.3.1 || ^4.0", + "php": ">=8.2", + "phpowermove/docblock": "^4.0", + "symfony/console": "^6 || ^7", + "symfony/event-dispatcher": "^6 || ^7", + "symfony/filesystem": "^6 || ^7", + "symfony/finder": "^6 || ^7", + "symfony/process": "^6 || ^7", + "symfony/yaml": "^6 || ^7" + }, + "conflict": { + "codegyre/robo": "*" + }, + "require-dev": { + "natxet/cssmin": "3.0.4", + "patchwork/jsqueeze": "^2", + "pear/archive_tar": "^1.4.4", + "phpunit/phpunit": "^7.5.20 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3.6", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "suggest": { + "consolidation/self-update": "For self-updating a phar-based app built with Robo", + "natxet/cssmin": "For minifying CSS files in taskMinify", + "patchwork/jsqueeze": "For minifying JS files in taskMinify", + "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively.", + "totten/lurkerlite": "For monitoring filesystem changes in taskWatch" + }, + "bin": [ + "robo" + ], + "type": "library", + "autoload": { + "psr-4": { + "Robo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "Modern task runner", + "support": { + "issues": "https://github.com/consolidation/robo/issues", + "source": "https://github.com/consolidation/robo/tree/5.1.0" + }, + "time": "2024-10-22T13:18:54+00:00" + }, + { + "name": "consolidation/site-alias", + "version": "4.1.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/site-alias.git", + "reference": "aff6189aae17da813d23249cb2fc0fff33f26d40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/site-alias/zipball/aff6189aae17da813d23249cb2fc0fff33f26d40", + "reference": "aff6189aae17da813d23249cb2fc0fff33f26d40", + "shasum": "" + }, + "require": { + "consolidation/config": "^1.2.1 || ^2 || ^3", + "php": ">=7.4", + "symfony/filesystem": "^5.4 || ^6 || ^7", + "symfony/finder": "^5 || ^6 || ^7" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.4.2", + "phpunit/phpunit": ">=7", + "squizlabs/php_codesniffer": "^3", + "symfony/var-dumper": "^4", + "yoast/phpunit-polyfills": "^0.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\SiteAlias\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + }, + { + "name": "Moshe Weitzman", + "email": "weitzman@tejasa.com" + } + ], + "description": "Manage alias records for local and remote sites.", + "support": { + "issues": "https://github.com/consolidation/site-alias/issues", + "source": "https://github.com/consolidation/site-alias/tree/4.1.1" + }, + "time": "2024-12-13T19:05:11+00:00" + }, + { + "name": "consolidation/site-process", + "version": "5.4.2", + "source": { + "type": "git", + "url": "https://github.com/consolidation/site-process.git", + "reference": "e7fafc40ebfddc1a5ee99ee66e5d186fc1bed4da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/site-process/zipball/e7fafc40ebfddc1a5ee99ee66e5d186fc1bed4da", + "reference": "e7fafc40ebfddc1a5ee99ee66e5d186fc1bed4da", + "shasum": "" + }, + "require": { + "consolidation/config": "^2 || ^3", + "consolidation/site-alias": "^3 || ^4", + "php": ">=8.0.14", + "symfony/console": "^5.4 || ^6 || ^7", + "symfony/process": "^6 || ^7" + }, + "require-dev": { + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\SiteProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + }, + { + "name": "Moshe Weitzman", + "email": "weitzman@tejasa.com" + } + ], + "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.", + "support": { + "issues": "https://github.com/consolidation/site-process/issues", + "source": "https://github.com/consolidation/site-process/tree/5.4.2" + }, + "time": "2024-12-13T19:25:56+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/annotations", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/901c2ee5d26eb64ff43c47976e114bf00843acf7", + "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2 || ^3", + "ext-tokenizer": "*", + "php": "^7.2 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^2.0", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.10.28", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^5.4 || ^6.4 || ^7", + "vimeo/psalm": "^4.30 || ^5.14" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/2.0.2" + }, + "time": "2024-09-05T10:17:24+00:00" + }, + { + "name": "doctrine/common", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "shasum": "" + }, + "require": { + "doctrine/persistence": "^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^6.1", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", + "keywords": [ + "common", + "doctrine", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.5.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", + "type": "tidelift" + } + ], + "time": "2025-01-01T22:12:03+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + }, + "time": "2024-12-07T21:18:45+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2024-05-22T20:47:39+00:00" + }, + { + "name": "doctrine/lexer", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/2.1.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:35:39+00:00" + }, + { + "name": "doctrine/persistence", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "45004aca79189474f113cbe3a53847c2115a55fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/45004aca79189474f113cbe3a53847c2115a55fa", + "reference": "45004aca79189474f113cbe3a53847c2115a55fa", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "^1 || ^2", + "php": "^8.1", + "psr/cache": "^1.0 || ^2.0 || ^3.0" + }, + "conflict": { + "doctrine/common": "<2.10" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "1.12.7", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^9.6", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Persistence\\": "src/Persistence" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/4.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2024-11-01T21:49:07+00:00" + }, + { + "name": "drupal/admin_toolbar", + "version": "3.5.3", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/admin_toolbar.git", + "reference": "3.5.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.5.3.zip", + "reference": "3.5.3", + "shasum": "363cdd6e6ca47983900f40793edf9a8b26f132bb" + }, + "require": { + "drupal/core": "^9.5 || ^10 || ^11" + }, + "require-dev": { + "drupal/admin_toolbar_tools": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "3.5.3", + "datestamp": "1740156799", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Wilfrid Roze (eme)", + "homepage": "https://www.drupal.org/u/eme", + "role": "Maintainer" + }, + { + "name": "Romain Jarraud (romainj)", + "homepage": "https://www.drupal.org/u/romainj", + "role": "Maintainer" + }, + { + "name": "Adrian Cid Almaguer (adriancid)", + "homepage": "https://www.drupal.org/u/adriancid", + "email": "adriancid@gmail.com", + "role": "Maintainer" + }, + { + "name": "Mohamed Anis Taktak (matio89)", + "homepage": "https://www.drupal.org/u/matio89", + "role": "Maintainer" + }, + { + "name": "fethi.krout", + "homepage": "https://www.drupal.org/user/3206765" + }, + { + "name": "japerry", + "homepage": "https://www.drupal.org/user/45640" + }, + { + "name": "matio89", + "homepage": "https://www.drupal.org/user/2320090" + }, + { + "name": "musa.thomas", + "homepage": "https://www.drupal.org/user/1213824" + }, + { + "name": "romainj", + "homepage": "https://www.drupal.org/user/370706" + } + ], + "description": "Provides a drop-down menu interface to the core Drupal Toolbar.", + "homepage": "http://drupal.org/project/admin_toolbar", + "keywords": [ + "Drupal", + "Toolbar" + ], + "support": { + "source": "https://git.drupalcode.org/project/admin_toolbar", + "issues": "https://www.drupal.org/project/issues/admin_toolbar" + } + }, + { + "name": "drupal/config_ignore", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/config_ignore.git", + "reference": "8.x-3.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-3.3.zip", + "reference": "8.x-3.3", + "shasum": "4446811ecb023820a57c227d35c034e0d4363a70" + }, + "require": { + "drupal/core": "^8.8 || ^9 || ^10 || ^11" + }, + "require-dev": { + "drupal/config_filter": "^1.8||^2.2", + "drush/drush": "^10 || ^11 || ^12" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.3", + "datestamp": "1713299496", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tommy Lynge Jørgensen", + "homepage": "https://www.drupal.org/u/tlyngej", + "email": "tlyngej@gmail.com", + "role": "Maintainer" + }, + { + "name": "Fabian Bircher", + "homepage": "https://www.drupal.org/u/bircher", + "role": "Maintainer" + }, + { + "name": "tlyngej", + "homepage": "https://www.drupal.org/user/413139" + } + ], + "description": "Ignore certain configuration during import and export.", + "homepage": "http://drupal.org/project/config_ignore", + "support": { + "source": "https://git.drupalcode.org/project/config_ignore", + "issues": "http://drupal.org/project/config_ignore" + } + }, + { + "name": "drupal/config_split", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/config_split.git", + "reference": "2.0.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_split-2.0.2.zip", + "reference": "2.0.2", + "shasum": "efde01f790ca6f6023982e918fe51740da931d3e" + }, + "require": { + "drupal/core": "^8.8 || ^9 || ^10 || ^11" + }, + "conflict": { + "drush/drush": "<10" + }, + "require-dev": { + "drupal/config_filter": "^1||^2" + }, + "suggest": { + "drupal/chosen": "Chosen uses the Chosen jQuery plugin to make the