@samitouri / QOS-React-2 / commits / e6ea3d3873

Use Closure Compiler to compile to ES5 instead of Babel (#18449)

* Upgrade Closure There are newer versions but they don't yet have corresponding releases of google-closure-compiler-osx. * Configure build * Refactor ReactSymbols a bit Provides a little better output.

Sebastian Markbåge committed Apr 1, 2020 at 12:08 UTC e6ea3d387335a37c23a4e5e2a84d726b78a3c9c0
5 files changed +158 -104
package.json
+1 -1
@@ -61,7 +61,7 @@
61 "flow-bin": "0.97",
62 "glob": "^7.1.6",
63 "glob-stream": "^6.1.0",
64 - "google-closure-compiler": "^20200112.0.0",
64 + "google-closure-compiler": "^20200224.0.0",
65 "gzip-size": "^5.1.1",
66 "jasmine-check": "^1.0.0-rc.0",
67 "jest": "^24.9.0",
packages/shared/ReactSymbols.js
+37 -44
@@ -9,51 +9,44 @@
9
10 // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
11 // nor polyfill, then a plain number is used for performance.
12 -const hasSymbol = typeof Symbol === 'function' && Symbol.for;
12 +export let REACT_ELEMENT_TYPE = 0xeac7;
13 +export let REACT_PORTAL_TYPE = 0xeaca;
14 +export let REACT_FRAGMENT_TYPE = 0xeacb;
15 +export let REACT_STRICT_MODE_TYPE = 0xeacc;
16 +export let REACT_PROFILER_TYPE = 0xead2;
17 +export let REACT_PROVIDER_TYPE = 0xeacd;
18 +export let REACT_CONTEXT_TYPE = 0xeace;
19 +export let REACT_FORWARD_REF_TYPE = 0xead0;
20 +export let REACT_SUSPENSE_TYPE = 0xead1;
21 +export let REACT_SUSPENSE_LIST_TYPE = 0xead8;
22 +export let REACT_MEMO_TYPE = 0xead3;
23 +export let REACT_LAZY_TYPE = 0xead4;
24 +export let REACT_BLOCK_TYPE = 0xead9;
25 +export let REACT_SERVER_BLOCK_TYPE = 0xeada;
26 +export let REACT_FUNDAMENTAL_TYPE = 0xead5;
27 +export let REACT_RESPONDER_TYPE = 0xead6;
28 +export let REACT_SCOPE_TYPE = 0xead7;
29
14 -export const REACT_ELEMENT_TYPE = hasSymbol
15 - ? Symbol.for('react.element')
16 - : 0xeac7;
17 -export const REACT_PORTAL_TYPE = hasSymbol
18 - ? Symbol.for('react.portal')
19 - : 0xeaca;
20 -export const REACT_FRAGMENT_TYPE = hasSymbol
21 - ? Symbol.for('react.fragment')
22 - : 0xeacb;
23 -export const REACT_STRICT_MODE_TYPE = hasSymbol
24 - ? Symbol.for('react.strict_mode')
25 - : 0xeacc;
26 -export const REACT_PROFILER_TYPE = hasSymbol
27 - ? Symbol.for('react.profiler')
28 - : 0xead2;
29 -export const REACT_PROVIDER_TYPE = hasSymbol
30 - ? Symbol.for('react.provider')
31 - : 0xeacd;
32 -export const REACT_CONTEXT_TYPE = hasSymbol
33 - ? Symbol.for('react.context')
34 - : 0xeace;
35 -export const REACT_FORWARD_REF_TYPE = hasSymbol
36 - ? Symbol.for('react.forward_ref')
37 - : 0xead0;
38 -export const REACT_SUSPENSE_TYPE = hasSymbol
39 - ? Symbol.for('react.suspense')
40 - : 0xead1;
41 -export const REACT_SUSPENSE_LIST_TYPE = hasSymbol
42 - ? Symbol.for('react.suspense_list')
43 - : 0xead8;
44 -export const REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
45 -export const REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
46 -export const REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
47 -export const REACT_SERVER_BLOCK_TYPE = hasSymbol
48 - ? Symbol.for('react.server.block')
49 - : 0xeada;
50 -export const REACT_FUNDAMENTAL_TYPE = hasSymbol
51 - ? Symbol.for('react.fundamental')
52 - : 0xead5;
53 -export const REACT_RESPONDER_TYPE = hasSymbol
54 - ? Symbol.for('react.responder')
55 - : 0xead6;
56 -export const REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
30 +if (typeof Symbol === 'function' && Symbol.for) {
31 + const symbolFor = Symbol.for;
32 + REACT_ELEMENT_TYPE = symbolFor('react.element');
33 + REACT_PORTAL_TYPE = symbolFor('react.portal');
34 + REACT_FRAGMENT_TYPE = symbolFor('react.fragment');
35 + REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');
36 + REACT_PROFILER_TYPE = symbolFor('react.profiler');
37 + REACT_PROVIDER_TYPE = symbolFor('react.provider');
38 + REACT_CONTEXT_TYPE = symbolFor('react.context');
39 + REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');
40 + REACT_SUSPENSE_TYPE = symbolFor('react.suspense');
41 + REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');
42 + REACT_MEMO_TYPE = symbolFor('react.memo');
43 + REACT_LAZY_TYPE = symbolFor('react.lazy');
44 + REACT_BLOCK_TYPE = symbolFor('react.block');
45 + REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');
46 + REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');
47 + REACT_RESPONDER_TYPE = symbolFor('react.responder');
48 + REACT_SCOPE_TYPE = symbolFor('react.scope');
49 +}
50
51 const MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
52 const FAUX_ITERATOR_SYMBOL = '@@iterator';
scripts/rollup/build.js
+39 -3
@@ -97,7 +97,7 @@ const errorCodeOpts = {
97
98 const closureOptions = {
99 compilation_level: 'SIMPLE',
100 - language_in: 'ECMASCRIPT5_STRICT',
100 + language_in: 'ECMASCRIPT_2015',
101 language_out: 'ECMASCRIPT5_STRICT',
102 env: 'CUSTOM',
103 warning_level: 'QUIET',
@@ -105,8 +105,41 @@ const closureOptions = {
105 use_types_for_optimization: false,
106 process_common_js_modules: false,
107 rewrite_polyfills: false,
108 + inject_libraries: false,
109 };
110
111 +// Non-ES2015 stuff applied before closure compiler.
112 +const babelPlugins = [
113 + // These plugins filter out non-ES2015.
114 + '@babel/plugin-transform-flow-strip-types',
115 + ['@babel/plugin-proposal-class-properties', {loose: true}],
116 + 'syntax-trailing-function-commas',
117 + // These use loose mode which avoids embedding a runtime.
118 + // TODO: Remove object spread from the source. Prefer Object.assign instead.
119 + [
120 + '@babel/plugin-proposal-object-rest-spread',
121 + {loose: true, useBuiltIns: true},
122 + ],
123 + ['@babel/plugin-transform-template-literals', {loose: true}],
124 + // TODO: Remove for...of from the source. It requires a runtime to be embedded.
125 + '@babel/plugin-transform-for-of',
126 + // TODO: Remove array spread from the source. Prefer .apply instead.
127 + ['@babel/plugin-transform-spread', {loose: true, useBuiltIns: true}],
128 + '@babel/plugin-transform-parameters',
129 + // TODO: Remove array destructuring from the source. Requires runtime.
130 + ['@babel/plugin-transform-destructuring', {loose: true, useBuiltIns: true}],
131 +];
132 +
133 +const babelToES5Plugins = [
134 + // These plugins transform DEV mode. Closure compiler deals with these in PROD.
135 + '@babel/plugin-transform-literals',
136 + '@babel/plugin-transform-arrow-functions',
137 + '@babel/plugin-transform-block-scoped-functions',
138 + '@babel/plugin-transform-shorthand-properties',
139 + '@babel/plugin-transform-computed-properties',
140 + ['@babel/plugin-transform-block-scoping', {throwIfClosureRequired: true}],
141 +];
142 +
143 function getBabelConfig(
144 updateBabelOptions,
145 bundleType,
@@ -118,11 +151,14 @@ function getBabelConfig(
151 packageName === 'react' || externals.indexOf('react') !== -1;
152 let options = {
153 exclude: '/**/node_modules/**',
154 + babelrc: false,
155 + configFile: false,
156 presets: [],
122 - plugins: [],
157 + plugins: [...babelPlugins],
158 };
159 if (isDevelopment) {
160 options.plugins.push(
161 + ...babelToES5Plugins,
162 // Turn console.error/warn() into a custom wrapper
163 [
164 require('../babel/transform-replace-console-calls'),
@@ -369,7 +405,7 @@ function getPlugins(
405 stripBanner({
406 exclude: 'node_modules/**/*',
407 }),
372 - // Compile to ES5.
408 + // Compile to ES2015.
409 babel(
410 getBabelConfig(
411 updateBabelOptions,
scripts/rollup/plugins/closure-plugin.js
+14 -2
@@ -19,6 +19,16 @@ function compile(flags) {
19 });
20 }
21
22 +function encodeNativeCalls(code) {
23 + // Closure Compiler tries to install a polyfill if we reference the Symbol global.
24 + // We need to temporarily trick Closure that it's not the built-in it's looking for.
25 + return code.replace(/Symbol/g, 'SymbolTmp');
26 +}
27 +
28 +function decodeNativeCalls(code) {
29 + return code.replace(/SymbolTmp/g, 'Symbol');
30 +}
31 +
32 module.exports = function closure(flags = {}) {
33 return {
34 name: 'scripts/rollup/plugins/closure-plugin',
@@ -26,10 +36,12 @@ module.exports = function closure(flags = {}) {
36 const inputFile = tmp.fileSync();
37 const tempPath = inputFile.name;
38 flags = Object.assign({}, flags, {js: tempPath});
29 - await writeFileAsync(tempPath, code, 'utf8');
39 + const filteredCode = encodeNativeCalls(code);
40 + await writeFileAsync(tempPath, filteredCode, 'utf8');
41 const compiledCode = await compile(flags);
42 inputFile.removeCallback();
32 - return {code: compiledCode};
43 + const decodedCode = decodeNativeCalls(compiledCode);
44 + return {code: decodedCode};
45 },
46 };
47 };
yarn.lock
+67 -54
@@ -3609,18 +3609,18 @@ clone@^1.0.2:
3609 integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
3610
3611 clone@^2.1.1:
3612 - version "2.1.1"
3613 - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
3614 - integrity sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=
3612 + version "2.1.2"
3613 + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
3614 + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
3615
3616 cloneable-readable@^1.0.0:
3617 - version "1.0.0"
3618 - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117"
3619 - integrity sha1-pikNQT8hemEjL5XkWP84QYz7ARc=
3617 + version "1.1.3"
3618 + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec"
3619 + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==
3620 dependencies:
3621 inherits "^2.0.1"
3622 - process-nextick-args "^1.0.6"
3623 - through2 "^2.0.1"
3622 + process-nextick-args "^2.0.0"
3623 + readable-stream "^2.3.5"
3624
3625 co@^4.6.0:
3626 version "4.6.0"
@@ -3646,11 +3646,11 @@ collection-visit@^1.0.0:
3646 object-visit "^1.0.0"
3647
3648 color-convert@^1.9.0:
3649 - version "1.9.0"
3650 - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
3651 - integrity sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=
3649 + version "1.9.3"
3650 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
3651 + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
3652 dependencies:
3653 - color-name "^1.1.1"
3653 + color-name "1.1.3"
3654
3655 color-convert@^2.0.1:
3656 version "2.0.1"
@@ -3659,7 +3659,7 @@ color-convert@^2.0.1:
3659 dependencies:
3660 color-name "~1.1.4"
3661
3662 -color-name@^1.1.1:
3662 +color-name@1.1.3:
3663 version "1.1.3"
3664 resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
3665 integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
@@ -6377,46 +6377,46 @@ globby@^6.1.0:
6377 pify "^2.0.0"
6378 pinkie-promise "^2.0.0"
6379
6380 -google-closure-compiler-java@^20200112.0.0:
6381 - version "20200112.0.0"
6382 - resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20200112.0.0.tgz#2b99f5e2869a573a1b35558ff3b6e6bc054a116f"
6383 - integrity sha512-h/ExDCXAw88nOniQSbbK6et31kOwmaDxl6t52dnETCIzituQtGToPzy21vUel1o8o+FvWUybLoap+dEYBam1pA==
6380 +google-closure-compiler-java@^20200224.0.0:
6381 + version "20200224.0.0"
6382 + resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20200224.0.0.tgz#03d71aefd0a07010fd8a7057d09c76f6729767bc"
6383 + integrity sha512-palFcDoScauZjWIsGDzMK6h+IctcRb55I3wJX8Ko/DTSz72xwadRdKm0lGt8OoYL7SKEO+IjgD7s8XrAGpLnlQ==
6384
6385 -google-closure-compiler-js@^20200112.0.0:
6386 - version "20200112.0.0"
6387 - resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200112.0.0.tgz#cb9fc1636671f3ce927e668e29db69b65cae6f2d"
6388 - integrity sha512-xW47rSuiRaql6q1YN7+b3FXIW74b1nCcENVwm9cigw1H5gWoBMBJOmpZiXnjMfmYC+MALjPQ8giMzvSeP+2X5A==
6385 +google-closure-compiler-js@^20200224.0.0:
6386 + version "20200224.0.0"
6387 + resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200224.0.0.tgz#cf4b598abf7be686c683e530529756805b8af500"
6388 + integrity sha512-70VKN0kbnTRtu2dqxDjWZQGfEQIHj7b7oUUCsYPO5oEXCDfgxNc13oYUJXvrTONLRWlHCNl/I8FNrVOwZ3gY/g==
6389
6390 -google-closure-compiler-linux@^20200112.0.0:
6391 - version "20200112.0.0"
6392 - resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20200112.0.0.tgz#e6c7943cc0114046dbe9fc685e4d7d4eb536c1dc"
6393 - integrity sha512-imTfdYP7BVTzzp3y7MuZP+98nEkbX7LZsZtxalNpl56vd+Ysc9/vOHXS14CdSoThaXIVlzX/lfjOlBRqPow+ew==
6390 +google-closure-compiler-linux@^20200224.0.0:
6391 + version "20200224.0.0"
6392 + resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20200224.0.0.tgz#d9608b224b4d8f38d4d34e99a24da54bca6b1902"
6393 + integrity sha512-/BaE889EPrXWOKJVolA9++e99xBDMzeFBf7zF7nBB8PUmU5DlvtsoLL82xnT6nbZC1ktHaETlVx+vYGju8zKBQ==
6394
6395 -google-closure-compiler-osx@^20200112.0.0:
6396 - version "20200112.0.0"
6397 - resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20200112.0.0.tgz#df7a22c0dc32702b47c8ac4521f79bbe439effad"
6398 - integrity sha512-E3S1KqZw4+Zov0VXCkjomPrYhyuuV6jH9InBchQ7cZfipFJjhQmSRf39u4Mu0sINW7GXfODZbzBwOXhEIquFQw==
6395 +google-closure-compiler-osx@^20200224.0.0:
6396 + version "20200224.0.0"
6397 + resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20200224.0.0.tgz#aee62d8b878a662fc73b92419603168c0c3a35ed"
6398 + integrity sha512-WXVNW9nPUqjvCe38mUIlBGEPVPCTKLtdaXC+q+kQdonkJFHNrpdyYWa746Y8cNP/byQyDNpPsqcKseZTLh17sQ==
6399
6400 -google-closure-compiler-windows@^20200112.0.0:
6401 - version "20200112.0.0"
6402 - resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20200112.0.0.tgz#8300d1e651f2c84ed565e729ccf40d6ed7e63771"
6403 - integrity sha512-+5+UJFKXH0LGnYEHSVJxWwhtvX/MI6uebkAQkhma0057QsKs8fOToWuHL8/UbJULB4WUPa3DlHy0+Izs5z6lCQ==
6400 +google-closure-compiler-windows@^20200224.0.0:
6401 + version "20200224.0.0"
6402 + resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20200224.0.0.tgz#cae323b898625ca57b0e87aaddde021a414dda58"
6403 + integrity sha512-l6w2D8r9+GC9CQTAYEMAuNI996Zb6YV5qG7+FR0gCoL6h6S3Mc7mi87bafgwaicsVcmmHE/9kCBuW4ZyTMs5Fg==
6404
6405 -google-closure-compiler@^20200112.0.0:
6406 - version "20200112.0.0"
6407 - resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20200112.0.0.tgz#98d79ed2926b5c9a04c759c3f0853f2102c06ba2"
6408 - integrity sha512-8d43B3hU2pAFy6MD946oslArRe11jPJ/h/VaPPiiSMoSMFxnDpd8jjVJfM2solFSNOOZ9OacA6g/RVGMyp5lvg==
6405 +google-closure-compiler@^20200224.0.0:
6406 + version "20200224.0.0"
6407 + resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20200224.0.0.tgz#ec0e708d9716a48e12fff43fe37fa5cec732a283"
6408 + integrity sha512-V81dRYygdHbZtOtU16VX26xAdJBB1UZyfSg3OTzdNl3l/xEIx1D/L7TYUqjeTXsxcy+JruJ/UfUlIJAOaMRTog==
6409 dependencies:
6410 chalk "2.x"
6411 - google-closure-compiler-java "^20200112.0.0"
6412 - google-closure-compiler-js "^20200112.0.0"
6411 + google-closure-compiler-java "^20200224.0.0"
6412 + google-closure-compiler-js "^20200224.0.0"
6413 minimist "1.x"
6414 vinyl "2.x"
6415 vinyl-sourcemaps-apply "^0.2.0"
6416 optionalDependencies:
6417 - google-closure-compiler-linux "^20200112.0.0"
6418 - google-closure-compiler-osx "^20200112.0.0"
6419 - google-closure-compiler-windows "^20200112.0.0"
6417 + google-closure-compiler-linux "^20200224.0.0"
6418 + google-closure-compiler-osx "^20200224.0.0"
6419 + google-closure-compiler-windows "^20200224.0.0"
6420
6421 got@^6.7.1:
6422 version "6.7.1"
@@ -8929,7 +8929,12 @@ minimist@0.0.8:
8929 resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
8930 integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
8931
8932 -minimist@1.x, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
8932 +minimist@1.x:
8933 + version "1.2.5"
8934 + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
8935 + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
8936 +
8937 +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
8938 version "1.2.0"
8939 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
8940 integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
@@ -10413,15 +10418,10 @@ probe-image-size@4.0.0:
10418 request "^2.83.0"
10419 stream-parser "~0.3.1"
10420
10416 -process-nextick-args@^1.0.6:
10417 - version "1.0.7"
10418 - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
10419 - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
10420 -
10421 -process-nextick-args@~2.0.0:
10422 - version "2.0.0"
10423 - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
10424 - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
10421 +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
10422 + version "2.0.1"
10423 + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
10424 + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
10425
10426 process@^0.11.0, process@^0.11.10, process@~0.11.0:
10427 version "0.11.10"
@@ -10822,7 +10822,7 @@ read-pkg@^3.0.0:
10822 normalize-package-data "^2.3.2"
10823 path-type "^3.0.0"
10824
10825 -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
10825 +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
10826 version "2.3.6"
10827 resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
10828 integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
@@ -10863,6 +10863,19 @@ readable-stream@3, readable-stream@^3.0.1, readable-stream@^3.0.6, readable-stre
10863 string_decoder "^1.1.1"
10864 util-deprecate "^1.0.1"
10865
10866 +readable-stream@^2.1.5, readable-stream@^2.3.5:
10867 + version "2.3.7"
10868 + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
10869 + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
10870 + dependencies:
10871 + core-util-is "~1.0.0"
10872 + inherits "~2.0.3"
10873 + isarray "~1.0.0"
10874 + process-nextick-args "~2.0.0"
10875 + safe-buffer "~5.1.1"
10876 + string_decoder "~1.1.1"
10877 + util-deprecate "~1.0.1"
10878 +
10879 readdir-scoped-modules@^1.1.0:
10880 version "1.1.0"
10881 resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
@@ -12820,7 +12833,7 @@ through2-filter@^2.0.0:
12833 through2 "~2.0.0"
12834 xtend "~4.0.0"
12835
12823 -through2@^2.0.0, through2@^2.0.1, through2@~2.0.0:
12836 +through2@^2.0.0, through2@~2.0.0:
12837 version "2.0.3"
12838 resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
12839 integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=