diff --git a/.gitignore b/.gitignore index e9a18f8b4c..409fd33cf3 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,18 @@ /index.php /robots.txt /update.php -/web.config \ No newline at end of file +/web.config +/csslintrc +/default.services.yml +/default.settings.php +/development.services.yml +/editorconfig +/eslintignore +/eslintrc.json +/example.settings.local.php +/example.sites.php +/gitattributes +/ht.router.php +/modules.README.txt +/profiles.README.txt +/themes.README.txt diff --git a/composer.json b/composer.json index 1cbf42879d..1d5a11ead1 100644 --- a/composer.json +++ b/composer.json @@ -5,23 +5,12 @@ "license": "GPL-2.0-or-later", "require": { "composer/installers": "^1.0.24", - "drupal/core": "self.version" + "drupal/core-composer-scaffold": "self.version", + "drupal/core-scaffold-assets": "self.version", + "wikimedia/composer-merge-plugin": "^1.4" }, - "require-dev": { - "behat/mink": "1.7.x-dev", - "behat/mink-goutte-driver": "^1.2", - "behat/mink-selenium2-driver": "1.3.x-dev", - "composer/composer": "^1.8", - "drupal/coder": "^8.3.2", - "jcalderonzumba/gastonjs": "^1.0.2", - "jcalderonzumba/mink-phantomjs-driver": "^0.3.1", - "mikey179/vfsstream": "^1.2", - "phpunit/phpunit": "^6.5", - "phpspec/prophecy": "^1.7", - "symfony/css-selector": "^3.4.0", - "symfony/phpunit-bridge": "^3.4.3", - "symfony/debug": "^3.4.0", - "justinrainbow/json-schema": "^5.2" + "replace": { + "drupal/core": "^8.8" }, "minimum-stability": "dev", "prefer-stable": true, @@ -38,12 +27,23 @@ "https://www.drupal.org/node/2718229" ], "composer-scaffold": { - "allowed-packages": [ - "drupal/core" + "allowed-packages": [ + "drupal/core-scaffold-assets" + ], + "locations": { + "web-root": "." + } + }, + "merge-plugin": { + "include": [ + "core/composer.json" ], - "symlink": true + "recurse": true, + "replace": false, + "merge-extra": false }, "installer-paths": { + "core": ["type:drupal-core"], "modules/contrib/{$name}": ["type:drupal-module"], "profiles/contrib/{$name}": ["type:drupal-profile"], "themes/contrib/{$name}": ["type:drupal-theme"], @@ -54,10 +54,14 @@ }, "autoload": { "psr-4": { - "Drupal\\Component\\": "core/lib/Drupal/Component", "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer" } }, + "autoload-dev": { + "psr-4": { + "Drupal\\Composer\\": "composer" + } + }, "scripts": { "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump", "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess", @@ -73,13 +77,11 @@ }, { "type": "path", - "url": "core", - "options": { "symlink": true } + "url": "composer/Scaffold" }, { "type": "path", - "url": "core/lib/Drupal/Component/Scaffold", - "options": { "symlink": true } + "url": "composer/Assets" } ] } diff --git a/composer.lock b/composer.lock index 0fc5b9e37a..8211864aeb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9de68be62fba2d17a92b98a1013ffb97", + "content-hash": "8c59028a148472f4a3cda7d8eafa961b", "packages": [ { "name": "asm89/stack-cors", @@ -674,267 +674,13 @@ ], "time": "2014-09-09T13:34:57+00:00" }, - { - "name": "drupal/core", - "version": "8.8.x-dev", - "dist": { - "type": "path", - "url": "core", - "reference": "5202a725ec1329af521bd2f043ba0ed0ce2091d1" - }, - "require": { - "asm89/stack-cors": "^1.1", - "composer/semver": "^1.0", - "doctrine/annotations": "^1.2", - "doctrine/common": "^2.5", - "drupal/core-annotation": "self.version", - "drupal/core-assertion": "self.version", - "drupal/core-bridge": "self.version", - "drupal/core-class-finder": "self.version", - "drupal/core-composer-scaffold": "self.version", - "drupal/core-datetime": "self.version", - "drupal/core-dependency-injection": "self.version", - "drupal/core-diff": "self.version", - "drupal/core-discovery": "self.version", - "drupal/core-event-dispatcher": "self.version", - "drupal/core-file-cache": "self.version", - "drupal/core-filesystem": "self.version", - "drupal/core-gettext": "self.version", - "drupal/core-graph": "self.version", - "drupal/core-http-foundation": "self.version", - "drupal/core-php-storage": "self.version", - "drupal/core-plugin": "self.version", - "drupal/core-proxy-builder": "self.version", - "drupal/core-render": "self.version", - "drupal/core-serialization": "self.version", - "drupal/core-transliteration": "self.version", - "drupal/core-utility": "self.version", - "drupal/core-uuid": "self.version", - "drupal/core-version": "self.version", - "easyrdf/easyrdf": "^0.9", - "egulias/email-validator": "^2.0", - "ext-date": "*", - "ext-dom": "*", - "ext-filter": "*", - "ext-gd": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-pdo": "*", - "ext-session": "*", - "ext-simplexml": "*", - "ext-spl": "*", - "ext-tokenizer": "*", - "ext-xml": "*", - "guzzlehttp/guzzle": "^6.2.1", - "masterminds/html5": "^2.1", - "paragonie/random_compat": "^1.0|^2.0", - "pear/archive_tar": "^1.4", - "php": ">=7.0.8", - "stack/builder": "^1.0", - "symfony-cmf/routing": "^1.4", - "symfony/class-loader": "~3.4.0", - "symfony/console": "~3.4.0", - "symfony/dependency-injection": "~3.4.26", - "symfony/event-dispatcher": "~3.4.0", - "symfony/http-foundation": "~3.4.27", - "symfony/http-kernel": "~3.4.14", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/process": "~3.4.0", - "symfony/psr-http-message-bridge": "^1.0", - "symfony/routing": "~3.4.0", - "symfony/serializer": "~3.4.0", - "symfony/translation": "~3.4.0", - "symfony/validator": "~3.4.0", - "symfony/yaml": "~3.4.5", - "twig/twig": "^1.38.2", - "typo3/phar-stream-wrapper": "^2.1.1", - "zendframework/zend-diactoros": "^1.1", - "zendframework/zend-feed": "^2.4" - }, - "conflict": { - "drush/drush": "<8.1.10" - }, - "replace": { - "drupal/action": "self.version", - "drupal/aggregator": "self.version", - "drupal/automated_cron": "self.version", - "drupal/ban": "self.version", - "drupal/bartik": "self.version", - "drupal/basic_auth": "self.version", - "drupal/big_pipe": "self.version", - "drupal/block": "self.version", - "drupal/block_content": "self.version", - "drupal/block_place": "self.version", - "drupal/book": "self.version", - "drupal/breakpoint": "self.version", - "drupal/ckeditor": "self.version", - "drupal/classy": "self.version", - "drupal/color": "self.version", - "drupal/comment": "self.version", - "drupal/config": "self.version", - "drupal/config_environment": "self.version", - "drupal/config_translation": "self.version", - "drupal/contact": "self.version", - "drupal/content_moderation": "self.version", - "drupal/content_translation": "self.version", - "drupal/contextual": "self.version", - "drupal/core-annotation": "self.version", - "drupal/core-assertion": "self.version", - "drupal/core-bridge": "self.version", - "drupal/core-class-finder": "self.version", - "drupal/core-datetime": "self.version", - "drupal/core-dependency-injection": "self.version", - "drupal/core-diff": "self.version", - "drupal/core-discovery": "self.version", - "drupal/core-event-dispatcher": "self.version", - "drupal/core-file-cache": "self.version", - "drupal/core-filesystem": "self.version", - "drupal/core-gettext": "self.version", - "drupal/core-graph": "self.version", - "drupal/core-http-foundation": "self.version", - "drupal/core-php-storage": "self.version", - "drupal/core-plugin": "self.version", - "drupal/core-proxy-builder": "self.version", - "drupal/core-render": "self.version", - "drupal/core-serialization": "self.version", - "drupal/core-transliteration": "self.version", - "drupal/core-utility": "self.version", - "drupal/core-uuid": "self.version", - "drupal/core-version": "self.version", - "drupal/datetime": "self.version", - "drupal/datetime_range": "self.version", - "drupal/dblog": "self.version", - "drupal/dynamic_page_cache": "self.version", - "drupal/editor": "self.version", - "drupal/entity_reference": "self.version", - "drupal/field": "self.version", - "drupal/field_layout": "self.version", - "drupal/field_ui": "self.version", - "drupal/file": "self.version", - "drupal/filter": "self.version", - "drupal/forum": "self.version", - "drupal/hal": "self.version", - "drupal/help": "self.version", - "drupal/help_topics": "self.version", - "drupal/history": "self.version", - "drupal/image": "self.version", - "drupal/inline_form_errors": "self.version", - "drupal/jsonapi": "self.version", - "drupal/language": "self.version", - "drupal/layout_builder": "self.version", - "drupal/layout_discovery": "self.version", - "drupal/link": "self.version", - "drupal/locale": "self.version", - "drupal/media": "self.version", - "drupal/media_library": "self.version", - "drupal/menu_link_content": "self.version", - "drupal/menu_ui": "self.version", - "drupal/migrate": "self.version", - "drupal/migrate_drupal": "self.version", - "drupal/migrate_drupal_multilingual": "self.version", - "drupal/migrate_drupal_ui": "self.version", - "drupal/minimal": "self.version", - "drupal/node": "self.version", - "drupal/options": "self.version", - "drupal/page_cache": "self.version", - "drupal/path": "self.version", - "drupal/quickedit": "self.version", - "drupal/rdf": "self.version", - "drupal/responsive_image": "self.version", - "drupal/rest": "self.version", - "drupal/search": "self.version", - "drupal/serialization": "self.version", - "drupal/settings_tray": "self.version", - "drupal/seven": "self.version", - "drupal/shortcut": "self.version", - "drupal/simpletest": "self.version", - "drupal/standard": "self.version", - "drupal/stark": "self.version", - "drupal/statistics": "self.version", - "drupal/syslog": "self.version", - "drupal/system": "self.version", - "drupal/taxonomy": "self.version", - "drupal/telephone": "self.version", - "drupal/text": "self.version", - "drupal/toolbar": "self.version", - "drupal/tour": "self.version", - "drupal/tracker": "self.version", - "drupal/update": "self.version", - "drupal/user": "self.version", - "drupal/views": "self.version", - "drupal/views_ui": "self.version", - "drupal/workflows": "self.version", - "drupal/workspaces": "self.version" - }, - "type": "project", - "extra": { - "composer-scaffold": { - "file-mapping": { - "[web-root]/.csslintrc": "assets/scaffold/csslintrc", - "[web-root]/.editorconfig": "assets/scaffold/editorconfig", - "[web-root]/.eslintignore": "assets/scaffold/eslintignore", - "[web-root]/.eslintrc.json": "assets/scaffold/eslintrc.json", - "[web-root]/.gitattributes": "assets/scaffold/gitattributes", - "[web-root]/.ht.router.php": "assets/scaffold/ht.router.php", - "[web-root]/.htaccess": "assets/scaffold/htaccess", - "[web-root]/example.gitignore": "assets/scaffold/example.gitignore", - "[web-root]/index.php": "assets/scaffold/index.php", - "[web-root]/robots.txt": "assets/scaffold/robots.txt", - "[web-root]/update.php": "assets/scaffold/update.php", - "[web-root]/web.config": "assets/scaffold/web.config", - "[web-root]/sites/default/default.services.yml": "assets/scaffold/default.services.yml", - "[web-root]/sites/default/default.settings.php": "assets/scaffold/default.settings.php", - "[web-root]/sites/example.settings.local.php": "assets/scaffold/example.settings.local.php", - "[web-root]/sites/development.services.yml": "assets/scaffold/development.services.yml", - "[web-root]/sites/example.sites.php": "assets/scaffold/example.sites.php", - "[web-root]/modules/README.txt": "assets/scaffold/modules.README.txt", - "[web-root]/profiles/README.txt": "assets/scaffold/profiles.README.txt", - "[web-root]/sites/README.txt": "assets/scaffold/sites.README.txt", - "[web-root]/themes/README.txt": "assets/scaffold/themes.README.txt", - "[web-root]/INSTALL.txt": "assets/scaffold/INSTALL.txt", - "[web-root]/README.txt": "assets/scaffold/README.txt" - } - } - }, - "autoload": { - "psr-4": { - "Drupal\\Core\\": "lib/Drupal/Core", - "Drupal\\Component\\": "core/lib/Drupal/Component", - "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver" - }, - "classmap": [ - "lib/Drupal.php", - "lib/Drupal/Core/Database/Database.php", - "lib/Drupal/Core/DrupalKernel.php", - "lib/Drupal/Core/DrupalKernelInterface.php", - "lib/Drupal/Core/Site/Settings.php" - ] - }, - "scripts": { - "pre-autoload-dump": [ - "Drupal\\Core\\Composer\\Composer::preAutoloadDump" - ], - "post-autoload-dump": [ - "Drupal\\Core\\Composer\\Composer::ensureHtaccess" - ] - }, - "license": [ - "GPL-2.0-or-later" - ], - "description": "Drupal is an open source content management platform powering millions of websites and applications.", - "transport-options": { - "symlink": true - } - }, { "name": "drupal/core-composer-scaffold", "version": "8.8.x-dev", "dist": { "type": "path", - "url": "core/lib/Drupal/Component/Scaffold", - "reference": "d3a39036c1a4d39ec64ebc22bda15031b950219d" + "url": "composer/Scaffold", + "reference": "62fb3142e1ef26daa1409e5469ad1ce14ec28316" }, "require": { "composer-plugin-api": "^1.0.0", @@ -945,14 +691,14 @@ }, "type": "composer-plugin", "extra": { - "class": "Drupal\\Component\\Scaffold\\Plugin", + "class": "Drupal\\Composer\\Scaffold\\Plugin", "branch-alias": { "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Drupal\\Component\\Scaffold\\": "" + "Drupal\\Composer\\Scaffold\\": "" } }, "license": [ @@ -962,9 +708,39 @@ "homepage": "https://www.drupal.org/project/drupal", "keywords": [ "drupal" - ], - "transport-options": { - "symlink": true + ] + }, + { + "name": "drupal/core-scaffold-assets", + "version": "8.8.x-dev", + "dist": { + "type": "path", + "url": "composer/Assets", + "reference": "c015a05c8d9dac438ce211cb7ae2f706ed88e596" + }, + "type": "library", + "extra": { + "composer-scaffold": { + "file-mapping": { + "[web-root]/INSTALL.txt": "scaffold/INSTALL.txt", + "[web-root]/README.txt": "scaffold/README.txt", + "[web-root]/csslintrc": "scaffold/csslintrc", + "[web-root]/editorconfig": "scaffold/editorconfig", + "[web-root]/eslintignore": "scaffold/eslintignore", + "[web-root]/eslintrc.json": "scaffold/eslintrc.json", + "[web-root]/example.gitignore": "scaffold/example.gitignore", + "[web-root]/gitattributes": "scaffold/gitattributes", + "[web-root]/ht.router.php": "scaffold/ht.router.php", + "[web-root]/.htaccess": "scaffold/htaccess", + "[web-root]/index.php": "scaffold/index.php", + "[web-root]/modules/README.txt": "scaffold/modules.README.txt", + "[web-root]/profiles/README.txt": "scaffold/profiles.README.txt", + "[web-root]/themes/README.txt": "scaffold/themes.README.txt", + "[web-root]/robots.txt": "scaffold/robots.txt", + "[web-root]/update.php": "scaffold/update.php", + "[web-root]/web.config": "scaffold/web.config" + } + } } }, { @@ -3136,6 +2912,55 @@ ], "time": "2019-05-14T13:14:31+00:00" }, + { + "name": "wikimedia/composer-merge-plugin", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/composer-merge-plugin.git", + "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/81c6ac72a24a67383419c7eb9aa2b3437f2ab100", + "reference": "81c6ac72a24a67383419c7eb9aa2b3437f2ab100", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": ">=5.3.2" + }, + "require-dev": { + "composer/composer": "~1.0.0", + "jakub-onderka/php-parallel-lint": "~0.8", + "phpunit/phpunit": "~4.8|~5.0", + "squizlabs/php_codesniffer": "~2.1.0" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + }, + "class": "Wikimedia\\Composer\\MergePlugin" + }, + "autoload": { + "psr-4": { + "Wikimedia\\Composer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bryan Davis", + "email": "bd808@wikimedia.org" + } + ], + "description": "Composer plugin to merge multiple composer.json files", + "time": "2017-04-25T02:31:25+00:00" + }, { "name": "zendframework/zend-diactoros", "version": "1.4.1", @@ -3346,27 +3171,26 @@ "source": { "type": "git", "url": "https://github.com/minkphp/Mink.git", - "reference": "a534fe7dac9525e8e10ca68e737c3d7e5058ec83" + "reference": "9ea1cebe3dc529ba3861d87c818f045362c40484" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/minkphp/Mink/zipball/a534fe7dac9525e8e10ca68e737c3d7e5058ec83", - "reference": "a534fe7dac9525e8e10ca68e737c3d7e5058ec83", + "url": "https://api.github.com/repos/minkphp/Mink/zipball/9ea1cebe3dc529ba3861d87c818f045362c40484", + "reference": "9ea1cebe3dc529ba3861d87c818f045362c40484", "shasum": "" }, "require": { "php": ">=5.3.1", - "symfony/css-selector": "^2.7|^3.0|^4.0" + "symfony/css-selector": "~2.1|~3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.2" + "symfony/phpunit-bridge": "~2.7|~3.0" }, "suggest": { "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", - "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)", - "dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)" + "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)" }, "type": "library", "extra": { @@ -3397,7 +3221,7 @@ "testing", "web" ], - "time": "2019-07-15T12:45:29+00:00" + "time": "2017-02-06T09:59:54+00:00" }, { "name": "behat/mink-browserkit-driver", @@ -3516,12 +3340,12 @@ "source": { "type": "git", "url": "https://github.com/minkphp/MinkSelenium2Driver.git", - "reference": "8684ee4e634db7abda9039ea53545f86fc1e105a" + "reference": "93474c65a2a7bf959200ab5f7a14cc450645c185" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/8684ee4e634db7abda9039ea53545f86fc1e105a", - "reference": "8684ee4e634db7abda9039ea53545f86fc1e105a", + "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/93474c65a2a7bf959200ab5f7a14cc450645c185", + "reference": "93474c65a2a7bf959200ab5f7a14cc450645c185", "shasum": "" }, "require": { @@ -3569,7 +3393,7 @@ "testing", "webdriver" ], - "time": "2018-10-10T12:39:06+00:00" + "time": "2018-01-07T19:17:08+00:00" }, { "name": "composer/ca-bundle", @@ -4240,7 +4064,7 @@ "time": "2019-01-14T23:55:14+00:00" }, { - "name": "mikey179/vfsstream", + "name": "mikey179/vfsStream", "version": "v1.6.5", "source": { "type": "git", @@ -6015,12 +5839,28 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "drupal/core": 20, + "drupal/core-composer-scaffold": 20, + "drupal/core-scaffold-assets": 20, "behat/mink": 20, "behat/mink-selenium2-driver": 20 }, "prefer-stable": true, "prefer-lowest": false, - "platform": [], + "platform": { + "ext-date": "*", + "ext-dom": "*", + "ext-filter": "*", + "ext-gd": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-pdo": "*", + "ext-session": "*", + "ext-simplexml": "*", + "ext-spl": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": ">=7.0.8" + }, "platform-dev": [] } diff --git a/composer/Assets/composer.json b/composer/Assets/composer.json new file mode 100644 index 0000000000..e206c4891b --- /dev/null +++ b/composer/Assets/composer.json @@ -0,0 +1,28 @@ +{ + "name": "drupal/core-scaffold-assets", + "type": "library", + "require": {}, + "extra": { + "composer-scaffold": { + "file-mapping": { + "[web-root]/INSTALL.txt": "scaffold/INSTALL.txt", + "[web-root]/README.txt": "scaffold/README.txt", + "[web-root]/csslintrc": "scaffold/csslintrc", + "[web-root]/editorconfig": "scaffold/editorconfig", + "[web-root]/eslintignore": "scaffold/eslintignore", + "[web-root]/eslintrc.json": "scaffold/eslintrc.json", + "[web-root]/example.gitignore": "scaffold/example.gitignore", + "[web-root]/gitattributes": "scaffold/gitattributes", + "[web-root]/ht.router.php": "scaffold/ht.router.php", + "[web-root]/.htaccess": "scaffold/htaccess", + "[web-root]/index.php": "scaffold/index.php", + "[web-root]/modules/README.txt": "scaffold/modules.README.txt", + "[web-root]/profiles/README.txt": "scaffold/profiles.README.txt", + "[web-root]/themes/README.txt": "scaffold/themes.README.txt", + "[web-root]/robots.txt": "scaffold/robots.txt", + "[web-root]/update.php": "scaffold/update.php", + "[web-root]/web.config": "scaffold/web.config" + } + } + } +} diff --git a/core/assets/scaffold/INSTALL.txt b/composer/Assets/scaffold/INSTALL.txt similarity index 100% rename from core/assets/scaffold/INSTALL.txt rename to composer/Assets/scaffold/INSTALL.txt diff --git a/core/assets/scaffold/README.txt b/composer/Assets/scaffold/README.txt similarity index 100% rename from core/assets/scaffold/README.txt rename to composer/Assets/scaffold/README.txt diff --git a/core/assets/scaffold/csslintrc b/composer/Assets/scaffold/csslintrc similarity index 100% rename from core/assets/scaffold/csslintrc rename to composer/Assets/scaffold/csslintrc diff --git a/core/assets/scaffold/default.services.yml b/composer/Assets/scaffold/default.services.yml similarity index 100% rename from core/assets/scaffold/default.services.yml rename to composer/Assets/scaffold/default.services.yml diff --git a/core/assets/scaffold/default.settings.php b/composer/Assets/scaffold/default.settings.php similarity index 100% rename from core/assets/scaffold/default.settings.php rename to composer/Assets/scaffold/default.settings.php diff --git a/core/assets/scaffold/development.services.yml b/composer/Assets/scaffold/development.services.yml similarity index 100% rename from core/assets/scaffold/development.services.yml rename to composer/Assets/scaffold/development.services.yml diff --git a/core/assets/scaffold/editorconfig b/composer/Assets/scaffold/editorconfig similarity index 100% rename from core/assets/scaffold/editorconfig rename to composer/Assets/scaffold/editorconfig diff --git a/core/assets/scaffold/eslintignore b/composer/Assets/scaffold/eslintignore similarity index 100% rename from core/assets/scaffold/eslintignore rename to composer/Assets/scaffold/eslintignore diff --git a/core/assets/scaffold/eslintrc.json b/composer/Assets/scaffold/eslintrc.json similarity index 100% rename from core/assets/scaffold/eslintrc.json rename to composer/Assets/scaffold/eslintrc.json diff --git a/core/assets/scaffold/example.gitignore b/composer/Assets/scaffold/example.gitignore similarity index 100% rename from core/assets/scaffold/example.gitignore rename to composer/Assets/scaffold/example.gitignore diff --git a/core/assets/scaffold/example.settings.local.php b/composer/Assets/scaffold/example.settings.local.php similarity index 100% rename from core/assets/scaffold/example.settings.local.php rename to composer/Assets/scaffold/example.settings.local.php diff --git a/core/assets/scaffold/example.sites.php b/composer/Assets/scaffold/example.sites.php similarity index 100% rename from core/assets/scaffold/example.sites.php rename to composer/Assets/scaffold/example.sites.php diff --git a/core/assets/scaffold/gitattributes b/composer/Assets/scaffold/gitattributes similarity index 100% rename from core/assets/scaffold/gitattributes rename to composer/Assets/scaffold/gitattributes diff --git a/core/assets/scaffold/ht.router.php b/composer/Assets/scaffold/ht.router.php similarity index 100% rename from core/assets/scaffold/ht.router.php rename to composer/Assets/scaffold/ht.router.php diff --git a/core/assets/scaffold/htaccess b/composer/Assets/scaffold/htaccess similarity index 100% rename from core/assets/scaffold/htaccess rename to composer/Assets/scaffold/htaccess diff --git a/core/assets/scaffold/index.php b/composer/Assets/scaffold/index.php similarity index 100% rename from core/assets/scaffold/index.php rename to composer/Assets/scaffold/index.php diff --git a/core/assets/scaffold/modules.README.txt b/composer/Assets/scaffold/modules.README.txt similarity index 100% rename from core/assets/scaffold/modules.README.txt rename to composer/Assets/scaffold/modules.README.txt diff --git a/core/assets/scaffold/profiles.README.txt b/composer/Assets/scaffold/profiles.README.txt similarity index 100% rename from core/assets/scaffold/profiles.README.txt rename to composer/Assets/scaffold/profiles.README.txt diff --git a/core/assets/scaffold/robots.txt b/composer/Assets/scaffold/robots.txt similarity index 100% rename from core/assets/scaffold/robots.txt rename to composer/Assets/scaffold/robots.txt diff --git a/core/assets/scaffold/sites.README.txt b/composer/Assets/scaffold/sites.README.txt similarity index 100% rename from core/assets/scaffold/sites.README.txt rename to composer/Assets/scaffold/sites.README.txt diff --git a/core/assets/scaffold/themes.README.txt b/composer/Assets/scaffold/themes.README.txt similarity index 100% rename from core/assets/scaffold/themes.README.txt rename to composer/Assets/scaffold/themes.README.txt diff --git a/core/assets/scaffold/update.php b/composer/Assets/scaffold/update.php similarity index 100% rename from core/assets/scaffold/update.php rename to composer/Assets/scaffold/update.php diff --git a/core/assets/scaffold/web.config b/composer/Assets/scaffold/web.config similarity index 100% rename from core/assets/scaffold/web.config rename to composer/Assets/scaffold/web.config diff --git a/core/lib/Drupal/Component/Scaffold/AllowedPackages.php b/composer/Scaffold/AllowedPackages.php similarity index 97% rename from core/lib/Drupal/Component/Scaffold/AllowedPackages.php rename to composer/Scaffold/AllowedPackages.php index 8d05607078..74b46f484d 100644 --- a/core/lib/Drupal/Component/Scaffold/AllowedPackages.php +++ b/composer/Scaffold/AllowedPackages.php @@ -1,6 +1,6 @@ scaffold operation objects. */ protected function getFileMappingsFromPackages(array $allowed_packages) { @@ -216,7 +216,7 @@ class Handler { * @param \Composer\Package\PackageInterface $package * The Composer package from which to get the file mappings. * - * @return \Drupal\Component\Scaffold\Operations\OperationInterface[] + * @return \Drupal\Composer\Scaffold\Operations\OperationInterface[] * An array of destination paths => scaffold operation objects. */ protected function getPackageFileMappings(PackageInterface $package) { diff --git a/core/lib/Drupal/Component/Scaffold/Interpolator.php b/composer/Scaffold/Interpolator.php similarity index 99% rename from core/lib/Drupal/Component/Scaffold/Interpolator.php rename to composer/Scaffold/Interpolator.php index de94427fd9..6452b769c6 100644 --- a/core/lib/Drupal/Component/Scaffold/Interpolator.php +++ b/composer/Scaffold/Interpolator.php @@ -1,6 +1,6 @@ firstOperation = $first_operation; diff --git a/core/lib/Drupal/Component/Scaffold/Operations/OperationData.php b/composer/Scaffold/Operations/OperationData.php similarity index 98% rename from core/lib/Drupal/Component/Scaffold/Operations/OperationData.php rename to composer/Scaffold/Operations/OperationData.php index c400faa61f..98bef33bd9 100644 --- a/core/lib/Drupal/Component/Scaffold/Operations/OperationData.php +++ b/composer/Scaffold/Operations/OperationData.php @@ -1,6 +1,6 @@ =7.0.8", - "drupal/core-annotation": "self.version", - "drupal/core-assertion": "self.version", - "drupal/core-bridge": "self.version", - "drupal/core-class-finder": "self.version", - "drupal/core-composer-scaffold": "self.version", - "drupal/core-datetime": "self.version", - "drupal/core-dependency-injection": "self.version", - "drupal/core-diff": "self.version", - "drupal/core-discovery": "self.version", - "drupal/core-event-dispatcher": "self.version", - "drupal/core-file-cache": "self.version", - "drupal/core-filesystem": "self.version", - "drupal/core-gettext": "self.version", - "drupal/core-graph": "self.version", - "drupal/core-http-foundation": "self.version", - "drupal/core-php-storage": "self.version", - "drupal/core-plugin": "self.version", - "drupal/core-proxy-builder": "self.version", - "drupal/core-render": "self.version", - "drupal/core-serialization": "self.version", - "drupal/core-transliteration": "self.version", - "drupal/core-utility": "self.version", - "drupal/core-uuid": "self.version", - "drupal/core-version": "self.version", "symfony/class-loader": "~3.4.0", "symfony/console": "~3.4.0", "symfony/dependency-injection": "~3.4.26", @@ -70,37 +46,28 @@ "zendframework/zend-diactoros": "^1.1", "composer/semver": "^1.0", "asm89/stack-cors": "^1.1", - "pear/archive_tar": "^1.4", - "paragonie/random_compat": "^1.0|^2.0", - "symfony/polyfill-mbstring": "~1.0" + "pear/archive_tar": "^1.4" }, "conflict": { "drush/drush": "<8.1.10" }, + "require-dev": { + "behat/mink": "1.7.x-dev", + "behat/mink-goutte-driver": "^1.2", + "behat/mink-selenium2-driver": "1.3.x-dev", + "composer/composer": "^1.8", + "drupal/coder": "^8.3.2", + "jcalderonzumba/gastonjs": "^1.0.2", + "jcalderonzumba/mink-phantomjs-driver": "^0.3.1", + "mikey179/vfsstream": "^1.2", + "phpunit/phpunit": "^6.5", + "phpspec/prophecy": "^1.7", + "symfony/css-selector": "^3.4.0", + "symfony/phpunit-bridge": "^3.4.3", + "symfony/debug": "^3.4.0", + "justinrainbow/json-schema": "^5.2" + }, "replace": { - "drupal/core-annotation": "self.version", - "drupal/core-assertion": "self.version", - "drupal/core-bridge": "self.version", - "drupal/core-class-finder": "self.version", - "drupal/core-datetime": "self.version", - "drupal/core-dependency-injection": "self.version", - "drupal/core-diff": "self.version", - "drupal/core-discovery": "self.version", - "drupal/core-event-dispatcher": "self.version", - "drupal/core-file-cache": "self.version", - "drupal/core-filesystem": "self.version", - "drupal/core-gettext": "self.version", - "drupal/core-graph": "self.version", - "drupal/core-http-foundation": "self.version", - "drupal/core-php-storage": "self.version", - "drupal/core-plugin": "self.version", - "drupal/core-proxy-builder": "self.version", - "drupal/core-render": "self.version", - "drupal/core-serialization": "self.version", - "drupal/core-transliteration": "self.version", - "drupal/core-utility": "self.version", - "drupal/core-uuid": "self.version", - "drupal/core-version": "self.version", "drupal/action": "self.version", "drupal/aggregator": "self.version", "drupal/automated_cron": "self.version", @@ -124,6 +91,29 @@ "drupal/content_moderation": "self.version", "drupal/content_translation": "self.version", "drupal/contextual": "self.version", + "drupal/core-annotation": "self.version", + "drupal/core-assertion": "self.version", + "drupal/core-bridge": "self.version", + "drupal/core-class-finder": "self.version", + "drupal/core-datetime": "self.version", + "drupal/core-dependency-injection": "self.version", + "drupal/core-diff": "self.version", + "drupal/core-discovery": "self.version", + "drupal/core-event-dispatcher": "self.version", + "drupal/core-file-cache": "self.version", + "drupal/core-filesystem": "self.version", + "drupal/core-gettext": "self.version", + "drupal/core-graph": "self.version", + "drupal/core-http-foundation": "self.version", + "drupal/core-php-storage": "self.version", + "drupal/core-plugin": "self.version", + "drupal/core-proxy-builder": "self.version", + "drupal/core-render": "self.version", + "drupal/core-serialization": "self.version", + "drupal/core-transliteration": "self.version", + "drupal/core-utility": "self.version", + "drupal/core-uuid": "self.version", + "drupal/core-version": "self.version", "drupal/datetime": "self.version", "drupal/datetime_range": "self.version", "drupal/dblog": "self.version", @@ -190,32 +180,35 @@ "drupal/workspaces": "self.version" }, "extra": { - "composer-scaffold": { - "file-mapping": { - "[web-root]/.csslintrc": "assets/scaffold/csslintrc", - "[web-root]/.editorconfig": "assets/scaffold/editorconfig", - "[web-root]/.eslintignore": "assets/scaffold/eslintignore", - "[web-root]/.eslintrc.json": "assets/scaffold/eslintrc.json", - "[web-root]/.gitattributes": "assets/scaffold/gitattributes", - "[web-root]/.ht.router.php": "assets/scaffold/ht.router.php", - "[web-root]/.htaccess": "assets/scaffold/htaccess", - "[web-root]/example.gitignore": "assets/scaffold/example.gitignore", - "[web-root]/index.php": "assets/scaffold/index.php", - "[web-root]/robots.txt": "assets/scaffold/robots.txt", - "[web-root]/update.php": "assets/scaffold/update.php", - "[web-root]/web.config": "assets/scaffold/web.config", - "[web-root]/sites/default/default.services.yml": "assets/scaffold/default.services.yml", - "[web-root]/sites/default/default.settings.php": "assets/scaffold/default.settings.php", - "[web-root]/sites/example.settings.local.php": "assets/scaffold/example.settings.local.php", - "[web-root]/sites/development.services.yml": "assets/scaffold/development.services.yml", - "[web-root]/sites/example.sites.php": "assets/scaffold/example.sites.php", - "[web-root]/modules/README.txt": "assets/scaffold/modules.README.txt", - "[web-root]/profiles/README.txt": "assets/scaffold/profiles.README.txt", - "[web-root]/sites/README.txt": "assets/scaffold/sites.README.txt", - "[web-root]/themes/README.txt": "assets/scaffold/themes.README.txt", - "[web-root]/INSTALL.txt": "assets/scaffold/INSTALL.txt", - "[web-root]/README.txt": "assets/scaffold/README.txt" - } + "merge-plugin": { + "require": [ + "core/lib/Drupal/Component/Annotation/composer.json", + "core/lib/Drupal/Component/Assertion/composer.json", + "core/lib/Drupal/Component/Bridge/composer.json", + "core/lib/Drupal/Component/ClassFinder/composer.json", + "core/lib/Drupal/Component/Datetime/composer.json", + "core/lib/Drupal/Component/DependencyInjection/composer.json", + "core/lib/Drupal/Component/Diff/composer.json", + "core/lib/Drupal/Component/Discovery/composer.json", + "core/lib/Drupal/Component/EventDispatcher/composer.json", + "core/lib/Drupal/Component/FileCache/composer.json", + "core/lib/Drupal/Component/FileSystem/composer.json", + "core/lib/Drupal/Component/Gettext/composer.json", + "core/lib/Drupal/Component/Graph/composer.json", + "core/lib/Drupal/Component/HttpFoundation/composer.json", + "core/lib/Drupal/Component/PhpStorage/composer.json", + "core/lib/Drupal/Component/Plugin/composer.json", + "core/lib/Drupal/Component/ProxyBuilder/composer.json", + "core/lib/Drupal/Component/Render/composer.json", + "core/lib/Drupal/Component/Serialization/composer.json", + "core/lib/Drupal/Component/Transliteration/composer.json", + "core/lib/Drupal/Component/Utility/composer.json", + "core/lib/Drupal/Component/Uuid/composer.json", + "core/lib/Drupal/Component/Version/composer.json" + ], + "recurse": false, + "replace": false, + "merge-extra": false } }, "minimum-stability": "dev", @@ -223,11 +216,13 @@ "autoload": { "psr-4": { "Drupal\\Core\\": "lib/Drupal/Core", - "Drupal\\Component\\": "core/lib/Drupal/Component", + "Drupal\\Component\\": "lib/Drupal/Component", "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver" }, "classmap": [ "lib/Drupal.php", + "lib/Drupal/Component/Utility/Timer.php", + "lib/Drupal/Component/Utility/Unicode.php", "lib/Drupal/Core/Database/Database.php", "lib/Drupal/Core/DrupalKernel.php", "lib/Drupal/Core/DrupalKernelInterface.php", diff --git a/core/tests/Drupal/Tests/Component/Scaffold/AssertUtilsTrait.php b/core/tests/Drupal/Tests/Composer/Scaffold/AssertUtilsTrait.php similarity index 94% rename from core/tests/Drupal/Tests/Component/Scaffold/AssertUtilsTrait.php rename to core/tests/Drupal/Tests/Composer/Scaffold/AssertUtilsTrait.php index 28041c69ff..aaffa3dc51 100644 --- a/core/tests/Drupal/Tests/Component/Scaffold/AssertUtilsTrait.php +++ b/core/tests/Drupal/Tests/Composer/Scaffold/AssertUtilsTrait.php @@ -1,6 +1,6 @@ mkTmpDir('location-replacements'); @@ -189,7 +189,7 @@ class Fixtures { * @param string $source * The name of the asset; path is "assets/$source". * - * @return \Drupal\Component\Scaffold\Operations\ReplaceOp + * @return \Drupal\Composer\Scaffold\Operations\ReplaceOp * A replace operation object. */ public function replaceOp($project_name, $source) { @@ -206,7 +206,7 @@ class Fixtures { * @param string $source * The name of the asset; path is "assets/$source". * - * @return \Drupal\Component\Scaffold\Operations\AppendOp + * @return \Drupal\Composer\Scaffold\Operations\AppendOp * An append operation object. */ public function appendOp($project_name, $source) { @@ -223,17 +223,17 @@ class Fixtures { * Destination path; should be in the form '[web-root]/robots.txt', where * '[web-root]' is always literally '[web-root]', with any arbitrarily * desired filename following. - * @param \Drupal\Component\Scaffold\Interpolator $interpolator + * @param \Drupal\Composer\Scaffold\Interpolator $interpolator * Location replacements. Obtain via Fixtures::getLocationReplacements() * when creating multiple scaffold destinations. * @param string $package_name * (optional) The name of the fixture package that this path came from. * Taken from interpolator if not provided. * - * @return \Drupal\Component\Scaffold\ScaffoldFilePath + * @return \Drupal\Composer\Scaffold\ScaffoldFilePath * A destination scaffold file backed by temporary storage. * - * @see \Drupal\Component\Scaffold\ScaffoldFilePath::destinationPath() + * @see \Drupal\Composer\Scaffold\ScaffoldFilePath::destinationPath() */ public function destinationPath($destination, Interpolator $interpolator = NULL, $package_name = NULL) { $interpolator = $interpolator ?: $this->getLocationReplacements(); diff --git a/core/tests/Drupal/Tests/Component/Scaffold/Functional/ComposerHookTest.php b/core/tests/Drupal/Tests/Composer/Scaffold/Functional/ComposerHookTest.php similarity index 95% rename from core/tests/Drupal/Tests/Component/Scaffold/Functional/ComposerHookTest.php rename to core/tests/Drupal/Tests/Composer/Scaffold/Functional/ComposerHookTest.php index 5d99f1e97a..e015e968e1 100644 --- a/core/tests/Drupal/Tests/Component/Scaffold/Functional/ComposerHookTest.php +++ b/core/tests/Drupal/Tests/Composer/Scaffold/Functional/ComposerHookTest.php @@ -1,11 +1,11 @@ assertFileExists($sut . '/docroot/index.php'); $expected = << 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'port' => '3306', + * 'driver' => 'mysql', + * 'prefix' => '', + * 'collation' => 'utf8mb4_general_ci', + * ]; + * @endcode + */ +$databases = []; + +/** + * Customizing database settings. + * + * Many of the values of the $databases array can be customized for your + * particular database system. Refer to the sample in the section above as a + * starting point. + * + * The "driver" property indicates what Drupal database driver the + * connection should use. This is usually the same as the name of the + * database type, such as mysql or sqlite, but not always. The other + * properties will vary depending on the driver. For SQLite, you must + * specify a database file name in a directory that is writable by the + * webserver. For most other drivers, you must specify a + * username, password, host, and database name. + * + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. + * + * For each database, you may optionally specify multiple "target" databases. + * A target database allows Drupal to try to send certain queries to a + * different database if it can but fall back to the default connection if not. + * That is useful for primary/replica replication, as Drupal may try to connect + * to a replica server when appropriate and if one is not available will simply + * fall back to the single primary server (The terms primary/replica are + * traditionally referred to as master/slave in database server documentation). + * + * The general format for the $databases array is as follows: + * @code + * $databases['default']['default'] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['default']['replica'][] = $info_array; + * $databases['extra']['default'] = $info_array; + * @endcode + * + * In the above example, $info_array is an array of settings described above. + * The first line sets a "default" database that has one primary database + * (the second level default). The second and third lines create an array + * of potential replica databases. Drupal will select one at random for a given + * request as needed. The fourth line creates a new database with a name of + * "extra". + * + * You can optionally set prefixes for some or all database table names + * by using the 'prefix' setting. If a prefix is specified, the table + * name will be prepended with its value. Be sure to use valid database + * characters only, usually alphanumeric and underscore. If no prefixes + * are desired, leave it as an empty string ''. + * + * To have all database names prefixed, set 'prefix' as a string: + * @code + * 'prefix' => 'main_', + * @endcode + * + * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in + * Drupal 9.0. After that, only a single prefix for all tables will be + * supported. + * + * To provide prefixes for specific tables, set 'prefix' as an array. + * The array's keys are the table names and the values are the prefixes. + * The 'default' element is mandatory and holds the prefix for any tables + * not specified elsewhere in the array. Example: + * @code + * 'prefix' => [ + * 'default' => 'main_', + * 'users' => 'shared_', + * 'sessions' => 'shared_', + * 'role' => 'shared_', + * 'authmap' => 'shared_', + * ], + * @endcode + * You can also use a reference to a schema/database as a prefix. This may be + * useful if your Drupal installation exists in a schema that is not the default + * or you want to access several databases from the same code base at the same + * time. + * Example: + * @code + * 'prefix' => [ + * 'default' => 'main.', + * 'users' => 'shared.', + * 'sessions' => 'shared.', + * 'role' => 'shared.', + * 'authmap' => 'shared.', + * ]; + * @endcode + * NOTE: MySQL and SQLite's definition of a schema is a database. + * + * Advanced users can add or override initial commands to execute when + * connecting to the database server, as well as PDO connection settings. For + * example, to enable MySQL SELECT queries to exceed the max_join_size system + * variable, and to reduce the database connection timeout to 5 seconds: + * @code + * $databases['default']['default'] = [ + * 'init_commands' => [ + * 'big_selects' => 'SET SQL_BIG_SELECTS=1', + * ], + * 'pdo' => [ + * PDO::ATTR_TIMEOUT => 5, + * ], + * ]; + * @endcode + * + * WARNING: The above defaults are designed for database portability. Changing + * them may cause unexpected behavior, including potential data loss. See + * https://www.drupal.org/developing/api/database/configuration for more + * information on these defaults and the potential issues. + * + * More details can be found in the constructor methods for each driver: + * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() + * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() + * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * + * Sample Database configuration format for PostgreSQL (pgsql): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'pgsql', + * 'database' => 'databasename', + * 'username' => 'sqlusername', + * 'password' => 'sqlpassword', + * 'host' => 'localhost', + * 'prefix' => '', + * ]; + * @endcode + * + * Sample Database configuration format for SQLite (sqlite): + * @code + * $databases['default']['default'] = [ + * 'driver' => 'sqlite', + * 'database' => '/path/to/databasefilename', + * ]; + * @endcode + */ + +/** + * Location of the site configuration files. + * + * The $settings['config_sync_directory'] specifies the location of file system + * directory used for syncing configuration data. On install, the directory is + * created. This is used for configuration imports. + * + * The default location for this directory is inside a randomly-named + * directory in the public files path. The setting below allows you to set + * its location. + */ +# $settings['config_sync_directory'] = '/directory/outside/webroot'; + +/** + * Settings: + * + * $settings contains environment-specific configuration, such as the files + * directory and reverse proxy address, and temporary configuration, such as + * security overrides. + * + * @see \Drupal\Core\Site\Settings::get() + */ + +/** + * Salt for one-time login links, cancel links, form tokens, etc. + * + * This variable will be set to a random value by the installer. All one-time + * login links will be invalidated if the value is changed. Note that if your + * site is deployed on a cluster of web servers, you must ensure that this + * variable has the same value on each server. + * + * For enhanced security, you may set this variable to the contents of a file + * outside your document root; you should also ensure that this file is not + * stored with backups of your database. + * + * Example: + * @code + * $settings['hash_salt'] = file_get_contents('/home/example/salt.txt'); + * @endcode + */ +$settings['hash_salt'] = ''; + +/** + * Deployment identifier. + * + * Drupal's dependency injection container will be automatically invalidated and + * rebuilt when the Drupal core version changes. When updating contributed or + * custom code that changes the container, changing this identifier will also + * allow the container to be invalidated as soon as code is deployed. + */ +# $settings['deployment_identifier'] = \Drupal::VERSION; + +/** + * Access control for update.php script. + * + * If you are updating your Drupal installation using the update.php script but + * are not logged in using either an account with the "Administer software + * updates" permission or the site maintenance account (the account that was + * created during installation), you will need to modify the access check + * statement below. Change the FALSE to a TRUE to disable the access check. + * After finishing the upgrade, be sure to open this file again and change the + * TRUE back to a FALSE! + */ +$settings['update_free_access'] = FALSE; + +/** + * External access proxy settings: + * + * If your site must access the Internet via a web proxy then you can enter the + * proxy settings here. Set the full URL of the proxy, including the port, in + * variables: + * - $settings['http_client_config']['proxy']['http']: The proxy URL for HTTP + * requests. + * - $settings['http_client_config']['proxy']['https']: The proxy URL for HTTPS + * requests. + * You can pass in the user name and password for basic authentication in the + * URLs in these settings. + * + * You can also define an array of host names that can be accessed directly, + * bypassing the proxy, in $settings['http_client_config']['proxy']['no']. + */ +# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080'; +# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost']; + +/** + * Reverse Proxy Configuration: + * + * Reverse proxy servers are often used to enhance the performance + * of heavily visited sites and may also provide other site caching, + * security, or encryption benefits. In an environment where Drupal + * is behind a reverse proxy, the real IP address of the client should + * be determined such that the correct client IP address is available + * to Drupal's logging, statistics, and access management systems. In + * the most simple scenario, the proxy server will add an + * X-Forwarded-For header to the request that contains the client IP + * address. However, HTTP headers are vulnerable to spoofing, where a + * malicious client could bypass restrictions by setting the + * X-Forwarded-For header directly. Therefore, Drupal's proxy + * configuration requires the IP addresses of all remote proxies to be + * specified in $settings['reverse_proxy_addresses'] to work correctly. + * + * Enable this setting to get Drupal to determine the client IP from the + * X-Forwarded-For header. If you are unsure about this setting, do not have a + * reverse proxy, or Drupal operates in a shared hosting environment, this + * setting should remain commented out. + * + * In order for this setting to be used you must specify every possible + * reverse proxy IP address in $settings['reverse_proxy_addresses']. + * If a complete list of reverse proxies is not available in your + * environment (for example, if you use a CDN) you may set the + * $_SERVER['REMOTE_ADDR'] variable directly in settings.php. + * Be aware, however, that it is likely that this would allow IP + * address spoofing unless more advanced precautions are taken. + */ +# $settings['reverse_proxy'] = TRUE; + +/** + * Specify every reverse proxy IP address in your environment. + * This setting is required if $settings['reverse_proxy'] is TRUE. + */ +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; + +/** + * Reverse proxy trusted headers. + * + * Sets which headers to trust from your reverse proxy. + * + * Common values are: + * - \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * - \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * + * Note the default value of + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @endcode + * is not secure by default. The value should be set to only the specific + * headers the reverse proxy uses. For example: + * @code + * \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @endcode + * This would trust the following headers: + * - X_FORWARDED_FOR + * - X_FORWARDED_HOST + * - X_FORWARDED_PROTO + * - X_FORWARDED_PORT + * + * @see \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL + * @see \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED + * @see \Symfony\Component\HttpFoundation\Request::setTrustedProxies + */ +# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED; + + +/** + * Page caching: + * + * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page + * views. This tells a HTTP proxy that it may return a page from its local + * cache without contacting the web server, if the user sends the same Cookie + * header as the user who originally requested the cached page. Without "Vary: + * Cookie", authenticated users would also be served the anonymous page from + * the cache. If the site has mostly anonymous users except a few known + * editors/administrators, the Vary header can be omitted. This allows for + * better caching in HTTP proxies (including reverse proxies), i.e. even if + * clients send different cookies, they still get content served from the cache. + * However, authenticated users should access the site directly (i.e. not use an + * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid + * getting cached pages from the proxy. + */ +# $settings['omit_vary_cookie'] = TRUE; + + +/** + * Cache TTL for client error (4xx) responses. + * + * Items cached per-URL tend to result in a large number of cache items, and + * this can be problematic on 404 pages which by their nature are unbounded. A + * fixed TTL can be set for these items, defaulting to one hour, so that cache + * backends which do not support LRU can purge older entries. To disable caching + * of client error responses set the value to 0. Currently applies only to + * page_cache module. + */ +# $settings['cache_ttl_4xx'] = 3600; + +/** + * Expiration of cached forms. + * + * Drupal's Form API stores details of forms in a cache and these entries are + * kept for at least 6 hours by default. Expired entries are cleared by cron. + * + * @see \Drupal\Core\Form\FormCache::setCache() + */ +# $settings['form_cache_expiration'] = 21600; + +/** + * Class Loader. + * + * If the APC extension is detected, the Symfony APC class loader is used for + * performance reasons. Detection can be prevented by setting + * class_loader_auto_detect to false, as in the example below. + */ +# $settings['class_loader_auto_detect'] = FALSE; + +/* + * If the APC extension is not detected, either because APC is missing or + * because auto-detection has been disabled, auto-loading falls back to + * Composer's ClassLoader, which is good for development as it does not break + * when code is moved in the file system. You can also decorate the base class + * loader with another cached solution than the Symfony APC class loader, as + * all production sites should have a cached class loader of some sort enabled. + * + * To do so, you may decorate and replace the local $class_loader variable. For + * example, to use Symfony's APC class loader without automatic detection, + * uncomment the code below. + */ +/* +if ($settings['hash_salt']) { + $prefix = 'drupal.' . hash('sha256', 'drupal.' . $settings['hash_salt']); + $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $class_loader); + unset($prefix); + $class_loader->unregister(); + $apc_loader->register(); + $class_loader = $apc_loader; +} +*/ + +/** + * Authorized file system operations: + * + * The Update Manager module included with Drupal provides a mechanism for + * site administrators to securely install missing updates for the site + * directly through the web user interface. On securely-configured servers, + * the Update manager will require the administrator to provide SSH or FTP + * credentials before allowing the installation to proceed; this allows the + * site to update the new files as the user who owns all the Drupal files, + * instead of as the user the webserver is running as. On servers where the + * webserver user is itself the owner of the Drupal files, the administrator + * will not be prompted for SSH or FTP credentials (note that these server + * setups are common on shared hosting, but are inherently insecure). + * + * Some sites might wish to disable the above functionality, and only update + * the code directly via SSH or FTP themselves. This setting completely + * disables all functionality related to these authorized file operations. + * + * @see https://www.drupal.org/node/244924 + * + * Remove the leading hash signs to disable. + */ +# $settings['allow_authorize_operations'] = FALSE; + +/** + * Default mode for directories and files written by Drupal. + * + * Value should be in PHP Octal Notation, with leading zero. + */ +# $settings['file_chmod_directory'] = 0775; +# $settings['file_chmod_file'] = 0664; + +/** + * Public file base URL: + * + * An alternative base URL to be used for serving public files. This must + * include any leading directory path. + * + * A different value from the domain used by Drupal to be used for accessing + * public files. This can be used for a simple CDN integration, or to improve + * security by serving user-uploaded files from a different domain or subdomain + * pointing to the same server. Do not include a trailing slash. + */ +# $settings['file_public_base_url'] = 'http://downloads.example.com/files'; + +/** + * Public file path: + * + * A local file system path where public files will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_public_path'] = 'sites/default/files'; + +/** + * Private file path: + * + * A local file system path where private files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * Note: Caches need to be cleared when this value is changed to make the + * private:// stream wrapper available to the system. + * + * See https://www.drupal.org/documentation/modules/file for more information + * about securing private files. + */ +# $settings['file_private_path'] = ''; + +/** + * Temporary file path: + * + * A local file system path where temporary files will be stored. This directory + * must be absolute, outside of the Drupal installation directory and not + * accessible over the web. + * + * If this is not set, the default for the operating system will be used. + * + * @see \Drupal\Component\FileSystem\FileSystem::getOsTemporaryDirectory() + */ +# $settings['file_temp_path'] = '/tmp'; + +/** + * Session write interval: + * + * Set the minimum interval between each session write to database. + * For performance reasons it defaults to 180. + */ +# $settings['session_write_interval'] = 180; + +/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale + * module, add an entry to this list. This functionality allows you to change + * a small number of your site's default English language interface strings. + * + * Remove the leading hash signs to enable. + * + * The "en" part of the variable name, is dynamic and can be any langcode of + * any added language. (eg locale_custom_strings_de for german). + */ +# $settings['locale_custom_strings_en'][''] = [ +# 'forum' => 'Discussion board', +# '@count min' => '@count minutes', +# ]; + +/** + * A custom theme for the offline page: + * + * This applies when the site is explicitly set to maintenance mode through the + * administration page or when the database is inactive due to an error. + * The template file should also be copied into the theme. It is located inside + * 'core/modules/system/templates/maintenance-page.html.twig'. + * + * Note: This setting does not apply to installation and update pages. + */ +# $settings['maintenance_theme'] = 'bartik'; + +/** + * PHP settings: + * + * To see what PHP settings are possible, including whether they can be set at + * runtime (by using ini_set()), read the PHP documentation: + * http://php.net/manual/ini.list.php + * See \Drupal\Core\DrupalKernel::bootEnvironment() for required runtime + * settings and the .htaccess file for non-runtime settings. + * Settings defined there should not be duplicated here so as to avoid conflict + * issues. + */ + +/** + * If you encounter a situation where users post a large amount of text, and + * the result is stripped out upon viewing but can still be edited, Drupal's + * output filter may not have sufficient memory to process it. If you + * experience this issue, you may wish to uncomment the following two lines + * and increase the limits of these variables. For more information, see + * http://php.net/manual/pcre.configuration.php. + */ +# ini_set('pcre.backtrack_limit', 200000); +# ini_set('pcre.recursion_limit', 200000); + +/** + * Configuration overrides. + * + * To globally override specific configuration values for this site, + * set them here. You usually don't need to use this feature. This is + * useful in a configuration file for a vhost or directory, rather than + * the default settings.php. + * + * Note that any values you provide in these variable overrides will not be + * viewable from the Drupal administration interface. The administration + * interface displays the values stored in configuration so that you can stage + * changes to other environments that don't have the overrides. + * + * There are particular configuration values that are risky to override. For + * example, overriding the list of installed modules in 'core.extension' is not + * supported as module install or uninstall has not occurred. Other examples + * include field storage configuration, because it has effects on database + * structure, and 'core.menu.static_menu_link_overrides' since this is cached in + * a way that is not config override aware. Also, note that changing + * configuration values in settings.php will not fire any of the configuration + * change events. + */ +# $config['system.site']['name'] = 'My Drupal site'; +# $config['system.theme']['default'] = 'stark'; +# $config['user.settings']['anonymous'] = 'Visitor'; + +/** + * Fast 404 pages: + * + * Drupal can generate fully themed 404 pages. However, some of these responses + * are for images or other resource files that are not displayed to the user. + * This can waste bandwidth, and also generate server load. + * + * The options below return a simple, fast 404 page for URLs matching a + * specific pattern: + * - $config['system.performance']['fast_404']['exclude_paths']: A regular + * expression to match paths to exclude, such as images generated by image + * styles, or dynamically-resized images. The default pattern provided below + * also excludes the private file system. If you need to add more paths, you + * can add '|path' to the expression. + * - $config['system.performance']['fast_404']['paths']: A regular expression to + * match paths that should return a simple 404 page, rather than the fully + * themed 404 page. If you don't have any aliases ending in htm or html you + * can add '|s?html?' to the expression. + * - $config['system.performance']['fast_404']['html']: The html to return for + * simple 404 pages. + * + * Remove the leading hash signs if you would like to alter this functionality. + */ +# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; +# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; +# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

