UNPKG

reactotron-react-native

Version:

A development tool to explore, inspect, and diagnose your React Native apps.

196 lines (191 loc) 7.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "asyncStorage", { enumerable: true, get: function () { return _asyncStorage.default; } }); exports.default = void 0; Object.defineProperty(exports, "devTools", { enumerable: true, get: function () { return _devTools.default; } }); Object.defineProperty(exports, "networking", { enumerable: true, get: function () { return _networking.default; } }); Object.defineProperty(exports, "openInEditor", { enumerable: true, get: function () { return _openInEditor.default; } }); Object.defineProperty(exports, "overlay", { enumerable: true, get: function () { return _overlay.default; } }); exports.reactNativeCorePlugins = void 0; Object.defineProperty(exports, "storybook", { enumerable: true, get: function () { return _storybook.default; } }); Object.defineProperty(exports, "trackGlobalErrors", { enumerable: true, get: function () { return _trackGlobalErrors.default; } }); Object.defineProperty(exports, "trackGlobalLogs", { enumerable: true, get: function () { return _trackGlobalLogs.default; } }); var _reactNative = require("react-native"); var _reactotronCoreClient = require("reactotron-core-client"); var _NativeSourceCode = _interopRequireDefault(require("react-native/Libraries/NativeModules/specs/NativeSourceCode")); var _getReactNativeVersion = _interopRequireDefault(require("./helpers/getReactNativeVersion")); var _getReactNativeDimensions = _interopRequireDefault(require("./helpers/getReactNativeDimensions")); var _asyncStorage = _interopRequireDefault(require("./plugins/asyncStorage")); var _overlay = _interopRequireDefault(require("./plugins/overlay")); var _openInEditor = _interopRequireDefault(require("./plugins/openInEditor")); var _trackGlobalErrors = _interopRequireDefault(require("./plugins/trackGlobalErrors")); var _networking = _interopRequireDefault(require("./plugins/networking")); var _storybook = _interopRequireDefault(require("./plugins/storybook")); var _devTools = _interopRequireDefault(require("./plugins/devTools")); var _trackGlobalLogs = _interopRequireDefault(require("./plugins/trackGlobalLogs")); var _parseURL = require("./helpers/parseURL"); var _getReactNativePlatformConstants = _interopRequireDefault(require("./helpers/getReactNativePlatformConstants")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } // eslint-disable-next-line import/namespace, import/default const REACTOTRON_ASYNC_CLIENT_ID = "@REACTOTRON/clientId"; let tempClientId = null; /** * Most of the time, host should be 'localhost'. * But sometimes, it's not. So we need to figure out what it is. * @see https://github.com/infinitered/reactotron/issues/1107 * * On an Android emulator, if you want to connect any servers of local, you will need run adb reverse on your terminal. This function gets the localhost IP of host machine directly to bypass this. */ const getHost = (defaultHost = "localhost") => { try { // RN Reference: https://github.com/facebook/react-native/blob/main/packages/react-native/src/private/specs/modules/NativeSourceCode.js const scriptURL = _NativeSourceCode.default.getConstants().scriptURL; if (typeof scriptURL !== "string") throw new Error("Invalid non-string URL"); return (0, _parseURL.getHostFromUrl)(scriptURL); } catch (error) { console.warn(`getHost: "${error.message}" for scriptURL - Falling back to ${defaultHost}`); return defaultHost; } }; const { osRelease, model, serverHost, forceTouch, interfaceIdiom, systemName, uiMode, serial } = (0, _getReactNativePlatformConstants.default)(); const DEFAULTS = { createSocket: path => new WebSocket(path), // eslint-disable-line host: getHost("localhost"), port: 9090, name: "React Native App", environment: process.env.NODE_ENV || (__DEV__ ? "development" : "production"), client: { reactotronLibraryName: "reactotron-react-native", reactotronLibraryVersion: "REACTOTRON_REACT_NATIVE_VERSION", platform: _reactNative.Platform.OS, platformVersion: _reactNative.Platform.Version, osRelease, model, serverHost, forceTouch, interfaceIdiom, systemName, uiMode, serial, reactNativeVersion: (0, _getReactNativeVersion.default)(), ...(0, _getReactNativeDimensions.default)() }, /* eslint-disable @typescript-eslint/no-use-before-define */ getClientId: async (name = "") => { if (reactotron.asyncStorageHandler) { return reactotron.asyncStorageHandler.getItem(REACTOTRON_ASYNC_CLIENT_ID); } // Generate clientId based on the device info const { screenWidth, screenHeight, screenScale } = (0, _getReactNativeDimensions.default)(); // Accounting for screen rotation const dimensions = [screenWidth, screenHeight].sort().join("-"); const additionalInfo = _reactNative.Platform.select({ ios: systemName, android: model, default: "" }); tempClientId = [name, _reactNative.Platform.OS, _reactNative.Platform.Version, additionalInfo, dimensions, screenScale].filter(Boolean).join("-"); return tempClientId; }, setClientId: async clientId => { if (reactotron.asyncStorageHandler) { return reactotron.asyncStorageHandler.setItem(REACTOTRON_ASYNC_CLIENT_ID, clientId); } tempClientId = clientId; }, proxyHack: true }; const reactNativeCorePlugins = exports.reactNativeCorePlugins = [(0, _asyncStorage.default)(), (0, _trackGlobalErrors.default)(), (0, _trackGlobalLogs.default)(), (0, _openInEditor.default)(), (0, _overlay.default)(), (0, _networking.default)(), (0, _storybook.default)(), (0, _devTools.default)()]; const reactotron = (0, _reactotronCoreClient.createClient)(DEFAULTS); function getPluginOptions(options) { return typeof options === "object" ? options : null; } reactotron.useReactNative = (options = {}) => { if (options.errors !== false) { reactotron.use((0, _trackGlobalErrors.default)(getPluginOptions(options.errors))); } if (options.log !== false) { reactotron.use((0, _trackGlobalLogs.default)()); } if (options.editor !== false) { reactotron.use((0, _openInEditor.default)(getPluginOptions(options.editor))); } if (options.overlay !== false) { reactotron.use((0, _overlay.default)()); } if (options.asyncStorage !== false) { reactotron.use((0, _asyncStorage.default)(getPluginOptions(options.asyncStorage))); } if (options.networking !== false) { reactotron.use((0, _networking.default)(getPluginOptions(options.networking))); } if (options.storybook !== false) { reactotron.use((0, _storybook.default)()); } if (options.devTools !== false) { reactotron.use((0, _devTools.default)()); } return reactotron; }; reactotron.setAsyncStorageHandler = asyncStorage => { reactotron.asyncStorageHandler = asyncStorage; return reactotron; }; var _default = exports.default = reactotron; //# sourceMappingURL=reactotron-react-native.js.map