1<?php
2
3namespace Drupal\Core\Asset;
4
5/**
6 * Discovers information for asset (CSS/JavaScript) libraries.
7 *
8 * Library information is statically cached. Libraries are keyed by extension
9 * for several reasons:
10 * - Libraries are not unique. Multiple extensions might ship with the same
11 *   library in a different version or variant. This registry cannot (and does
12 *   not attempt to) prevent library conflicts.
13 * - Extensions implementing and thereby depending on a library that is
14 *   registered by another extension can only rely on that extension's library.
15 * - Two (or more) extensions can still register the same library and use it
16 *   without conflicts in case the libraries are loaded on certain pages only.
17 */
18interface LibraryDiscoveryInterface {
19
20  /**
21   * Gets all libraries defined by an extension.
22   *
23   * @param string $extension
24   *   The name of the extension that registered a library.
25   *
26   * @return array
27   *   An associative array of libraries registered by $extension is returned
28   *   (which may be empty).
29   *
30   * @see self::getLibraryByName()
31   */
32  public function getLibrariesByExtension($extension);
33
34  /**
35   * Gets a single library defined by an extension by name.
36   *
37   * @param string $extension
38   *   The name of the extension that registered a library.
39   * @param string $name
40   *   The name of a registered library to retrieve.
41   *
42   * @return array|false
43   *   The definition of the requested library, if $name was passed and it
44   *   exists, otherwise FALSE.
45   */
46  public function getLibraryByName($extension, $name);
47
48  /**
49   * Clears static and persistent library definition caches.
50   */
51  public function clearCachedDefinitions();
52
53}
54