Script Loader: Warn when classic scripts with module dependencies lack footer/defer.
A classic script with `module_dependencies` may be evaluated before the script modules import map is printed if it loads blocking in the document head, causing a "Failed to resolve module specifier" error on dynamic imports. * Trigger `_doing_it_wrong()` from `_wp_scripts_add_args_data()` when a classic script provides `module_dependencies` without setting `in_footer` to `true` or using a `defer` loading `strategy`, and document this requirement in the `wp_register_script()` and `wp_enqueue_script()` docblocks. * Remove the `module_dependencies` arg from the `wp-codemirror` script registration in favor of passing the espree module URL directly through `wp_get_code_editor_settings()`. This avoids registering `espree` as a publicly-available script module when it is only ever used internally as a private implementation detail of the code editor. * Add a `console.warn()` in `wp.codeEditor.initialize()` when invoked before `DOMContentLoaded`, so developers are alerted if the function is called too early for the import map to have been parsed. * Add PHPStan types which were missing when `module_dependencies` were initially introduced. * Harden `WP_Scripts::add_data()` against non-string `strategy` values being passed to `sprintf()`. Developed in https://github.com/WordPress/wordpress-develop/pull/11788 Follow-up to r61587. Props khokansardar, westonruter, jonsurrell, jorbin. See #61500, #64238. Fixes #65165. git-svn-id: https://develop.svn.wordpress.org/trunk@62368 602fd350-edb4-49c9-b593-d223f7449a82
W
Weston Ruter committed
aa60d9da0769c064463942592f5e59852cd2ea89
Parent: 165d83e