feat(smart-app): implement complete mobile app MVP

- App.tsx: full navigation (Auth stack + Main tabs with 5 screens)
- Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen
- HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors
- MapScreen: interactive map with layer toggles (6 layers)
- MarketplaceScreen: categories (6), products (5), search
- ChatScreen: AI chat with quick prompts (4), bot responses
- ProfileScreen: user info, stats, menu (9 items), logout
- AlertsScreen: alert list with severity, acknowledge
- SensorsScreen: sensor list with type filters (6 types), search
- ZonesScreen: zone cards with stats
- SettingsScreen: language picker (FR/EN/ES/DE), privacy, about
- Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n
- Hooks: useSensors, useAlerts, useNotifications, useLocation
- Components: Card, Button, LoadingSpinner, ErrorBoundary, Header
- Services: iotService, notificationService (with axios API client)
- Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN)
- Theme: colors.ts with full design system (Blue Ocean palette)
- Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
This commit is contained in:
Eric FELIXINE
2026-06-01 18:00:35 -04:00
parent 08ca495bde
commit e30ae8ed09
35578 changed files with 3703534 additions and 43 deletions

View File

@@ -0,0 +1,18 @@
type CacheKey = 'eTag' | 'lastChecked' | 'latestVersion' | 'dependencies' | 'lastUsedIOSDeviceId';
/**
* Returns the path string of `$HOME/.react-native-cli`.
*
* In case it doesn't exist, it will be created.
*/
declare function getCacheRootPath(): string;
declare function removeProjectCache(name: string): void;
declare function get(name: string, key: CacheKey): string | undefined;
declare function set(name: string, key: CacheKey, value: string): void;
declare const _default: {
get: typeof get;
set: typeof set;
removeProjectCache: typeof removeProjectCache;
getCacheRootPath: typeof getCacheRootPath;
};
export default _default;
//# sourceMappingURL=cacheManager.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"cacheManager.d.ts","sourceRoot":"","sources":["../src/cacheManager.ts"],"names":[],"mappings":"AAOA,KAAK,QAAQ,GACT,MAAM,GACN,aAAa,GACb,eAAe,GACf,cAAc,GACd,qBAAqB,CAAC;AA4B1B;;;;GAIG;AACH,iBAAS,gBAAgB,WASxB;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,QAevC;AAED,iBAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAM5D;AAED,iBAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,QAMtD;;;;;;;AAED,wBAKE"}

View File

@@ -0,0 +1,119 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
function _fs() {
const data = _interopRequireDefault(require("fs"));
_fs = function () {
return data;
};
return data;
}
function _os() {
const data = _interopRequireDefault(require("os"));
_os = function () {
return data;
};
return data;
}
function _appdirsjs() {
const data = _interopRequireDefault(require("appdirsjs"));
_appdirsjs = function () {
return data;
};
return data;
}
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function loadCache(name) {
try {
const cacheRaw = _fs().default.readFileSync(_path().default.resolve(getCacheRootPath(), name), 'utf8');
const cache = JSON.parse(cacheRaw);
return cache;
} catch (e) {
if (e.code === 'ENOENT') {
// Create cache file since it doesn't exist.
saveCache(name, {});
}
_logger.default.debug('No cache found');
return undefined;
}
}
function saveCache(name, cache) {
const fullPath = _path().default.resolve(getCacheRootPath(), name);
_fs().default.mkdirSync(_path().default.dirname(fullPath), {
recursive: true
});
_fs().default.writeFileSync(fullPath, JSON.stringify(cache, null, 2));
}
/**
* Returns the path string of `$HOME/.react-native-cli`.
*
* In case it doesn't exist, it will be created.
*/
function getCacheRootPath() {
const legacyPath = _path().default.resolve(_os().default.homedir(), '.react-native-cli', 'cache');
const cachePath = (0, _appdirsjs().default)({
appName: 'react-native-cli',
legacyPath
}).cache;
if (!_fs().default.existsSync(cachePath)) {
_fs().default.mkdirSync(cachePath, {
recursive: true
});
}
return cachePath;
}
function removeProjectCache(name) {
const cacheRootPath = getCacheRootPath();
try {
const fullPath = _path().default.resolve(cacheRootPath, name);
if (_fs().default.existsSync(fullPath)) {
_fs().default.rmSync(fullPath, {
recursive: true
});
}
} catch {
_logger.default.error(`Failed to remove cache for ${name}. If you experience any issues when running freshly initialized project, please remove the "${_chalk().default.underline(_path().default.join(cacheRootPath, name))}" folder manually.`);
}
}
function get(name, key) {
const cache = loadCache(name);
if (cache) {
return cache[key];
}
return undefined;
}
function set(name, key, value) {
const cache = loadCache(name);
if (cache) {
cache[key] = value;
saveCache(name, cache);
}
}
var _default = {
get,
set,
removeProjectCache,
getCacheRootPath
};
exports.default = _default;
//# sourceMappingURL=cacheManager.ts.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,25 @@
type Platforms = 'android' | 'ios' | 'inherit' | 'none';
export declare function getOS(): string;
interface Overrides {
os?: string;
hash?: string;
version?: string;
}
interface Other {
[key: string]: string;
}
export declare const docs: (path: string, platform: Platforms, hashOrOverrides?: string | (Overrides & Other) | undefined) => string;
export declare const contributing: (path: string, platform: Platforms, hashOrOverrides?: string | (Overrides & Other) | undefined) => string;
export declare const community: (path: string, platform: Platforms, hashOrOverrides?: string | (Overrides & Other) | undefined) => string;
export declare const showcase: (path: string, platform: Platforms, hashOrOverrides?: string | (Overrides & Other) | undefined) => string;
export declare const blog: (path: string, platform: Platforms, hashOrOverrides?: string | (Overrides & Other) | undefined) => string;
/**
* When the user builds, we should define the target platform globally.
*/
export declare function setPlatform(target: Platforms): void;
/**
* Can we figure out what version of react native they're using?
*/
export declare function setVersion(reactNativeVersion: string): void;
export {};
//# sourceMappingURL=doclink.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"doclink.d.ts","sourceRoot":"","sources":["../src/doclink.ts"],"names":[],"mappings":"AAGA,KAAK,SAAS,GACV,SAAS,GACT,KAAK,GACL,SAAS,GACT,MAAM,CAAC;AAEX,wBAAgB,KAAK,IAAI,MAAM,CAkB9B;AAKD,UAAU,SAAS;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,KAAK;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AA8DD,eAAO,MAAM,IAAI,2GAA6B,CAAC;AAC/C,eAAO,MAAM,YAAY,2GAAqC,CAAC;AAC/D,eAAO,MAAM,SAAS,2GAAkC,CAAC;AACzD,eAAO,MAAM,QAAQ,2GAAiC,CAAC;AACvD,eAAO,MAAM,IAAI,2GAA6B,CAAC;AAE/C;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAE3D"}

View File

