summaryrefslogtreecommitdiffstatshomepage
path: root/core/lib/Drupal/Core/Asset/LibraryDependencyResolverInterface.php
blob: 4942087a870b96dfe969eb4ae25698ac0daac6df (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php

namespace Drupal\Core\Asset;

/**
 * Resolves the dependencies of asset (CSS/JavaScript) libraries.
 */
interface LibraryDependencyResolverInterface {

  /**
   * Gets the given libraries with their dependencies.
   *
   * Given ['core/a', 'core/b', 'core/c'], with core/a depending on core/c and
   * core/b on core/d, returns ['core/a', 'core/b', 'core/c', 'core/d'].
   *
   * @param string[] $libraries
   *   A list of libraries, in the order they should be loaded.
   *
   * @return string[]
   *   A list of libraries, in the order they should be loaded, including their
   *   dependencies.
   */
  public function getLibrariesWithDependencies(array $libraries);

  /**
   * Gets the minimal representative subset of the given libraries.
   *
   * A minimal representative subset means that any library in the given set of
   * libraries that is a dependency of another library in the set, is removed.
   *
   * Hence a minimal representative subset is the most compact representation
   * possible of a set of libraries.
   *
   * (Each asset library has dependencies and can therefore be seen as a tree.
   * Hence the given list of libraries represent a forest. This function returns
   * all roots of trees that are not a subtree of another tree in the forest.)
   *
   * @param string[] $libraries
   *   A set of libraries.
   *
   * @return string[]
   *   A representative subset of the given set of libraries.
   */
  public function getMinimalRepresentativeSubset(array $libraries);

}