From 91593e2ff9659fdf5a62e0a1b9e15efda486e84c Mon Sep 17 00:00:00 2001 From: Andrew Duthie Date: Wed, 5 Sep 2018 17:27:42 -0400 Subject: [PATCH 1/9] Framework: Use babel-polyfill in place of runtime builtins --- lib/client-assets.php | 119 +++++++++++++------------ packages/babel-preset-default/index.js | 5 +- 2 files changed, 64 insertions(+), 60 deletions(-) diff --git a/lib/client-assets.php b/lib/client-assets.php index e00c39586cc73..4ecf736cce796 100644 --- a/lib/client-assets.php +++ b/lib/client-assets.php @@ -102,63 +102,63 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-url', gutenberg_url( 'build/url/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/url/index.js' ), true ); wp_register_script( 'wp-autop', gutenberg_url( 'build/autop/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/autop/index.js' ), true ); wp_register_script( 'wp-wordcount', gutenberg_url( 'build/wordcount/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/wordcount/index.js' ), true ); wp_register_script( 'wp-dom-ready', gutenberg_url( 'build/dom-ready/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/dom-ready/index.js' ), true ); wp_register_script( 'wp-a11y', gutenberg_url( 'build/a11y/index.js' ), - array( 'wp-dom-ready' ), + array( 'wp-dom-ready', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/a11y/index.js' ), true ); wp_register_script( 'wp-hooks', gutenberg_url( 'build/hooks/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/hooks/index.js' ), true ); wp_register_script( 'wp-i18n', gutenberg_url( 'build/i18n/index.js' ), - array( 'wp-deprecated' ), + array( 'wp-deprecated', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/i18n/index.js' ), true ); wp_register_script( 'wp-is-shallow-equal', gutenberg_url( 'build/is-shallow-equal/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/is-shallow-equal/index.js' ), true ); wp_register_script( 'wp-token-list', gutenberg_url( 'build/token-list/index.js' ), - array( 'lodash' ), + array( 'lodash', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/token-list/index.js' ), true ); @@ -167,20 +167,10 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-api-fetch', gutenberg_url( 'build/api-fetch/index.js' ), - array( 'wp-hooks', 'wp-i18n' ), + array( 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-i18n' ), filemtime( gutenberg_dir_path() . 'build/api-fetch/index.js' ), true ); - wp_add_inline_script( - 'wp-api-fetch', - gutenberg_get_script_polyfill( - array( - '\'Promise\' in window' => 'wp-polyfill-promise', - '\'fetch\' in window' => 'wp-polyfill-fetch', - ) - ), - 'before' - ); wp_add_inline_script( 'wp-api-fetch', sprintf( @@ -201,35 +191,35 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-deprecated', gutenberg_url( 'build/deprecated/index.js' ), - array( 'wp-hooks' ), + array( 'wp-polyfill-ecmascript', 'wp-hooks' ), filemtime( gutenberg_dir_path() . 'build/deprecated/index.js' ), true ); wp_register_script( 'wp-blob', gutenberg_url( 'build/blob/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/blob/index.js' ), true ); wp_register_script( 'wp-compose', gutenberg_url( 'build/compose/index.js' ), - array( 'wp-element', 'wp-is-shallow-equal', 'lodash' ), + array( 'lodash', 'wp-element', 'wp-polyfill-ecmascript', 'wp-is-shallow-equal' ), filemtime( gutenberg_dir_path() . 'build/compose/index.js' ), true ); wp_register_script( 'wp-keycodes', gutenberg_url( 'build/keycodes/index.js' ), - array( 'lodash' ), + array( 'lodash', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/keycodes/index.js' ), true ); wp_register_script( 'wp-html-entities', gutenberg_url( 'build/html-entities/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/html-entities/index.js' ), true ); @@ -237,10 +227,11 @@ function gutenberg_register_scripts_and_styles() { 'wp-data', gutenberg_url( 'build/data/index.js' ), array( - 'wp-element', + 'lodash', 'wp-compose', + 'wp-element', + 'wp-polyfill-ecmascript', 'wp-is-shallow-equal', - 'lodash', 'wp-redux-routine', ), filemtime( gutenberg_dir_path() . 'build/data/index.js' ), @@ -264,14 +255,14 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-core-data', gutenberg_url( 'build/core-data/index.js' ), - array( 'wp-data', 'wp-api-fetch', 'wp-url', 'lodash' ), + array( 'wp-polyfill-ecmascript', 'wp-data', 'wp-api-fetch', 'wp-url', 'lodash' ), filemtime( gutenberg_dir_path() . 'build/core-data/index.js' ), true ); wp_register_script( 'wp-dom', gutenberg_url( 'build/dom/index.js' ), - array( 'wp-tinymce', 'lodash' ), + array( 'lodash', 'wp-polyfill-ecmascript', 'wp-tinymce' ), filemtime( gutenberg_dir_path() . 'build/dom/index.js' ), true ); @@ -285,7 +276,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-block-serialization-spec-parser', gutenberg_url( 'build/block-serialization-spec-parser/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/block-serialization-spec-parser/index.js' ), true ); @@ -301,21 +292,21 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-shortcode', gutenberg_url( 'build/shortcode/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/shortcode/index.js' ), true ); wp_register_script( 'wp-redux-routine', gutenberg_url( 'build/redux-routine/index.js' ), - array(), + array( 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/redux-routine/index.js' ), true ); wp_register_script( 'wp-date', gutenberg_url( 'build/date/index.js' ), - array( 'moment' ), + array( 'moment', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/date/index.js' ), true ); @@ -357,7 +348,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-element', gutenberg_url( 'build/element/index.js' ), - array( 'react', 'react-dom', 'lodash' ), + array( 'wp-polyfill-ecmascript', 'react', 'react-dom', 'lodash' ), filemtime( gutenberg_dir_path() . 'build/element/index.js' ), true ); @@ -373,6 +364,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-deprecated', 'wp-dom', 'wp-element', + 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-html-entities', 'wp-i18n', @@ -398,6 +390,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-deprecated', 'wp-dom', 'wp-element', + 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', @@ -407,20 +400,10 @@ function gutenberg_register_scripts_and_styles() { filemtime( gutenberg_dir_path() . 'build/blocks/index.js' ), true ); - - wp_add_inline_script( - 'wp-blocks', - gutenberg_get_script_polyfill( - array( - '\'Promise\' in window' => 'wp-polyfill-promise', - ) - ), - 'before' - ); wp_register_script( 'wp-viewport', gutenberg_url( 'build/viewport/index.js' ), - array( 'wp-element', 'wp-data', 'wp-compose', 'lodash' ), + array( 'wp-polyfill-ecmascript', 'wp-element', 'wp-data', 'wp-compose', 'lodash' ), filemtime( gutenberg_dir_path() . 'build/viewport/index.js' ), true ); @@ -437,8 +420,9 @@ function gutenberg_register_scripts_and_styles() { 'wp-blocks', 'wp-components', 'wp-compose', - 'wp-data', 'wp-core-data', + 'wp-data', + 'wp-polyfill-ecmascript', 'wp-editor', 'wp-element', 'wp-html-entities', @@ -453,10 +437,24 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-nux', gutenberg_url( 'build/nux/index.js' ), - array( 'wp-element', 'wp-components', 'wp-compose', 'wp-data', 'wp-i18n', 'lodash' ), + array( + 'wp-element', + 'wp-polyfill-ecmascript', + 'wp-components', + 'wp-compose', + 'wp-data', + 'wp-i18n', + 'lodash', + ), filemtime( gutenberg_dir_path() . 'build/nux/index.js' ), true ); + wp_register_script( + 'wp-plugins', + gutenberg_url( 'build/plugins/index.js' ), + array( 'lodash', 'wp-element', 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-compose' ), + filemtime( gutenberg_dir_path() . 'build/plugins/index.js' ) + ); // Loading the old editor and its config to ensure the classic block works as expected. wp_add_inline_script( 'editor', @@ -579,6 +577,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-deprecated', 'wp-dom', 'wp-element', + 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-html-entities', 'wp-i18n', @@ -614,6 +613,7 @@ function gutenberg_register_scripts_and_styles() { 'wp-editor', 'wp-element', 'wp-embed', + 'wp-polyfill-ecmascript', 'wp-i18n', 'wp-keycodes', 'wp-plugins', @@ -714,13 +714,6 @@ function gutenberg_register_scripts_and_styles() { ); wp_style_add_data( 'wp-block-library-theme', 'rtl', 'replace' ); - wp_register_script( - 'wp-plugins', - gutenberg_url( 'build/plugins/index.js' ), - array( 'lodash', 'wp-element', 'wp-hooks', 'wp-compose' ), - filemtime( gutenberg_dir_path() . 'build/plugins/index.js' ) - ); - if ( defined( 'GUTENBERG_LIVE_RELOAD' ) && GUTENBERG_LIVE_RELOAD ) { $live_reload_url = ( GUTENBERG_LIVE_RELOAD === true ) ? 'http://localhost:35729/livereload.js' : GUTENBERG_LIVE_RELOAD; @@ -830,11 +823,21 @@ function gutenberg_register_vendor_scripts() { wp_add_inline_script( 'lodash', 'window.lodash = _.noConflict();' ); gutenberg_register_vendor_script( 'wp-polyfill-fetch', - 'https://unpkg.com/whatwg-fetch/fetch.js' + 'https://unpkg.com/whatwg-fetch/fetch.js', + array( 'wp-deprecated' ) + ); + wp_add_inline_script( + 'wp-polyfill-fetch', + 'wp.deprecated( "wp-polyfill-fetch script handle", { plugin: "Gutenberg", version: "4.0" } );' ); gutenberg_register_vendor_script( 'wp-polyfill-promise', - 'https://unpkg.com/promise-polyfill@7.0.0/dist/promise' . $suffix . '.js' + 'https://unpkg.com/promise-polyfill@7.0.0/dist/promise' . $suffix . '.js', + array( 'wp-deprecated' ) + ); + wp_add_inline_script( + 'wp-polyfill-promise', + 'wp.deprecated( "wp-polyfill-promise script handle", { plugin: "Gutenberg", version: "4.0" } );' ); gutenberg_register_vendor_script( 'wp-polyfill-formdata', @@ -844,6 +847,10 @@ function gutenberg_register_vendor_scripts() { 'wp-polyfill-node-contains', 'https://unpkg.com/polyfill-library@3.26.0-0/polyfills/Node/prototype/contains/polyfill.js' ); + gutenberg_register_vendor_script( + 'wp-polyfill-ecmascript', + 'https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.0.0/polyfill' . $suffix . '.js' + ); } /** diff --git a/packages/babel-preset-default/index.js b/packages/babel-preset-default/index.js index d62a0c02dd24f..866bae6dfea8a 100644 --- a/packages/babel-preset-default/index.js +++ b/packages/babel-preset-default/index.js @@ -8,11 +8,8 @@ module.exports = function( api ) { targets: { browsers: [ 'extends @wordpress/browserslist-config' ], }, - useBuiltIns: 'usage', - } ], - isTestEnv && [ '@babel/preset-env', { - useBuiltIns: 'usage', } ], + isTestEnv && [ '@babel/preset-env' ], ].filter( Boolean ), plugins: [ '@babel/plugin-proposal-object-rest-spread', From f64e7b4df7f7afc48cfd43f6ce9a71172bf3e481 Mon Sep 17 00:00:00 2001 From: Andrew Duthie Date: Wed, 5 Sep 2018 17:56:08 -0400 Subject: [PATCH 2/9] Packages: Babel Preset Default: Note breaking change to omit useBuiltIns --- packages/babel-preset-default/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/babel-preset-default/CHANGELOG.md b/packages/babel-preset-default/CHANGELOG.md index 79b5acdc2646e..dfb37a7b58910 100644 --- a/packages/babel-preset-default/CHANGELOG.md +++ b/packages/babel-preset-default/CHANGELOG.md @@ -1,3 +1,9 @@ +## 3.0.0 (Unreleased) + +## Breaking Change + +- The configured `@babel/preset-env` preset will no longer pass `useBuiltIns: 'usage'` as an option. It is therefore expected that a polyfill serve in its place, if necessary. + ## 2.1.0 (2018-09-05) ### New Feature From d77cf58b849266a2ad3c0ac2ea0a0d6350d50fb0 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 6 Sep 2018 09:35:24 +0100 Subject: [PATCH 3/9] Fix unit test failure due to the removal of polyfills from the transpiled files --- .../babel-preset-default/test/__snapshots__/index.js.snap | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/babel-preset-default/test/__snapshots__/index.js.snap b/packages/babel-preset-default/test/__snapshots__/index.js.snap index 683fe20da4ec3..d1f556054d858 100644 --- a/packages/babel-preset-default/test/__snapshots__/index.js.snap +++ b/packages/babel-preset-default/test/__snapshots__/index.js.snap @@ -3,14 +3,6 @@ exports[`Babel preset default transpilation works properly 1`] = ` "\\"use strict\\"; -require(\\"regenerator-runtime/runtime\\"); - -require(\\"core-js/modules/es7.symbol.async-iterator\\"); - -require(\\"core-js/modules/es6.symbol\\"); - -require(\\"core-js/modules/es6.promise\\"); - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"next\\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"throw\\", err); } _next(undefined); }); }; } From aceb6bee987987fbf4c85d6da9549f47edeaa220 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 6 Sep 2018 09:44:36 +0100 Subject: [PATCH 4/9] Remove polyfills from all our babel configs --- bin/packages/get-babel-config.js | 10 +--------- packages/babel-preset-default/index.js | 6 +++++- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/bin/packages/get-babel-config.js b/bin/packages/get-babel-config.js index cdbce9b51a58a..8e6625bee6549 100644 --- a/bin/packages/get-babel-config.js +++ b/bin/packages/get-babel-config.js @@ -35,17 +35,11 @@ const babelConfigs = { {}, babelDefaultConfig, { - plugins: map( - plugins, - ( plugin ) => overrideOptions( plugin, '@babel/plugin-transform-runtime', { - corejs: false, - } ) - ), + plugins: plugins, presets: map( babelDefaultConfig.presets, ( preset ) => overrideOptions( preset, '@babel/preset-env', { modules: 'commonjs', - useBuiltIns: false, } ) ), } @@ -57,7 +51,6 @@ const babelConfigs = { plugins: map( plugins, ( plugin ) => overrideOptions( plugin, '@babel/plugin-transform-runtime', { - corejs: false, useESModules: true, } ) ), @@ -65,7 +58,6 @@ const babelConfigs = { babelDefaultConfig.presets, ( preset ) => overrideOptions( preset, '@babel/preset-env', { modules: false, - useBuiltIns: false, } ) ), } diff --git a/packages/babel-preset-default/index.js b/packages/babel-preset-default/index.js index 866bae6dfea8a..32eb8a1b86a1e 100644 --- a/packages/babel-preset-default/index.js +++ b/packages/babel-preset-default/index.js @@ -17,7 +17,11 @@ module.exports = function( api ) { pragma: 'createElement', } ], '@babel/plugin-proposal-async-generator-functions', - ! isTestEnv && [ '@babel/plugin-transform-runtime', { corejs: 2 } ], + ! isTestEnv && [ '@babel/plugin-transform-runtime', { + corejs: false, // we polyfill so we don't need core-js + helpers: true, + regenerator: false, + } ], ].filter( Boolean ), }; }; From 3a3395b89af6e9bb86d909782c0ca3f4912cfdfa Mon Sep 17 00:00:00 2001 From: Grzegorz Ziolkowski Date: Thu, 6 Sep 2018 11:01:49 +0200 Subject: [PATCH 5/9] Further improve Babel preset to work properly with test env --- bin/packages/get-babel-config.js | 2 +- packages/babel-preset-default/index.js | 11 +++++--- .../test/__snapshots__/index.js.snap | 25 +++---------------- packages/babel-preset-default/test/index.js | 1 + 4 files changed, 13 insertions(+), 26 deletions(-) diff --git a/bin/packages/get-babel-config.js b/bin/packages/get-babel-config.js index 8e6625bee6549..e79bc306d07c4 100644 --- a/bin/packages/get-babel-config.js +++ b/bin/packages/get-babel-config.js @@ -35,7 +35,7 @@ const babelConfigs = { {}, babelDefaultConfig, { - plugins: plugins, + plugins, presets: map( babelDefaultConfig.presets, ( preset ) => overrideOptions( preset, '@babel/preset-env', { diff --git a/packages/babel-preset-default/index.js b/packages/babel-preset-default/index.js index 32eb8a1b86a1e..babaa20dc59f1 100644 --- a/packages/babel-preset-default/index.js +++ b/packages/babel-preset-default/index.js @@ -9,7 +9,11 @@ module.exports = function( api ) { browsers: [ 'extends @wordpress/browserslist-config' ], }, } ], - isTestEnv && [ '@babel/preset-env' ], + isTestEnv && [ '@babel/preset-env', { + targets: { + node: 'current', + }, + } ], ].filter( Boolean ), plugins: [ '@babel/plugin-proposal-object-rest-spread', @@ -18,9 +22,10 @@ module.exports = function( api ) { } ], '@babel/plugin-proposal-async-generator-functions', ! isTestEnv && [ '@babel/plugin-transform-runtime', { - corejs: false, // we polyfill so we don't need core-js + corejs: false, // We polyfill so we don't need core-js. helpers: true, - regenerator: false, + regenerator: false, // We polyfill so we don't need regenerator. + useESModules: false, } ], ].filter( Boolean ), }; diff --git a/packages/babel-preset-default/test/__snapshots__/index.js.snap b/packages/babel-preset-default/test/__snapshots__/index.js.snap index d1f556054d858..5cf000511103d 100644 --- a/packages/babel-preset-default/test/__snapshots__/index.js.snap +++ b/packages/babel-preset-default/test/__snapshots__/index.js.snap @@ -1,28 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Babel preset default transpilation works properly 1`] = ` -"\\"use strict\\"; - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"next\\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \\"throw\\", err); } _next(undefined); }); }; } - -function _awaitAsyncGenerator(value) { return new _AwaitValue(value); } - -function _wrapAsyncGenerator(fn) { return function () { return new _AsyncGenerator(fn.apply(this, arguments)); }; } - -function _AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; var wrappedAwait = value instanceof _AwaitValue; Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) { if (wrappedAwait) { resume(\\"next\\", arg); return; } settle(result.done ? \\"return\\" : \\"normal\\", arg); }, function (err) { resume(\\"throw\\", err); }); } catch (err) { settle(\\"throw\\", err); } } function settle(type, value) { switch (type) { case \\"return\\": front.resolve({ value: value, done: true }); break; case \\"throw\\": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== \\"function\\") { this.return = undefined; } } - -if (typeof Symbol === \\"function\\" && Symbol.asyncIterator) { _AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } - -_AsyncGenerator.prototype.next = function (arg) { return this._invoke(\\"next\\", arg); }; - -_AsyncGenerator.prototype.throw = function (arg) { return this._invoke(\\"throw\\", arg); }; - -_AsyncGenerator.prototype.return = function (arg) { return this._invoke(\\"return\\", arg); }; - -function _AwaitValue(value) { this.wrapped = value; } - +"import _asyncToGenerator from \\"@babel/runtime/helpers/asyncToGenerator\\"; +import _awaitAsyncGenerator from \\"@babel/runtime/helpers/awaitAsyncGenerator\\"; +import _wrapAsyncGenerator from \\"@babel/runtime/helpers/wrapAsyncGenerator\\"; describe('Babel preset default', function () { function foo() { return _foo.apply(this, arguments); diff --git a/packages/babel-preset-default/test/index.js b/packages/babel-preset-default/test/index.js index 583326d065152..7465ce2f73512 100644 --- a/packages/babel-preset-default/test/index.js +++ b/packages/babel-preset-default/test/index.js @@ -16,6 +16,7 @@ describe( 'Babel preset default', () => { const output = transform( input, { configFile: false, + envName: 'production', presets: [ babelPresetDefault ], } ); From 06a22319747532b3818d41b52e16316e24ac7101 Mon Sep 17 00:00:00 2001 From: Grzegorz Ziolkowski Date: Thu, 6 Sep 2018 12:29:10 +0200 Subject: [PATCH 6/9] Fix Babel preset configuration for tests --- packages/babel-preset-default/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/babel-preset-default/index.js b/packages/babel-preset-default/index.js index babaa20dc59f1..a2bfedebe1b37 100644 --- a/packages/babel-preset-default/index.js +++ b/packages/babel-preset-default/index.js @@ -10,9 +10,7 @@ module.exports = function( api ) { }, } ], isTestEnv && [ '@babel/preset-env', { - targets: { - node: 'current', - }, + useBuiltIns: 'usage', } ], ].filter( Boolean ), plugins: [ From e0f38537239033bb30f9f13830bfd23888a4a124 Mon Sep 17 00:00:00 2001 From: Riad Benguella Date: Thu, 6 Sep 2018 10:23:08 +0100 Subject: [PATCH 7/9] Fix the block toolbar styling issues in IE --- packages/components/src/toolbar/style.scss | 1 + .../editor/src/components/rich-text/format-toolbar/style.scss | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/components/src/toolbar/style.scss b/packages/components/src/toolbar/style.scss index 8bb56b274b2de..13d609e3d6558 100644 --- a/packages/components/src/toolbar/style.scss +++ b/packages/components/src/toolbar/style.scss @@ -3,6 +3,7 @@ border: $border-width solid $light-gray-500; background-color: $white; display: flex; + flex-shrink: 0; } div.components-toolbar { diff --git a/packages/editor/src/components/rich-text/format-toolbar/style.scss b/packages/editor/src/components/rich-text/format-toolbar/style.scss index 510b62166ecc7..1e1df05d7c99a 100644 --- a/packages/editor/src/components/rich-text/format-toolbar/style.scss +++ b/packages/editor/src/components/rich-text/format-toolbar/style.scss @@ -1,5 +1,6 @@ .editor-format-toolbar { - display: inline-flex; + display: flex; + flex-shrink: 0; } .editor-format-toolbar__link-container { From 260e7e1dd8b58611b4ce9dffea8a70823ba99f65 Mon Sep 17 00:00:00 2001 From: Andrew Duthie Date: Thu, 6 Sep 2018 08:27:17 -0400 Subject: [PATCH 8/9] Framework: Restore window fetch polyfill Not part of ECMAScript standard, so not provided through Babel polyfill --- lib/client-assets.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/client-assets.php b/lib/client-assets.php index 4ecf736cce796..fcce6fd3d2f96 100644 --- a/lib/client-assets.php +++ b/lib/client-assets.php @@ -171,6 +171,15 @@ function gutenberg_register_scripts_and_styles() { filemtime( gutenberg_dir_path() . 'build/api-fetch/index.js' ), true ); + wp_add_inline_script( + 'wp-api-fetch', + gutenberg_get_script_polyfill( + array( + '\'fetch\' in window' => 'wp-polyfill-fetch', + ) + ), + 'before' + ); wp_add_inline_script( 'wp-api-fetch', sprintf( @@ -823,12 +832,7 @@ function gutenberg_register_vendor_scripts() { wp_add_inline_script( 'lodash', 'window.lodash = _.noConflict();' ); gutenberg_register_vendor_script( 'wp-polyfill-fetch', - 'https://unpkg.com/whatwg-fetch/fetch.js', - array( 'wp-deprecated' ) - ); - wp_add_inline_script( - 'wp-polyfill-fetch', - 'wp.deprecated( "wp-polyfill-fetch script handle", { plugin: "Gutenberg", version: "4.0" } );' + 'https://unpkg.com/whatwg-fetch/fetch.js' ); gutenberg_register_vendor_script( 'wp-polyfill-promise', From 871ce31dcfddaadc9e88f47d3ad3698773b0d240 Mon Sep 17 00:00:00 2001 From: Andrew Duthie Date: Thu, 6 Sep 2018 08:46:17 -0400 Subject: [PATCH 9/9] Framework: Alphabetize script dependencies --- lib/client-assets.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/client-assets.php b/lib/client-assets.php index fcce6fd3d2f96..446a7c68409f6 100644 --- a/lib/client-assets.php +++ b/lib/client-assets.php @@ -214,7 +214,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-compose', gutenberg_url( 'build/compose/index.js' ), - array( 'lodash', 'wp-element', 'wp-polyfill-ecmascript', 'wp-is-shallow-equal' ), + array( 'lodash', 'wp-element', 'wp-is-shallow-equal', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/compose/index.js' ), true ); @@ -239,8 +239,8 @@ function gutenberg_register_scripts_and_styles() { 'lodash', 'wp-compose', 'wp-element', - 'wp-polyfill-ecmascript', 'wp-is-shallow-equal', + 'wp-polyfill-ecmascript', 'wp-redux-routine', ), filemtime( gutenberg_dir_path() . 'build/data/index.js' ), @@ -264,7 +264,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-core-data', gutenberg_url( 'build/core-data/index.js' ), - array( 'wp-polyfill-ecmascript', 'wp-data', 'wp-api-fetch', 'wp-url', 'lodash' ), + array( 'wp-data', 'wp-api-fetch', 'wp-polyfill-ecmascript', 'wp-url', 'lodash' ), filemtime( gutenberg_dir_path() . 'build/core-data/index.js' ), true ); @@ -373,12 +373,12 @@ function gutenberg_register_scripts_and_styles() { 'wp-deprecated', 'wp-dom', 'wp-element', - 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keycodes', + 'wp-polyfill-ecmascript', 'wp-url', ), filemtime( gutenberg_dir_path() . 'build/components/index.js' ), @@ -399,10 +399,10 @@ function gutenberg_register_scripts_and_styles() { 'wp-deprecated', 'wp-dom', 'wp-element', - 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', + 'wp-polyfill-ecmascript', 'wp-shortcode', 'lodash', ), @@ -431,12 +431,12 @@ function gutenberg_register_scripts_and_styles() { 'wp-compose', 'wp-core-data', 'wp-data', - 'wp-polyfill-ecmascript', 'wp-editor', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-keycodes', + 'wp-polyfill-ecmascript', 'wp-url', 'wp-viewport', ), @@ -448,11 +448,11 @@ function gutenberg_register_scripts_and_styles() { gutenberg_url( 'build/nux/index.js' ), array( 'wp-element', - 'wp-polyfill-ecmascript', 'wp-components', 'wp-compose', 'wp-data', 'wp-i18n', + 'wp-polyfill-ecmascript', 'lodash', ), filemtime( gutenberg_dir_path() . 'build/nux/index.js' ), @@ -461,7 +461,7 @@ function gutenberg_register_scripts_and_styles() { wp_register_script( 'wp-plugins', gutenberg_url( 'build/plugins/index.js' ), - array( 'lodash', 'wp-element', 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-compose' ), + array( 'lodash', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-polyfill-ecmascript' ), filemtime( gutenberg_dir_path() . 'build/plugins/index.js' ) ); // Loading the old editor and its config to ensure the classic block works as expected. @@ -586,13 +586,13 @@ function gutenberg_register_scripts_and_styles() { 'wp-deprecated', 'wp-dom', 'wp-element', - 'wp-polyfill-ecmascript', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-keycodes', 'wp-nux', + 'wp-polyfill-ecmascript', 'wp-tinymce', 'wp-token-list', 'wp-url', @@ -622,10 +622,10 @@ function gutenberg_register_scripts_and_styles() { 'wp-editor', 'wp-element', 'wp-embed', - 'wp-polyfill-ecmascript', 'wp-i18n', 'wp-keycodes', 'wp-plugins', + 'wp-polyfill-ecmascript', 'wp-viewport', ), filemtime( gutenberg_dir_path() . 'build/edit-post/index.js' ),