The requested URL "@path" was not found on this server.

'; + +/** + * Load services definition file. + */ +$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml'; + +/** + * Override the default service container class. + * + * This is useful for example to trace the service container for performance + * tracking purposes, for testing a service container with an error condition or + * to test a service container that throws an exception. + */ +# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container'; + +/** + * Override the default yaml parser class. + * + * Provide a fully qualified class name here if you would like to provide an + * alternate implementation YAML parser. The class must implement the + * \Drupal\Component\Serialization\SerializationInterface interface. + */ +# $settings['yaml_parser_class'] = NULL; + +/** + * Trusted host configuration. + * + * Drupal core can use the Symfony trusted host mechanism to prevent HTTP Host + * header spoofing. + * + * To enable the trusted host mechanism, you enable your allowable hosts + * in $settings['trusted_host_patterns']. This should be an array of regular + * expression patterns, without delimiters, representing the hosts you would + * like to allow. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^www\.example\.com$', + * ]; + * @endcode + * will allow the site to only run from www.example.com. + * + * If you are running multisite, or if you are running your site from + * different domain names (eg, you don't redirect http://www.example.com to + * http://example.com), you should specify all of the host patterns that are + * allowed by your site. + * + * For example: + * @code + * $settings['trusted_host_patterns'] = [ + * '^example\.com$', + * '^.+\.example\.com$', + * '^example\.org$', + * '^.+\.example\.org$', + * ]; + * @endcode + * will allow the site to run off of all variants of example.com and + * example.org, with all subdomains included. + */ + +/** + * The default list of directories that will be ignored by Drupal's file API. + * + * By default ignore node_modules and bower_components folders to avoid issues + * with common frontend tools and recursive scanning of directories looking for + * extensions. + * + * @see \Drupal\Core\File\FileSystemInterface::scanDirectory() + * @see \Drupal\Core\Extension\ExtensionDiscovery::scanDirectory() + */ +$settings['file_scan_ignore_directories'] = [ + 'node_modules', + 'bower_components', +]; + +/** + * The default number of entities to update in a batch process. + * + * This is used by update and post-update functions that need to go through and + * change all the entities on a site, so it is useful to increase this number + * if your hosting configuration (i.e. RAM allocation, CPU speed) allows for a + * larger number of entities to be processed in a single batch run. + */ +$settings['entity_update_batch_size'] = 50; + +/** + * Entity update backup. + * + * This is used to inform the entity storage handler that the backup tables as + * well as the original entity type and field storage definitions should be + * retained after a successful entity update process. + */ +$settings['entity_update_backup'] = TRUE; + +/** + * Load local development override configuration, if available. + * + * Use settings.local.php to override variables on secondary (staging, + * development, etc) installations of this site. Typically used to disable + * caching, JavaScript/CSS compression, re-routing of outgoing emails, and + * other things that should not happen on development and testing sites. + * + * Keep this code block at the end of this file to take full effect. + */ +# +# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) { +# include $app_root . '/' . $site_path . '/settings.local.php'; +# } diff --git a/sites/development.services.yml b/sites/development.services.yml new file mode 100644 index 0000000000..d2857c66f8 --- /dev/null +++ b/sites/development.services.yml @@ -0,0 +1,9 @@ +# Local development services. +# +# To activate this feature, follow the instructions at the top of the +# 'example.settings.local.php' file, which sits next to this file. +parameters: + http.response.debug_cacheability_headers: true +services: + cache.backend.null: + class: Drupal\Core\Cache\NullBackendFactory diff --git a/sites/example.settings.local.php b/sites/example.settings.local.php new file mode 100644 index 0000000000..4a40a1318b --- /dev/null +++ b/sites/example.settings.local.php @@ -0,0 +1,131 @@ +..' => 'directory'. As an + * example, to map https://www.drupal.org:8080/mysite/test to the configuration + * directory sites/example.com, the array should be defined as: + * @code + * $sites = [ + * '8080.www.drupal.org.mysite.test' => 'example.com', + * ]; + * @endcode + * The URL, https://www.drupal.org:8080/mysite/test/, could be a symbolic link + * or an Apache Alias directive that points to the Drupal root containing + * index.php. An alias could also be created for a subdomain. See the + * @link https://www.drupal.org/documentation/install online Drupal installation guide @endlink + * for more information on setting up domains, subdomains, and subdirectories. + * + * The following examples look for a site configuration in sites/example.com: + * @code + * URL: http://dev.drupal.org + * $sites['dev.drupal.org'] = 'example.com'; + * + * URL: http://localhost/example + * $sites['localhost.example'] = 'example.com'; + * + * URL: http://localhost:8080/example + * $sites['8080.localhost.example'] = 'example.com'; + * + * URL: https://www.drupal.org:8080/mysite/test/ + * $sites['8080.www.drupal.org.mysite.test'] = 'example.com'; + * @endcode + * + * @see default.settings.php + * @see \Drupal\Core\DrupalKernel::getSitePath() + * @see https://www.drupal.org/documentation/install/multi-site + */