"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isPlatformSupported = isPlatformSupported; exports.addToPathAsync = addToPathAsync; exports.unblockAndGetVersionAsync = unblockAndGetVersionAsync; function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _fsExtra() { const data = _interopRequireDefault(require("fs-extra")); _fsExtra = function () { return data; }; return data; } function _spawnAsync() { const data = _interopRequireDefault(require("@expo/spawn-async")); _spawnAsync = function () { return data; }; return data; } function _pTimeout() { const data = _interopRequireDefault(require("p-timeout")); _pTimeout = function () { return data; }; return data; } function Binaries() { const data = _interopRequireWildcard(require("./Binaries")); Binaries = function () { return data; }; return data; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const WAIT_FOR_WATCHMAN_VERSION_MS = 3000; function isPlatformSupported() { return process.platform === 'darwin'; } async function addToPathAsync() { if (!isPlatformSupported()) { return; } await Binaries().addToPathAsync('watchman'); } async function unblockAndGetVersionAsync(projectRoot) { if (!isPlatformSupported()) { return null; } try { // `watchman version` returns: // { // "version": "4.7.0" // } const result = await _unblockAndVersionAsync(projectRoot); const watchmanVersion = JSON.parse(result.stdout.trim()).version; return watchmanVersion; } catch (e) { // TODO: Maybe check to make sure this is ENOENT (which means watchman isn't installed) // We might want to report other errors return null; } } async function _unblockAndVersionAsync(projectRoot) { try { return await (0, _pTimeout().default)(_versionAsync(), WAIT_FOR_WATCHMAN_VERSION_MS); } catch (error) { await _unblockAsync(projectRoot); return await (0, _pTimeout().default)(_versionAsync(), WAIT_FOR_WATCHMAN_VERSION_MS, '`watchman version` failed even after `launchctl unload`'); } } async function _unblockAsync(projectRoot) { if (process.env.TMPDIR && process.env.USER) { // XDL's copy of watchman: _fsExtra().default.removeSync(_path().default.join(process.env.TMPDIR, `${process.env.USER}-state`)); // homebrew's watchman: _fsExtra().default.removeSync(`/usr/local/var/run/watchman/${process.env.USER}-state`); } if (process.platform === 'darwin') { await (0, _spawnAsync().default)('launchctl', ['unload', '-F', '~/Library/LaunchAgents/com.github.facebook.watchman.plist']); } if (projectRoot) { await (0, _spawnAsync().default)('watchman', ['watch-del', projectRoot]); await (0, _spawnAsync().default)('watchman', ['watch-project', projectRoot]); } } async function _versionAsync() { return await (0, _spawnAsync().default)('watchman', ['version']); } //# sourceMappingURL=__sourcemaps__/Watchman.js.map