microsoft/vscode-react-native

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
1.0.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

src/extension/exponent/xdlInterface.ts

135lines · 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
0a68f8dbArtem Egorov8 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}
2d8af448Yuri Skorokhodov6 years ago40let commandExecutor = new CommandExecutor(path.dirname(findFileInFolderHierarchy(__dirname, "package.json") || __dirname), logger);
0d827d9bJimmy Thomson9 years ago41xdlPackage = commandExecutor.spawnWithProgress(HostPlatform.getNpmCliCommand("npm"),
833e37c7Vladimir Kotikov8 years ago42["install", ...EXPO_DEPS, "--verbose", "--no-save"],
0a68f8dbArtem Egorov8 years ago43{ verbosity: CommandVerbosity.PROGRESS })
0d827d9bJimmy Thomson9 years ago44.then((): typeof XDLPackage => {
2d8af448Yuri Skorokhodov6 years ago45return customRequire(XDL_PACKAGE);
7059d307Patricio Beltran9 years ago46});
0d827d9bJimmy Thomson9 years ago47return xdlPackage;
7059d307Patricio Beltran9 years ago48}
49
50export type IUser = XDLPackage.IUser;
51
ce5e88eeYuri Skorokhodov5 years ago52export function configReactNativeVersionWargnings(): Promise<void> {
7059d307Patricio Beltran9 years ago53return getPackage()
54.then((xdl) => {
55xdl.Config.validation.reactNativeVersionWarnings = false;
56});
57}
58
ce5e88eeYuri Skorokhodov5 years ago59export function attachLoggerStream(rootPath: string, options?: XDLPackage.IBunyanStream | any): Promise<void> {
7059d307Patricio Beltran9 years ago60return getPackage()
61.then((xdl) =>
62xdl.ProjectUtils.attachLoggerStream(rootPath, options));
63}
64
ce5e88eeYuri Skorokhodov5 years ago65export function supportedVersions(): Promise<string[]> {
7059d307Patricio Beltran9 years ago66return getPackage()
67.then((xdl) =>
68xdl.Versions.facebookReactNativeVersionsAsync());
69}
70
ce5e88eeYuri Skorokhodov5 years ago71export function currentUser(): Promise<XDLPackage.IUser> {
7059d307Patricio Beltran9 years ago72return getPackage()
73.then((xdl) =>
4aec730eYuri Skorokhodov6 years ago74xdl.User ? xdl.User.getCurrentUserAsync() : xdl.UserManager.getCurrentUserAsync());
7059d307Patricio Beltran9 years ago75}
76
ce5e88eeYuri Skorokhodov5 years ago77export function login(username: string, password: string): Promise<XDLPackage.IUser> {
7059d307Patricio Beltran9 years ago78return getPackage()
79.then((xdl) =>
4aec730eYuri Skorokhodov6 years ago80xdl.User ? xdl.User.loginAsync("user-pass", { username: username, password: password }) : xdl.UserManager.loginAsync("user-pass", { username: username, password: password }));
7059d307Patricio Beltran9 years ago81}
82
ce5e88eeYuri Skorokhodov5 years ago83export function mapVersion(reactNativeVersion: string): Promise<string> {
7059d307Patricio Beltran9 years ago84return getPackage()
85.then((xdl) =>
4d1fa3fdNikita Matrosov9 years ago86xdl.Versions.facebookReactNativeVersionToExpoVersionAsync(reactNativeVersion));
7059d307Patricio Beltran9 years ago87}
88
ce5e88eeYuri Skorokhodov5 years ago89export function publish(projectRoot: string, options?: XDLPackage.IPublishOptions): Promise<XDLPackage.IPublishResponse> {
7059d307Patricio Beltran9 years ago90return getPackage()
91.then((xdl) =>
92xdl.Project.publishAsync(projectRoot, options));
93}
94
ce5e88eeYuri Skorokhodov5 years ago95export function setOptions(projectRoot: string, options?: XDLPackage.IOptions): Promise<void> {
7059d307Patricio Beltran9 years ago96return getPackage()
97.then((xdl) =>
98xdl.Project.setOptionsAsync(projectRoot, options));
99}
100
ce5e88eeYuri Skorokhodov5 years ago101export function startExponentServer(projectRoot: string): Promise<void> {
7059d307Patricio Beltran9 years ago102return getPackage()
103.then((xdl) =>
4d1fa3fdNikita Matrosov9 years ago104xdl.Project.startExpoServerAsync(projectRoot));
7059d307Patricio Beltran9 years ago105}
106
ce5e88eeYuri Skorokhodov5 years ago107export function startTunnels(projectRoot: string): Promise<void> {
7059d307Patricio Beltran9 years ago108return getPackage()
109.then((xdl) =>
110xdl.Project.startTunnelsAsync(projectRoot));
111}
112
ce5e88eeYuri Skorokhodov5 years ago113export function getUrl(projectRoot: string, options?: XDLPackage.IUrlOptions): Promise<string> {
7059d307Patricio Beltran9 years ago114return getPackage()
115.then((xdl) =>
a81a5847JiglioNero5 years ago116xdl.UrlUtils.constructManifestUrlAsync(projectRoot, options));
7059d307Patricio Beltran9 years ago117}
118
ce5e88eeYuri Skorokhodov5 years ago119export function stopAll(projectRoot: string): Promise<void> {
7059d307Patricio Beltran9 years ago120return getPackage()
121.then((xdl) =>
122xdl.Project.stopAsync(projectRoot));
123}
62c4de22RedMickey6 years ago124
ce5e88eeYuri Skorokhodov5 years ago125export function startAdbReverse(projectRoot: string): Promise<boolean> {
62c4de22RedMickey6 years ago126return getPackage()
127.then((xdl) =>
128xdl.Android.startAdbReverseAsync(projectRoot));
129}
130
ce5e88eeYuri Skorokhodov5 years ago131export function stopAdbReverse(projectRoot: string): Promise<void> {
62c4de22RedMickey6 years ago132return getPackage()
133.then((xdl) =>
134xdl.Android.stopAdbReverseAsync(projectRoot));
135}