Skip to content

Commit a67b9bd

Browse files
lexie011EzioLi01
andauthored
Add command to open expo upgrade helper in web page (#2232)
* Add command to open expo upgrade helper in web page * Fix security issue (#2239) --------- Co-authored-by: Ezio Li <[email protected]>
1 parent 8bbc3e4 commit a67b9bd

File tree

6 files changed

+39
-49
lines changed

6 files changed

+39
-49
lines changed

package.json

+6
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,12 @@
465465
"title": "Enable & Disable Expo Hermes",
466466
"category": "React Native",
467467
"enablement": "!config.security.workspace.trust.enabled || isWorkspaceTrusted"
468+
},
469+
{
470+
"command": "reactNative.openExpoUpgradeHelper",
471+
"title": "Open expo upgrade helper in web page",
472+
"category": "React Native",
473+
"enablement": "!config.security.workspace.trust.enabled || isWorkspaceTrusted"
468474
}
469475
],
470476
"menus": {

src/common/error/errorStrings.ts

+1
Original file line numberDiff line numberDiff line change
@@ -421,4 +421,5 @@ export const ERROR_STRINGS = {
421421
),
422422
[InternalErrorCode.FailedToEnableHermes]: "Failed to make changes to Hermes",
423423
[InternalErrorCode.FailedToEnableExpoHermes]: "Failed to make changes to Expo Hermes",
424+
[InternalErrorCode.FailedToOpenExpoUpgradeHelper]: "Failed to open expo upgrade helper",
424425
};

src/common/error/internalErrorCode.ts

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export enum InternalErrorCode {
3434
FailedToReopenQRCode = 129,
3535
FailedToEnableHermes = 130,
3636
FailedToEnableExpoHermes = 131,
37+
FailedToOpenExpoUpgradeHelper = 132,
3738

3839
// Device Deployer errors
3940
IOSDeployNotFound = 201,

src/extension/commands/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,4 @@ export * from "./prebuildClean";
3333
export * from "./reopenQRCode";
3434
export * from "./enableHermes";
3535
export * from "./enableExpoHemes";
36+
export * from "./openExpoUpgradeHelper";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license. See LICENSE file in the project root for details.
3+
4+
import * as assert from "assert";
5+
import * as vscode from "vscode";
6+
import { OutputChannelLogger } from "../log/OutputChannelLogger";
7+
import { ErrorHelper } from "../../common/error/errorHelper";
8+
import { InternalErrorCode } from "../../common/error/internalErrorCode";
9+
import { Command } from "./util/command";
10+
11+
const logger = OutputChannelLogger.getMainChannel();
12+
13+
export class openExpoUpgradeHelper extends Command {
14+
codeName = "openExpoUpgradeHelper";
15+
label = "Open expo upgrade helper in web page";
16+
error = ErrorHelper.getInternalError(InternalErrorCode.FailedToOpenExpoUpgradeHelper);
17+
18+
async baseFn(): Promise<void> {
19+
assert(this.project);
20+
const ExpoUrl = "https://docs.expo.dev/bare/upgrade";
21+
logger.info("Open expo upgrade helper in web browser.");
22+
await vscode.env.openExternal(vscode.Uri.parse(ExpoUrl));
23+
}
24+
}

test/smoke/package/yarn.lock

+6-49
Original file line numberDiff line numberDiff line change
@@ -1636,22 +1636,6 @@ bluebird@^2.9.34:
16361636
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
16371637
integrity sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==
16381638

1639-
1640-
version "1.18.3"
1641-
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
1642-
integrity sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==
1643-
dependencies:
1644-
bytes "3.0.0"
1645-
content-type "~1.0.4"
1646-
debug "2.6.9"
1647-
depd "~1.1.2"
1648-
http-errors "~1.6.3"
1649-
iconv-lite "0.4.23"
1650-
on-finished "~2.3.0"
1651-
qs "6.5.2"
1652-
raw-body "2.3.3"
1653-
type-is "~1.6.16"
1654-
16551639
[email protected], body-parser@^1.20.1:
16561640
version "1.20.3"
16571641
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
@@ -1665,7 +1649,7 @@ [email protected], body-parser@^1.20.1:
16651649
http-errors "2.0.0"
16661650
iconv-lite "0.4.24"
16671651
on-finished "2.4.1"
1668-
qs "6.13.0"
1652+
qs "~6.5.2"
16691653
raw-body "2.5.2"
16701654
type-is "~1.6.18"
16711655
unpipe "1.0.0"
@@ -3025,7 +3009,7 @@ express@^4.17.3:
30253009
parseurl "~1.3.3"
30263010
path-to-regexp "0.1.10"
30273011
proxy-addr "~2.0.7"
3028-
qs "6.13.0"
3012+
qs "~6.5.2"
30293013
range-parser "~1.2.1"
30303014
safe-buffer "5.2.1"
30313015
send "0.19.0"
@@ -5049,12 +5033,7 @@ node-fetch@^2.6.0, node-fetch@^2.6.1:
50495033
dependencies:
50505034
whatwg-url "^5.0.0"
50515035

5052-
5053-
version "0.10.0"
5054-
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
5055-
integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
5056-
5057-
node-forge@^1:
5036+
node-forge@^1.3.0:
50585037
version "1.3.1"
50595038
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
50605039
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
@@ -5487,11 +5466,6 @@ [email protected]:
54875466
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
54885467
integrity "sha1-Z+kQjFwFUbnlMmBkOH3kdjxNX4s= sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
54895468

5490-
5491-
version "0.1.7"
5492-
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
5493-
integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
5494-
54955469
path-type@^4.0.0:
54965470
version "4.0.0"
54975471
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
@@ -5971,19 +5945,7 @@ puppeteer-core@^13.0.0:
59715945
rimraf "3.0.2"
59725946
tar-fs "2.1.1"
59735947
unbzip2-stream "1.4.3"
5974-
ws "8.5.0"
5975-
5976-
5977-
version "6.13.0"
5978-
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
5979-
integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
5980-
dependencies:
5981-
side-channel "^1.0.6"
5982-
5983-
5984-
version "6.5.2"
5985-
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
5986-
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
5948+
ws "^8.17.1"
59875949

59885950
qs@~6.5.2:
59895951
version "6.5.3"
@@ -6384,7 +6346,7 @@ selfsigned@^2.1.1:
63846346
integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==
63856347
dependencies:
63866348
"@types/node-forge" "^1.3.0"
6387-
node-forge "^1"
6349+
node-forge "^1.3.0"
63886350

63896351
63906352
version "7.3.2"
@@ -7713,11 +7675,6 @@ write-file-atomic@^2.3.0:
77137675
imurmurhash "^0.1.4"
77147676
signal-exit "^3.0.2"
77157677

7716-
7717-
version "8.5.0"
7718-
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
7719-
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
7720-
77217678
ws@^8.13.0:
77227679
version "8.18.0"
77237680
resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
@@ -7773,7 +7730,7 @@ [email protected]:
77737730
md5hex "1.0.0"
77747731
minimatch "3.0.4"
77757732
mv "2.1.1"
7776-
node-forge "0.10.0"
7733+
node-forge "^1.3.0"
77777734
nullthrows "1.1.1"
77787735
p-map "3.0.0"
77797736
p-retry "4.1.0"

0 commit comments

Comments
 (0)