From 147f19fcdf03741c2450fbca6fa472a2ad06e124 Mon Sep 17 00:00:00 2001 From: Konrad Dysput Date: Fri, 15 Mar 2024 14:25:52 +0100 Subject: [PATCH 1/2] sdk-core: Return send result --- packages/sdk-core/src/BacktraceCoreClient.ts | 24 ++++++++++++------- .../BacktraceSubmissionResult.ts | 12 ++++++++-- .../BacktraceSubmissionStatus.ts | 14 ++++++++--- packages/sdk-core/src/model/data/index.ts | 2 ++ .../model/http/BacktraceReportSubmission.ts | 4 ++-- .../src/model/http/BacktraceRequestHandler.ts | 2 +- packages/sdk-core/src/model/http/index.ts | 5 ++-- 7 files changed, 43 insertions(+), 20 deletions(-) rename packages/sdk-core/src/model/{http/model => data}/BacktraceSubmissionResult.ts (79%) rename packages/sdk-core/src/model/{http/model => data}/BacktraceSubmissionStatus.ts (55%) diff --git a/packages/sdk-core/src/BacktraceCoreClient.ts b/packages/sdk-core/src/BacktraceCoreClient.ts index 627c3fc7..19a54c00 100644 --- a/packages/sdk-core/src/BacktraceCoreClient.ts +++ b/packages/sdk-core/src/BacktraceCoreClient.ts @@ -3,8 +3,10 @@ import { BacktraceAttributeProvider, BacktraceBreadcrumbs, BacktraceConfiguration, + BacktraceReportSubmissionResult, BacktraceRequestHandler, BacktraceSessionProvider, + BacktraceSubmissionResponse, DebugIdProvider, FileSystem, SdkOptions, @@ -16,11 +18,11 @@ import { ReportEvents } from './events/ReportEvents'; import { AttributeType, BacktraceData } from './model/data/BacktraceData'; import { BacktraceReportSubmission, RequestBacktraceReportSubmission } from './model/http/BacktraceReportSubmission'; import { BacktraceReport } from './model/report/BacktraceReport'; -import { BacktraceModule, BacktraceModuleBindData } from './modules/BacktraceModule'; -import { BacktraceModuleCtor, BacktraceModules, ReadonlyBacktraceModules } from './modules/BacktraceModules'; import { AttributeManager } from './modules/attribute/AttributeManager'; import { ClientAttributeProvider } from './modules/attribute/ClientAttributeProvider'; import { UserAttributeProvider } from './modules/attribute/UserAttributeProvider'; +import { BacktraceModule, BacktraceModuleBindData } from './modules/BacktraceModule'; +import { BacktraceModuleCtor, BacktraceModules, ReadonlyBacktraceModules } from './modules/BacktraceModules'; import { BreadcrumbsManager } from './modules/breadcrumbs/BreadcrumbsManager'; import { V8StackTraceConverter } from './modules/converter/V8StackTraceConverter'; import { BacktraceDataBuilder } from './modules/data/BacktraceDataBuilder'; @@ -270,25 +272,28 @@ export abstract class BacktraceCoreClient, attachments?: BacktraceAttachment[], abortSignal?: AbortSignal, - ): Promise; + ): Promise>; /** * Asynchronously sends error data to Backtrace * @param report Backtrace Report * @param abortSignal Signal to abort sending */ - public send(report: BacktraceReport, abortSignal?: AbortSignal): Promise; + public send( + report: BacktraceReport, + abortSignal?: AbortSignal, + ): Promise>; // This function CANNOT be an async function due to possible async state machine stack frame inclusion, which breaks the skip stacks public send( data: BacktraceReport | Error | string, reportAttributesOrAbortSignal?: Record | AbortSignal, reportAttachments: BacktraceAttachment[] = [], abortSignal?: AbortSignal, - ): Promise { + ): Promise> { if (!this._enabled) { - return Promise.resolve(); + return Promise.resolve(BacktraceReportSubmissionResult.DisabledSdk()); } if (this._rateLimitWatcher.skipReport()) { - return Promise.resolve(); + return Promise.resolve(BacktraceReportSubmissionResult.OnLimitReached('Client')); } // If data is BacktraceReport, we know that the second argument should be only AbortSignal @@ -308,12 +313,12 @@ export abstract class BacktraceCoreClient { this.reportEvents.emit('after-send', report, backtraceData, submissionAttachments, submissionResult); + return submissionResult; }); } diff --git a/packages/sdk-core/src/model/http/model/BacktraceSubmissionResult.ts b/packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts similarity index 79% rename from packages/sdk-core/src/model/http/model/BacktraceSubmissionResult.ts rename to packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts index 14e71dac..17bb32f3 100644 --- a/packages/sdk-core/src/model/http/model/BacktraceSubmissionResult.ts +++ b/packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts @@ -18,8 +18,16 @@ export class BacktraceReportSubmissionResult { this._result = statusOrResponse; } - public static OnLimitReached(): BacktraceReportSubmissionResult { - return new BacktraceReportSubmissionResult('Limit reached', 'Client report limit reached'); + public static OnLimitReached(target: 'Server' | 'Client' = 'Server'): BacktraceReportSubmissionResult { + return new BacktraceReportSubmissionResult('Limit reached', `${target} report limit reached`); + } + + public static DisabledSdk(): BacktraceReportSubmissionResult { + return new BacktraceReportSubmissionResult('Disabled SDK'); + } + + public static ReportSkipped(): BacktraceReportSubmissionResult { + return new BacktraceReportSubmissionResult('Report skipped'); } public static OnInternalServerError(message: string): BacktraceReportSubmissionResult { diff --git a/packages/sdk-core/src/model/http/model/BacktraceSubmissionStatus.ts b/packages/sdk-core/src/model/data/BacktraceSubmissionStatus.ts similarity index 55% rename from packages/sdk-core/src/model/http/model/BacktraceSubmissionStatus.ts rename to packages/sdk-core/src/model/data/BacktraceSubmissionStatus.ts index b3a37bab..b92b049b 100644 --- a/packages/sdk-core/src/model/http/model/BacktraceSubmissionStatus.ts +++ b/packages/sdk-core/src/model/data/BacktraceSubmissionStatus.ts @@ -8,11 +8,11 @@ export type BacktraceSubmissionStatus = */ | 'Ok' /** - * Set on networking error (for example: connection reset ) + * Set on networking error (for example: connection reset) */ | 'Network Error' /** - * Set on internal server error. + * Set on internal server error */ | 'Server Error' /** @@ -22,4 +22,12 @@ export type BacktraceSubmissionStatus = /** * Unknown error */ - | 'Unknown'; + | 'Unknown' + /** + * SDK is disabled + */ + | 'Disabled SDK' + /** + * Due to before skip event or skipReport callback the user decided to skip the report + */ + | 'Report skipped'; diff --git a/packages/sdk-core/src/model/data/index.ts b/packages/sdk-core/src/model/data/index.ts index 850c5703..40fd4368 100644 --- a/packages/sdk-core/src/model/data/index.ts +++ b/packages/sdk-core/src/model/data/index.ts @@ -1,3 +1,5 @@ export * from './BacktraceData'; export * from './BacktraceStackTrace'; +export * from './BacktraceSubmissionResult'; +export * from './BacktraceSubmissionStatus'; export * from './JavaScriptEngine'; diff --git a/packages/sdk-core/src/model/http/BacktraceReportSubmission.ts b/packages/sdk-core/src/model/http/BacktraceReportSubmission.ts index 8389b35e..76ac02cb 100644 --- a/packages/sdk-core/src/model/http/BacktraceReportSubmission.ts +++ b/packages/sdk-core/src/model/http/BacktraceReportSubmission.ts @@ -2,10 +2,10 @@ import { jsonEscaper } from '../../common/jsonEscaper'; import { BacktraceAttachment } from '../attachment'; import { BacktraceConfiguration } from '../configuration/BacktraceConfiguration'; import { BacktraceData } from '../data/BacktraceData'; +import { BacktraceReportSubmissionResult } from '../data/BacktraceSubmissionResult'; import { BacktraceRequestHandler } from './BacktraceRequestHandler'; -import { SubmissionUrlInformation } from './SubmissionUrlInformation'; import { BacktraceSubmissionResponse } from './model/BacktraceSubmissionResponse'; -import { BacktraceReportSubmissionResult } from './model/BacktraceSubmissionResult'; +import { SubmissionUrlInformation } from './SubmissionUrlInformation'; export interface BacktraceReportSubmission { send( diff --git a/packages/sdk-core/src/model/http/BacktraceRequestHandler.ts b/packages/sdk-core/src/model/http/BacktraceRequestHandler.ts index 34e8c4ba..17b90f16 100644 --- a/packages/sdk-core/src/model/http/BacktraceRequestHandler.ts +++ b/packages/sdk-core/src/model/http/BacktraceRequestHandler.ts @@ -1,6 +1,6 @@ import { BacktraceAttachment } from '../attachment'; +import { BacktraceReportSubmissionResult } from '../data/BacktraceSubmissionResult'; import { BacktraceSubmissionResponse } from './model/BacktraceSubmissionResponse'; -import { BacktraceReportSubmissionResult } from './model/BacktraceSubmissionResult'; export const DEFAULT_TIMEOUT = 15_000; export interface BacktraceRequestHandler { /** diff --git a/packages/sdk-core/src/model/http/index.ts b/packages/sdk-core/src/model/http/index.ts index 6042d882..5dad44f5 100644 --- a/packages/sdk-core/src/model/http/index.ts +++ b/packages/sdk-core/src/model/http/index.ts @@ -1,7 +1,6 @@ +export * from '../data/BacktraceSubmissionResult'; export * from './BacktraceReportSubmission'; export * from './BacktraceRequestHandler'; -export * from './SubmissionUrlInformation'; export * from './common/ConnectionError'; export * from './model/BacktraceSubmissionResponse'; -export * from './model/BacktraceSubmissionResult'; -export * from './model/BacktraceSubmissionStatus'; +export * from './SubmissionUrlInformation'; From a6b71345a0c0b3f0e6b95fc35fa4fc631b54aa9e Mon Sep 17 00:00:00 2001 From: Konrad Dysput Date: Fri, 15 Mar 2024 15:44:18 +0100 Subject: [PATCH 2/2] Rename method --- packages/sdk-core/src/BacktraceCoreClient.ts | 2 +- packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sdk-core/src/BacktraceCoreClient.ts b/packages/sdk-core/src/BacktraceCoreClient.ts index 19a54c00..13f4fc3c 100644 --- a/packages/sdk-core/src/BacktraceCoreClient.ts +++ b/packages/sdk-core/src/BacktraceCoreClient.ts @@ -290,7 +290,7 @@ export abstract class BacktraceCoreClient> { if (!this._enabled) { - return Promise.resolve(BacktraceReportSubmissionResult.DisabledSdk()); + return Promise.resolve(BacktraceReportSubmissionResult.SdkDisabled()); } if (this._rateLimitWatcher.skipReport()) { return Promise.resolve(BacktraceReportSubmissionResult.OnLimitReached('Client')); diff --git a/packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts b/packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts index 17bb32f3..be3486a8 100644 --- a/packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts +++ b/packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts @@ -22,7 +22,7 @@ export class BacktraceReportSubmissionResult { return new BacktraceReportSubmissionResult('Limit reached', `${target} report limit reached`); } - public static DisabledSdk(): BacktraceReportSubmissionResult { + public static SdkDisabled(): BacktraceReportSubmissionResult { return new BacktraceReportSubmissionResult('Disabled SDK'); }