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=