Verified Commit 1c7a0b50 authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #3462871 by catch, smustgrave: Deprecate LibraryDiscovery and use...

Issue #3462871 by catch, smustgrave: Deprecate LibraryDiscovery and use LibraryDiscoveryCollector instead
parent f5012758
Loading
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -1680,14 +1680,15 @@ services:
    class: Drupal\Core\Asset\AssetDumper
    arguments: ['@file_system']
  library.discovery:
    class: Drupal\Core\Asset\LibraryDiscovery
    arguments: ['@library.discovery.collector']
  Drupal\Core\Asset\LibraryDiscoveryInterface: '@library.discovery'
  library.discovery.collector:
    class: Drupal\Core\Asset\LibraryDiscoveryCollector
    arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager']
    tags:
      - { name: needs_destruction }
  Drupal\Core\Asset\LibraryDiscoveryInterface: '@library.discovery'
  library.discovery.collector:
    arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager']
    class: Drupal\Core\Asset\LibraryDiscoveryCollector
    deprecated: The "%service_id%" service is deprecated in drupal:11.1.0 and is removed from drupal:12.0.0. Use LibraryDiscovery instead. See https://www.drupal.org/node/3462970
  library.discovery.parser:
    class: Drupal\Core\Asset\LibraryDiscoveryParser
    arguments: ['%app.root%', '@module_handler', '@theme.manager', '@stream_wrapper_manager', '@library.libraries_directory_file_finder', '@extension.path.resolver', '@plugin.manager.sdc']
+7 −21
Original line number Diff line number Diff line
@@ -6,6 +6,10 @@

/**
 * Discovers available asset libraries in Drupal.
 *
 * @deprecated in drupal:11.1.0 and is removed from drupal:12.0.0. Use
 * \Drupal\Core\Asset\LibraryDiscoveryCollector instead.
 * @see https://www.drupal.org/node/3462970
 */
class LibraryDiscovery implements LibraryDiscoveryInterface {

@@ -16,16 +20,6 @@ class LibraryDiscovery implements LibraryDiscoveryInterface {
   */
  protected $collector;

  /**
   * The final library definitions, statically cached.
   *
   * Hooks hook_library_info_alter() and hook_js_settings_alter() allow modules
   * and themes to dynamically alter a library definition (once per request).
   *
   * @var array
   */
  protected $libraryDefinitions = [];

  /**
   * Constructs a new LibraryDiscovery instance.
   *
@@ -33,6 +27,7 @@ class LibraryDiscovery implements LibraryDiscoveryInterface {
   *   The library discovery cache collector.
   */
  public function __construct(CacheCollectorInterface $library_discovery_collector) {
    trigger_error(__CLASS__ . 'is deprecated in drupal:11.1.0 and is removed from drupal:12.0.0. Use LibraryDiscoveryCollector instead. See https://www.drupal.org/node/3462970', E_USER_DEPRECATED);
    $this->collector = $library_discovery_collector;
  }

@@ -40,22 +35,14 @@ public function __construct(CacheCollectorInterface $library_discovery_collector
   * {@inheritdoc}
   */
  public function getLibrariesByExtension($extension) {
    if (!isset($this->libraryDefinitions[$extension])) {
      $libraries = $this->collector->get($extension);
      $this->libraryDefinitions[$extension] = [];
      foreach ($libraries as $name => $definition) {
        $this->libraryDefinitions[$extension][$name] = $definition;
      }
    }

    return $this->libraryDefinitions[$extension];
    return $this->collector->get($extension);
  }

  /**
   * {@inheritdoc}
   */
  public function getLibraryByName($extension, $name) {
    $libraries = $this->getLibrariesByExtension($extension);
    $libraries = $this->collector->get($extension);
    if (!isset($libraries[$name])) {
      return FALSE;
    }
@@ -70,7 +57,6 @@ public function getLibraryByName($extension, $name) {
   * {@inheritdoc}
   */
  public function clearCachedDefinitions() {
    $this->libraryDefinitions = [];
    $this->collector->clear();
  }

+35 −1
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@
/**
 * A CacheCollector implementation for building library extension info.
 */
class LibraryDiscoveryCollector extends CacheCollector {
class LibraryDiscoveryCollector extends CacheCollector implements LibraryDiscoveryInterface {

  /**
   * The library discovery parser.
@@ -159,6 +159,28 @@ protected function applyLibrariesExtend($extension, $library_name, $library_defi
    return $library_definition;
  }

  /**
   * {@inheritdoc}
   */
  public function getLibrariesByExtension($extension) {
    return $this->get($extension);
  }

  /**
   * {@inheritdoc}
   */
  public function getLibraryByName($extension, $name) {
    $libraries = $this->getLibrariesByExtension($extension);
    if (!isset($libraries[$name])) {
      return FALSE;
    }
    if (isset($libraries[$name]['deprecated'])) {
      // phpcs:ignore Drupal.Semantics.FunctionTriggerError
      @trigger_error(str_replace('%library_id%', "$extension/$name", $libraries[$name]['deprecated']), E_USER_DEPRECATED);
    }
    return $libraries[$name];
  }

  /**
   * {@inheritdoc}
   */
@@ -167,4 +189,16 @@ public function reset() {
    $this->cid = NULL;
  }

  /**
   * Clears static and persistent cache.
   *
   * @deprecated in drupal:11.1.0 and is removed from drupal:12.0.0. Use
   * LibraryDiscoveryCollector::clear() instead.
   * @see https://www.drupal.org/node/3462970
   */
  public function clearCachedDefinitions() {
    @trigger_error(__METHOD__ . 'is deprecated in drupal:11.0.0 and is removed from drupal:12.0.0. Use ::clear() instead. See https://www.drupal.org/node/3462970', E_USER_DEPRECATED);
    $this->clear();
  }

}
+4 −0
Original line number Diff line number Diff line
@@ -47,6 +47,10 @@ public function getLibraryByName($extension, $name);

  /**
   * Clears static and persistent library definition caches.
   *
   * @deprecated in drupal:11.1.0 and is removed from drupal:12.0.0. Use
   * LibraryDiscoveryCollector::clear() instead.
   * @see https://www.drupal.org/node/3462970
   */
  public function clearCachedDefinitions();

+1 −1
Original line number Diff line number Diff line
@@ -422,7 +422,7 @@ public function testDynamicLibrary(): void {
    // Retrieve a dynamic library definition.
    // @see common_test_library_info_build()
    \Drupal::state()->set('common_test.library_info_build_test', TRUE);
    $library_discovery->clearCachedDefinitions();
    $library_discovery->clear();
    $dynamic_library = $library_discovery->getLibraryByName('common_test', 'dynamic_library');
    $this->assertIsArray($dynamic_library);
    $this->assertArrayHasKey('version', $dynamic_library);
Loading