microsoft/vscode-react-native

Public

mirrored fromhttps://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
1.5.1

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/extension/exponent/xdlInterface.ts

125lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
4import * as XDLPackage from "xdl";
5import * as MetroConfigPackage from "metro-config";
6import PackageLoader from "../../common/packageLoader";
7
8const XDL_PACKAGE = "xdl";
9const METRO_CONFIG_PACKAGE = "@expo/metro-config";
10
11const EXPO_DEPS: string[] = [XDL_PACKAGE, METRO_CONFIG_PACKAGE];
12
13let getXDLPackage: () => Promise<
14 typeof XDLPackage
15> = PackageLoader.getInstance().generateGetPackageFunction<typeof XDLPackage>(
16 { packageName: XDL_PACKAGE },
17 ...EXPO_DEPS,
18);
19let getMetroConfigPackage: () => Promise<
20 typeof MetroConfigPackage
21> = PackageLoader.getInstance().generateGetPackageFunction<typeof MetroConfigPackage>(
22 { packageName: METRO_CONFIG_PACKAGE },
23 ...EXPO_DEPS,
24);
25let getNgrokResolver: () => Promise<XDLPackage.ResolveNgrok> = PackageLoader.getInstance().generateGetPackageFunction<XDLPackage.ResolveNgrok>(
26 {
27 packageName: XDL_PACKAGE,
28 requirePath: "build/start/resolveNgrok",
29 },
30 ...EXPO_DEPS,
31);
32
33export type IUser = XDLPackage.IUser;
34
35export function configReactNativeVersionWargnings(): Promise<void> {
36 return getXDLPackage().then(xdl => {
37 xdl.Config.validation.reactNativeVersionWarnings = false;
38 });
39}
40
41export function attachLoggerStream(
42 rootPath: string,
43 options?: XDLPackage.IBunyanStream | any,
44): Promise<void> {
45 return getXDLPackage().then(xdl => xdl.ProjectUtils.attachLoggerStream(rootPath, options));
46}
47
48export function currentUser(): Promise<XDLPackage.IUser> {
49 return getXDLPackage().then(xdl =>
50 xdl.User ? xdl.User.getCurrentUserAsync() : xdl.UserManager.getCurrentUserAsync(),
51 );
52}
53
54export function login(username: string, password: string): Promise<XDLPackage.IUser> {
55 return getXDLPackage().then(xdl =>
56 xdl.User
57 ? xdl.User.loginAsync("user-pass", { username: username, password: password })
58 : xdl.UserManager.loginAsync("user-pass", {
59 username: username,
60 password: password,
61 }),
62 );
63}
64
65export function getExpoSdkVersions(): Promise<XDLPackage.SDKVersions> {
66 return getXDLPackage().then(xdl => xdl.Versions.sdkVersionsAsync());
67}
68
69export function getReleasedExpoSdkVersions(): Promise<XDLPackage.SDKVersions> {
70 return getXDLPackage().then(xdl => xdl.Versions.releasedSdkVersionsAsync());
71}
72
73export function publish(
74 projectRoot: string,
75 options?: XDLPackage.IPublishOptions,
76): Promise<XDLPackage.IPublishResponse> {
77 return getXDLPackage().then(xdl => xdl.Project.publishAsync(projectRoot, options));
78}
79
80export function setOptions(projectRoot: string, options?: XDLPackage.IOptions): Promise<void> {
81 return getXDLPackage().then(xdl => xdl.Project.setOptionsAsync(projectRoot, options));
82}
83
84export function startExponentServer(projectRoot: string): Promise<void> {
85 return getXDLPackage().then(xdl => xdl.Project.startExpoServerAsync(projectRoot));
86}
87
88export function startTunnels(projectRoot: string): Promise<void> {
89 return getXDLPackage().then(xdl => xdl.Project.startTunnelsAsync(projectRoot));
90}
91
92export function getUrl(projectRoot: string, options?: XDLPackage.IUrlOptions): Promise<string> {
93 return getXDLPackage().then(xdl =>
94 xdl.UrlUtils.constructManifestUrlAsync(projectRoot, options),
95 );
96}
97
98export function stopAll(projectRoot: string): Promise<void> {
99 return getXDLPackage().then(xdl => xdl.Project.stopAsync(projectRoot));
100}
101
102export function startAdbReverse(projectRoot: string): Promise<boolean> {
103 return getXDLPackage().then(xdl => xdl.Android.startAdbReverseAsync(projectRoot));
104}
105
106export function stopAdbReverse(projectRoot: string): Promise<void> {
107 return getXDLPackage().then(xdl => xdl.Android.stopAdbReverseAsync(projectRoot));
108}
109
110export function getMetroConfig(projectRoot: string): Promise<MetroConfigPackage.IMetroConfig> {
111 return getMetroConfigPackage().then(metroConfigPackage =>
112 metroConfigPackage.loadAsync(projectRoot),
113 );
114}
115
116export function isNgrokInstalled(projectRoot: string): Promise<boolean> {
117 return getNgrokResolver()
118 .then(ngrokResolver =>
119 ngrokResolver.resolveNgrokAsync(projectRoot, {
120 shouldPrompt: false,
121 autoInstall: false,
122 }),
123 )
124 .then(ngrok => !!ngrok);
125}
126