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,21 @@
MIT License
Copyright (c) 2018 react-native-community
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

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

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