@@ -0,0 +1,106 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.docs = exports.contributing = exports.community = exports.blog = void 0;
exports.getOS = getOS;
exports.setPlatform = setPlatform;
exports.setVersion = setVersion;
exports.showcase = void 0;
function _os() {
const data = _interopRequireDefault(require("os"));
_os = function () {
return data;
};
return data;
}
function _assert() {
const data = _interopRequireDefault(require("assert"));
_assert = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// No platform specific documentation
function getOS() {
// Using os.platform instead of process.platform so we can test more easily. Once jest upgrades
// to ^29.4 we could use process.platforms and jest.replaceProperty(process, 'platforms', 'someplatform');
switch (_os().default.platform()) {
case 'aix':
case 'freebsd':
case 'linux':
case 'openbsd':
case 'sunos':
// King of controversy, right here.
return 'linux';
case 'darwin':
return 'macos';
case 'win32':
return 'windows';
default:
return '';
}
}
let _platform = null;
let _version;
/**
* Create a deeplink to our documentation based on the user's OS and the Platform they're trying to build.
*/
function doclink(section, path, platform, hashOrOverrides) {
const url = new URL('https://reactnative.dev/');
// Overrides
const isObj = typeof hashOrOverrides === 'object';
const hash = isObj ? hashOrOverrides.hash : hashOrOverrides;
const version = isObj && hashOrOverrides.version ? hashOrOverrides.version : _version;
const OS = isObj && hashOrOverrides.os ? hashOrOverrides.os : getOS();
url.pathname = _version ? `${section}/${version}/${path}` : `${section}/${path}`;
url.searchParams.set('os', OS);
if (platform === 'inherit') {
_assert().default.ok(_platform !== null, `Please report this CLI error: link.setPlatform('ios'|'android'|'none') was expected to be set before using link.${section}(${path}, 'inherit').`);
}
const plat = platform === 'inherit' ? _platform : platform ?? _platform;
if (plat !== 'none') {
url.searchParams.set('platform', plat);
}
if (isObj) {
const otherKeys = Object.keys(hashOrOverrides).filter(key => !['hash', 'version', 'os'].includes(key));
for (let key of otherKeys) {
url.searchParams.set(key, hashOrOverrides[key]);
}
}
if (hash) {
_assert().default.doesNotMatch(hash, /#/, "Anchor links should be written without a '#'");
url.hash = hash;
}
return url.toString();
}
const docs = doclink.bind(null, 'docs');
exports.docs = docs;
const contributing = doclink.bind(null, 'contributing');
exports.contributing = contributing;
const community = doclink.bind(null, 'community');
exports.community = community;
const showcase = doclink.bind(null, 'showcase');
exports.showcase = showcase;
const blog = doclink.bind(null, 'blog');
/**
* When the user builds, we should define the target platform globally.
*/
exports.blog = blog;
function setPlatform(target) {
_platform = target;
}
/**
* Can we figure out what version of react native they're using?
*/
function setVersion(reactNativeVersion) {
_version = reactNativeVersion;
}
//# sourceMappingURL=doclink.ts.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,14 @@
/**
* A custom Error that creates a single-lined message to match current styling inside CLI.
* Uses original stack trace when `originalError` is passed or erase the stack if it's not defined.
*/
export declare class CLIError extends Error {
constructor(msg: string, originalError?: Error | string);
}
/**
* Raised when we're unable to find a package.json
*/
export declare class UnknownProjectError extends Error {
}
export declare const inlineString: (str?: string) => string;
//# sourceMappingURL=errors.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,QAAS,SAAQ,KAAK;gBACrB,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM;CAcxD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AAEjD,eAAO,MAAM,YAAY,SAAS,MAAM,WACD,CAAC"}

View File

@@ -0,0 +1,34 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inlineString = exports.UnknownProjectError = exports.CLIError = void 0;
/**
* A custom Error that creates a single-lined message to match current styling inside CLI.
* Uses original stack trace when `originalError` is passed or erase the stack if it's not defined.
*/
class CLIError extends Error {
constructor(msg, originalError) {
super(inlineString(msg));
if (originalError) {
this.stack = typeof originalError === 'string' ? originalError : originalError.stack || ''.split('\n').slice(0, 2).join('\n');
} else {
// When the "originalError" is not passed, it means that we know exactly
// what went wrong and provide means to fix it. In such cases showing the
// stack is an unnecessary clutter to the CLI output, hence removing it.
delete this.stack;
}
}
}
/**
* Raised when we're unable to find a package.json
*/
exports.CLIError = CLIError;
class UnknownProjectError extends Error {}
exports.UnknownProjectError = UnknownProjectError;
const inlineString = (str = '') => str.replace(/(\s{2,})/gm, ' ').trim();
exports.inlineString = inlineString;
//# sourceMappingURL=errors.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["CLIError","Error","constructor","msg","originalError","inlineString","stack","split","slice","join","UnknownProjectError","str","replace","trim"],"sources":["../src/errors.ts"],"sourcesContent":["/**\n * A custom Error that creates a single-lined message to match current styling inside CLI.\n * Uses original stack trace when `originalError` is passed or erase the stack if it's not defined.\n */\nexport class CLIError extends Error {\n constructor(msg: string, originalError?: Error | string) {\n super(inlineString(msg));\n if (originalError) {\n this.stack =\n typeof originalError === 'string'\n ? originalError\n : originalError.stack || ''.split('\\n').slice(0, 2).join('\\n');\n } else {\n // When the \"originalError\" is not passed, it means that we know exactly\n // what went wrong and provide means to fix it. In such cases showing the\n // stack is an unnecessary clutter to the CLI output, hence removing it.\n delete this.stack;\n }\n }\n}\n\n/**\n * Raised when we're unable to find a package.json\n */\nexport class UnknownProjectError extends Error {}\n\nexport const inlineString = (str: string = '') =>\n str.replace(/(\\s{2,})/gm, ' ').trim();\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACO,MAAMA,QAAQ,SAASC,KAAK,CAAC;EAClCC,WAAW,CAACC,GAAW,EAAEC,aAA8B,EAAE;IACvD,KAAK,CAACC,YAAY,CAACF,GAAG,CAAC,CAAC;IACxB,IAAIC,aAAa,EAAE;MACjB,IAAI,CAACE,KAAK,GACR,OAAOF,aAAa,KAAK,QAAQ,GAC7BA,aAAa,GACbA,aAAa,CAACE,KAAK,IAAI,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACpE,CAAC,MAAM;MACL;MACA;MACA;MACA,OAAO,IAAI,CAACH,KAAK;IACnB;EACF;AACF;;AAEA;AACA;AACA;AAFA;AAGO,MAAMI,mBAAmB,SAAST,KAAK,CAAC;AAAE;AAE1C,MAAMI,YAAY,GAAG,CAACM,GAAW,GAAG,EAAE,KAC3CA,GAAG,CAACC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAACC,IAAI,EAAE;AAAC"}

View File

@@ -0,0 +1,13 @@
import { RequestInit as FetchOptions, Request, Headers } from 'node-fetch';
/**
* Downloads the given `url` to the OS's temp folder and
* returns the path to it.
*/
declare const fetchToTemp: (url: string) => Promise<string>;
declare const fetch: (url: string | Request, options?: FetchOptions) => Promise<{
status: number;
data: any;
headers: Headers;
}>;
export { fetch, fetchToTemp };
//# sourceMappingURL=fetch.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAIA,OAAkB,EAChB,WAAW,IAAI,YAAY,EAE3B,OAAO,EACP,OAAO,EACR,MAAM,YAAY,CAAC;AAcpB;;;GAGG;AACH,QAAA,MAAM,WAAW,QAAS,MAAM,KAAG,QAAQ,MAAM,CAyBhD,CAAC;AAEF,QAAA,MAAM,KAAK,QACJ,MAAM,GAAG,OAAO,YACX,YAAY;YACJ,MAAM;UAAQ,GAAG;aAAW,OAAO;EAetD,CAAC;AAEF,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC"}

View File

@@ -0,0 +1,90 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchToTemp = exports.fetch = void 0;
function os() {
const data = _interopRequireWildcard(require("os"));
os = function () {
return data;
};
return data;
}
function path() {
const data = _interopRequireWildcard(require("path"));
path = function () {
return data;
};
return data;
}
function fs() {
const data = _interopRequireWildcard(require("fs"));
fs = function () {
return data;
};
return data;
}
function _nodeFetch() {
const data = _interopRequireDefault(require("node-fetch"));
_nodeFetch = function () {
return data;
};
return data;
}
var _errors = require("./errors");
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
async function unwrapFetchResult(response) {
const data = await response.text();
try {
return JSON.parse(data);
} catch (e) {
return data;
}
}
/**
* Downloads the given `url` to the OS's temp folder and
* returns the path to it.
*/
const fetchToTemp = url => {
try {
return new Promise((resolve, reject) => {
const fileName = path().basename(url);
const tmpDir = path().join(os().tmpdir(), fileName);
(0, _nodeFetch().default)(url).then(result => {
if (result.status >= 400) {
return reject(`Fetch request failed with status ${result.status}`);
}
const dest = fs().createWriteStream(tmpDir);
result.body.pipe(dest);
result.body.on('end', () => {
resolve(tmpDir);
});
result.body.on('error', reject);
});
});
} catch (e) {
_logger.default.error(e);
throw e;
}
};
exports.fetchToTemp = fetchToTemp;
const fetch = async (url, options) => {
const result = await (0, _nodeFetch().default)(url, options);
const data = await unwrapFetchResult(result);
if (result.status >= 400) {
throw new _errors.CLIError(`Fetch request failed with status ${result.status}: ${data}.`);
}
return {
status: result.status,
headers: result.headers,
data
};
};
exports.fetch = fetch;
//# sourceMappingURL=fetch.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["unwrapFetchResult","response","data","text","JSON","parse","e","fetchToTemp","url","Promise","resolve","reject","fileName","path","basename","tmpDir","join","os","tmpdir","nodeFetch","then","result","status","dest","fs","createWriteStream","body","pipe","on","logger","error","fetch","options","CLIError","headers"],"sources":["../src/fetch.ts"],"sourcesContent":["import * as os from 'os';\nimport * as path from 'path';\nimport * as fs from 'fs';\n\nimport nodeFetch, {\n RequestInit as FetchOptions,\n Response,\n Request,\n Headers,\n} from 'node-fetch';\nimport {CLIError} from './errors';\nimport logger from './logger';\n\nasync function unwrapFetchResult(response: Response) {\n const data = await response.text();\n\n try {\n return JSON.parse(data);\n } catch (e) {\n return data;\n }\n}\n\n/**\n * Downloads the given `url` to the OS's temp folder and\n * returns the path to it.\n */\nconst fetchToTemp = (url: string): Promise<string> => {\n try {\n return new Promise((resolve, reject) => {\n const fileName = path.basename(url);\n const tmpDir = path.join(os.tmpdir(), fileName);\n\n nodeFetch(url).then((result) => {\n if (result.status >= 400) {\n return reject(`Fetch request failed with status ${result.status}`);\n }\n\n const dest = fs.createWriteStream(tmpDir);\n result.body.pipe(dest);\n\n result.body.on('end', () => {\n resolve(tmpDir);\n });\n\n result.body.on('error', reject);\n });\n });\n } catch (e) {\n logger.error(e as any);\n throw e;\n }\n};\n\nconst fetch = async (\n url: string | Request,\n options?: FetchOptions,\n): Promise<{status: number; data: any; headers: Headers}> => {\n const result = await nodeFetch(url, options);\n const data = await unwrapFetchResult(result);\n\n if (result.status >= 400) {\n throw new CLIError(\n `Fetch request failed with status ${result.status}: ${data}.`,\n );\n }\n\n return {\n status: result.status,\n headers: result.headers,\n data,\n };\n};\n\nexport {fetch, fetchToTemp};\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAMA;AACA;AAA8B;AAAA;AAAA;AAE9B,eAAeA,iBAAiB,CAACC,QAAkB,EAAE;EACnD,MAAMC,IAAI,GAAG,MAAMD,QAAQ,CAACE,IAAI,EAAE;EAElC,IAAI;IACF,OAAOC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC;EACzB,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAOJ,IAAI;EACb;AACF;;AAEA;AACA;AACA;AACA;AACA,MAAMK,WAAW,GAAIC,GAAW,IAAsB;EACpD,IAAI;IACF,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC,MAAMC,QAAQ,GAAGC,IAAI,GAACC,QAAQ,CAACN,GAAG,CAAC;MACnC,MAAMO,MAAM,GAAGF,IAAI,GAACG,IAAI,CAACC,EAAE,GAACC,MAAM,EAAE,EAAEN,QAAQ,CAAC;MAE/C,IAAAO,oBAAS,EAACX,GAAG,CAAC,CAACY,IAAI,CAAEC,MAAM,IAAK;QAC9B,IAAIA,MAAM,CAACC,MAAM,IAAI,GAAG,EAAE;UACxB,OAAOX,MAAM,CAAE,oCAAmCU,MAAM,CAACC,MAAO,EAAC,CAAC;QACpE;QAEA,MAAMC,IAAI,GAAGC,EAAE,GAACC,iBAAiB,CAACV,MAAM,CAAC;QACzCM,MAAM,CAACK,IAAI,CAACC,IAAI,CAACJ,IAAI,CAAC;QAEtBF,MAAM,CAACK,IAAI,CAACE,EAAE,CAAC,KAAK,EAAE,MAAM;UAC1BlB,OAAO,CAACK,MAAM,CAAC;QACjB,CAAC,CAAC;QAEFM,MAAM,CAACK,IAAI,CAACE,EAAE,CAAC,OAAO,EAAEjB,MAAM,CAAC;MACjC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOL,CAAC,EAAE;IACVuB,eAAM,CAACC,KAAK,CAACxB,CAAC,CAAQ;IACtB,MAAMA,CAAC;EACT;AACF,CAAC;AAAC;AAEF,MAAMyB,KAAK,GAAG,OACZvB,GAAqB,EACrBwB,OAAsB,KACqC;EAC3D,MAAMX,MAAM,GAAG,MAAM,IAAAF,oBAAS,EAACX,GAAG,EAAEwB,OAAO,CAAC;EAC5C,MAAM9B,IAAI,GAAG,MAAMF,iBAAiB,CAACqB,MAAM,CAAC;EAE5C,IAAIA,MAAM,CAACC,MAAM,IAAI,GAAG,EAAE;IACxB,MAAM,IAAIW,gBAAQ,CACf,oCAAmCZ,MAAM,CAACC,MAAO,KAAIpB,IAAK,GAAE,CAC9D;EACH;EAEA,OAAO;IACLoB,MAAM,EAAED,MAAM,CAACC,MAAM;IACrBY,OAAO,EAAEb,MAAM,CAACa,OAAO;IACvBhC;EACF,CAAC;AACH,CAAC;AAAC"}

View File

@@ -0,0 +1,6 @@
declare const findDevServerPort: (initialPort: number, root: string) => Promise<{
port: number;
startPackager: boolean;
}>;
export default findDevServerPort;
//# sourceMappingURL=findDevServerPort.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"findDevServerPort.d.ts","sourceRoot":"","sources":["../src/findDevServerPort.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,iBAAiB,gBACR,MAAM,QACb,MAAM;UAEN,MAAM;mBACG,OAAO;EA2BvB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}

View File

@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _handlePortUnavailable = _interopRequireDefault(require("./handlePortUnavailable"));
var _isPackagerRunning = _interopRequireDefault(require("./isPackagerRunning"));
var _port = require("./port");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const findDevServerPort = async (initialPort, root) => {
let port = initialPort;
let startPackager = true;
const packagerStatus = await (0, _isPackagerRunning.default)(port);
if (typeof packagerStatus === 'object' && packagerStatus.status === 'running') {
if (packagerStatus.root === root) {
startPackager = false;
(0, _port.logAlreadyRunningBundler)(port);
} else {
const result = await (0, _handlePortUnavailable.default)(port, root);
[port, startPackager] = [result.port, result.packager];
}
} else if (packagerStatus === 'unrecognized') {
const result = await (0, _handlePortUnavailable.default)(port, root);
[port, startPackager] = [result.port, result.packager];
}
return {
port,
startPackager
};
};
var _default = findDevServerPort;
exports.default = _default;
//# sourceMappingURL=findDevServerPort.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["findDevServerPort","initialPort","root","port","startPackager","packagerStatus","isPackagerRunning","status","logAlreadyRunningBundler","result","handlePortUnavailable","packager"],"sources":["../src/findDevServerPort.ts"],"sourcesContent":["import handlePortUnavailable from './handlePortUnavailable';\nimport isPackagerRunning from './isPackagerRunning';\nimport {logAlreadyRunningBundler} from './port';\n\nconst findDevServerPort = async (\n initialPort: number,\n root: string,\n): Promise<{\n port: number;\n startPackager: boolean;\n}> => {\n let port = initialPort;\n let startPackager = true;\n\n const packagerStatus = await isPackagerRunning(port);\n\n if (\n typeof packagerStatus === 'object' &&\n packagerStatus.status === 'running'\n ) {\n if (packagerStatus.root === root) {\n startPackager = false;\n logAlreadyRunningBundler(port);\n } else {\n const result = await handlePortUnavailable(port, root);\n [port, startPackager] = [result.port, result.packager];\n }\n } else if (packagerStatus === 'unrecognized') {\n const result = await handlePortUnavailable(port, root);\n [port, startPackager] = [result.port, result.packager];\n }\n\n return {\n port,\n startPackager,\n };\n};\n\nexport default findDevServerPort;\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAAgD;AAEhD,MAAMA,iBAAiB,GAAG,OACxBC,WAAmB,EACnBC,IAAY,KAIR;EACJ,IAAIC,IAAI,GAAGF,WAAW;EACtB,IAAIG,aAAa,GAAG,IAAI;EAExB,MAAMC,cAAc,GAAG,MAAM,IAAAC,0BAAiB,EAACH,IAAI,CAAC;EAEpD,IACE,OAAOE,cAAc,KAAK,QAAQ,IAClCA,cAAc,CAACE,MAAM,KAAK,SAAS,EACnC;IACA,IAAIF,cAAc,CAACH,IAAI,KAAKA,IAAI,EAAE;MAChCE,aAAa,GAAG,KAAK;MACrB,IAAAI,8BAAwB,EAACL,IAAI,CAAC;IAChC,CAAC,MAAM;MACL,MAAMM,MAAM,GAAG,MAAM,IAAAC,8BAAqB,EAACP,IAAI,EAAED,IAAI,CAAC;MACtD,CAACC,IAAI,EAAEC,aAAa,CAAC,GAAG,CAACK,MAAM,CAACN,IAAI,EAAEM,MAAM,CAACE,QAAQ,CAAC;IACxD;EACF,CAAC,MAAM,IAAIN,cAAc,KAAK,cAAc,EAAE;IAC5C,MAAMI,MAAM,GAAG,MAAM,IAAAC,8BAAqB,EAACP,IAAI,EAAED,IAAI,CAAC;IACtD,CAACC,IAAI,EAAEC,aAAa,CAAC,GAAG,CAACK,MAAM,CAACN,IAAI,EAAEM,MAAM,CAACE,QAAQ,CAAC;EACxD;EAEA,OAAO;IACLR,IAAI;IACJC;EACF,CAAC;AACH,CAAC;AAAC,eAEaJ,iBAAiB;AAAA"}

View File

@@ -0,0 +1,51 @@
/**
* Pick the value for each `key` property from `obj` and return each one in a new object.
* If `names` are given, use them in the new object, instead of `keys`.
*
* If any `key` was not found or its value was `undefined`, nothing will be picked for that key.
*
* @param obj Object to pick from
* @param keys Keys to pick
* @param names Optional names to use in the output object
* @returns A new object containing a each `name` property and the picked value, or `undefined` if no keys were picked.
*/
export declare function pickValues<T>(obj: T, keys: (keyof T)[], names?: string[]): Record<string, unknown> | undefined;
/**
* Components of a package reference.
*/
export type PackageRef = {
scope?: string;
name: string;
};
/**
* Options which control how package dependecies are located.
*/
export type FindPackageDependencyOptions = {
/**
* Optional starting directory for the search. Defaults to `process.cwd()`.
*/
startDir?: string;
/**
* Optional flag controlling whether symlinks can be found. Defaults to `true`.
* When `false`, and the package dependency directory is a symlink, it will not
* be found.
*/
allowSymlinks?: boolean;
/**
* Optional flag controlling whether to resolve symlinks. Defaults to `false`.
* Note that this flag has no effect if `allowSymlinks` is `false`.
*/
resolveSymlinks?: boolean;
};
/**
* Find the package dependency's directory, starting from the given directory
* and moving outward, through all parent directories.
*
* Package dependencies exist under 'node_modules/[`scope`]/[`name`]'.
*
* @param ref Package dependency reference
* @param options Options which control the search
* @returns Path to the package dependency's directory, or `undefined` if not found.
*/
export declare function findPackageDependencyDir(ref: string | PackageRef, options?: FindPackageDependencyOptions): string | undefined;
//# sourceMappingURL=findPackageDependencyDir.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"findPackageDependencyDir.d.ts","sourceRoot":"","sources":["../src/findPackageDependencyDir.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EACjB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAcrC;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,GAAG,UAAU,EACxB,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,GAAG,SAAS,CAkBpB"}

View File

@@ -0,0 +1,92 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findPackageDependencyDir = findPackageDependencyDir;
exports.pickValues = pickValues;
function _findUp() {
const data = _interopRequireDefault(require("find-up"));
_findUp = function () {
return data;
};
return data;
}
function fs() {
const data = _interopRequireWildcard(require("fs"));
fs = function () {
return data;
};
return data;
}
function path() {
const data = _interopRequireWildcard(require("path"));
path = function () {
return data;
};
return data;
}
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Source vendored from:
* https://github.com/microsoft/rnx-kit/blob/f37adca5161eba66fc27de25d48f72973fff9e8e/packages/tools-node/src/package.ts#L213-L234
*/
/**
* Pick the value for each `key` property from `obj` and return each one in a new object.
* If `names` are given, use them in the new object, instead of `keys`.
*
* If any `key` was not found or its value was `undefined`, nothing will be picked for that key.
*
* @param obj Object to pick from
* @param keys Keys to pick
* @param names Optional names to use in the output object
* @returns A new object containing a each `name` property and the picked value, or `undefined` if no keys were picked.
*/
function pickValues(obj, keys, names) {
const finalNames = names ?? keys;
const results = {};
let pickedValue = false;
for (let index = 0; index < keys.length; ++index) {
const value = obj[keys[index]];
if (typeof value !== 'undefined') {
results[finalNames[index].toString()] = value;
pickedValue = true;
}
}
return pickedValue ? results : undefined;
}
/**
* Components of a package reference.
*/
/**
* Options which control how package dependecies are located.
*/
/**
* Find the package dependency's directory, starting from the given directory
* and moving outward, through all parent directories.
*
* Package dependencies exist under 'node_modules/[`scope`]/[`name`]'.
*
* @param ref Package dependency reference
* @param options Options which control the search
* @returns Path to the package dependency's directory, or `undefined` if not found.
*/
function findPackageDependencyDir(ref, options) {
const pkgName = typeof ref === 'string' ? ref : path().join(ref.scope ?? '', ref.name);
const packageDir = _findUp().default.sync(path().join('node_modules', pkgName), {
...pickValues(options ?? {}, ['startDir', 'allowSymlinks'], ['cwd', 'allowSymlinks']),
type: 'directory'
});
if (!packageDir || !(options === null || options === void 0 ? void 0 : options.resolveSymlinks)) {
return packageDir;
}
return fs().lstatSync(packageDir).isSymbolicLink() ? path().resolve(path().dirname(packageDir), fs().readlinkSync(packageDir)) : packageDir;
}
//# sourceMappingURL=findPackageDependencyDir.ts.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
/**
* Finds project root by looking for a closest `package.json`.
*/
export default function findProjectRoot(cwd?: string): string;
//# sourceMappingURL=findProjectRoot.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"findProjectRoot.d.ts","sourceRoot":"","sources":["../src/findProjectRoot.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,GAAG,SAAgB,GAAG,MAAM,CAiBnE"}

View File

@@ -0,0 +1,46 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = findProjectRoot;
function _findUp() {
const data = _interopRequireDefault(require("find-up"));
_findUp = function () {
return data;
};
return data;
}
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
var _errors = require("./errors");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Finds project root by looking for a closest `package.json`.
*/
function findProjectRoot(cwd = process.cwd()) {
const packageLocation = _findUp().default.sync('package.json', {
cwd
});
/**
* It is possible that `package.json` doesn't exist
* in the tree. In that case, we want to throw an error.
*
* When executing via `npx`, this will never happen as `npm`
* requires that file to be present in order to run.
*/
if (!packageLocation) {
throw new _errors.CLIError(`
We couldn't find a package.json in your project.
Are you sure you are running it inside a React Native project?
`);
}
return _path().default.dirname(packageLocation);
}
//# sourceMappingURL=findProjectRoot.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["findProjectRoot","cwd","process","packageLocation","findUp","sync","CLIError","path","dirname"],"sources":["../src/findProjectRoot.ts"],"sourcesContent":["import findUp from 'find-up';\nimport path from 'path';\nimport {CLIError} from './errors';\n\n/**\n * Finds project root by looking for a closest `package.json`.\n */\nexport default function findProjectRoot(cwd = process.cwd()): string {\n const packageLocation = findUp.sync('package.json', {cwd});\n /**\n * It is possible that `package.json` doesn't exist\n * in the tree. In that case, we want to throw an error.\n *\n * When executing via `npx`, this will never happen as `npm`\n * requires that file to be present in order to run.\n */\n if (!packageLocation) {\n throw new CLIError(`\n We couldn't find a package.json in your project.\n Are you sure you are running it inside a React Native project?\n `);\n }\n\n return path.dirname(packageLocation);\n}\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;AAAkC;AAElC;AACA;AACA;AACe,SAASA,eAAe,CAACC,GAAG,GAAGC,OAAO,CAACD,GAAG,EAAE,EAAU;EACnE,MAAME,eAAe,GAAGC,iBAAM,CAACC,IAAI,CAAC,cAAc,EAAE;IAACJ;EAAG,CAAC,CAAC;EAC1D;AACF;AACA;AACA;AACA;AACA;AACA;EACE,IAAI,CAACE,eAAe,EAAE;IACpB,MAAM,IAAIG,gBAAQ,CAAE;AACxB;AACA;AACA,KAAK,CAAC;EACJ;EAEA,OAAOC,eAAI,CAACC,OAAO,CAACL,eAAe,CAAC;AACtC"}

View File

@@ -0,0 +1,3 @@
declare const getDefaultUserTerminal: () => string | undefined;
export default getDefaultUserTerminal;
//# sourceMappingURL=getDefaultUserTerminal.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getDefaultUserTerminal.d.ts","sourceRoot":"","sources":["../src/getDefaultUserTerminal.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,sBAAsB,QAAO,MAAM,GAAG,SAgB3C,CAAC;AAEF,eAAe,sBAAsB,CAAC"}

View File

@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _os() {
const data = _interopRequireDefault(require("os"));
_os = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const getDefaultUserTerminal = () => {
const {
REACT_TERMINAL,
TERM_PROGRAM,
TERM
} = process.env;
if (REACT_TERMINAL) {
return REACT_TERMINAL;
}
if (_os().default.platform() === 'darwin') {
return TERM_PROGRAM;
}
if (_os().default.platform() === 'win32') {
return 'cmd.exe';
}
return TERM;
};
var _default = getDefaultUserTerminal;
exports.default = _default;
//# sourceMappingURL=getDefaultUserTerminal.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["getDefaultUserTerminal","REACT_TERMINAL","TERM_PROGRAM","TERM","process","env","os","platform"],"sources":["../src/getDefaultUserTerminal.ts"],"sourcesContent":["import os from 'os';\n\nconst getDefaultUserTerminal = (): string | undefined => {\n const {REACT_TERMINAL, TERM_PROGRAM, TERM} = process.env;\n\n if (REACT_TERMINAL) {\n return REACT_TERMINAL;\n }\n\n if (os.platform() === 'darwin') {\n return TERM_PROGRAM;\n }\n\n if (os.platform() === 'win32') {\n return 'cmd.exe';\n }\n\n return TERM;\n};\n\nexport default getDefaultUserTerminal;\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAoB;AAEpB,MAAMA,sBAAsB,GAAG,MAA0B;EACvD,MAAM;IAACC,cAAc;IAAEC,YAAY;IAAEC;EAAI,CAAC,GAAGC,OAAO,CAACC,GAAG;EAExD,IAAIJ,cAAc,EAAE;IAClB,OAAOA,cAAc;EACvB;EAEA,IAAIK,aAAE,CAACC,QAAQ,EAAE,KAAK,QAAQ,EAAE;IAC9B,OAAOL,YAAY;EACrB;EAEA,IAAII,aAAE,CAACC,QAAQ,EAAE,KAAK,OAAO,EAAE;IAC7B,OAAO,SAAS;EAClB;EAEA,OAAOJ,IAAI;AACb,CAAC;AAAC,eAEaH,sBAAsB;AAAA"}

View File

@@ -0,0 +1,12 @@
type Result = {
start: boolean;
nextPort: number;
};
/**
* Increases by one the port number until it finds an available port.
* @param port Port number to start with.
* @param root Root of the project.
*/
declare const getNextPort: (port: number, root: string) => Promise<Result>;
export default getNextPort;
//# sourceMappingURL=getNextPort.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getNextPort.d.ts","sourceRoot":"","sources":["../src/getNextPort.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AAEH,QAAA,MAAM,WAAW,SAAgB,MAAM,QAAQ,MAAM,KAAG,QAAQ,MAAM,CAmBrE,CAAC;AAEF,eAAe,WAAW,CAAC"}

View File

@@ -0,0 +1,34 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _isPackagerRunning = _interopRequireDefault(require("./isPackagerRunning"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Increases by one the port number until it finds an available port.
* @param port Port number to start with.
* @param root Root of the project.
*/
const getNextPort = async (port, root) => {
let nextPort = port + 1;
let start = true;
const result = await (0, _isPackagerRunning.default)(nextPort);
const isRunning = typeof result === 'object' && result.status === 'running';
if (isRunning && result.root === root) {
// Found running bundler for this project, so we do not need to start packager!
start = false;
} else if (isRunning || result === 'unrecognized') {
return getNextPort(nextPort, root);
}
return {
start,
nextPort
};
};
var _default = getNextPort;
exports.default = _default;
//# sourceMappingURL=getNextPort.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["getNextPort","port","root","nextPort","start","result","isPackagerRunning","isRunning","status"],"sources":["../src/getNextPort.ts"],"sourcesContent":["import isPackagerRunning from './isPackagerRunning';\n\ntype Result = {\n start: boolean;\n nextPort: number;\n};\n\n/**\n * Increases by one the port number until it finds an available port.\n * @param port Port number to start with.\n * @param root Root of the project.\n */\n\nconst getNextPort = async (port: number, root: string): Promise<Result> => {\n let nextPort = port + 1;\n let start = true;\n\n const result = await isPackagerRunning(nextPort);\n\n const isRunning = typeof result === 'object' && result.status === 'running';\n\n if (isRunning && result.root === root) {\n // Found running bundler for this project, so we do not need to start packager!\n start = false;\n } else if (isRunning || result === 'unrecognized') {\n return getNextPort(nextPort, root);\n }\n\n return {\n start,\n nextPort,\n };\n};\n\nexport default getNextPort;\n"],"mappings":";;;;;;AAAA;AAAoD;AAOpD;AACA;AACA;AACA;AACA;;AAEA,MAAMA,WAAW,GAAG,OAAOC,IAAY,EAAEC,IAAY,KAAsB;EACzE,IAAIC,QAAQ,GAAGF,IAAI,GAAG,CAAC;EACvB,IAAIG,KAAK,GAAG,IAAI;EAEhB,MAAMC,MAAM,GAAG,MAAM,IAAAC,0BAAiB,EAACH,QAAQ,CAAC;EAEhD,MAAMI,SAAS,GAAG,OAAOF,MAAM,KAAK,QAAQ,IAAIA,MAAM,CAACG,MAAM,KAAK,SAAS;EAE3E,IAAID,SAAS,IAAIF,MAAM,CAACH,IAAI,KAAKA,IAAI,EAAE;IACrC;IACAE,KAAK,GAAG,KAAK;EACf,CAAC,MAAM,IAAIG,SAAS,IAAIF,MAAM,KAAK,cAAc,EAAE;IACjD,OAAOL,WAAW,CAACG,QAAQ,EAAED,IAAI,CAAC;EACpC;EAEA,OAAO;IACLE,KAAK;IACLD;EACF,CAAC;AACH,CAAC;AAAC,eAEaH,WAAW;AAAA"}

View File

@@ -0,0 +1,6 @@
declare const handlePortUnavailable: (initialPort: number, projectRoot: string) => Promise<{
port: number;
packager: boolean;
}>;
export default handlePortUnavailable;
//# sourceMappingURL=handlePortUnavailable.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"handlePortUnavailable.d.ts","sourceRoot":"","sources":["../src/handlePortUnavailable.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,qBAAqB,gBACZ,MAAM,eACN,MAAM;UAEb,MAAM;cACF,OAAO;EAwBlB,CAAC;AAEF,eAAe,qBAAqB,CAAC"}

View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _getNextPort = _interopRequireDefault(require("./getNextPort"));
var _port = require("./port");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const handlePortUnavailable = async (initialPort, projectRoot) => {
const {
nextPort,
start
} = await (0, _getNextPort.default)(initialPort, projectRoot);
let packager = true;
let port = initialPort;
if (!start) {
packager = false;
(0, _port.logAlreadyRunningBundler)(nextPort);
} else {
const {
change
} = await (0, _port.askForPortChange)(port, nextPort);
if (change) {
port = nextPort;
} else {
packager = false;
(0, _port.logChangePortInstructions)();
}
}
return {
port,
packager
};
};
var _default = handlePortUnavailable;
exports.default = _default;
//# sourceMappingURL=handlePortUnavailable.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["handlePortUnavailable","initialPort","projectRoot","nextPort","start","getNextPort","packager","port","logAlreadyRunningBundler","change","askForPortChange","logChangePortInstructions"],"sources":["../src/handlePortUnavailable.ts"],"sourcesContent":["import getNextPort from './getNextPort';\nimport {\n askForPortChange,\n logAlreadyRunningBundler,\n logChangePortInstructions,\n} from './port';\n\nconst handlePortUnavailable = async (\n initialPort: number,\n projectRoot: string,\n): Promise<{\n port: number;\n packager: boolean;\n}> => {\n const {nextPort, start} = await getNextPort(initialPort, projectRoot);\n let packager = true;\n let port = initialPort;\n\n if (!start) {\n packager = false;\n logAlreadyRunningBundler(nextPort);\n } else {\n const {change} = await askForPortChange(port, nextPort);\n\n if (change) {\n port = nextPort;\n } else {\n packager = false;\n logChangePortInstructions();\n }\n }\n\n return {\n port,\n packager,\n };\n};\n\nexport default handlePortUnavailable;\n"],"mappings":";;;;;;AAAA;AACA;AAIgB;AAEhB,MAAMA,qBAAqB,GAAG,OAC5BC,WAAmB,EACnBC,WAAmB,KAIf;EACJ,MAAM;IAACC,QAAQ;IAAEC;EAAK,CAAC,GAAG,MAAM,IAAAC,oBAAW,EAACJ,WAAW,EAAEC,WAAW,CAAC;EACrE,IAAII,QAAQ,GAAG,IAAI;EACnB,IAAIC,IAAI,GAAGN,WAAW;EAEtB,IAAI,CAACG,KAAK,EAAE;IACVE,QAAQ,GAAG,KAAK;IAChB,IAAAE,8BAAwB,EAACL,QAAQ,CAAC;EACpC,CAAC,MAAM;IACL,MAAM;MAACM;IAAM,CAAC,GAAG,MAAM,IAAAC,sBAAgB,EAACH,IAAI,EAAEJ,QAAQ,CAAC;IAEvD,IAAIM,MAAM,EAAE;MACVF,IAAI,GAAGJ,QAAQ;IACjB,CAAC,MAAM;MACLG,QAAQ,GAAG,KAAK;MAChB,IAAAK,+BAAyB,GAAE;IAC7B;EACF;EAEA,OAAO;IACLJ,IAAI;IACJD;EACF,CAAC;AACH,CAAC;AAAC,eAEaN,qBAAqB;AAAA"}

View File

@@ -0,0 +1,22 @@
export { default as logger } from './logger';
export { default as isPackagerRunning } from './isPackagerRunning';
export { default as getDefaultUserTerminal } from './getDefaultUserTerminal';
export { fetch, fetchToTemp } from './fetch';
export { default as launchDefaultBrowser } from './launchDefaultBrowser';
export { default as launchDebugger } from './launchDebugger';
export { default as launchEditor } from './launchEditor';
export * as version from './releaseChecker';
export { default as resolveNodeModuleDir } from './resolveNodeModuleDir';
export { getLoader, NoopLoader, Loader } from './loader';
export { default as findProjectRoot } from './findProjectRoot';
export { default as printRunDoctorTip } from './printRunDoctorTip';
export * from './prompt';
export * as link from './doclink';
export { default as startServerInNewWindow } from './startServerInNewWindow';
export { default as findDevServerPort } from './findDevServerPort';
export * from './port';
export { default as cacheManager } from './cacheManager';
export { default as runSudo } from './runSudo';
export { default as unixifyPaths } from './unixifyPaths';
export * from './errors';
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,cAAc,UAAU,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACjE,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAEvD,cAAc,UAAU,CAAC"}

View File

@@ -0,0 +1,205 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _exportNames = {
logger: true,
isPackagerRunning: true,
getDefaultUserTerminal: true,
fetch: true,
fetchToTemp: true,
launchDefaultBrowser: true,
launchDebugger: true,
launchEditor: true,
version: true,
resolveNodeModuleDir: true,
getLoader: true,
NoopLoader: true,
Loader: true,
findProjectRoot: true,
printRunDoctorTip: true,
link: true,
startServerInNewWindow: true,
findDevServerPort: true,
cacheManager: true,
runSudo: true,
unixifyPaths: true
};
Object.defineProperty(exports, "Loader", {
enumerable: true,
get: function () {
return _loader.Loader;
}
});
Object.defineProperty(exports, "NoopLoader", {
enumerable: true,
get: function () {
return _loader.NoopLoader;
}
});
Object.defineProperty(exports, "cacheManager", {
enumerable: true,
get: function () {
return _cacheManager.default;
}
});
Object.defineProperty(exports, "fetch", {
enumerable: true,
get: function () {
return _fetch.fetch;
}
});
Object.defineProperty(exports, "fetchToTemp", {
enumerable: true,
get: function () {
return _fetch.fetchToTemp;
}
});
Object.defineProperty(exports, "findDevServerPort", {
enumerable: true,
get: function () {
return _findDevServerPort.default;
}
});
Object.defineProperty(exports, "findProjectRoot", {
enumerable: true,
get: function () {
return _findProjectRoot.default;
}
});
Object.defineProperty(exports, "getDefaultUserTerminal", {
enumerable: true,
get: function () {
return _getDefaultUserTerminal.default;
}
});
Object.defineProperty(exports, "getLoader", {
enumerable: true,
get: function () {
return _loader.getLoader;
}
});
Object.defineProperty(exports, "isPackagerRunning", {
enumerable: true,
get: function () {
return _isPackagerRunning.default;
}
});
Object.defineProperty(exports, "launchDebugger", {
enumerable: true,
get: function () {
return _launchDebugger.default;
}
});
Object.defineProperty(exports, "launchDefaultBrowser", {
enumerable: true,
get: function () {
return _launchDefaultBrowser.default;
}
});
Object.defineProperty(exports, "launchEditor", {
enumerable: true,
get: function () {
return _launchEditor.default;
}
});
exports.link = void 0;
Object.defineProperty(exports, "logger", {
enumerable: true,
get: function () {
return _logger.default;
}
});
Object.defineProperty(exports, "printRunDoctorTip", {
enumerable: true,
get: function () {
return _printRunDoctorTip.default;
}
});
Object.defineProperty(exports, "resolveNodeModuleDir", {
enumerable: true,
get: function () {
return _resolveNodeModuleDir.default;
}
});
Object.defineProperty(exports, "runSudo", {
enumerable: true,
get: function () {
return _runSudo.default;
}
});
Object.defineProperty(exports, "startServerInNewWindow", {
enumerable: true,
get: function () {
return _startServerInNewWindow.default;
}
});
Object.defineProperty(exports, "unixifyPaths", {
enumerable: true,
get: function () {
return _unixifyPaths.default;
}
});
exports.version = void 0;
var _logger = _interopRequireDefault(require("./logger"));
var _isPackagerRunning = _interopRequireDefault(require("./isPackagerRunning"));
var _getDefaultUserTerminal = _interopRequireDefault(require("./getDefaultUserTerminal"));
var _fetch = require("./fetch");
var _launchDefaultBrowser = _interopRequireDefault(require("./launchDefaultBrowser"));
var _launchDebugger = _interopRequireDefault(require("./launchDebugger"));
var _launchEditor = _interopRequireDefault(require("./launchEditor"));
var _version = _interopRequireWildcard(require("./releaseChecker"));
exports.version = _version;
var _resolveNodeModuleDir = _interopRequireDefault(require("./resolveNodeModuleDir"));
var _loader = require("./loader");
var _findProjectRoot = _interopRequireDefault(require("./findProjectRoot"));
var _printRunDoctorTip = _interopRequireDefault(require("./printRunDoctorTip"));
var _prompt = require("./prompt");
Object.keys(_prompt).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _prompt[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _prompt[key];
}
});
});
var _link = _interopRequireWildcard(require("./doclink"));
exports.link = _link;
var _startServerInNewWindow = _interopRequireDefault(require("./startServerInNewWindow"));
var _findDevServerPort = _interopRequireDefault(require("./findDevServerPort"));
var _port = require("./port");
Object.keys(_port).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _port[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _port[key];
}
});
});
var _cacheManager = _interopRequireDefault(require("./cacheManager"));
var _runSudo = _interopRequireDefault(require("./runSudo"));
var _unixifyPaths = _interopRequireDefault(require("./unixifyPaths"));
var _errors = require("./errors");
Object.keys(_errors).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _errors[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _errors[key];
}
});
});
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=index.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":[],"sources":["../src/index.ts"],"sourcesContent":["export {default as logger} from './logger';\nexport {default as isPackagerRunning} from './isPackagerRunning';\nexport {default as getDefaultUserTerminal} from './getDefaultUserTerminal';\nexport {fetch, fetchToTemp} from './fetch';\nexport {default as launchDefaultBrowser} from './launchDefaultBrowser';\nexport {default as launchDebugger} from './launchDebugger';\nexport {default as launchEditor} from './launchEditor';\nexport * as version from './releaseChecker';\nexport {default as resolveNodeModuleDir} from './resolveNodeModuleDir';\nexport {getLoader, NoopLoader, Loader} from './loader';\nexport {default as findProjectRoot} from './findProjectRoot';\nexport {default as printRunDoctorTip} from './printRunDoctorTip';\nexport * from './prompt';\nexport * as link from './doclink';\nexport {default as startServerInNewWindow} from './startServerInNewWindow';\nexport {default as findDevServerPort} from './findDevServerPort';\nexport * from './port';\nexport {default as cacheManager} from './cacheManager';\nexport {default as runSudo} from './runSudo';\nexport {default as unixifyPaths} from './unixifyPaths';\n\nexport * from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAuD;AAAA;AAEvD;AACA;AACA;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAyB;AAAA;AAEzB;AACA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAyB;AAAA;AAAA"}

