X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderFileModule.php;h=9be5de3d6d4cf878415412c78a30fabbb1fb3cbf;hb=2e7b7eed40bad1b79ce2f7cfe77df2e2139a20ba;hp=4444b1357e2e5f22a6fdaa618decc476f4ddb888;hpb=0e3667be51296aabc342d89844d59641d7fb2361;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderFileModule.php b/includes/resourceloader/ResourceLoaderFileModule.php index 4444b1357e..9be5de3d6d 100644 --- a/includes/resourceloader/ResourceLoaderFileModule.php +++ b/includes/resourceloader/ResourceLoaderFileModule.php @@ -198,18 +198,18 @@ class ResourceLoaderFileModule extends ResourceLoaderModule { * ], * // Scripts to include in debug contexts * 'debugScripts' => [file path string or array of file path strings], - * // For package modules: files to make available for internal require() use - * // 'type' is optional, and will be inferred from the file name extension if omitted - * // 'config' can only be used when 'type' is 'data'; vars are resolved with Config::get() - * // If 'packageFiles' is set, 'scripts' cannot also be set + * // For package modules: files to be made available for internal require() do not + * // need to have 'type' defined; it will be inferred from the file name extension + * // if omitted. 'config' can only be used when 'type' is 'data'; the variables are + * // resolved with Config::get(). The first entry in 'packageFiles' is always the + * // module entry point. If 'packageFiles' is set, 'scripts' cannot also be set. * 'packageFiles' => [ * [file path string], // or: - * [file alias] => [file path string], // or: - * [file alias] => [ 'file' => [file path string], 'type' => 'script'|'data' ], // or: - * [file alias] => [ 'content' => [string], 'type' => 'script'|'data' ], // or: - * [file alias] => [ 'callback' => [callable], 'type' => 'script'|'data' ], // or: - * [file alias] => [ 'config' => [ [config var name], ... ], 'type' => 'data' ], // or: - * [file alias] => [ 'config' => [ [JS name] => [PHP name] ], 'type' => 'data' ], + * [ 'name' => [file name], 'file' => [file path], 'type' => 'script'|'data' ], // or: + * [ 'name' => [name], 'content' => [string], 'type' => 'script'|'data' ], // or: + * [ 'name' => [name], 'callback' => [callable], 'type' => 'script'|'data' ], + * [ 'name' => [name], 'config' => [ [config var name], ... ], 'type' => 'data' ], + * [ 'name' => [name], 'config' => [ [JS name] => [PHP name] ], 'type' => 'data' ], * ], * // Modules which must be loaded before this module * 'dependencies' => [module name string or array of module name strings], @@ -1091,25 +1091,20 @@ class ResourceLoaderFileModule extends ResourceLoaderModule { $mainFile = null; foreach ( $this->packageFiles as $alias => $fileInfo ) { - // Alias is optional, but only when specfiying plain file names (strings) - if ( is_int( $alias ) ) { - if ( is_array( $fileInfo ) ) { - $msg = __METHOD__ . ": invalid package file definition for module " . - "\"{$this->getName()}\": key is required when value is not a string"; - wfDebugLog( 'resourceloader', $msg ); - throw new MWException( $msg ); - } - $alias = $fileInfo; - } - if ( !is_array( $fileInfo ) ) { - $fileInfo = [ 'file' => $fileInfo ]; + if ( is_string( $fileInfo ) ) { + $fileInfo = [ 'name' => $fileInfo, 'file' => $fileInfo ]; + } elseif ( !isset( $fileInfo['name'] ) ) { + $msg = __METHOD__ . ": invalid package file definition for module " . + "\"{$this->getName()}\": 'name' key is required when value is not a string"; + wfDebugLog( 'resourceloader', $msg ); + throw new MWException( $msg ); } // Infer type from alias if needed - $type = $fileInfo['type'] ?? self::getPackageFileType( $alias ); + $type = $fileInfo['type'] ?? self::getPackageFileType( $fileInfo['name'] ); $expanded = [ 'type' => $type ]; if ( !empty( $fileInfo['main'] ) ) { - $mainFile = $alias; + $mainFile = $fileInfo['name']; if ( $type !== 'script' ) { $msg = __METHOD__ . ": invalid package file definition for module " . "\"{$this->getName()}\": main file \"$mainFile\" must be of type \"script\", not \"$type\""; @@ -1126,15 +1121,15 @@ class ResourceLoaderFileModule extends ResourceLoaderModule { if ( is_callable( $fileInfo['callback'] ) ) { $expanded['content'] = $fileInfo['callback']( $context ); } else { - $msg = __METHOD__ . ": invalid callback for package file \"$alias\"" . + $msg = __METHOD__ . ": invalid callback for package file \"{$fileInfo['name']}\"" . " in module \"{$this->getName()}\""; wfDebugLog( 'resourceloader', $msg ); throw new MWException( $msg ); } } elseif ( isset( $fileInfo['config'] ) ) { if ( $type !== 'data' ) { - $msg = __METHOD__ . ": invalid use of \"config\" for package file \"$alias\" in module " . - "\"{$this->getName()}\": type must be \"data\" but is \"$type\""; + $msg = __METHOD__ . ": invalid use of \"config\" for package file \"{$fileInfo['name']}\" " . + "in module \"{$this->getName()}\": type must be \"data\" but is \"$type\""; wfDebugLog( 'resourceloader', $msg ); throw new MWException( $msg ); } @@ -1144,16 +1139,17 @@ class ResourceLoaderFileModule extends ResourceLoaderModule { } $expanded['content'] = $expandedConfig; } elseif ( !empty( $fileInfo['main'] ) ) { - // 'foo.js' => [ 'main' => true ] is shorthand - $expanded['filePath'] = $alias; + // [ 'name' => 'foo.js', 'main' => true ] is shorthand + $expanded['filePath'] = $fileInfo['name']; } else { - $msg = __METHOD__ . ": invalid package file definition for \"$alias\" in module " . - "\"{$this->getName()}\": one of \"file\", \"content\", \"callback\" or \"config\" must be set"; + $msg = __METHOD__ . ": invalid package file definition for \"{$fileInfo['name']}\" " . + "in module \"{$this->getName()}\": one of \"file\", \"content\", \"callback\" or \"config\" " . + "must be set"; wfDebugLog( 'resourceloader', $msg ); throw new MWException( $msg ); } - $expandedFiles[$alias] = $expanded; + $expandedFiles[$fileInfo['name']] = $expanded; } if ( $expandedFiles && $mainFile === null ) {