text: import zipObject from "lodash/zipObject"
  
  import ErrorBoundary from "./components/error-boundary"
  import Fallback from "./components/fallback"
  import { componentDidCatch, withErrorBoundary } from "./fn"
  
  const safeRenderPlugin = ({componentList = [], fullOverride = false} = {}) => ({ getSystem }) => {
    const defaultComponentList = [
      "App",
      "BaseLayout",
      "VersionPragmaFilter",
      "InfoContainer",
      "ServersContainer",
      "SchemesContainer",
      "AuthorizeBtnContainer",
      "FilterContainer",
      "Operations",
      "OperationContainer",
      "parameters",
      "responses",
      "OperationServers",
      "Models",
      "ModelWrapper",
    ]
    const mergedComponentList = fullOverride ? componentList : [...defaultComponentList, ...componentList]
    const wrapFactory = (Original, { fn }) => fn.withErrorBoundary(Original)
    const wrapComponents = zipObject(mergedComponentList, Array(mergedComponentList.length).fill(wrapFactory))
  
    return {
      fn: {
        componentDidCatch,
        withErrorBoundary: withErrorBoundary(getSystem),
      },
      components: {
        ErrorBoundary,
        Fallback,
      },
      wrapComponents,
    }
  }
  
  export default safeRenderPlugin
  