Mark PHP version compatibility fallback as legitimate in Php_Fixer
Add public directory asset support to bundle system Fix PHP Fixer to replace ALL Rsx\ FQCNs with simple class names 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,12 @@ class BundleCompiler
|
||||
*/
|
||||
protected array $cdn_assets = ['js' => [], 'css' => []];
|
||||
|
||||
/**
|
||||
* Public directory assets (served via AssetHandler with filemtime cache-busting)
|
||||
* Format: ['js' => [['url' => '/path/to/file.js', 'full_path' => '/full/filesystem/path']], ...]
|
||||
*/
|
||||
protected array $public_assets = ['js' => [], 'css' => []];
|
||||
|
||||
/**
|
||||
* Cache keys for vendor/app
|
||||
*/
|
||||
@@ -175,6 +181,14 @@ class BundleCompiler
|
||||
$result['cdn_css'] = $this->cdn_assets['css'];
|
||||
}
|
||||
|
||||
// Add public directory assets
|
||||
if (!empty($this->public_assets['js'])) {
|
||||
$result['public_js'] = $this->public_assets['js'];
|
||||
}
|
||||
if (!empty($this->public_assets['css'])) {
|
||||
$result['public_css'] = $this->public_assets['css'];
|
||||
}
|
||||
|
||||
// Add bundle file paths for development
|
||||
if (!$this->is_production) {
|
||||
if (isset($outputs['vendor_js'])) {
|
||||
@@ -501,6 +515,43 @@ class BundleCompiler
|
||||
}
|
||||
$this->resolved_includes[$include_key] = true;
|
||||
|
||||
// Check for /public/ prefix - static assets from public directories
|
||||
if (is_string($item) && str_starts_with($item, '/public/')) {
|
||||
$relative_path = substr($item, 8); // Strip '/public/' prefix
|
||||
|
||||
try {
|
||||
// Resolve via AssetHandler (with Redis caching)
|
||||
$full_path = \App\RSpade\Core\Dispatch\AssetHandler::find_public_asset($relative_path);
|
||||
|
||||
// Determine file type
|
||||
$extension = strtolower(pathinfo($relative_path, PATHINFO_EXTENSION));
|
||||
|
||||
if ($extension === 'js') {
|
||||
$this->public_assets['js'][] = [
|
||||
'url' => '/' . $relative_path,
|
||||
'full_path' => $full_path
|
||||
];
|
||||
} elseif ($extension === 'css') {
|
||||
$this->public_assets['css'][] = [
|
||||
'url' => '/' . $relative_path,
|
||||
'full_path' => $full_path
|
||||
];
|
||||
} else {
|
||||
throw new RuntimeException(
|
||||
"Public asset must be .js or .css file: {$item}\n" .
|
||||
"Only JavaScript and CSS files can be included via /public/ prefix."
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
} catch (\Symfony\Component\HttpKernel\Exception\HttpException $e) {
|
||||
throw new RuntimeException(
|
||||
"Failed to resolve public asset: {$item}\n" .
|
||||
$e->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Check bundle aliases and resolve to actual class
|
||||
$bundle_aliases = config('rsx.bundle_aliases', []);
|
||||
if (is_string($item) && isset($bundle_aliases[$item])) {
|
||||
|
||||
Reference in New Issue
Block a user