/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */

import {evalScripts} from '../evalScripts';

window.addEventListener('message', event => {
  if (event.data?.source === 'react-devtools-content-script-eval') {
    const {scriptId, args, requestId} = event.data.payload;
    const response = {result: null, error: null};
    try {
      if (!evalScripts[scriptId]) {
        throw new Error(`No eval script with id "${scriptId}" exists.`);
      }
      response.result = evalScripts[scriptId].fn.apply(null, args);
    } catch (err) {
      response.error = err.message;
    }
    window.postMessage(
      {
        source: 'react-devtools-content-script-eval-response',
        payload: {
          requestId,
          response,
        },
      },
      '*',
    );
  }
});