#!/usr/bin/env php $config) { // Only process entries with version but no path (need to be downloaded) if (isset($config['version']) && !isset($config['path'])) { // Extract package name (handle scoped packages and subpaths) $parts = explode('/', $name); if ($name[0] === '@') { // Scoped package: @noble/curves/secp256k1 -> @noble/curves $packageName = $parts[0] . '/' . $parts[1]; } else { // Regular package: quill/dist/quill.core.css -> quill $packageName = $parts[0]; } // Keep the highest version if there are multiple entries for the same package if (!isset($packages[$packageName]) || version_compare($packages[$packageName], $config['version'], '<')) { $packages[$packageName] = $config['version']; } } } // Build package.json structure $packageJson = [ 'name' => 'newsroom', 'version' => '1.0.0', 'description' => 'Importmap packages for Symfony Asset Mapper', 'private' => true, 'dependencies' => [] ]; // Sort packages for consistent output ksort($packages); foreach ($packages as $name => $version) { $packageJson['dependencies'][$name] = '^' . $version; } echo json_encode($packageJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n";