<!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>[44115] trunk: 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/44115">44115</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/44115","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>desrosj</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2018-12-13 17:26:09 +0000 (Thu, 13 Dec 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, atimmer.

Merges <a href="https://core.trac.wordpress.org/changeset/43738">[43738]</a> into trunk.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesclasswpeditorphp">trunk/src/wp-includes/class-wp-editor.php</a></li>
<li><a href="#trunksrcwpincludesdefaultfiltersphp">trunk/src/wp-includes/default-filters.php</a></li>
<li><a href="#trunksrcwpincludesscriptloaderphp">trunk/src/wp-includes/script-loader.php</a></li>
<li><a href="#trunktestsphpunittestsdependenciesscriptsphp">trunk/tests/phpunit/tests/dependencies/scripts.php</a></li>
<li><a href="#trunktoolswebpackmediajs">trunk/tools/webpack/media.js</a></li>
</ul>

<h3>Property Changed</h3>
<ul>
<li><a href="#trunk">trunk/</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<span class="cx" style="display: block; padding: 0 10px">Index: trunk
</span><span class="cx" style="display: block; padding: 0 10px">===================================================================
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">--- trunk        2018-12-13 16:49:58 UTC (rev 44114)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+++ trunk 2018-12-13 17:26:09 UTC (rev 44115)
</ins><a id="trunk"></a>
<div class="propset"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Property changes: trunk</h4>
<pre class="diff"><span>
</span></pre></div>
<a id="svnmergeinfo"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: svn:mergeinfo</h4></div>
<span class="cx" style="display: block; padding: 0 10px"> /branches/3.3:20543
</span><span class="cx" style="display: block; padding: 0 10px"> /branches/3.4:21757
</span><span class="cx" style="display: block; padding: 0 10px"> /branches/4.9:43557
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-/branches/5.0:43681-43682,43684-43688,43719-43720,43723,43726-43727,43729-43731,43734-43737,43739-43744
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/branches/5.0:43681-43682,43684-43688,43719-43720,43723,43726-43727,43729-43731,43734-43744
</ins><span class="cx" style="display: block; padding: 0 10px"> /trunk:18512
</span><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="trunksrcwpincludesclasswpeditorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-wp-editor.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-wp-editor.php 2018-12-13 16:49:58 UTC (rev 44114)
+++ trunk/src/wp-includes/class-wp-editor.php   2018-12-13 17:26:09 UTC (rev 44115)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -317,9 +317,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">@@ -755,6 +757,9 @@
</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">+         *
+        * @static
+        *
</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">@@ -819,8 +824,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">@@ -1388,6 +1395,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">@@ -1397,7 +1430,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">@@ -1408,33 +1441,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! isset( $concatenate_scripts ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        script_concat_settings();
</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";
-               }
-
-               echo "<script type='text/javascript'>\n" . self::wp_mce_translation() . "</script>\n";
</del><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></pre></div>
<a id="trunksrcwpincludesdefaultfiltersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/default-filters.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/default-filters.php 2018-12-13 16:49:58 UTC (rev 44114)
+++ trunk/src/wp-includes/default-filters.php   2018-12-13 17:26:09 UTC (rev 44115)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -502,6 +502,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="trunksrcwpincludesscriptloaderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/script-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/script-loader.php   2018-12-13 16:49:58 UTC (rev 44114)
+++ trunk/src/wp-includes/script-loader.php     2018-12-13 17:26:09 UTC (rev 44115)
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $suffix     = SCRIPT_DEBUG ? '' : '.min';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $suffix = SCRIPT_DEBUG ? '' : '.min';
+
+       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,60 @@
</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 +604,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,9 +617,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">         $scripts->add( 'utils', "/wp-includes/js/utils$suffix.js" );
</span><span class="cx" style="display: block; padding: 0 10px">        did_action( 'init' ) && $scripts->localize(
</span><span class="cx" style="display: block; padding: 0 10px">                'utils',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -624,7 +684,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">@@ -1210,12 +1270,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(
</span></span></pre></div>
<a id="trunktestsphpunittestsdependenciesscriptsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/dependencies/scripts.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/dependencies/scripts.php        2018-12-13 16:49:58 UTC (rev 44114)
+++ trunk/tests/phpunit/tests/dependencies/scripts.php  2018-12-13 17:26:09 UTC (rev 44115)
</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="trunktoolswebpackmediajs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tools/webpack/media.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tools/webpack/media.js      2018-12-13 16:49:58 UTC (rev 44114)
+++ trunk/tools/webpack/media.js        2018-12-13 17:26:09 UTC (rev 44115)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18,10 +18,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: Object.assign( admin_files, include_files ),
</span><span class="cx" style="display: block; padding: 0 10px">                output: {
</span></span></pre>
</div>
</div>

</body>
</html>