From ba84967da52ec950ceec281c6b0ba8bba892e923 Mon Sep 17 00:00:00 2001 From: Robert Balicki Date: Wed, 2 Nov 2022 12:39:44 -0400 Subject: [PATCH] wip --- packages/react-devtools-core/src/backend.js | 1 + .../react-devtools-core/src/cachedSettings.js | 32 ++++++++++++++++++- .../react-devtools-core/webpack.backend.js | 16 ++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/packages/react-devtools-core/src/backend.js b/packages/react-devtools-core/src/backend.js index 58af37b32a..39d6202632 100644 --- a/packages/react-devtools-core/src/backend.js +++ b/packages/react-devtools-core/src/backend.js @@ -174,6 +174,7 @@ export function connectToDevTools(options: ?ConnectOptions) { }, ); + console.log({devToolsSettingsManager, asdf: 'yaya2'}); if (devToolsSettingsManager != null && bridge != null) { bridge.addListener('updateConsolePatchSettings', consolePatchSettings => cacheConsolePatchSettings( diff --git a/packages/react-devtools-core/src/cachedSettings.js b/packages/react-devtools-core/src/cachedSettings.js index cb6dddfec3..6c190bc0f5 100644 --- a/packages/react-devtools-core/src/cachedSettings.js +++ b/packages/react-devtools-core/src/cachedSettings.js @@ -18,13 +18,17 @@ import {castBool, castBrowserTheme} from 'react-devtools-shared/src/utils'; // provided by React Native may not include all of this type's fields. export type DevToolsSettingsManager = { getConsolePatchSettings: ?() => string, - setConsolePatchSettings: ?(key: string) => void, + setConsolePatchSettings: ?(settings: string) => void, + + getProfilingSettings: ?() => string, + setProfilingSettings: ?(settings: string) => void, }; export function initializeUsingCachedSettings( devToolsSettingsManager: DevToolsSettingsManager, ) { initializeConsolePatchSettings(devToolsSettingsManager); + initializeProfilingSettings(devToolsSettingsManager); } function initializeConsolePatchSettings( @@ -75,3 +79,29 @@ export function cacheConsolePatchSettings( } devToolsSettingsManager.setConsolePatchSettings(JSON.stringify(value)); } + +function initializeProfilingSettings( + devToolsSettingsManager: DevToolsSettingsManager, +): void { + if (devToolsSettingsManager.getProfilingSettings == null) { + return; + } + const profilingDataString = devToolsSettingsManager.getProfilingSettings(); + const profilingData = parseProfilingData(profilingDataString); + if (profilingData.isProfiling) { + console.log('congrats you profiling'); + } else { + console.log('no profile'); + } +} + +type ProfilingData = { + isProfiling: boolean, +}; + +function parseProfilingData(profilingDataString: string): ProfilingData { + const parsedValue = JSON.parse(profilingDataString); + return { + isProfiling: castBool(parsedValue.isProfiling) ?? false, + }; +} diff --git a/packages/react-devtools-core/webpack.backend.js b/packages/react-devtools-core/webpack.backend.js index 952786dc65..fc89cc246a 100644 --- a/packages/react-devtools-core/webpack.backend.js +++ b/packages/react-devtools-core/webpack.backend.js @@ -81,6 +81,22 @@ module.exports = { 'process.env.LIGHT_MODE_DIMMED_ERROR_COLOR': `"${LIGHT_MODE_DIMMED_ERROR_COLOR}"`, 'process.env.LIGHT_MODE_DIMMED_LOG_COLOR': `"${LIGHT_MODE_DIMMED_LOG_COLOR}"`, }), + { + apply: compiler => { + compiler.hooks.afterEmit.tap('AfterEmitPlugin', compilation => { + require('child_process').exec( + ` + cp ~/react/packages/react-devtools-core/dist/* ~/rn-test/FooProj/node_modules/react-devtools-core/dist/ + `, + (err, stdout, stderr) => { + if (stdout) process.stdout.write(stdout); + if (stderr) process.stderr.write(stderr); + console.log('DONe'); + }, + ); + }); + }, + }, ], optimization: { minimize: false,