48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { StrictMode } from 'react'
|
|
import { createRoot } from 'react-dom/client'
|
|
import * as Sentry from '@sentry/react'
|
|
import { PublicClientApplication } from '@azure/msal-browser'
|
|
import { MsalProvider } from '@azure/msal-react'
|
|
import './styles/index.css'
|
|
import App from './App.tsx'
|
|
import { msalConfig, validateMsalConfig } from './lib/msalConfig'
|
|
|
|
// Initialize MSAL (Microsoft Authentication Library)
|
|
validateMsalConfig();
|
|
const msalInstance = new PublicClientApplication(msalConfig);
|
|
|
|
// Initialize MSAL instance
|
|
await msalInstance.initialize();
|
|
|
|
// Initialize Sentry
|
|
if (import.meta.env.VITE_SENTRY_DSN) {
|
|
Sentry.init({
|
|
dsn: import.meta.env.VITE_SENTRY_DSN,
|
|
environment: import.meta.env.VITE_APP_ENV || 'development',
|
|
integrations: [
|
|
Sentry.browserTracingIntegration(),
|
|
Sentry.replayIntegration({
|
|
maskAllText: true,
|
|
blockAllMedia: true,
|
|
}),
|
|
],
|
|
tracesSampleRate: import.meta.env.VITE_APP_ENV === 'production' ? 0.1 : 1.0,
|
|
replaysSessionSampleRate: import.meta.env.VITE_APP_ENV === 'production' ? 0.1 : 1.0,
|
|
replaysOnErrorSampleRate: 1.0,
|
|
beforeSend(event) {
|
|
// Filter out PII and sensitive data
|
|
if (event.request?.headers?.Authorization) {
|
|
delete event.request.headers.Authorization;
|
|
}
|
|
return event;
|
|
},
|
|
});
|
|
}
|
|
|
|
createRoot(document.getElementById('root')!).render(
|
|
<StrictMode>
|
|
<MsalProvider instance={msalInstance}>
|
|
<App />
|
|
</MsalProvider>
|
|
</StrictMode>,
|
|
)
|