From 138ff4bea020350f6b067624dea328d88ceb74b0 Mon Sep 17 00:00:00 2001 From: Sam Light <sam@lightscale.co.uk> Date: Mon, 31 Mar 2025 23:28:21 +0100 Subject: Queuing files --- src/Assets.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src') diff --git a/src/Assets.php b/src/Assets.php index 981ac76..962041f 100644 --- a/src/Assets.php +++ b/src/Assets.php @@ -12,6 +12,7 @@ class Assets private array $files = []; private array $queuedHeadFiles = []; private array $queuedFooterFiles = []; + private array $queuedFileHashs = []; public function addManifest( string $name, @@ -81,10 +82,28 @@ class Assets } } + private function pushFile(File $file, bool $footer): void + { + $hash = $file->hash(); + + if ($this->queuedFileHashes[$hash] ?? false) { + throw new Exception("File {$file} is already queued"); + } + else { + $this->queuedFileHashes[$hash] = true; + $queue = $footer ? 'queuedFooterFiles' : 'queuedHeadFiles'; + $this->{$queue}[] = $file; + } + } + public function queueFile(string $file, string $fileClass, bool $footer): void { $file = new FileString($file); $manifest = $this->getFileManifest($file); + $url = $manifest->getUrl($file->fileUri) ?? $file->fileUri; + + $file = new $fileClass($url); + $this->pushFile($file, $footer); } public function queueScript(string $file, bool $footer = true): void -- cgit v1.2.3