<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[43738] branches/5.0: Script loader: Adjust JS packages registration.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/43738">43738</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/43738","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>atimmer</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2018-10-17 15:28:33 +0000 (Wed, 17 Oct 2018)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Script loader: Adjust JS packages registration.

Adjusts the packages registration after <a href="https://core.trac.wordpress.org/changeset/43723">[43723]</a>:

* Combine the different registration functions into one
`wp_default_packages` function. To reach this goal move the prefix
logic into a function so it can be called from different locations.
Use a `static` variable there to prevent duplicate inclusion of
`version.php`.
* Call this function from the `wp_default_scripts` action by
registering it as a default filter.
* Combine some of the logic in `_WP_Editors::print_tinymce_scripts`
into `wp_register_tinymce_scripts`. The logic to force an uncompressed
TinyMCE script file stays in `_WP_Editors::force_uncompressed_tinymce`
because that logic is very specific to the classic editor.
* The script handle `wp-tinymce` is now a dependency of the `editor`
script handle. In combination with the previous item, this makes the
classic editor work.
* Adjust the syntax of the script paths to be more consistent with
other WordPress code.
* Always use `"production"` mode for the media files to prevent people
from inadvertently committing development files.

Props pento, omarreiss.
Fixes <a href="https://core.trac.wordpress.org/ticket/45065">#45065</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branches50srcwpincludesclasswpeditorphp">branches/5.0/src/wp-includes/class-wp-editor.php</a></li>
<li><a href="#branches50srcwpincludesdefaultfiltersphp">branches/5.0/src/wp-includes/default-filters.php</a></li>
<li><a href="#branches50srcwpincludesscriptloaderphp">branches/5.0/src/wp-includes/script-loader.php</a></li>
<li><a href="#branches50testsphpunittestsdependenciesscriptsphp">branches/5.0/tests/phpunit/tests/dependencies/scripts.php</a></li>
<li><a href="#branches50toolswebpackmediajs">branches/5.0/tools/webpack/media.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branches50srcwpincludesclasswpeditorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.0/src/wp-includes/class-wp-editor.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.0/src/wp-includes/class-wp-editor.php  2018-10-17 11:19:02 UTC (rev 43737)
+++ branches/5.0/src/wp-includes/class-wp-editor.php    2018-10-17 15:28:33 UTC (rev 43738)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -309,9 +309,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty(self::$first_init) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( is_admin() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                add_action( 'admin_print_footer_scripts', array( __CLASS__, 'editor_js' ), 50 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                add_action( 'admin_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 add_action( 'admin_print_footer_scripts', array( __CLASS__, 'enqueue_scripts' ), 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                add_action( 'wp_print_footer_scripts', array( __CLASS__, 'editor_js' ), 50 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                add_action( 'wp_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 add_action( 'wp_print_footer_scripts', array( __CLASS__, 'enqueue_scripts' ), 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -743,7 +745,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @static
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param bool $default_scripts Optional. Whether default scripts should be enqueued. Default false.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function enqueue_scripts( $default_scripts = false ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -805,8 +807,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                wp_enqueue_style( 'editor-buttons' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_admin() ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        add_action( 'admin_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 );
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_action( 'admin_print_footer_scripts', array( __CLASS__, 'print_default_editor_scripts' ), 45 );
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        add_action( 'wp_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 );
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_action( 'wp_print_footer_scripts', array( __CLASS__, 'print_default_editor_scripts' ), 45 );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1373,6 +1377,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Force uncompressed TinyMCE when a custom theme has been defined.
+        *
+        * The compressed TinyMCE file cannot deal with custom themes, so this makes
+        * sure that we use the uncompressed TinyMCE file if a theme is defined.
+        * Even if we are on a production environment.
+        */
+       public static function force_uncompressed_tinymce() {
+               $has_custom_theme = false;
+               foreach ( self::$mce_settings as $init ) {
+                       if ( ! empty( $init['theme_url'] ) ) {
+                               $has_custom_theme = true;
+                               break;
+                       }
+               }
+
+               if ( ! $has_custom_theme ) {
+                       return;
+               }
+
+               $wp_scripts = wp_scripts();
+
+               $wp_scripts->remove( 'wp-tinymce' );
+               wp_register_tinymce_scripts( $wp_scripts, true );
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Print (output) the main TinyMCE scripts.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 4.8.0
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1383,7 +1413,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @global bool   $compress_scripts
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function print_tinymce_scripts() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                global $tinymce_version, $concatenate_scripts, $compress_scripts;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         global $concatenate_scripts;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( self::$tinymce_scripts_printed ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1395,31 +1425,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        script_concat_settings();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $suffix = SCRIPT_DEBUG ? '' : '.min';
-               $version = 'ver=' . $tinymce_version;
-               $baseurl = self::get_baseurl();
-
-               $has_custom_theme = false;
-               foreach ( self::$mce_settings as $init ) {
-                       if ( ! empty( $init['theme_url'] ) ) {
-                               $has_custom_theme = true;
-                               break;
-                       }
-               }
-
-               $compressed = $compress_scripts && $concatenate_scripts && isset( $_SERVER['HTTP_ACCEPT_ENCODING'] )
-                       && false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) && ! $has_custom_theme;
-
-               // Load tinymce.js when running from /src, else load wp-tinymce.js.gz (production) or tinymce.min.js (SCRIPT_DEBUG)
-               $mce_suffix = false !== strpos( get_bloginfo( 'version' ), '-src' ) ? '' : '.min';
-
-               if ( $compressed ) {
-                       echo "<script type='text/javascript' src='{$baseurl}/wp-tinymce.php?c=1&amp;$version'></script>\n";
-               } else {
-                       echo "<script type='text/javascript' src='{$baseurl}/tinymce{$mce_suffix}.js?$version'></script>\n";
-                       echo "<script type='text/javascript' src='{$baseurl}/plugins/compat3x/plugin{$suffix}.js?$version'></script>\n";
-               }
-
</del><span class="cx" style="display: block; padding: 0 10px">                 echo "<script type='text/javascript'>\n" . self::wp_mce_translation() . "</script>\n";
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="branches50srcwpincludesdefaultfiltersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.0/src/wp-includes/default-filters.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.0/src/wp-includes/default-filters.php  2018-10-17 11:19:02 UTC (rev 43737)
+++ branches/5.0/src/wp-includes/default-filters.php    2018-10-17 15:28:33 UTC (rev 43738)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -491,6 +491,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Script Loader
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'wp_default_scripts', 'wp_default_scripts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+add_action( 'wp_default_scripts', 'wp_default_packages' );
+
</ins><span class="cx" style="display: block; padding: 0 10px"> add_action( 'wp_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 );
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 );
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'admin_print_scripts-index.php', 'wp_localize_community_events' );
</span></span></pre></div>
<a id="branches50srcwpincludesscriptloaderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.0/src/wp-includes/script-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.0/src/wp-includes/script-loader.php    2018-10-17 11:19:02 UTC (rev 43737)
+++ branches/5.0/src/wp-includes/script-loader.php      2018-10-17 15:28:33 UTC (rev 43738)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,11 +41,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @param WP_Scripts $scripts WP_Scripts object.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wp_register_tinymce_scripts( &$scripts ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wp_register_tinymce_scripts( &$scripts, $force_uncompressed = false ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         global $tinymce_version, $concatenate_scripts, $compress_scripts;
</span><span class="cx" style="display: block; padding: 0 10px">        $suffix     = SCRIPT_DEBUG ? '' : '.min';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       script_concat_settings();
+
</ins><span class="cx" style="display: block; padding: 0 10px">         $compressed = $compress_scripts && $concatenate_scripts && isset( $_SERVER['HTTP_ACCEPT_ENCODING'] )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                      && false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+               && false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) && ! $force_uncompressed;
+
</ins><span class="cx" style="display: block; padding: 0 10px">         // Load tinymce.js when running from /src, otherwise load wp-tinymce.js.gz (in production) or
</span><span class="cx" style="display: block; padding: 0 10px">        // tinymce.min.js (when SCRIPT_DEBUG is true).
</span><span class="cx" style="display: block; padding: 0 10px">        $mce_suffix = false !== strpos( get_bloginfo( 'version' ), '-src' ) ? '' : '.min';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -52,11 +56,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        if ( $compressed ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $scripts->add( 'wp-tinymce', includes_url( 'js/tinymce/' ) . 'wp-tinymce.php', array(), $tinymce_version );
</span><span class="cx" style="display: block; padding: 0 10px">        } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $scripts->add( 'wp-tinymce-root', includes_url( 'js/tinymce/' ) . "tinymce{$mce_suffix}.js", array(), $tinymce_version );
-               $scripts->add( 'wp-tinymce', includes_url( 'js/tinymce/' ) . "plugins/compat3x/plugin{$suffix}.js", array( 'wp-tinymce-root' ), $tinymce_version );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $scripts->add( 'wp-tinymce-root', includes_url( 'js/tinymce/' ) . "tinymce$mce_suffix.js", array(), $tinymce_version );
+               $scripts->add( 'wp-tinymce', includes_url( 'js/tinymce/' ) . "plugins/compat3x/plugin$suffix.js", array( 'wp-tinymce-root' ), $tinymce_version );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $scripts->add( 'wp-tinymce-lists', includes_url( 'js/tinymce/plugins/lists/index' . $suffix . '.js', array( 'wp-tinymce' ), $tinymce_version ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $scripts->add( 'wp-tinymce-lists', includes_url( "js/tinymce/plugins/lists/plugin$suffix.js", array( 'wp-tinymce' ), $tinymce_version ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -69,9 +73,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @param WP_Scripts $scripts WP_Scripts object.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wp_default_packages_vendor( &$scripts, $dev_suffix ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wp_default_packages_vendor( &$scripts ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         wp_register_tinymce_scripts( $scripts );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $dev_suffix = wp_scripts_get_suffix( 'dev' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">         $vendor_scripts = array(
</span><span class="cx" style="display: block; padding: 0 10px">                'react',
</span><span class="cx" style="display: block; padding: 0 10px">                'react-dom' => array( 'react' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -90,7 +96,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $dependencies = array();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $path     = '/js/dist/vendor/' . $handle . $dev_suffix . '.js';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $path     = "/js/dist/vendor/$handle$dev_suffix.js";
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $scripts->add( $handle, $path, $dependencies, false, 1 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -124,7 +130,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @param array      $tests   Features to detect.
</span><span class="cx" style="display: block; padding: 0 10px">  * @return string Conditional polyfill inline script.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wp_get_script_polyfill( $scripts, $tests ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wp_get_script_polyfill( &$scripts, $tests ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         $polyfill = '';
</span><span class="cx" style="display: block; padding: 0 10px">        foreach ( $tests as $test => $handle ) {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! array_key_exists( $handle, $scripts->registered ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -147,7 +153,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Register all the WordPress packages scripts that are in the standardized
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Registers all the WordPress packages scripts that are in the standardized
</ins><span class="cx" style="display: block; padding: 0 10px">  * `js/dist/` location.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * For the order of `$scripts->add` see `wp_default_scripts`.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -155,9 +161,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 5.0.0
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @param WP_Scripts $scripts WP_Scripts object.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param string     $suffix  The suffix to use before `.js`.
</del><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wp_default_packages_scripts( &$scripts, $suffix ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wp_default_packages_scripts( &$scripts ) {
+       $suffix = wp_scripts_get_suffix();
+
</ins><span class="cx" style="display: block; padding: 0 10px">         $packages_dependencies = array(
</span><span class="cx" style="display: block; padding: 0 10px">                'api-fetch' => array( 'wp-polyfill', 'wp-hooks', 'wp-i18n' ),
</span><span class="cx" style="display: block; padding: 0 10px">                'a11y' => array( 'wp-dom-ready', 'wp-polyfill' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -330,7 +337,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        foreach ( $packages_dependencies as $package => $dependencies ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $handle  = 'wp-' . $package;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $path     = '/js/dist/' . $package . $suffix . '.js';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $path    = "/js/dist/$package$suffix.js";
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $scripts->add( $handle, $path, $dependencies, false, 1 );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -422,6 +429,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'after'
</span><span class="cx" style="display: block; padding: 0 10px">        );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        /* This filter is documented in wp-includes/class-wp-editor.php */
</ins><span class="cx" style="display: block; padding: 0 10px">         $tinymce_settings = apply_filters(
</span><span class="cx" style="display: block; padding: 0 10px">                'tiny_mce_before_init',
</span><span class="cx" style="display: block; padding: 0 10px">                array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -428,6 +436,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugins'          => implode(
</span><span class="cx" style="display: block; padding: 0 10px">                                ',',
</span><span class="cx" style="display: block; padding: 0 10px">                                array_unique(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        /* This filter is documented in wp-includes/class-wp-editor.php */
</ins><span class="cx" style="display: block; padding: 0 10px">                                         apply_filters(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'tiny_mce_plugins',
</span><span class="cx" style="display: block; padding: 0 10px">                                                array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -456,6 +465,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'toolbar1'         => implode(
</span><span class="cx" style="display: block; padding: 0 10px">                                ',',
</span><span class="cx" style="display: block; padding: 0 10px">                                array_merge(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        /* This filter is documented in wp-includes/class-wp-editor.php */
</ins><span class="cx" style="display: block; padding: 0 10px">                                         apply_filters(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'mce_buttons',
</span><span class="cx" style="display: block; padding: 0 10px">                                                array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -481,6 +491,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'toolbar2'         => implode(
</span><span class="cx" style="display: block; padding: 0 10px">                                ',',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                /* This filter is documented in wp-includes/class-wp-editor.php */
</ins><span class="cx" style="display: block; padding: 0 10px">                                 apply_filters(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'mce_buttons_2',
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -499,8 +510,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        'editor'
</span><span class="cx" style="display: block; padding: 0 10px">                                )
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        /* This filter is documented in wp-includes/class-wp-editor.php */
</ins><span class="cx" style="display: block; padding: 0 10px">                         'toolbar3'         => implode( ',', apply_filters( 'mce_buttons_3', array(), 'editor' ) ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        /* This filter is documented in wp-includes/class-wp-editor.php */
</ins><span class="cx" style="display: block; padding: 0 10px">                         'toolbar4'         => implode( ',', apply_filters( 'mce_buttons_4', array(), 'editor' ) ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        /* This filter is documented in wp-includes/class-wp-editor.php */
</ins><span class="cx" style="display: block; padding: 0 10px">                         'external_plugins' => apply_filters( 'mce_external_plugins', array() ),
</span><span class="cx" style="display: block; padding: 0 10px">                ),
</span><span class="cx" style="display: block; padding: 0 10px">                'editor'
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -525,6 +539,57 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Registers all the WordPress packages scripts.
+ *
+ * @since 5.0.0
+ *
+ * @param WP_Scripts $scripts WP_Scripts object.
+ */
+function wp_default_packages( &$scripts ) {
+       wp_default_packages_vendor( $scripts );
+       wp_register_tinymce_scripts( $scripts );
+       wp_default_packages_scripts( $scripts );
+
+       if ( did_action( 'init' ) ) {
+               wp_default_packages_inline_scripts( $scripts );
+       }
+}
+
+/**
+ * Returns the suffix that can be used for the scripts.
+ *
+ * There are two suffix types, the normal one and the dev suffix.
+ *
+ * @since 5.0.0
+ *
+ * @param string $type The type of suffix to retrieve.
+ * @return string The script suffix.
+ */
+function wp_scripts_get_suffix( $type = '' ) {
+       static $suffixes;
+
+       if ( $suffixes === null ) {
+               include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
+
+               $develop_src = false !== strpos( $wp_version, '-src' );
+
+               if ( ! defined( 'SCRIPT_DEBUG' ) ) {
+                       define( 'SCRIPT_DEBUG', $develop_src );
+               }
+               $suffix = SCRIPT_DEBUG ? '' : '.min';
+               $dev_suffix = $develop_src ? '' : '.min';
+
+               $suffixes = array( 'suffix' => $suffix, 'dev_suffix' => $dev_suffix );
+       }
+
+       if ( $type === 'dev' ) {
+               return $suffixes['dev_suffix'];
+       }
+
+       return $suffixes['suffix'];
+}
+
+/**
</ins><span class="cx" style="display: block; padding: 0 10px">  * Register all WordPress scripts.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Localizes some of them.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -536,14 +601,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @param WP_Scripts $scripts WP_Scripts object.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function wp_default_scripts( &$scripts ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $suffix = wp_scripts_get_suffix();
+       $dev_suffix = wp_scripts_get_suffix( 'dev' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $develop_src = false !== strpos( $wp_version, '-src' );
-
-       if ( ! defined( 'SCRIPT_DEBUG' ) ) {
-               define( 'SCRIPT_DEBUG', $develop_src );
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px">         if ( ! $guessurl = site_url() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $guessed_url = true;
</span><span class="cx" style="display: block; padding: 0 10px">                $guessurl = wp_guess_url();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -554,8 +614,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $scripts->default_version = get_bloginfo( 'version' );
</span><span class="cx" style="display: block; padding: 0 10px">        $scripts->default_dirs = array('/wp-admin/js/', '/wp-includes/js/');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $suffix = SCRIPT_DEBUG ? '' : '.min';
-       $dev_suffix = $develop_src ? '' : '.min';
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $scripts->add( 'utils', "/wp-includes/js/utils$suffix.js" );
</span><span class="cx" style="display: block; padding: 0 10px">        did_action( 'init' ) && $scripts->localize( 'utils', 'userSettings', array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -612,7 +670,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $scripts->add( 'colorpicker', "/wp-includes/js/colorpicker$suffix.js", array('prototype'), '3517m' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", array('utils','jquery'), false, 1 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $scripts->add( 'editor', "/wp-admin/js/editor$suffix.js", array('wp-tinymce','utils','jquery'), false, 1 );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Back-compat for old DFW. To-do: remove at the end of 2016.
</span><span class="cx" style="display: block; padding: 0 10px">        $scripts->add( 'wp-fullscreen-stub', "/wp-admin/js/wp-fullscreen-stub$suffix.js", array(), false, 1 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1128,12 +1186,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $scripts->add( 'wp-api', "/wp-includes/js/wp-api$suffix.js", array( 'jquery', 'backbone', 'underscore', 'wp-api-request' ), false, 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        wp_default_packages_vendor( $scripts, $dev_suffix );
-       wp_default_packages_scripts( $scripts, $suffix );
-       if ( did_action( 'init' ) ) {
-               wp_default_packages_inline_scripts( $scripts );
-       }
-
</del><span class="cx" style="display: block; padding: 0 10px">         if ( is_admin() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array( 'jquery', 'wp-ajax-response' ), false, 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                did_action( 'init' ) && $scripts->localize( 'admin-tags', 'tagsl10n', array(
</span></span></pre></div>
<a id="branches50testsphpunittestsdependenciesscriptsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.0/tests/phpunit/tests/dependencies/scripts.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.0/tests/phpunit/tests/dependencies/scripts.php 2018-10-17 11:19:02 UTC (rev 43737)
+++ branches/5.0/tests/phpunit/tests/dependencies/scripts.php   2018-10-17 15:28:33 UTC (rev 43738)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10,6 +10,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                parent::setUp();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->old_wp_scripts = isset( $GLOBALS['wp_scripts'] ) ? $GLOBALS['wp_scripts'] : null;
</span><span class="cx" style="display: block; padding: 0 10px">                remove_action( 'wp_default_scripts', 'wp_default_scripts' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                remove_action( 'wp_default_scripts', 'wp_default_packages' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $GLOBALS['wp_scripts'] = new WP_Scripts();
</span><span class="cx" style="display: block; padding: 0 10px">                $GLOBALS['wp_scripts']->default_version = get_bloginfo( 'version' );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="branches50toolswebpackmediajs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/5.0/tools/webpack/media.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/5.0/tools/webpack/media.js       2018-10-17 11:19:02 UTC (rev 43737)
+++ branches/5.0/tools/webpack/media.js 2018-10-17 15:28:33 UTC (rev 43738)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11,10 +11,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> const baseDir = path.join( __dirname, '../../' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> module.exports = function( env = { environment: 'production', watch: false } ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        const mode = env.environment;
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        const mediaConfig = {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                mode,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         mode: "production",
</ins><span class="cx" style="display: block; padding: 0 10px">                 cache: true,
</span><span class="cx" style="display: block; padding: 0 10px">                entry: mediaEntries,
</span><span class="cx" style="display: block; padding: 0 10px">                output: {
</span></span></pre>
</div>
</div>

</body>
</html>