View File

@@ -0,0 +1,20 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
/**
* Indicates whether or not the packager is running. It returns a promise that
* returns one of these possible values:
* - `running`: the packager is running
* - `not_running`: the packager nor any process is running on the expected port.
* - `unrecognized`: one other process is running on the port we expect the packager to be running.
*/
declare function isPackagerRunning(packagerPort?: string | number): Promise<{
status: 'running';
root: string;
} | 'not_running' | 'unrecognized'>;
export default isPackagerRunning;
//# sourceMappingURL=isPackagerRunning.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"isPackagerRunning.d.ts","sourceRoot":"","sources":["../src/isPackagerRunning.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;GAMG;AACH,iBAAe,iBAAiB,CAC9B,YAAY,GAAE,MAAM,GAAG,MAA6C,GACnE,OAAO,CACN;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,GACD,aAAa,GACb,cAAc,CACjB,CAqBA;AAED,eAAe,iBAAiB,CAAC"}

View File

@@ -0,0 +1,47 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fetch = require("./fetch");
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
/**
* Indicates whether or not the packager is running. It returns a promise that
* returns one of these possible values:
* - `running`: the packager is running
* - `not_running`: the packager nor any process is running on the expected port.
* - `unrecognized`: one other process is running on the port we expect the packager to be running.
*/
async function isPackagerRunning(packagerPort = process.env.RCT_METRO_PORT || '8081') {
try {
const {
data,
headers
} = await (0, _fetch.fetch)(`http://localhost:${packagerPort}/status`);
try {
if (data === 'packager-status:running') {
return {
status: 'running',
root: headers.get('X-React-Native-Project-Root') ?? ''
};
}
} catch (_error) {
return 'unrecognized';
}
return 'unrecognized';
} catch (_error) {
return 'not_running';
}
}
var _default = isPackagerRunning;
exports.default = _default;
//# sourceMappingURL=isPackagerRunning.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["isPackagerRunning","packagerPort","process","env","RCT_METRO_PORT","data","headers","fetch","status","root","get","_error"],"sources":["../src/isPackagerRunning.ts"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {fetch} from './fetch';\n\n/**\n * Indicates whether or not the packager is running. It returns a promise that\n * returns one of these possible values:\n * - `running`: the packager is running\n * - `not_running`: the packager nor any process is running on the expected port.\n * - `unrecognized`: one other process is running on the port we expect the packager to be running.\n */\nasync function isPackagerRunning(\n packagerPort: string | number = process.env.RCT_METRO_PORT || '8081',\n): Promise<\n | {\n status: 'running';\n root: string;\n }\n | 'not_running'\n | 'unrecognized'\n> {\n try {\n const {data, headers} = await fetch(\n `http://localhost:${packagerPort}/status`,\n );\n\n try {\n if (data === 'packager-status:running') {\n return {\n status: 'running',\n root: headers.get('X-React-Native-Project-Root') ?? '',\n };\n }\n } catch (_error) {\n return 'unrecognized';\n }\n\n return 'unrecognized';\n } catch (_error) {\n return 'not_running';\n }\n}\n\nexport default isPackagerRunning;\n"],"mappings":";;;;;;AAQA;AARA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeA,iBAAiB,CAC9BC,YAA6B,GAAGC,OAAO,CAACC,GAAG,CAACC,cAAc,IAAI,MAAM,EAQpE;EACA,IAAI;IACF,MAAM;MAACC,IAAI;MAAEC;IAAO,CAAC,GAAG,MAAM,IAAAC,YAAK,EAChC,oBAAmBN,YAAa,SAAQ,CAC1C;IAED,IAAI;MACF,IAAII,IAAI,KAAK,yBAAyB,EAAE;QACtC,OAAO;UACLG,MAAM,EAAE,SAAS;UACjBC,IAAI,EAAEH,OAAO,CAACI,GAAG,CAAC,6BAA6B,CAAC,IAAI;QACtD,CAAC;MACH;IACF,CAAC,CAAC,OAAOC,MAAM,EAAE;MACf,OAAO,cAAc;IACvB;IAEA,OAAO,cAAc;EACvB,CAAC,CAAC,OAAOA,MAAM,EAAE;IACf,OAAO,aAAa;EACtB;AACF;AAAC,eAEcX,iBAAiB;AAAA"}

