/usr/share/grafana/public/app/features/plugins/extensions
import * as React from 'react'; import { PluginErrorBoundary } from '../components/PluginErrorBoundary'; import { ExtensionErrorAlert } from './ExtensionErrorAlert'; import { ExtensionsLog, log as baseLog } from './logs/log'; import { isGrafanaDevMode } from './utils'; export const ExtensionErrorBoundary = ({ children, pluginId, extensionTitle, log = baseLog, fallbackAlwaysVisible = false, }: { children: React.ReactNode; pluginId: string; extensionTitle: string; log?: ExtensionsLog; fallbackAlwaysVisible?: boolean; }) => { return ( <PluginErrorBoundary onError={(error, errorInfo) => { log.error(`Extension "${pluginId}/${extensionTitle}" failed to load.`, { message: error.message, componentStack: errorInfo.componentStack ?? '', digest: errorInfo.digest ?? '', }); }} fallback={() => { if (isGrafanaDevMode() || fallbackAlwaysVisible) { return <ExtensionErrorAlert pluginId={pluginId} extensionTitle={extensionTitle} />; } return null; }} > {children} </PluginErrorBoundary> ); };
.
Edit
..
Edit
ExtensionErrorAlert.tsx
Edit
ExtensionErrorBoundary.tsx
Edit
ExtensionRegistriesContext.tsx
Edit
errors.ts
Edit
getCoreExtensionConfigurations.ts
Edit
getPluginExtensions.test.tsx
Edit
getPluginExtensions.ts
Edit
logs
Edit
registry
Edit
types.ts
Edit
useLoadAppPlugins.tsx
Edit
usePluginComponent.test.tsx
Edit
usePluginComponent.tsx
Edit
usePluginComponents.test.tsx
Edit
usePluginComponents.tsx
Edit
usePluginFunctions.test.tsx
Edit
usePluginFunctions.tsx
Edit
usePluginLinks.test.tsx
Edit
usePluginLinks.tsx
Edit
utils.test.tsx
Edit
utils.tsx
Edit
validateExtensionPoint.test.ts
Edit
validateExtensionPoint.ts
Edit
validators.test.tsx
Edit
validators.ts
Edit