@@ -53,9 +53,12 @@ class Dispatch
5353 * @var ConfigProvider
5454 */
5555 protected $ _config ;
56- protected $ _aliases = [];
5756 protected $ _projectRoot ;
57+
58+ protected $ _aliases = [];
5859 protected $ _componentAliases = [];
60+ protected $ _vendorAliases = [];
61+ protected $ _vendorReverseAliases = [];
5962 /**
6063 * @var ClassLoader
6164 */
@@ -155,6 +158,18 @@ public function getVendorPath($vendor, $package)
155158 return Path::system ($ this ->_projectRoot , self ::VENDOR_DIR , $ vendor , $ package );
156159 }
157160
161+ public function getVendorOptions ($ vendor , $ package )
162+ {
163+ return $ this ->_vendorReverseAliases [$ vendor ][$ package ] ?? null ;
164+ }
165+
166+ public function addVendorAlias ($ vendor , $ package , $ alias )
167+ {
168+ $ this ->_vendorAliases [$ alias ] = [$ vendor , $ package ];
169+ $ this ->_vendorReverseAliases [$ vendor ][$ package ] = $ alias ;
170+ return $ this ;
171+ }
172+
158173 public function addAlias ($ alias , $ path )
159174 {
160175 $ this ->_aliases [$ alias ] = $ path ;
@@ -203,7 +218,16 @@ public function handleRequest(Request $request): Response
203218 $ manager = ResourceManager::alias (array_shift ($ pathParts ));
204219 break ;
205220 case ResourceManager::MAP_VENDOR :
206- $ manager = ResourceManager::vendor (array_shift ($ pathParts ), array_shift ($ pathParts ));
221+ $ vendor = array_shift ($ pathParts );
222+ if (isset ($ this ->_vendorAliases [$ vendor ]))
223+ {
224+ [$ vendor , $ package ] = $ this ->_vendorAliases [$ vendor ];
225+ }
226+ else
227+ {
228+ $ package = array_shift ($ pathParts );
229+ }
230+ $ manager = ResourceManager::vendor ($ vendor , $ package );
207231 break ;
208232 case ResourceManager::MAP_PUBLIC :
209233 $ manager = ResourceManager::public ();
0 commit comments