microsoft/vscode-react-native

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
1.4.2

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/extension/exponent/xdlInterface.ts

108lines · 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";
10const NGROK_PACKAGE = "@expo/ngrok";
11
12const EXPO_DEPS: string[] = [XDL_PACKAGE, NGROK_PACKAGE];
13
14let getXDLPackage: () => Promise<
15 typeof XDLPackage
16> = PackageLoader.getInstance().generateGetPackageFunction<typeof XDLPackage>(
17 XDL_PACKAGE,
18 ...EXPO_DEPS,
19);
20let getMetroConfigPackage: () => Promise<
21 typeof MetroConfigPackage
22> = PackageLoader.getInstance().generateGetPackageFunction<typeof MetroConfigPackage>(
23 METRO_CONFIG_PACKAGE,
24 ...EXPO_DEPS,
25);
26
27export type IUser = XDLPackage.IUser;
28
29export function configReactNativeVersionWargnings(): Promise<void> {
30 return getXDLPackage().then(xdl => {
31 xdl.Config.validation.reactNativeVersionWarnings = false;
32 });
33}
34
35export function attachLoggerStream(
36 rootPath: string,
37 options?: XDLPackage.IBunyanStream | any,
38): Promise<void> {
39 return getXDLPackage().then(xdl => xdl.ProjectUtils.attachLoggerStream(rootPath, options));
40}
41
42export function currentUser(): Promise<XDLPackage.IUser> {
43 return getXDLPackage().then(xdl =>
44 xdl.User ? xdl.User.getCurrentUserAsync() : xdl.UserManager.getCurrentUserAsync(),
45 );
46}
47
48export function login(username: string, password: string): Promise<XDLPackage.IUser> {
49 return getXDLPackage().then(xdl =>
50 xdl.User
51 ? xdl.User.loginAsync("user-pass", { username: username, password: password })
52 : xdl.UserManager.loginAsync("user-pass", {
53 username: username,
54 password: password,
55 }),
56 );
57}
58
59export function getExpoSdkVersions(): Promise<XDLPackage.SDKVersions> {
60 return getXDLPackage().then(xdl => xdl.Versions.sdkVersionsAsync());
61}
62
63export function getReleasedExpoSdkVersions(): Promise<XDLPackage.SDKVersions> {
64 return getXDLPackage().then(xdl => xdl.Versions.releasedSdkVersionsAsync());
65}
66
67export function publish(
68 projectRoot: string,
69 options?: XDLPackage.IPublishOptions,
70): Promise<XDLPackage.IPublishResponse> {
71 return getXDLPackage().then(xdl => xdl.Project.publishAsync(projectRoot, options));
72}
73
74export function setOptions(projectRoot: string, options?: XDLPackage.IOptions): Promise<void> {
75 return getXDLPackage().then(xdl => xdl.Project.setOptionsAsync(projectRoot, options));
76}
77
78export function startExponentServer(projectRoot: string): Promise<void> {
79 return getXDLPackage().then(xdl => xdl.Project.startExpoServerAsync(projectRoot));
80}
81
82export function startTunnels(projectRoot: string): Promise<void> {
83 return getXDLPackage().then(xdl => xdl.Project.startTunnelsAsync(projectRoot));
84}
85
86export function getUrl(projectRoot: string, options?: XDLPackage.IUrlOptions): Promise<string> {
87 return getXDLPackage().then(xdl =>
88 xdl.UrlUtils.constructManifestUrlAsync(projectRoot, options),
89 );
90}
91
92export function stopAll(projectRoot: string): Promise<void> {
93 return getXDLPackage().then(xdl => xdl.Project.stopAsync(projectRoot));
94}
95
96export function startAdbReverse(projectRoot: string): Promise<boolean> {
97 return getXDLPackage().then(xdl => xdl.Android.startAdbReverseAsync(projectRoot));
98}
99
100export function stopAdbReverse(projectRoot: string): Promise<void> {
101 return getXDLPackage().then(xdl => xdl.Android.stopAdbReverseAsync(projectRoot));
102}
103
104export function getMetroConfig(projectRoot: string): Promise<MetroConfigPackage.IMetroConfig> {
105 return getMetroConfigPackage().then(metroConfigPackage =>
106 metroConfigPackage.loadAsync(projectRoot),
107 );
108}
109