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

[DevTools] upgrade electron to latest version & security improvements (#26337)

## Summary resolves #25667 This PR also resolves several security issues in the standalone app ## How did you test this change? Tested locally `yarn start` in react-devtools package. Everything works normal --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1204123419819195

Mengdi Chen committed Mar 7, 2023 at 22:31 UTC aef930314f55d4b445078f83be53d46028d4574c
5 files changed +80 -140
packages/react-devtools/app.html
+8 -34
@@ -156,28 +156,11 @@
156 </div>
157 </div>
158 <script>
159 - const fs = require('fs');
160 - let options;
161 - let useHttps = false;
159 + // window.api is defined in preload.js
160 + const {electron, readEnv, ip, getDevTools} = window.api;
161 + const {options, useHttps, host, protocol, port} = readEnv();
162
163 - try {
164 - if (process.env.KEY && process.env.CERT) {
165 - options = {
166 - key: fs.readFileSync(process.env.KEY),
167 - cert: fs.readFileSync(process.env.CERT)
168 - };
169 - useHttps = true;
170 - }
171 - } catch (err) {
172 - console.error('Failed to process SSL options - ', err);
173 - options = undefined;
174 - }
175 -
176 - const {clipboard} = require("electron");
177 - const host = process.env.HOST || 'localhost';
178 - const protocol = useHttps ? 'https' : 'http';
179 - const port = Number(process.env.PORT || 8097);
180 - const localIp = require("ip").address();
163 + const localIp = ip.address();
164 const defaultPort = (port === 443 && useHttps) || (port === 80 && !useHttps);
165 const server = defaultPort ? `${protocol}://${host}` : `${protocol}://${host}:${port}`;
166 const serverIp = defaultPort ? `${protocol}://${localIp}` : `${protocol}://${localIp}:${port}`;
@@ -193,7 +176,7 @@
176 range.selectNodeContents(element);
177 selection.removeAllRanges();
178 selection.addRange(range);
196 - clipboard.writeText(event.target.textContent);
179 + electron.clipboard.writeText(event.target.textContent);
180
181 const $promptDiv = $("#box-content-prompt");
182 const $confirmationDiv = $("#box-content-confirmation");
@@ -221,7 +204,7 @@
204 const link = $('#rn-help-link');
205 link.addEventListener('click', event => {
206 event.preventDefault();
224 - require('electron').shell.openExternal(link.href);
207 + electron.shell.openExternal(link.href);
208 });
209
210 const $localhost = $("#localhost");
@@ -241,17 +224,8 @@
224 // Initially attach the listeners
225 attachListeners();
226
244 - let devtools;
245 - try {
246 - devtools = require("react-devtools-core/standalone").default;
247 - } catch (err) {
248 - alert(
249 - err.toString() +
250 - "\n\nDid you run `yarn` and `yarn run build` in packages/react-devtools-core?"
251 - );
252 - }
253 - window.devtools = devtools;
254 - window.server = devtools
227 + window.devtools = getDevTools();
228 + window.server = window.devtools
229 .setContentDOMNode(document.getElementById("container"))
230 .setDisconnectedCallback(attachListeners)
231 .setStatusListener(function(status) {
packages/react-devtools/app.js
+4 -2
@@ -27,8 +27,10 @@ app.on('ready', function () {
27 frame: false,
28 //titleBarStyle: 'customButtonsOnHover',
29 webPreferences: {
30 - nodeIntegration: true,
31 - nodeIntegrationInWorker: true,
30 + contextIsolation: true, // protect against prototype pollution
31 + enableRemoteModule: false, // turn off remote
32 + sandbox: false, // allow preload script to access file system
33 + preload: join(__dirname, 'preload.js'), // use a preload script to expose node globals
34 },
35 });
36
packages/react-devtools/package.json
+1 -1
@@ -23,7 +23,7 @@
23 },
24 "dependencies": {
25 "cross-spawn": "^5.0.1",
26 - "electron": "^11.1.0",
26 + "electron": "^23.1.2",
27 "ip": "^1.1.4",
28 "minimist": "^1.2.3",
29 "react-devtools-core": "4.27.2",
packages/react-devtools/preload.js new
+41
@@ -0,0 +1,41 @@
1 +const {clipboard, shell, contextBridge} = require('electron');
2 +const fs = require('fs');
3 +const {address} = require('ip');
4 +
5 +// Expose protected methods so that render process does not need unsafe node integration
6 +contextBridge.exposeInMainWorld('api', {
7 + electron: {clipboard, shell},
8 + ip: {address},
9 + getDevTools() {
10 + let devtools;
11 + try {
12 + devtools = require('react-devtools-core/standalone').default;
13 + } catch (err) {
14 + alert(
15 + err.toString() +
16 + '\n\nDid you run `yarn` and `yarn run build` in packages/react-devtools-core?',
17 + );
18 + }
19 + return devtools;
20 + },
21 + readEnv() {
22 + let options;
23 + let useHttps = false;
24 + try {
25 + if (process.env.KEY && process.env.CERT) {
26 + options = {
27 + key: fs.readFileSync(process.env.KEY),
28 + cert: fs.readFileSync(process.env.CERT),
29 + };
30 + useHttps = true;
31 + }
32 + } catch (err) {
33 + console.error('Failed to process SSL options - ', err);
34 + options = undefined;
35 + }
36 + const host = process.env.HOST || 'localhost';
37 + const protocol = useHttps ? 'https' : 'http';
38 + const port = +process.env.PORT || 8097;
39 + return {options, useHttps, host, protocol, port};
40 + },
41 +});
yarn.lock
+26 -103
@@ -2005,21 +2005,20 @@
2005 "@cliqz-oss/firefox-client" "0.3.1"
2006 es6-promise "^2.0.1"
2007
2008 -"@electron/get@^1.0.1":
2009 - version "1.12.2"
2010 - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.12.2.tgz#6442066afb99be08cefb9a281e4b4692b33764f3"
2011 - integrity sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==
2008 +"@electron/get@^2.0.0":
2009 + version "2.0.2"
2010 + resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e"
2011 + integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==
2012 dependencies:
2013 debug "^4.1.1"
2014 env-paths "^2.2.0"
2015 fs-extra "^8.1.0"
2016 - got "^9.6.0"
2016 + got "^11.8.5"
2017 progress "^2.0.3"
2018 - sanitize-filename "^1.6.2"
2018 + semver "^6.2.0"
2019 sumchecker "^3.0.1"
2020 optionalDependencies:
2021 - global-agent "^2.0.2"
2022 - global-tunnel-ng "^2.7.1"
2021 + global-agent "^3.0.0"
2022
2023 "@elg/speedscope@1.9.0-a6f84db":
2024 version "1.9.0-a6f84db"
@@ -2918,10 +2917,10 @@
2917 resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.1.tgz#3b5c3a26393c19b400844ac422bd0f631a94d69d"
2918 integrity sha512-aK9jxMypeSrhiYofWWBf/T7O+KwaiAHzM4sveCdWPn71lzUSMimRnKzhXDKfKwV1kWoBo2P1aGgaIYGLf9/ljw==
2919
2921 -"@types/node@^12.0.12":
2922 - version "12.12.48"
2923 - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.48.tgz#4135f064eeed9fcfb4756deea5ba2caa11603391"
2924 - integrity sha512-m3Nmo/YaDUfYzdCQlxjF5pIy7TNyDTAJhIa//xtHcF0dlgYIBKULKnmloCPtByDxtZXrWV8Pge1AKT6/lRvVWg==
2920 +"@types/node@^16.11.26":
2921 + version "16.18.14"
2922 + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.14.tgz#5465ce598486a703caddbefe8603f8a2cffa3461"
2923 + integrity sha512-wvzClDGQXOCVNU4APPopC2KtMYukaF1MN/W3xAmslx22Z4/IF1/izDMekuyoUlwfnDHYCIZGaj7jMwnJKBTxKw==
2924
2925 "@types/prettier@^1.0.0 || ^2.0.0", "@types/prettier@^2.1.5":
2926 version "2.7.2"
@@ -5653,7 +5652,7 @@ concat-map@0.0.1:
5652 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
5653 integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
5654
5656 -concat-stream@1.6.2, concat-stream@^1.4.7, concat-stream@^1.5.0:
5655 +concat-stream@^1.4.7, concat-stream@^1.5.0:
5656 version "1.6.2"
5657 resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
5658 integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -5814,11 +5813,6 @@ core-js@^3.15.0:
5813 resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.0.tgz#1d46fb33720bc1fa7f90d20431f36a5540858986"
5814 integrity sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==
5815
5817 -core-js@^3.6.5:
5818 - version "3.6.5"
5819 - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
5820 - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
5821 -
5816 core-js@^3.8.2:
5817 version "3.27.2"
5818 resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.27.2.tgz#85b35453a424abdcacb97474797815f4d62ebbf7"
@@ -6796,14 +6790,14 @@ electron-to-chromium@^1.4.284:
6790 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
6791 integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
6792
6799 -electron@^11.1.0:
6800 - version "11.1.1"
6801 - resolved "https://registry.yarnpkg.com/electron/-/electron-11.1.1.tgz#188f036f8282798398dca9513e9bb3b10213e3aa"
6802 - integrity sha512-tlbex3xosJgfileN6BAQRotevPRXB/wQIq48QeQ08tUJJrXwE72c8smsM/hbHx5eDgnbfJ2G3a60PmRjHU2NhA==
6793 +electron@^23.1.2:
6794 + version "23.1.2"
6795 + resolved "https://registry.yarnpkg.com/electron/-/electron-23.1.2.tgz#f03e361c94f8dd2407963b5461d19aadea335316"
6796 + integrity sha512-ajE6xzIwH7swf8TlTU5WklDqpI3mPj4Am6690YrpCXzcp+E+dmMBXIajUUNt4joDrFhJC/lC6ZqDS2Q1BApKgQ==
6797 dependencies:
6804 - "@electron/get" "^1.0.1"
6805 - "@types/node" "^12.0.12"
6806 - extract-zip "^1.0.3"
6798 + "@electron/get" "^2.0.0"
6799 + "@types/node" "^16.11.26"
6800 + extract-zip "^2.0.1"
6801
6802 elliptic@^6.0.0, elliptic@^6.5.2:
6803 version "6.5.2"
@@ -6843,7 +6837,7 @@ emojis-list@^3.0.0:
6837 resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
6838 integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
6839
6846 -encodeurl@^1.0.2, encodeurl@~1.0.2:
6840 +encodeurl@~1.0.2:
6841 version "1.0.2"
6842 resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
6843 integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
@@ -7705,16 +7699,6 @@ extract-banner@0.1.2:
7699 strip-bom-string "^0.1.2"
7700 strip-use-strict "^0.1.0"
7701
7708 -extract-zip@^1.0.3:
7709 - version "1.6.7"
7710 - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
7711 - integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=
7712 - dependencies:
7713 - concat-stream "1.6.2"
7714 - debug "2.6.9"
7715 - mkdirp "0.5.1"
7716 - yauzl "2.4.1"
7717 -
7702 extract-zip@^2.0.1:
7703 version "2.0.1"
7704 resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
@@ -7880,13 +7864,6 @@ fbjs@^1.0.0:
7864 setimmediate "^1.0.5"
7865 ua-parser-js "^0.7.18"
7866
7883 -fd-slicer@~1.0.1:
7884 - version "1.0.1"
7885 - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
7886 - integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=
7887 - dependencies:
7888 - pend "~1.2.0"
7889 -
7867 fd-slicer@~1.1.0:
7868 version "1.1.0"
7869 resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
@@ -8559,13 +8536,12 @@ glob@^6.0.1:
8536 once "^1.3.0"
8537 path-is-absolute "^1.0.0"
8538
8562 -global-agent@^2.0.2:
8563 - version "2.1.12"
8564 - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.12.tgz#e4ae3812b731a9e81cbf825f9377ef450a8e4195"
8565 - integrity sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==
8539 +global-agent@^3.0.0:
8540 + version "3.0.0"
8541 + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
8542 + integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==
8543 dependencies:
8544 boolean "^3.0.1"
8568 - core-js "^3.6.5"
8545 es6-error "^4.1.1"
8546 matcher "^3.0.0"
8547 roarr "^2.15.3"
@@ -8622,16 +8598,6 @@ global-prefix@^3.0.0:
8598 kind-of "^6.0.2"
8599 which "^1.3.1"
8600
8625 -global-tunnel-ng@^2.7.1:
8626 - version "2.7.1"
8627 - resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f"
8628 - integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==
8629 - dependencies:
8630 - encodeurl "^1.0.2"
8631 - lodash "^4.17.10"
8632 - npm-conf "^1.1.3"
8633 - tunnel "^0.0.6"
8634 -
8601 globals@^11.1.0, globals@^11.7.0:
8602 version "11.12.0"
8603 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -8721,7 +8687,7 @@ google-closure-compiler@^20230206.0.0:
8687 google-closure-compiler-osx "^20230206.0.0"
8688 google-closure-compiler-windows "^20230206.0.0"
8689
8724 -got@^11.1.4:
8690 +got@^11.1.4, got@^11.8.5:
8691 version "11.8.6"
8692 resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
8693 integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
@@ -11763,11 +11729,6 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
11729 dependencies:
11730 brace-expansion "^1.1.7"
11731
11766 -minimist@0.0.8:
11767 - version "0.0.8"
11768 - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
11769 - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
11770 -
11732 minimist@1.x, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
11733 version "1.2.5"
11734 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
@@ -11865,13 +11826,6 @@ mixin-deep@^1.2.0:
11826 for-in "^1.0.2"
11827 is-extendable "^1.0.1"
11828
11868 -mkdirp@0.5.1:
11869 - version "0.5.1"
11870 - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
11871 - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
11872 - dependencies:
11873 - minimist "0.0.8"
11874 -
11829 mkdirp@1.0.4:
11830 version "1.0.4"
11831 resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
@@ -12256,7 +12210,7 @@ npm-bundled@^1.0.1, npm-bundled@^1.1.1:
12210 dependencies:
12211 npm-normalize-package-bin "^1.0.1"
12212
12259 -npm-conf@^1.1.0, npm-conf@^1.1.3:
12213 +npm-conf@^1.1.0:
12214 version "1.1.3"
12215 resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
12216 integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==
@@ -14541,13 +14495,6 @@ safe-regex@^1.1.0:
14495 resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
14496 integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
14497
14544 -sanitize-filename@^1.6.2:
14545 - version "1.6.3"
14546 - resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378"
14547 - integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==
14548 - dependencies:
14549 - truncate-utf8-bytes "^1.0.0"
14550 -
14498 sax@>=0.6.0, sax@~1.2.4:
14499 version "1.2.4"
14500 resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -16108,13 +16055,6 @@ trim-repeated@^1.0.0:
16055 dependencies:
16056 escape-string-regexp "^1.0.2"
16057
16111 -truncate-utf8-bytes@^1.0.0:
16112 - version "1.0.2"
16113 - resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
16114 - integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys=
16115 - dependencies:
16116 - utf8-byte-length "^1.0.1"
16117 -
16058 ts-node@8.9.1:
16059 version "8.9.1"
16060 resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5"
@@ -16172,11 +16112,6 @@ tunnel-agent@^0.6.0:
16112 dependencies:
16113 safe-buffer "^5.0.1"
16114
16175 -tunnel@^0.0.6:
16176 - version "0.0.6"
16177 - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
16178 - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
16179 -
16115 tweetnacl@^0.14.3, tweetnacl@~0.14.0:
16116 version "0.14.5"
16117 resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
@@ -16539,11 +16474,6 @@ userhome@^1.0.0:
16474 resolved "https://registry.yarnpkg.com/userhome/-/userhome-1.0.0.tgz#b6491ff12d21a5e72671df9ccc8717e1c6688c0b"
16475 integrity sha1-tkkf8S0hpecmcd+czIcX4cZojAs=
16476
16542 -utf8-byte-length@^1.0.1:
16543 - version "1.0.4"
16544 - resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
16545 - integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=
16546 -
16477 util-deprecate@^1.0.1, util-deprecate@~1.0.1:
16478 version "1.0.2"
16479 resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -17497,13 +17427,6 @@ yauzl@2.10.0, yauzl@^2.10.0, yauzl@^2.4.2:
17427 buffer-crc32 "~0.2.3"
17428 fd-slicer "~1.1.0"
17429
17500 -yauzl@2.4.1:
17501 - version "2.4.1"
17502 - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
17503 - integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=
17504 - dependencies:
17505 - fd-slicer "~1.0.1"
17506 -
17430 yazl@^2.5.1:
17431 version "2.5.1"
17432 resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35"