-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathMappedAsset.php
115 lines (102 loc) · 3.14 KB
/
MappedAsset.php
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\AssetMapper;
use Symfony\Component\AssetMapper\ImportMap\JavaScriptImport;
/**
* Represents a single asset in the asset mapper system.
*
* @author Ryan Weaver <[email protected]>
*/
final class MappedAsset
{
public readonly string $sourcePath;
public readonly string $publicPath;
public readonly string $publicPathWithoutDigest;
public readonly string $publicExtension;
/**
* The final content of this asset if different from the sourcePath.
*
* If null, the content should be read from the sourcePath.
*/
public readonly ?string $content;
public readonly string $digest;
public readonly bool $isPredigested;
/**
* @param MappedAsset[] $dependencies assets that the content of this asset depends on
* @param string[] $fileDependencies files that the content of this asset depends on
* @param JavaScriptImport[] $javaScriptImports
*/
public function __construct(
public readonly string $logicalPath,
?string $sourcePath = null,
?string $publicPathWithoutDigest = null,
?string $publicPath = null,
?string $content = null,
?string $digest = null,
?bool $isPredigested = null,
public readonly bool $isVendor = false,
private array $dependencies = [],
private array $fileDependencies = [],
private array $javaScriptImports = [],
) {
if (null !== $sourcePath) {
$this->sourcePath = $sourcePath;
}
if (null !== $publicPath) {
$this->publicPath = $publicPath;
}
if (null !== $publicPathWithoutDigest) {
$this->publicPathWithoutDigest = $publicPathWithoutDigest;
$this->publicExtension = pathinfo($publicPathWithoutDigest, \PATHINFO_EXTENSION);
}
$this->content = $content;
if (null !== $digest) {
$this->digest = $digest;
}
if (null !== $isPredigested) {
$this->isPredigested = $isPredigested;
}
}
/**
* Assets that the content of this asset depends on - for internal caching.
*
* @return MappedAsset[]
*/
public function getDependencies(): array
{
return $this->dependencies;
}
public function addDependency(self $asset): void
{
$this->dependencies[] = $asset;
}
/**
* @return string[]
*/
public function getFileDependencies(): array
{
return $this->fileDependencies;
}
public function addFileDependency(string $sourcePath): void
{
$this->fileDependencies[] = $sourcePath;
}
/**
* @return JavaScriptImport[]
*/
public function getJavaScriptImports(): array
{
return $this->javaScriptImports;
}
public function addJavaScriptImport(JavaScriptImport $import): void
{
$this->javaScriptImports[] = $import;
}
}