View File

@@ -0,0 +1,11 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
declare function launchDebugger(url: string): Promise<void>;
export default launchDebugger;
//# sourceMappingURL=launchDebugger.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"launchDebugger.d.ts","sourceRoot":"","sources":["../src/launchDebugger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,iBAAe,cAAc,CAAC,GAAG,EAAE,MAAM,iBAExC;AAED,eAAe,cAAc,CAAC"}

View File

@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _launchDefaultBrowser = _interopRequireDefault(require("./launchDefaultBrowser"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
async function launchDebugger(url) {
return (0, _launchDefaultBrowser.default)(url);
}
var _default = launchDebugger;
exports.default = _default;
//# sourceMappingURL=launchDebugger.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["launchDebugger","url","launchDefaultBrowser"],"sources":["../src/launchDebugger.ts"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport launchDefaultBrowser from './launchDefaultBrowser';\n\nasync function launchDebugger(url: string) {\n return launchDefaultBrowser(url);\n}\n\nexport default launchDebugger;\n"],"mappings":";;;;;;AASA;AAA0D;AAT1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,eAAeA,cAAc,CAACC,GAAW,EAAE;EACzC,OAAO,IAAAC,6BAAoB,EAACD,GAAG,CAAC;AAClC;AAAC,eAEcD,cAAc;AAAA"}

View File

@@ -0,0 +1,11 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
declare function launchDefaultBrowser(url: string): Promise<void>;
export default launchDefaultBrowser;
//# sourceMappingURL=launchDefaultBrowser.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"launchDefaultBrowser.d.ts","sourceRoot":"","sources":["../src/launchDefaultBrowser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,iBAAe,oBAAoB,CAAC,GAAG,EAAE,MAAM,iBAU9C;AAED,eAAe,oBAAoB,CAAC"}

View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _open() {
const data = _interopRequireDefault(require("open"));
_open = function () {
return data;
};
return data;
}
var _throwIfNonAllowedProtocol = _interopRequireDefault(require("./throwIfNonAllowedProtocol"));
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
async function launchDefaultBrowser(url) {
try {
(0, _throwIfNonAllowedProtocol.default)(url);
await (0, _open().default)(url);
} catch (err) {
if (err instanceof Error) {
_logger.default.error('Browser exited with error:', err.message);
}
}
}
var _default = launchDefaultBrowser;
exports.default = _default;
//# sourceMappingURL=launchDefaultBrowser.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["launchDefaultBrowser","url","throwIfNonAllowedProtocol","open","err","Error","logger","error","message"],"sources":["../src/launchDefaultBrowser.ts"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport open from 'open';\nimport throwIfNonAllowedProtocol from './throwIfNonAllowedProtocol';\nimport logger from './logger';\n\nasync function launchDefaultBrowser(url: string) {\n try {\n throwIfNonAllowedProtocol(url);\n\n await open(url);\n } catch (err) {\n if (err instanceof Error) {\n logger.error('Browser exited with error:', err.message);\n }\n }\n}\n\nexport default launchDefaultBrowser;\n"],"mappings":";;;;;;AASA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;AACA;AAA8B;AAX9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,eAAeA,oBAAoB,CAACC,GAAW,EAAE;EAC/C,IAAI;IACF,IAAAC,kCAAyB,EAACD,GAAG,CAAC;IAE9B,MAAM,IAAAE,eAAI,EAACF,GAAG,CAAC;EACjB,CAAC,CAAC,OAAOG,GAAG,EAAE;IACZ,IAAIA,GAAG,YAAYC,KAAK,EAAE;MACxBC,eAAM,CAACC,KAAK,CAAC,4BAA4B,EAAEH,GAAG,CAACI,OAAO,CAAC;IACzD;EACF;AACF;AAAC,eAEcR,oBAAoB;AAAA"}

View File

@@ -0,0 +1,11 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
declare function launchEditor(fileName: string, lineNumber: number, projectRoots: ReadonlyArray<string>): void;
export default launchEditor;
//# sourceMappingURL=launchEditor.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"launchEditor.d.ts","sourceRoot":"","sources":["../src/launchEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwQH,iBAAS,YAAY,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,QAkFpC;AAED,eAAe,YAAY,CAAC"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
@echo off
title Metro
call .packager.bat
cd "%PROJECT_ROOT%"
node "%REACT_NATIVE_PATH%/cli.js" start
pause
exit

View File

@@ -0,0 +1,12 @@
#!/bin/bash
THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
source "$THIS_DIR/.packager.env"
cd "$PROJECT_ROOT"
"$REACT_NATIVE_PATH/cli.js" start --port $RCT_METRO_PORT
if [[ -z "$CI" ]]; then
echo "Process terminated. Press <enter> to close the window"
read -r
fi

View File

@@ -0,0 +1,24 @@
import type { Ora, Options, Spinner, Color } from 'ora';
export type Loader = Ora;
declare class OraNoop implements Loader {
spinner: Spinner;
indent: number;
isSpinning: boolean;
text: string;
prefixText: string;
color: Color;
succeed(_text?: string | undefined): this;
fail(_text?: string): this;
start(_text?: string): this;
stop(): this;
warn(_text?: string): this;
info(_text?: string): this;
stopAndPersist(): this;
clear(): this;
render(): this;
frame(): string;
}
export declare function getLoader(options?: string | Options | undefined): Loader;
export declare const NoopLoader: typeof OraNoop;
export {};
//# sourceMappingURL=loader.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,KAAK,CAAC;AAGtD,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC;AAEzB,cAAM,OAAQ,YAAW,MAAM;IAC7B,OAAO,EAAE,OAAO,CAA6B;IAC7C,MAAM,EAAE,MAAM,CAAK;IACnB,UAAU,EAAE,OAAO,CAAS;IAC5B,IAAI,EAAE,MAAM,CAAM;IAClB,UAAU,EAAE,MAAM,CAAM;IACxB,KAAK,EAAE,KAAK,CAAU;IAEtB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS;IAGlC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM;IAGnB,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM;IAGpB,IAAI;IAGJ,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM;IAGnB,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM;IAGnB,cAAc;IAGd,KAAK;IAGL,MAAM;IAGN,KAAK;CAGN;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAExE;AAED,eAAO,MAAM,UAAU,gBAAU,CAAC"}

View File

@@ -0,0 +1,64 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NoopLoader = void 0;
exports.getLoader = getLoader;
function _ora() {
const data = _interopRequireDefault(require("ora"));
_ora = function () {
return data;
};
return data;
}
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class OraNoop {
spinner = {
interval: 1,
frames: []
};
indent = 0;
isSpinning = false;
text = '';
prefixText = '';
color = 'blue';
succeed(_text) {
return this;
}
fail(_text) {
return this;
}
start(_text) {
return this;
}
stop() {
return this;
}
warn(_text) {
return this;
}
info(_text) {
return this;
}
stopAndPersist() {
return this;
}
clear() {
return this;
}
render() {
return this;
}
frame() {
return this.text;
}
}
function getLoader(options) {
return _logger.default.isVerbose() ? new OraNoop() : (0, _ora().default)(options);
}
const NoopLoader = OraNoop;
exports.NoopLoader = NoopLoader;
//# sourceMappingURL=loader.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["OraNoop","spinner","interval","frames","indent","isSpinning","text","prefixText","color","succeed","_text","fail","start","stop","warn","info","stopAndPersist","clear","render","frame","getLoader","options","logger","isVerbose","ora","NoopLoader"],"sources":["../src/loader.ts"],"sourcesContent":["import ora from 'ora';\nimport type {Ora, Options, Spinner, Color} from 'ora';\nimport logger from './logger';\n\nexport type Loader = Ora;\n\nclass OraNoop implements Loader {\n spinner: Spinner = {interval: 1, frames: []};\n indent: number = 0;\n isSpinning: boolean = false;\n text: string = '';\n prefixText: string = '';\n color: Color = 'blue';\n\n succeed(_text?: string | undefined) {\n return this;\n }\n fail(_text?: string) {\n return this;\n }\n start(_text?: string) {\n return this;\n }\n stop() {\n return this;\n }\n warn(_text?: string) {\n return this;\n }\n info(_text?: string) {\n return this;\n }\n stopAndPersist() {\n return this;\n }\n clear() {\n return this;\n }\n render() {\n return this;\n }\n frame() {\n return this.text;\n }\n}\n\nexport function getLoader(options?: string | Options | undefined): Loader {\n return logger.isVerbose() ? new OraNoop() : ora(options);\n}\n\nexport const NoopLoader = OraNoop;\n"],"mappings":";;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;AAA8B;AAI9B,MAAMA,OAAO,CAAmB;EAC9BC,OAAO,GAAY;IAACC,QAAQ,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC;EAC5CC,MAAM,GAAW,CAAC;EAClBC,UAAU,GAAY,KAAK;EAC3BC,IAAI,GAAW,EAAE;EACjBC,UAAU,GAAW,EAAE;EACvBC,KAAK,GAAU,MAAM;EAErBC,OAAO,CAACC,KAA0B,EAAE;IAClC,OAAO,IAAI;EACb;EACAC,IAAI,CAACD,KAAc,EAAE;IACnB,OAAO,IAAI;EACb;EACAE,KAAK,CAACF,KAAc,EAAE;IACpB,OAAO,IAAI;EACb;EACAG,IAAI,GAAG;IACL,OAAO,IAAI;EACb;EACAC,IAAI,CAACJ,KAAc,EAAE;IACnB,OAAO,IAAI;EACb;EACAK,IAAI,CAACL,KAAc,EAAE;IACnB,OAAO,IAAI;EACb;EACAM,cAAc,GAAG;IACf,OAAO,IAAI;EACb;EACAC,KAAK,GAAG;IACN,OAAO,IAAI;EACb;EACAC,MAAM,GAAG;IACP,OAAO,IAAI;EACb;EACAC,KAAK,GAAG;IACN,OAAO,IAAI,CAACb,IAAI;EAClB;AACF;AAEO,SAASc,SAAS,CAACC,OAAsC,EAAU;EACxE,OAAOC,eAAM,CAACC,SAAS,EAAE,GAAG,IAAIvB,OAAO,EAAE,GAAG,IAAAwB,cAAG,EAACH,OAAO,CAAC;AAC1D;AAEO,MAAMI,UAAU,GAAGzB,OAAO;AAAC"}

View File

@@ -0,0 +1,15 @@
declare const _default: {
success: (...messages: string[]) => void;
info: (...messages: string[]) => void;
warn: (...messages: string[]) => void;
error: (...messages: string[]) => void;
debug: (...messages: string[]) => void;
log: (...messages: string[]) => void;
setVerbose: (level: boolean) => void;
isVerbose: () => boolean;
hasDebugMessages: () => boolean;
disable: () => void;
enable: () => void;
};
export default _default;
//# sourceMappingURL=logger.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAiEA,wBAYE"}

View File

@@ -0,0 +1,78 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const SEPARATOR = ', ';
let verbose = false;
let disabled = false;
let hidden = false;
const formatMessages = messages => _chalk().default.reset(messages.join(SEPARATOR));
const success = (...messages) => {
if (!disabled) {
console.log(`${_chalk().default.green.bold('success')} ${formatMessages(messages)}`);
}
};
const info = (...messages) => {
if (!disabled) {
console.log(`${_chalk().default.cyan.bold('info')} ${formatMessages(messages)}`);
}
};
const warn = (...messages) => {
if (!disabled) {
console.warn(`${_chalk().default.yellow.bold('warn')} ${formatMessages(messages)}`);
}
};
const error = (...messages) => {
if (!disabled) {
console.error(`${_chalk().default.red.bold('error')} ${formatMessages(messages)}`);
}
};
const debug = (...messages) => {
if (verbose && !disabled) {
console.log(`${_chalk().default.gray.bold('debug')} ${formatMessages(messages)}`);
} else {
hidden = true;
}
};
const log = (...messages) => {
if (!disabled) {
console.log(`${formatMessages(messages)}`);
}
};
const setVerbose = level => {
verbose = level;
};
const isVerbose = () => verbose;
const disable = () => {
disabled = true;
};
const enable = () => {
disabled = false;
};
const hasDebugMessages = () => hidden;
var _default = {
success,
info,
warn,
error,
debug,
log,
setVerbose,
isVerbose,
hasDebugMessages,
disable,
enable
};
exports.default = _default;
//# sourceMappingURL=logger.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["SEPARATOR","verbose","disabled","hidden","formatMessages","messages","chalk","reset","join","success","console","log","green","bold","info","cyan","warn","yellow","error","red","debug","gray","setVerbose","level","isVerbose","disable","enable","hasDebugMessages"],"sources":["../src/logger.ts"],"sourcesContent":["import chalk from 'chalk';\n\nconst SEPARATOR = ', ';\n\nlet verbose = false;\nlet disabled = false;\nlet hidden = false;\n\nconst formatMessages = (messages: Array<string>) =>\n chalk.reset(messages.join(SEPARATOR));\n\nconst success = (...messages: Array<string>) => {\n if (!disabled) {\n console.log(`${chalk.green.bold('success')} ${formatMessages(messages)}`);\n }\n};\n\nconst info = (...messages: Array<string>) => {\n if (!disabled) {\n console.log(`${chalk.cyan.bold('info')} ${formatMessages(messages)}`);\n }\n};\n\nconst warn = (...messages: Array<string>) => {\n if (!disabled) {\n console.warn(`${chalk.yellow.bold('warn')} ${formatMessages(messages)}`);\n }\n};\n\nconst error = (...messages: Array<string>) => {\n if (!disabled) {\n console.error(`${chalk.red.bold('error')} ${formatMessages(messages)}`);\n }\n};\n\nconst debug = (...messages: Array<string>) => {\n if (verbose && !disabled) {\n console.log(`${chalk.gray.bold('debug')} ${formatMessages(messages)}`);\n } else {\n hidden = true;\n }\n};\n\nconst log = (...messages: Array<string>) => {\n if (!disabled) {\n console.log(`${formatMessages(messages)}`);\n }\n};\n\nconst setVerbose = (level: boolean) => {\n verbose = level;\n};\n\nconst isVerbose = () => verbose;\n\nconst disable = () => {\n disabled = true;\n};\n\nconst enable = () => {\n disabled = false;\n};\n\nconst hasDebugMessages = () => hidden;\n\nexport default {\n success,\n info,\n warn,\n error,\n debug,\n log,\n setVerbose,\n isVerbose,\n hasDebugMessages,\n disable,\n enable,\n};\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA0B;AAE1B,MAAMA,SAAS,GAAG,IAAI;AAEtB,IAAIC,OAAO,GAAG,KAAK;AACnB,IAAIC,QAAQ,GAAG,KAAK;AACpB,IAAIC,MAAM,GAAG,KAAK;AAElB,MAAMC,cAAc,GAAIC,QAAuB,IAC7CC,gBAAK,CAACC,KAAK,CAACF,QAAQ,CAACG,IAAI,CAACR,SAAS,CAAC,CAAC;AAEvC,MAAMS,OAAO,GAAG,CAAC,GAAGJ,QAAuB,KAAK;EAC9C,IAAI,CAACH,QAAQ,EAAE;IACbQ,OAAO,CAACC,GAAG,CAAE,GAAEL,gBAAK,CAACM,KAAK,CAACC,IAAI,CAAC,SAAS,CAAE,IAAGT,cAAc,CAACC,QAAQ,CAAE,EAAC,CAAC;EAC3E;AACF,CAAC;AAED,MAAMS,IAAI,GAAG,CAAC,GAAGT,QAAuB,KAAK;EAC3C,IAAI,CAACH,QAAQ,EAAE;IACbQ,OAAO,CAACC,GAAG,CAAE,GAAEL,gBAAK,CAACS,IAAI,CAACF,IAAI,CAAC,MAAM,CAAE,IAAGT,cAAc,CAACC,QAAQ,CAAE,EAAC,CAAC;EACvE;AACF,CAAC;AAED,MAAMW,IAAI,GAAG,CAAC,GAAGX,QAAuB,KAAK;EAC3C,IAAI,CAACH,QAAQ,EAAE;IACbQ,OAAO,CAACM,IAAI,CAAE,GAAEV,gBAAK,CAACW,MAAM,CAACJ,IAAI,CAAC,MAAM,CAAE,IAAGT,cAAc,CAACC,QAAQ,CAAE,EAAC,CAAC;EAC1E;AACF,CAAC;AAED,MAAMa,KAAK,GAAG,CAAC,GAAGb,QAAuB,KAAK;EAC5C,IAAI,CAACH,QAAQ,EAAE;IACbQ,OAAO,CAACQ,KAAK,CAAE,GAAEZ,gBAAK,CAACa,GAAG,CAACN,IAAI,CAAC,OAAO,CAAE,IAAGT,cAAc,CAACC,QAAQ,CAAE,EAAC,CAAC;EACzE;AACF,CAAC;AAED,MAAMe,KAAK,GAAG,CAAC,GAAGf,QAAuB,KAAK;EAC5C,IAAIJ,OAAO,IAAI,CAACC,QAAQ,EAAE;IACxBQ,OAAO,CAACC,GAAG,CAAE,GAAEL,gBAAK,CAACe,IAAI,CAACR,IAAI,CAAC,OAAO,CAAE,IAAGT,cAAc,CAACC,QAAQ,CAAE,EAAC,CAAC;EACxE,CAAC,MAAM;IACLF,MAAM,GAAG,IAAI;EACf;AACF,CAAC;AAED,MAAMQ,GAAG,GAAG,CAAC,GAAGN,QAAuB,KAAK;EAC1C,IAAI,CAACH,QAAQ,EAAE;IACbQ,OAAO,CAACC,GAAG,CAAE,GAAEP,cAAc,CAACC,QAAQ,CAAE,EAAC,CAAC;EAC5C;AACF,CAAC;AAED,MAAMiB,UAAU,GAAIC,KAAc,IAAK;EACrCtB,OAAO,GAAGsB,KAAK;AACjB,CAAC;AAED,MAAMC,SAAS,GAAG,MAAMvB,OAAO;AAE/B,MAAMwB,OAAO,GAAG,MAAM;EACpBvB,QAAQ,GAAG,IAAI;AACjB,CAAC;AAED,MAAMwB,MAAM,GAAG,MAAM;EACnBxB,QAAQ,GAAG,KAAK;AAClB,CAAC;AAED,MAAMyB,gBAAgB,GAAG,MAAMxB,MAAM;AAAC,eAEvB;EACbM,OAAO;EACPK,IAAI;EACJE,IAAI;EACJE,KAAK;EACLE,KAAK;EACLT,GAAG;EACHW,UAAU;EACVE,SAAS;EACTG,gBAAgB;EAChBF,OAAO;EACPC;AACF,CAAC;AAAA"}

View File

@@ -0,0 +1,5 @@
/// <reference types="prompts" />
export declare const askForPortChange: (port: number, nextPort: number) => Promise<import("prompts").Answers<string>>;
export declare const logAlreadyRunningBundler: (port: number) => void;
export declare const logChangePortInstructions: () => void;
//# sourceMappingURL=port.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../src/port.ts"],"names":[],"mappings":";AAGA,eAAO,MAAM,gBAAgB,SAAgB,MAAM,YAAY,MAAM,+CAWpE,CAAC;AAEF,eAAO,MAAM,wBAAwB,SAAU,MAAM,SAIpD,CAAC;AAEF,eAAO,MAAM,yBAAyB,YAIrC,CAAC"}

View File

@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.logChangePortInstructions = exports.logAlreadyRunningBundler = exports.askForPortChange = void 0;
var _prompt = require("./prompt");
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const askForPortChange = async (port, nextPort) => {
_logger.default.info(`Another process is running on port ${port}.`);
return await (0, _prompt.prompt)({
name: 'change',
type: 'select',
message: `Use port ${nextPort} instead?`,
choices: [{
title: 'Yes',
value: true
}, {
title: 'No',
value: false
}]
});
};
exports.askForPortChange = askForPortChange;
const logAlreadyRunningBundler = port => {
_logger.default.info(`A dev server is already running for this project on port ${port}.`);
};
exports.logAlreadyRunningBundler = logAlreadyRunningBundler;
const logChangePortInstructions = () => {
_logger.default.info('Please terminate this process and try again, or use another port with "--port".');
};
exports.logChangePortInstructions = logChangePortInstructions;
//# sourceMappingURL=port.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["askForPortChange","port","nextPort","logger","info","prompt","name","type","message","choices","title","value","logAlreadyRunningBundler","logChangePortInstructions"],"sources":["../src/port.ts"],"sourcesContent":["import {prompt} from './prompt';\nimport logger from './logger';\n\nexport const askForPortChange = async (port: number, nextPort: number) => {\n logger.info(`Another process is running on port ${port}.`);\n return await prompt({\n name: 'change',\n type: 'select',\n message: `Use port ${nextPort} instead?`,\n choices: [\n {title: 'Yes', value: true},\n {title: 'No', value: false},\n ],\n });\n};\n\nexport const logAlreadyRunningBundler = (port: number) => {\n logger.info(\n `A dev server is already running for this project on port ${port}.`,\n );\n};\n\nexport const logChangePortInstructions = () => {\n logger.info(\n 'Please terminate this process and try again, or use another port with \"--port\".',\n );\n};\n"],"mappings":";;;;;;AAAA;AACA;AAA8B;AAEvB,MAAMA,gBAAgB,GAAG,OAAOC,IAAY,EAAEC,QAAgB,KAAK;EACxEC,eAAM,CAACC,IAAI,CAAE,sCAAqCH,IAAK,GAAE,CAAC;EAC1D,OAAO,MAAM,IAAAI,cAAM,EAAC;IAClBC,IAAI,EAAE,QAAQ;IACdC,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAG,YAAWN,QAAS,WAAU;IACxCO,OAAO,EAAE,CACP;MAACC,KAAK,EAAE,KAAK;MAAEC,KAAK,EAAE;IAAI,CAAC,EAC3B;MAACD,KAAK,EAAE,IAAI;MAAEC,KAAK,EAAE;IAAK,CAAC;EAE/B,CAAC,CAAC;AACJ,CAAC;AAAC;AAEK,MAAMC,wBAAwB,GAAIX,IAAY,IAAK;EACxDE,eAAM,CAACC,IAAI,CACR,4DAA2DH,IAAK,GAAE,CACpE;AACH,CAAC;AAAC;AAEK,MAAMY,yBAAyB,GAAG,MAAM;EAC7CV,eAAM,CAACC,IAAI,CACT,iFAAiF,CAClF;AACH,CAAC;AAAC"}

View File

@@ -0,0 +1,3 @@
declare const printRunDoctorTip: () => void;
export default printRunDoctorTip;
//# sourceMappingURL=printRunDoctorTip.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"printRunDoctorTip.d.ts","sourceRoot":"","sources":["../src/printRunDoctorTip.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,iBAAiB,YActB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}

View File

@@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _logger = _interopRequireDefault(require("./logger"));
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const printRunDoctorTip = () => {
const linkToDocs = 'https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor';
_logger.default.log('');
_logger.default.info(_chalk().default.dim(`${_chalk().default.dim('💡 Tip: Make sure that you have set up your development environment correctly, by running')} ${_chalk().default.reset(_chalk().default.bold('npx react-native doctor'))}. ${_chalk().default.dim(`To read more about doctor command visit: ${linkToDocs} \n`)}`));
};
var _default = printRunDoctorTip;
exports.default = _default;
//# sourceMappingURL=printRunDoctorTip.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["printRunDoctorTip","linkToDocs","logger","log","info","chalk","dim","reset","bold"],"sources":["../src/printRunDoctorTip.ts"],"sourcesContent":["import logger from './logger';\nimport chalk from 'chalk';\n\nconst printRunDoctorTip = () => {\n const linkToDocs =\n 'https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor';\n\n logger.log('');\n logger.info(\n chalk.dim(\n `${chalk.dim(\n '💡 Tip: Make sure that you have set up your development environment correctly, by running',\n )} ${chalk.reset(chalk.bold('npx react-native doctor'))}. ${chalk.dim(\n `To read more about doctor command visit: ${linkToDocs} \\n`,\n )}`,\n ),\n );\n};\n\nexport default printRunDoctorTip;\n"],"mappings":";;;;;;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA0B;AAE1B,MAAMA,iBAAiB,GAAG,MAAM;EAC9B,MAAMC,UAAU,GACd,8FAA8F;EAEhGC,eAAM,CAACC,GAAG,CAAC,EAAE,CAAC;EACdD,eAAM,CAACE,IAAI,CACTC,gBAAK,CAACC,GAAG,CACN,GAAED,gBAAK,CAACC,GAAG,CACV,2FAA2F,CAC3F,IAAGD,gBAAK,CAACE,KAAK,CAACF,gBAAK,CAACG,IAAI,CAAC,yBAAyB,CAAC,CAAE,KAAIH,gBAAK,CAACC,GAAG,CAClE,4CAA2CL,UAAW,KAAI,CAC3D,EAAC,CACJ,CACF;AACH,CAAC;AAAC,eAEaD,iBAAiB;AAAA"}

View File

@@ -0,0 +1,17 @@
import prompts, { Options, PromptObject } from 'prompts';
type PromptOptions = {
nonInteractiveHelp?: string;
} & Options;
type InteractionOptions = {
pause: boolean;
canEscape?: boolean;
};
type InteractionCallback = (options: InteractionOptions) => void;
export declare function prompt<T extends string>(question: PromptObject, options?: PromptOptions): Promise<prompts.Answers<T>>;
export declare function pauseInteractions(options?: Omit<InteractionOptions, 'pause'>): void;
/** Notify all listeners that keypress observations can start.. */
export declare function resumeInteractions(options?: Omit<InteractionOptions, 'pause'>): void;
/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */
export declare function addInteractionListener(callback: InteractionCallback): void;
export {};
//# sourceMappingURL=prompt.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAIvD,KAAK,aAAa,GAAG;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,OAAO,CAAC;AAC7D,KAAK,kBAAkB,GAAG;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAC,CAAC;AAChE,KAAK,mBAAmB,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAKjE,wBAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3C,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAc7B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAM,QAMhD;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAM,QAMhD;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,mBAAmB,QAEnE"}

View File

@@ -0,0 +1,62 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addInteractionListener = addInteractionListener;
exports.pauseInteractions = pauseInteractions;
exports.prompt = prompt;
exports.resumeInteractions = resumeInteractions;
function _prompts() {
const data = _interopRequireDefault(require("prompts"));
_prompts = function () {
return data;
};
return data;
}
var _errors = require("./errors");
var _logger = _interopRequireDefault(require("./logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** Interaction observers for detecting when keystroke tracking should pause/resume. */
const listeners = [];
async function prompt(question, options = {}) {
pauseInteractions();
try {
const results = await (0, _prompts().default)(question, {
onCancel() {
throw new _errors.CLIError('Prompt cancelled.');
},
...options
});
return results;
} finally {
resumeInteractions();
}
}
function pauseInteractions(options = {}) {
_logger.default.debug('Interaction observers paused');
for (const listener of listeners) {
listener({
pause: true,
...options
});
}
}
/** Notify all listeners that keypress observations can start.. */
function resumeInteractions(options = {}) {
_logger.default.debug('Interaction observers resumed');
for (const listener of listeners) {
listener({
pause: false,
...options
});
}
}
/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */
function addInteractionListener(callback) {
listeners.push(callback);
}
//# sourceMappingURL=prompt.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["listeners","prompt","question","options","pauseInteractions","results","prompts","onCancel","CLIError","resumeInteractions","logger","debug","listener","pause","addInteractionListener","callback","push"],"sources":["../src/prompt.ts"],"sourcesContent":["import prompts, {Options, PromptObject} from 'prompts';\nimport {CLIError} from './errors';\nimport logger from './logger';\n\ntype PromptOptions = {nonInteractiveHelp?: string} & Options;\ntype InteractionOptions = {pause: boolean; canEscape?: boolean};\ntype InteractionCallback = (options: InteractionOptions) => void;\n\n/** Interaction observers for detecting when keystroke tracking should pause/resume. */\nconst listeners: InteractionCallback[] = [];\n\nexport async function prompt<T extends string>(\n question: PromptObject,\n options: PromptOptions = {},\n): Promise<prompts.Answers<T>> {\n pauseInteractions();\n try {\n const results = await prompts(question, {\n onCancel() {\n throw new CLIError('Prompt cancelled.');\n },\n ...options,\n });\n\n return results;\n } finally {\n resumeInteractions();\n }\n}\n\nexport function pauseInteractions(\n options: Omit<InteractionOptions, 'pause'> = {},\n) {\n logger.debug('Interaction observers paused');\n for (const listener of listeners) {\n listener({pause: true, ...options});\n }\n}\n\n/** Notify all listeners that keypress observations can start.. */\nexport function resumeInteractions(\n options: Omit<InteractionOptions, 'pause'> = {},\n) {\n logger.debug('Interaction observers resumed');\n for (const listener of listeners) {\n listener({pause: false, ...options});\n }\n}\n\n/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */\nexport function addInteractionListener(callback: InteractionCallback) {\n listeners.push(callback);\n}\n"],"mappings":";;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;AACA;AAA8B;AAM9B;AACA,MAAMA,SAAgC,GAAG,EAAE;AAEpC,eAAeC,MAAM,CAC1BC,QAAsB,EACtBC,OAAsB,GAAG,CAAC,CAAC,EACE;EAC7BC,iBAAiB,EAAE;EACnB,IAAI;IACF,MAAMC,OAAO,GAAG,MAAM,IAAAC,kBAAO,EAACJ,QAAQ,EAAE;MACtCK,QAAQ,GAAG;QACT,MAAM,IAAIC,gBAAQ,CAAC,mBAAmB,CAAC;MACzC,CAAC;MACD,GAAGL;IACL,CAAC,CAAC;IAEF,OAAOE,OAAO;EAChB,CAAC,SAAS;IACRI,kBAAkB,EAAE;EACtB;AACF;AAEO,SAASL,iBAAiB,CAC/BD,OAA0C,GAAG,CAAC,CAAC,EAC/C;EACAO,eAAM,CAACC,KAAK,CAAC,8BAA8B,CAAC;EAC5C,KAAK,MAAMC,QAAQ,IAAIZ,SAAS,EAAE;IAChCY,QAAQ,CAAC;MAACC,KAAK,EAAE,IAAI;MAAE,GAAGV;IAAO,CAAC,CAAC;EACrC;AACF;;AAEA;AACO,SAASM,kBAAkB,CAChCN,OAA0C,GAAG,CAAC,CAAC,EAC/C;EACAO,eAAM,CAACC,KAAK,CAAC,+BAA+B,CAAC;EAC7C,KAAK,MAAMC,QAAQ,IAAIZ,SAAS,EAAE;IAChCY,QAAQ,CAAC;MAACC,KAAK,EAAE,KAAK;MAAE,GAAGV;IAAO,CAAC,CAAC;EACtC;AACF;;AAEA;AACO,SAASW,sBAAsB,CAACC,QAA6B,EAAE;EACpEf,SAAS,CAACgB,IAAI,CAACD,QAAQ,CAAC;AAC1B"}

View File

@@ -0,0 +1,15 @@
export type Release = {
stable: string;
candidate?: string;
changelogUrl: string;
diffUrl: string;
};
/**
* Checks via GitHub API if there is a newer stable React Native release and,
* if it exists, returns the release data.
*
* If the latest release is not newer or if it's a prerelease, the function
* will return undefined.
*/
export default function getLatestRelease(name: string, currentVersion: string): Promise<Release | undefined>;
//# sourceMappingURL=getLatestRelease.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getLatestRelease.d.ts","sourceRoot":"","sources":["../../src/releaseChecker/getLatestRelease.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,OAAO,GAAG;IAEpB,MAAM,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA0BF;;;;;;GAMG;AACH,wBAA8B,gBAAgB,CAC5C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAwC9B"}

View File

@@ -0,0 +1,126 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getLatestRelease;
function _semver() {
const data = _interopRequireDefault(require("semver"));
_semver = function () {
return data;
};
return data;
}
var _cacheManager = _interopRequireDefault(require("../cacheManager"));
var _fetch = require("../fetch");
var _logger = _interopRequireDefault(require("../logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function isDiffPurgeEntry(data) {
var _data$commit, _data$commit2;
return [data.name, data.zipball_url, data.tarball_url, (_data$commit = data.commit) === null || _data$commit === void 0 ? void 0 : _data$commit.sha, (_data$commit2 = data.commit) === null || _data$commit2 === void 0 ? void 0 : _data$commit2.url, data.node_id].indexOf(false) === -1;
}
/**
* Checks via GitHub API if there is a newer stable React Native release and,
* if it exists, returns the release data.
*
* If the latest release is not newer or if it's a prerelease, the function
* will return undefined.
*/
async function getLatestRelease(name, currentVersion) {
_logger.default.debug('Checking for a newer version of React Native');
try {
_logger.default.debug(`Current version: ${currentVersion}`);
// if the version is a 1000.0.0 version or 0.0.0, we want to bail
// since they are nightlies or unreleased versions
if (currentVersion.includes('1000.0.0') || currentVersion.includes('0.0.0')) {
return;
}
const cachedLatest = _cacheManager.default.get(name, 'latestVersion');
if (cachedLatest) {
_logger.default.debug(`Cached release version: ${cachedLatest}`);
}
_logger.default.debug('Checking for newer releases on GitHub');
const eTag = _cacheManager.default.get(name, 'eTag');
const {
stable,
candidate
} = await getLatestRnDiffPurgeVersion(name, eTag);
_logger.default.debug(`Latest release: ${stable} (${candidate})`);
if (_semver().default.compare(stable, currentVersion) >= 0) {
return {
stable,
candidate,
changelogUrl: buildChangelogUrl(stable),
diffUrl: buildDiffUrl(currentVersion)
};
}
} catch (e) {
_logger.default.debug('Something went wrong with remote version checking, moving on');
_logger.default.debug(e);
}
return undefined;
}
function buildChangelogUrl(version) {
return `https://github.com/facebook/react-native/releases/tag/v${version}`;
}
function buildDiffUrl(version) {
return `https://react-native-community.github.io/upgrade-helper/?from=${version}`;
}
/**
* Returns the most recent React Native version available to upgrade to.
*/
async function getLatestRnDiffPurgeVersion(name, eTag) {
const options = {
// https://developer.github.com/v3/#user-agent-required
headers: {
'User-Agent': 'React-Native-CLI'
}
};
if (eTag) {
options.headers['If-None-Match'] = eTag;
}
const {
data,
status,
headers
} = await (0, _fetch.fetch)('https://api.github.com/repos/react-native-community/rn-diff-purge/tags', options);
const result = {
stable: '0.0.0'
};
// Remote is newer.
if (status === 200) {
const body = data.filter(isDiffPurgeEntry);
const eTagHeader = headers.get('eTag');
for (let {
name: version
} of body) {
if (!result.candidate && version.includes('-rc')) {
result.candidate = version.substring(8);
continue;
}
if (!version.includes('-rc')) {
result.stable = version.substring(8);
if (eTagHeader) {
_logger.default.debug(`Saving ${eTagHeader} to cache`);
_cacheManager.default.set(name, 'eTag', eTagHeader);
_cacheManager.default.set(name, 'latestVersion', result.stable);
}
return result;
}
}
return result;
}
// Cache is still valid.
if (status === 304) {
result.stable = _cacheManager.default.get(name, 'latestVersion') ?? result.stable;
}
// Should be returned only if something went wrong.
return result;
}
//# sourceMappingURL=getLatestRelease.ts.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,21 @@
import { SemVer } from 'semver';
import { Release } from './getLatestRelease';
/**
* Logs out a message if the user's version is behind a stable version of React Native
*/
export declare function logIfUpdateAvailable(projectRoot: string): Promise<void>;
type Update = {
upgrade?: Release;
current: string;
name: string;
};
/**
* Finds the latest stables version of React Native > current version
*/
export declare function latest(projectRoot: string): Promise<Update | undefined>;
/**
* Gets the current project's version parsed as Semver
*/
export declare function current(projectRoot: string): SemVer | undefined;
export {};
//# sourceMappingURL=index.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/releaseChecker/index.ts"],"names":[],"mappings":"AACA,OAAe,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAKtC,OAAyB,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAS7D;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ7E;AAED,KAAK,MAAM,GAAG;IAEZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,OAAO,EAAE,MAAM,CAAC;IAEhB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,wBAAsB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA0B7E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU/D"}

View File

@@ -0,0 +1,90 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.current = current;
exports.latest = latest;
exports.logIfUpdateAvailable = logIfUpdateAvailable;
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
function _semver() {
const data = _interopRequireDefault(require("semver"));
_semver = function () {
return data;
};
return data;
}
var _errors = require("../errors");
var _logger = _interopRequireDefault(require("../logger"));
var _resolveNodeModuleDir = _interopRequireDefault(require("../resolveNodeModuleDir"));
var _getLatestRelease = _interopRequireDefault(require("./getLatestRelease"));
var _printNewRelease = _interopRequireDefault(require("./printNewRelease"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const getReactNativeVersion = projectRoot => {
var _require;
return (_require = require(_path().default.join((0, _resolveNodeModuleDir.default)(projectRoot, 'react-native'), 'package.json'))) === null || _require === void 0 ? void 0 : _require.version;
};
/**
* Logs out a message if the user's version is behind a stable version of React Native
*/
async function logIfUpdateAvailable(projectRoot) {
const versions = await latest(projectRoot);
if (!(versions === null || versions === void 0 ? void 0 : versions.upgrade)) {
return;
}
if (_semver().default.gt(versions.upgrade.stable, versions.current)) {
(0, _printNewRelease.default)(versions.name, versions.upgrade, versions.current);
}
}
/**
* Finds the latest stables version of React Native > current version
*/
async function latest(projectRoot) {
try {
const currentVersion = getReactNativeVersion(projectRoot);
if (!currentVersion) {
return;
}
const {
name
} = require(_path().default.join(projectRoot, 'package.json'));
const upgrade = await (0, _getLatestRelease.default)(name, currentVersion);
if (upgrade) {
return {
name,
current: currentVersion,
upgrade
};
}
} catch (e) {
// We let the flow continue as this component is not vital for the rest of
// the CLI.
_logger.default.debug('Cannot detect current version of React Native, ' + 'skipping check for a newer release');
_logger.default.debug(e);
}
return;
}
/**
* Gets the current project's version parsed as Semver
*/
function current(projectRoot) {
try {
const found = _semver().default.parse(getReactNativeVersion(projectRoot));
if (found) {
return found;
}
} catch {
throw new _errors.UnknownProjectError(projectRoot);
}
return undefined;
}
//# sourceMappingURL=index.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["getReactNativeVersion","projectRoot","require","path","join","resolveNodeModuleDir","version","logIfUpdateAvailable","versions","latest","upgrade","semver","gt","stable","current","printNewRelease","name","currentVersion","getLatestRelease","e","logger","debug","found","parse","UnknownProjectError","undefined"],"sources":["../../src/releaseChecker/index.ts"],"sourcesContent":["import path from 'path';\nimport semver, {SemVer} from 'semver';\n\nimport {UnknownProjectError} from '../errors';\nimport logger from '../logger';\nimport resolveNodeModuleDir from '../resolveNodeModuleDir';\nimport getLatestRelease, {Release} from './getLatestRelease';\nimport printNewRelease from './printNewRelease';\n\nconst getReactNativeVersion = (projectRoot: string): string | undefined =>\n require(path.join(\n resolveNodeModuleDir(projectRoot, 'react-native'),\n 'package.json',\n ))?.version;\n\n/**\n * Logs out a message if the user's version is behind a stable version of React Native\n */\nexport async function logIfUpdateAvailable(projectRoot: string): Promise<void> {\n const versions = await latest(projectRoot);\n if (!versions?.upgrade) {\n return;\n }\n if (semver.gt(versions.upgrade.stable, versions.current)) {\n printNewRelease(versions.name, versions.upgrade, versions.current);\n }\n}\n\ntype Update = {\n // Only populated if an upgrade is available\n upgrade?: Release;\n // The project's package's current version\n current: string;\n // The project's package's name\n name: string;\n};\n\n/**\n * Finds the latest stables version of React Native > current version\n */\nexport async function latest(projectRoot: string): Promise<Update | undefined> {\n try {\n const currentVersion = getReactNativeVersion(projectRoot);\n if (!currentVersion) {\n return;\n }\n const {name} = require(path.join(projectRoot, 'package.json'));\n const upgrade = await getLatestRelease(name, currentVersion);\n\n if (upgrade) {\n return {\n name,\n current: currentVersion,\n upgrade,\n };\n }\n } catch (e) {\n // We let the flow continue as this component is not vital for the rest of\n // the CLI.\n logger.debug(\n 'Cannot detect current version of React Native, ' +\n 'skipping check for a newer release',\n );\n logger.debug(e as any);\n }\n return;\n}\n\n/**\n * Gets the current project's version parsed as Semver\n */\nexport function current(projectRoot: string): SemVer | undefined {\n try {\n const found = semver.parse(getReactNativeVersion(projectRoot));\n if (found) {\n return found;\n }\n } catch {\n throw new UnknownProjectError(projectRoot);\n }\n return undefined;\n}\n"],"mappings":";;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAgD;AAEhD,MAAMA,qBAAqB,GAAIC,WAAmB;EAAA;EAAA,mBAChDC,OAAO,CAACC,eAAI,CAACC,IAAI,CACf,IAAAC,6BAAoB,EAACJ,WAAW,EAAE,cAAc,CAAC,EACjD,cAAc,CACf,CAAC,6CAHF,SAGIK,OAAO;AAAA;;AAEb;AACA;AACA;AACO,eAAeC,oBAAoB,CAACN,WAAmB,EAAiB;EAC7E,MAAMO,QAAQ,GAAG,MAAMC,MAAM,CAACR,WAAW,CAAC;EAC1C,IAAI,EAACO,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEE,OAAO,GAAE;IACtB;EACF;EACA,IAAIC,iBAAM,CAACC,EAAE,CAACJ,QAAQ,CAACE,OAAO,CAACG,MAAM,EAAEL,QAAQ,CAACM,OAAO,CAAC,EAAE;IACxD,IAAAC,wBAAe,EAACP,QAAQ,CAACQ,IAAI,EAAER,QAAQ,CAACE,OAAO,EAAEF,QAAQ,CAACM,OAAO,CAAC;EACpE;AACF;AAWA;AACA;AACA;AACO,eAAeL,MAAM,CAACR,WAAmB,EAA+B;EAC7E,IAAI;IACF,MAAMgB,cAAc,GAAGjB,qBAAqB,CAACC,WAAW,CAAC;IACzD,IAAI,CAACgB,cAAc,EAAE;MACnB;IACF;IACA,MAAM;MAACD;IAAI,CAAC,GAAGd,OAAO,CAACC,eAAI,CAACC,IAAI,CAACH,WAAW,EAAE,cAAc,CAAC,CAAC;IAC9D,MAAMS,OAAO,GAAG,MAAM,IAAAQ,yBAAgB,EAACF,IAAI,EAAEC,cAAc,CAAC;IAE5D,IAAIP,OAAO,EAAE;MACX,OAAO;QACLM,IAAI;QACJF,OAAO,EAAEG,cAAc;QACvBP;MACF,CAAC;IACH;EACF,CAAC,CAAC,OAAOS,CAAC,EAAE;IACV;IACA;IACAC,eAAM,CAACC,KAAK,CACV,iDAAiD,GAC/C,oCAAoC,CACvC;IACDD,eAAM,CAACC,KAAK,CAACF,CAAC,CAAQ;EACxB;EACA;AACF;;AAEA;AACA;AACA;AACO,SAASL,OAAO,CAACb,WAAmB,EAAsB;EAC/D,IAAI;IACF,MAAMqB,KAAK,GAAGX,iBAAM,CAACY,KAAK,CAACvB,qBAAqB,CAACC,WAAW,CAAC,CAAC;IAC9D,IAAIqB,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;EACF,CAAC,CAAC,MAAM;IACN,MAAM,IAAIE,2BAAmB,CAACvB,WAAW,CAAC;EAC5C;EACA,OAAOwB,SAAS;AAClB"}

View File

@@ -0,0 +1,6 @@
import { Release } from './getLatestRelease';
/**
* Notifies the user that a newer version of React Native is available.
*/
export default function printNewRelease(name: string, latestRelease: Release, currentVersion: string): void;
//# sourceMappingURL=printNewRelease.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"printNewRelease.d.ts","sourceRoot":"","sources":["../../src/releaseChecker/printNewRelease.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAG3C;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,MAAM,QAcvB"}

View File

@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = printNewRelease;
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
var link = _interopRequireWildcard(require("../doclink"));
var _logger = _interopRequireDefault(require("../logger"));
var _cacheManager = _interopRequireDefault(require("../cacheManager"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Notifies the user that a newer version of React Native is available.
*/
function printNewRelease(name, latestRelease, currentVersion) {
_logger.default.info(`React Native v${latestRelease.stable} is now available (your project is running on v${currentVersion}).`);
_logger.default.info(`Changelog: ${_chalk().default.dim.underline(latestRelease.changelogUrl)}`);
_logger.default.info(`Diff: ${_chalk().default.dim.underline(latestRelease.diffUrl)}`);
_logger.default.info(`For more info, check out "${_chalk().default.dim.underline(link.docs('upgrading', 'none'))}".`);
_cacheManager.default.set(name, 'lastChecked', new Date().toISOString());
}
//# sourceMappingURL=printNewRelease.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["printNewRelease","name","latestRelease","currentVersion","logger","info","stable","chalk","dim","underline","changelogUrl","diffUrl","link","docs","cacheManager","set","Date","toISOString"],"sources":["../../src/releaseChecker/printNewRelease.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as link from '../doclink';\n\nimport logger from '../logger';\nimport {Release} from './getLatestRelease';\nimport cacheManager from '../cacheManager';\n\n/**\n * Notifies the user that a newer version of React Native is available.\n */\nexport default function printNewRelease(\n name: string,\n latestRelease: Release,\n currentVersion: string,\n) {\n logger.info(\n `React Native v${latestRelease.stable} is now available (your project is running on v${currentVersion}).`,\n );\n logger.info(`Changelog: ${chalk.dim.underline(latestRelease.changelogUrl)}`);\n logger.info(`Diff: ${chalk.dim.underline(latestRelease.diffUrl)}`);\n logger.info(\n `For more info, check out \"${chalk.dim.underline(\n link.docs('upgrading', 'none'),\n )}\".`,\n );\n\n cacheManager.set(name, 'lastChecked', new Date().toISOString());\n}\n"],"mappings":";;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;AAEA;AAEA;AAA2C;AAAA;AAAA;AAE3C;AACA;AACA;AACe,SAASA,eAAe,CACrCC,IAAY,EACZC,aAAsB,EACtBC,cAAsB,EACtB;EACAC,eAAM,CAACC,IAAI,CACR,iBAAgBH,aAAa,CAACI,MAAO,kDAAiDH,cAAe,IAAG,CAC1G;EACDC,eAAM,CAACC,IAAI,CAAE,cAAaE,gBAAK,CAACC,GAAG,CAACC,SAAS,CAACP,aAAa,CAACQ,YAAY,CAAE,EAAC,CAAC;EAC5EN,eAAM,CAACC,IAAI,CAAE,SAAQE,gBAAK,CAACC,GAAG,CAACC,SAAS,CAACP,aAAa,CAACS,OAAO,CAAE,EAAC,CAAC;EAClEP,eAAM,CAACC,IAAI,CACR,6BAA4BE,gBAAK,CAACC,GAAG,CAACC,SAAS,CAC9CG,IAAI,CAACC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAC9B,IAAG,CACN;EAEDC,qBAAY,CAACC,GAAG,CAACd,IAAI,EAAE,aAAa,EAAE,IAAIe,IAAI,EAAE,CAACC,WAAW,EAAE,CAAC;AACjE"}

View File

@@ -0,0 +1,5 @@
/**
* Finds a path inside `node_modules`
*/
export default function resolveNodeModuleDir(root: string, packageName: string): string;
//# sourceMappingURL=resolveNodeModuleDir.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"resolveNodeModuleDir.d.ts","sourceRoot":"","sources":["../src/resolveNodeModuleDir.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,MAAM,CAWR"}

View File

@@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = resolveNodeModuleDir;
var _findPackageDependencyDir = require("./findPackageDependencyDir");
var _errors = require("./errors");
/**
* Finds a path inside `node_modules`
*/
function resolveNodeModuleDir(root, packageName) {
const packageDependencyDirectory = (0, _findPackageDependencyDir.findPackageDependencyDir)(packageName, {
startDir: root
});
if (packageDependencyDirectory === undefined) {
throw new _errors.CLIError(`Node module directory for package ${packageName} was not found`);
} else {
return packageDependencyDirectory;
}
}
//# sourceMappingURL=resolveNodeModuleDir.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["resolveNodeModuleDir","root","packageName","packageDependencyDirectory","findPackageDependencyDir","startDir","undefined","CLIError"],"sources":["../src/resolveNodeModuleDir.ts"],"sourcesContent":["import {findPackageDependencyDir} from './findPackageDependencyDir';\nimport {CLIError} from './errors';\n\n/**\n * Finds a path inside `node_modules`\n */\nexport default function resolveNodeModuleDir(\n root: string,\n packageName: string,\n): string {\n const packageDependencyDirectory = findPackageDependencyDir(packageName, {\n startDir: root,\n });\n if (packageDependencyDirectory === undefined) {\n throw new CLIError(\n `Node module directory for package ${packageName} was not found`,\n );\n } else {\n return packageDependencyDirectory;\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AACA;AACA;AACe,SAASA,oBAAoB,CAC1CC,IAAY,EACZC,WAAmB,EACX;EACR,MAAMC,0BAA0B,GAAG,IAAAC,kDAAwB,EAACF,WAAW,EAAE;IACvEG,QAAQ,EAAEJ;EACZ,CAAC,CAAC;EACF,IAAIE,0BAA0B,KAAKG,SAAS,EAAE;IAC5C,MAAM,IAAIC,gBAAQ,CACf,qCAAoCL,WAAY,gBAAe,CACjE;EACH,CAAC,MAAM;IACL,OAAOC,0BAA0B;EACnC;AACF"}

View File

@@ -0,0 +1,2 @@
export default function runSudo(command: string): Promise<void>;
//# sourceMappingURL=runSudo.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"runSudo.d.ts","sourceRoot":"","sources":["../src/runSudo.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9D"}

Some files were not shown because too many files have changed in this diff Show More