microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
1.3.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/extension/exponent/xdlInterface.ts

128lines · modeblame

7059d307Patricio Beltran9 years ago1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
34472878RedMickey5 years ago4import { CommandExecutor, CommandVerbosity } from "../../common/commandExecutor";
5import { HostPlatform } from "../../common/hostPlatform";
6import { OutputChannelLogger } from "../log/OutputChannelLogger";
7059d307Patricio Beltran9 years ago7
8import * as XDLPackage from "xdl";
0d827d9bJimmy Thomson9 years ago9import * as path from "path";
2d8af448Yuri Skorokhodov6 years ago10import { findFileInFolderHierarchy } from "../../common/extensionHelper";
11import customRequire from "../../common/customRequire";
7059d307Patricio Beltran9 years ago12
0a68f8dbArtem Egorov8 years ago13const logger: OutputChannelLogger = OutputChannelLogger.getMainChannel();
14
66412fdfRuslan Bikkinin7 years ago15const XDL_PACKAGE = "@expo/xdl";
94cd5149Artem Egorov8 years ago16const EXPO_DEPS: string[] = [
66412fdfRuslan Bikkinin7 years ago17XDL_PACKAGE,
94cd5149Artem Egorov8 years ago18"@expo/ngrok", // devDependencies for xdl
19];
20
ce5e88eeYuri Skorokhodov5 years ago21let xdlPackage: Promise<typeof XDLPackage>;
7059d307Patricio Beltran9 years ago22
ce5e88eeYuri Skorokhodov5 years ago23function getPackage(): Promise<typeof XDLPackage> {
7059d307Patricio Beltran9 years ago24if (xdlPackage) {
0d827d9bJimmy Thomson9 years ago25return xdlPackage;
7059d307Patricio Beltran9 years ago26}
27// Don't do the require if we don't actually need it
28try {
d7d405aeYuri Skorokhodov7 years ago29logger.debug("Getting exponent dependency.");
2d8af448Yuri Skorokhodov6 years ago30const xdl = customRequire(XDL_PACKAGE);
ce5e88eeYuri Skorokhodov5 years ago31xdlPackage = Promise.resolve(xdl);
0d827d9bJimmy Thomson9 years ago32return xdlPackage;
a57e740bPatricio Beltran9 years ago33} catch (e) {
b0af599cJimmy Thomson9 years ago34if (e.code === "MODULE_NOT_FOUND") {
0a68f8dbArtem Egorov8 years ago35logger.debug("Dependency not present. Installing it...");
b0af599cJimmy Thomson9 years ago36} else {
37throw e;
38}
7059d307Patricio Beltran9 years ago39}
34472878RedMickey5 years ago40let commandExecutor = new CommandExecutor(
41path.dirname(findFileInFolderHierarchy(__dirname, "package.json") || __dirname),
42logger,
43);
44xdlPackage = commandExecutor
45.spawnWithProgress(
46HostPlatform.getNpmCliCommand("npm"),
47["install", ...EXPO_DEPS, "--verbose", "--no-save"],
48{ verbosity: CommandVerbosity.PROGRESS },
49)
0d827d9bJimmy Thomson9 years ago50.then((): typeof XDLPackage => {
2d8af448Yuri Skorokhodov6 years ago51return customRequire(XDL_PACKAGE);
7059d307Patricio Beltran9 years ago52});
0d827d9bJimmy Thomson9 years ago53return xdlPackage;
7059d307Patricio Beltran9 years ago54}
55
56export type IUser = XDLPackage.IUser;
57
ce5e88eeYuri Skorokhodov5 years ago58export function configReactNativeVersionWargnings(): Promise<void> {
34472878RedMickey5 years ago59return getPackage().then(xdl => {
60xdl.Config.validation.reactNativeVersionWarnings = false;
61});
7059d307Patricio Beltran9 years ago62}
63
34472878RedMickey5 years ago64export function attachLoggerStream(
65rootPath: string,
66options?: XDLPackage.IBunyanStream | any,
67): Promise<void> {
68return getPackage().then(xdl => xdl.ProjectUtils.attachLoggerStream(rootPath, options));
7059d307Patricio Beltran9 years ago69}
70
ce5e88eeYuri Skorokhodov5 years ago71export function supportedVersions(): Promise<string[]> {
34472878RedMickey5 years ago72return getPackage().then(xdl => xdl.Versions.facebookReactNativeVersionsAsync());
7059d307Patricio Beltran9 years ago73}
74
ce5e88eeYuri Skorokhodov5 years ago75export function currentUser(): Promise<XDLPackage.IUser> {
34472878RedMickey5 years ago76return getPackage().then(xdl =>
77xdl.User ? xdl.User.getCurrentUserAsync() : xdl.UserManager.getCurrentUserAsync(),
78);
7059d307Patricio Beltran9 years ago79}
80
ce5e88eeYuri Skorokhodov5 years ago81export function login(username: string, password: string): Promise<XDLPackage.IUser> {
34472878RedMickey5 years ago82return getPackage().then(xdl =>
83xdl.User
84? xdl.User.loginAsync("user-pass", { username: username, password: password })
85: xdl.UserManager.loginAsync("user-pass", { username: username, password: password }),
86);
7059d307Patricio Beltran9 years ago87}
88
ce5e88eeYuri Skorokhodov5 years ago89export function mapVersion(reactNativeVersion: string): Promise<string> {
34472878RedMickey5 years ago90return getPackage().then(xdl =>
91xdl.Versions.facebookReactNativeVersionToExpoVersionAsync(reactNativeVersion),
92);
7059d307Patricio Beltran9 years ago93}
94
34472878RedMickey5 years ago95export function publish(
96projectRoot: string,
97options?: XDLPackage.IPublishOptions,
98): Promise<XDLPackage.IPublishResponse> {
99return getPackage().then(xdl => xdl.Project.publishAsync(projectRoot, options));
7059d307Patricio Beltran9 years ago100}
101
ce5e88eeYuri Skorokhodov5 years ago102export function setOptions(projectRoot: string, options?: XDLPackage.IOptions): Promise<void> {
34472878RedMickey5 years ago103return getPackage().then(xdl => xdl.Project.setOptionsAsync(projectRoot, options));
7059d307Patricio Beltran9 years ago104}
105
ce5e88eeYuri Skorokhodov5 years ago106export function startExponentServer(projectRoot: string): Promise<void> {
34472878RedMickey5 years ago107return getPackage().then(xdl => xdl.Project.startExpoServerAsync(projectRoot));
7059d307Patricio Beltran9 years ago108}
109
ce5e88eeYuri Skorokhodov5 years ago110export function startTunnels(projectRoot: string): Promise<void> {
34472878RedMickey5 years ago111return getPackage().then(xdl => xdl.Project.startTunnelsAsync(projectRoot));
7059d307Patricio Beltran9 years ago112}
113
ce5e88eeYuri Skorokhodov5 years ago114export function getUrl(projectRoot: string, options?: XDLPackage.IUrlOptions): Promise<string> {
34472878RedMickey5 years ago115return getPackage().then(xdl => xdl.UrlUtils.constructManifestUrlAsync(projectRoot, options));
7059d307Patricio Beltran9 years ago116}
117
ce5e88eeYuri Skorokhodov5 years ago118export function stopAll(projectRoot: string): Promise<void> {
34472878RedMickey5 years ago119return getPackage().then(xdl => xdl.Project.stopAsync(projectRoot));
7059d307Patricio Beltran9 years ago120}
62c4de22RedMickey6 years ago121
ce5e88eeYuri Skorokhodov5 years ago122export function startAdbReverse(projectRoot: string): Promise<boolean> {
34472878RedMickey5 years ago123return getPackage().then(xdl => xdl.Android.startAdbReverseAsync(projectRoot));
62c4de22RedMickey6 years ago124}
125
ce5e88eeYuri Skorokhodov5 years ago126export function stopAdbReverse(projectRoot: string): Promise<void> {
34472878RedMickey5 years ago127return getPackage().then(xdl => xdl.Android.stopAdbReverseAsync(projectRoot));
62c4de22RedMickey6 years ago128}