diff options
| author | zyoshoka <107108195+zyoshoka@users.noreply.github.com> | 2025-04-02 15:44:04 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-02 15:44:04 +0900 |
| commit | 0bf49818c4477b3bed53017a77885153395662b0 (patch) | |
| tree | 6c03ba0cb265eaaae5e69648f092d4092a3174ff /packages/backend | |
| parent | fix(frontend): Fix #15744 (diff) | |
| download | sharkey-0bf49818c4477b3bed53017a77885153395662b0.tar.gz sharkey-0bf49818c4477b3bed53017a77885153395662b0.tar.bz2 sharkey-0bf49818c4477b3bed53017a77885153395662b0.zip | |
enhance: implement `sentryForFrontend` (#15433)
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Diffstat (limited to 'packages/backend')
| -rw-r--r-- | packages/backend/package.json | 1 | ||||
| -rw-r--r-- | packages/backend/src/config.ts | 17 | ||||
| -rw-r--r-- | packages/backend/src/core/entities/MetaEntityService.ts | 1 | ||||
| -rw-r--r-- | packages/backend/src/models/json-schema/meta.ts | 32 |
4 files changed, 48 insertions, 3 deletions
diff --git a/packages/backend/package.json b/packages/backend/package.json index bcaa6357ce..d7705b2b9e 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -186,6 +186,7 @@ "devDependencies": { "@jest/globals": "29.7.0", "@nestjs/platform-express": "10.4.15", + "@sentry/vue": "9.8.0", "@simplewebauthn/types": "12.0.0", "@swc/jest": "0.2.37", "@types/accepts": "1.3.7", diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index 32ea700748..646fa07911 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -7,7 +7,8 @@ import * as fs from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, resolve } from 'node:path'; import * as yaml from 'js-yaml'; -import * as Sentry from '@sentry/node'; +import type * as Sentry from '@sentry/node'; +import type * as SentryVue from '@sentry/vue'; import type { RedisOptions } from 'ioredis'; type RedisOptionsSource = Partial<RedisOptions> & { @@ -62,7 +63,12 @@ type Source = { scope?: 'local' | 'global' | string[]; }; sentryForBackend?: { options: Partial<Sentry.NodeOptions>; enableNodeProfiling: boolean; }; - sentryForFrontend?: { options: Partial<Sentry.NodeOptions> }; + sentryForFrontend?: { + options: Partial<SentryVue.BrowserOptions> & { dsn: string }; + vueIntegration?: SentryVue.VueIntegrationOptions | null; + browserTracingIntegration?: Parameters<typeof SentryVue.browserTracingIntegration>[0] | null; + replayIntegration?: Parameters<typeof SentryVue.replayIntegration>[0] | null; + }; publishTarballInsteadOfProvideRepositoryUrl?: boolean; @@ -198,7 +204,12 @@ export type Config = { redisForTimelines: RedisOptions & RedisOptionsSource; redisForReactions: RedisOptions & RedisOptionsSource; sentryForBackend: { options: Partial<Sentry.NodeOptions>; enableNodeProfiling: boolean; } | undefined; - sentryForFrontend: { options: Partial<Sentry.NodeOptions> } | undefined; + sentryForFrontend: { + options: Partial<SentryVue.BrowserOptions> & { dsn: string }; + vueIntegration?: SentryVue.VueIntegrationOptions | null; + browserTracingIntegration?: Parameters<typeof SentryVue.browserTracingIntegration>[0] | null; + replayIntegration?: Parameters<typeof SentryVue.replayIntegration>[0] | null; + } | undefined; perChannelMaxNoteCacheCount: number; perUserNotificationsMaxCount: number; deactivateAntennaThreshold: number; diff --git a/packages/backend/src/core/entities/MetaEntityService.ts b/packages/backend/src/core/entities/MetaEntityService.ts index 08717bd066..02783dc450 100644 --- a/packages/backend/src/core/entities/MetaEntityService.ts +++ b/packages/backend/src/core/entities/MetaEntityService.ts @@ -127,6 +127,7 @@ export class MetaEntityService { policies: { ...DEFAULT_POLICIES, ...instance.policies }, + sentryForFrontend: this.config.sentryForFrontend ?? null, mediaProxy: this.config.mediaProxy, enableUrlPreview: instance.urlPreviewEnabled, noteSearchableScope: (this.config.meilisearch == null || this.config.meilisearch.scope !== 'local') ? 'global' : 'local', diff --git a/packages/backend/src/models/json-schema/meta.ts b/packages/backend/src/models/json-schema/meta.ts index 1e25c355ca..2cd7620af0 100644 --- a/packages/backend/src/models/json-schema/meta.ts +++ b/packages/backend/src/models/json-schema/meta.ts @@ -211,6 +211,38 @@ export const packedMetaLiteSchema = { type: 'boolean', optional: false, nullable: false, }, + sentryForFrontend: { + type: 'object', + optional: false, nullable: true, + properties: { + options: { + type: 'object', + optional: false, nullable: false, + properties: { + dsn: { + type: 'string', + optional: false, nullable: false, + }, + }, + additionalProperties: true, + }, + vueIntegration: { + type: 'object', + optional: true, nullable: true, + additionalProperties: true, + }, + browserTracingIntegration: { + type: 'object', + optional: true, nullable: true, + additionalProperties: true, + }, + replayIntegration: { + type: 'object', + optional: true, nullable: true, + additionalProperties: true, + }, + }, + }, mediaProxy: { type: 'string', optional: false, nullable: false, |