B2B-88: add starter kit structure and elements

This commit is contained in:
devmc-ee
2025-06-08 16:18:30 +03:00
parent 657a36a298
commit e7b25600cb
1280 changed files with 77893 additions and 5688 deletions

View File

@@ -0,0 +1,71 @@
import {
Event as SentryEvent,
User as SentryUser,
captureEvent,
captureException,
setUser,
} from '@sentry/nextjs';
import { MonitoringService } from '@kit/monitoring-core';
/**
* @class
* @implements {MonitoringService}
* ServerSentryMonitoringService is responsible for capturing exceptions and identifying users using the Sentry monitoring service.
*/
export class SentryMonitoringService implements MonitoringService {
private readonly readyPromise: Promise<unknown>;
private readyResolver?: (value?: unknown) => void;
constructor() {
this.readyPromise = new Promise(
(resolve) => (this.readyResolver = resolve),
);
void this.initialize();
}
async ready() {
return this.readyPromise;
}
captureException(error: Error | null) {
return captureException(error);
}
captureEvent<Extra extends SentryEvent>(event: string, extra?: Extra) {
return captureEvent({
message: event,
...(extra ?? {}),
});
}
identifyUser(user: SentryUser) {
setUser(user);
}
private async initialize() {
const environment =
process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT ?? process.env.VERCEL_ENV;
if (typeof document !== 'undefined') {
const { initializeSentryBrowserClient } = await import(
'../sentry.client.config'
);
initializeSentryBrowserClient({
environment,
});
} else {
const { initializeSentryServerClient } = await import(
'../sentry.server.config'
);
initializeSentryServerClient({
environment,
});
}
this.readyResolver?.();
}
}