Skip to content

Commit 4c04aee

Browse files
authored
sdk-core: Return send result (#233)
* sdk-core: Return send result * Rename method
1 parent bdb4f25 commit 4c04aee

File tree

7 files changed

+43
-20
lines changed

7 files changed

+43
-20
lines changed

packages/sdk-core/src/BacktraceCoreClient.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import {
33
BacktraceAttributeProvider,
44
BacktraceBreadcrumbs,
55
BacktraceConfiguration,
6+
BacktraceReportSubmissionResult,
67
BacktraceRequestHandler,
78
BacktraceSessionProvider,
9+
BacktraceSubmissionResponse,
810
DebugIdProvider,
911
FileSystem,
1012
SdkOptions,
@@ -16,11 +18,11 @@ import { ReportEvents } from './events/ReportEvents';
1618
import { AttributeType, BacktraceData } from './model/data/BacktraceData';
1719
import { BacktraceReportSubmission, RequestBacktraceReportSubmission } from './model/http/BacktraceReportSubmission';
1820
import { BacktraceReport } from './model/report/BacktraceReport';
19-
import { BacktraceModule, BacktraceModuleBindData } from './modules/BacktraceModule';
20-
import { BacktraceModuleCtor, BacktraceModules, ReadonlyBacktraceModules } from './modules/BacktraceModules';
2121
import { AttributeManager } from './modules/attribute/AttributeManager';
2222
import { ClientAttributeProvider } from './modules/attribute/ClientAttributeProvider';
2323
import { UserAttributeProvider } from './modules/attribute/UserAttributeProvider';
24+
import { BacktraceModule, BacktraceModuleBindData } from './modules/BacktraceModule';
25+
import { BacktraceModuleCtor, BacktraceModules, ReadonlyBacktraceModules } from './modules/BacktraceModules';
2426
import { BreadcrumbsManager } from './modules/breadcrumbs/BreadcrumbsManager';
2527
import { V8StackTraceConverter } from './modules/converter/V8StackTraceConverter';
2628
import { BacktraceDataBuilder } from './modules/data/BacktraceDataBuilder';
@@ -270,25 +272,28 @@ export abstract class BacktraceCoreClient<O extends BacktraceConfiguration = Bac
270272
attributes?: Record<string, unknown>,
271273
attachments?: BacktraceAttachment[],
272274
abortSignal?: AbortSignal,
273-
): Promise<void>;
275+
): Promise<BacktraceReportSubmissionResult<BacktraceSubmissionResponse>>;
274276
/**
275277
* Asynchronously sends error data to Backtrace
276278
* @param report Backtrace Report
277279
* @param abortSignal Signal to abort sending
278280
*/
279-
public send(report: BacktraceReport, abortSignal?: AbortSignal): Promise<void>;
281+
public send(
282+
report: BacktraceReport,
283+
abortSignal?: AbortSignal,
284+
): Promise<BacktraceReportSubmissionResult<BacktraceSubmissionResponse>>;
280285
// This function CANNOT be an async function due to possible async state machine stack frame inclusion, which breaks the skip stacks
281286
public send(
282287
data: BacktraceReport | Error | string,
283288
reportAttributesOrAbortSignal?: Record<string, unknown> | AbortSignal,
284289
reportAttachments: BacktraceAttachment[] = [],
285290
abortSignal?: AbortSignal,
286-
): Promise<void> {
291+
): Promise<BacktraceReportSubmissionResult<BacktraceSubmissionResponse>> {
287292
if (!this._enabled) {
288-
return Promise.resolve();
293+
return Promise.resolve(BacktraceReportSubmissionResult.SdkDisabled());
289294
}
290295
if (this._rateLimitWatcher.skipReport()) {
291-
return Promise.resolve();
296+
return Promise.resolve(BacktraceReportSubmissionResult.OnLimitReached('Client'));
292297
}
293298

294299
// If data is BacktraceReport, we know that the second argument should be only AbortSignal
@@ -308,12 +313,12 @@ export abstract class BacktraceCoreClient<O extends BacktraceConfiguration = Bac
308313
this.reportEvents.emit('before-skip', report);
309314

310315
if (this.options.skipReport && this.options.skipReport(report)) {
311-
return Promise.resolve();
316+
return Promise.resolve(BacktraceReportSubmissionResult.ReportSkipped());
312317
}
313318

314319
const backtraceData = this.generateSubmissionData(report);
315320
if (!backtraceData) {
316-
return Promise.resolve();
321+
return Promise.resolve(BacktraceReportSubmissionResult.ReportSkipped());
317322
}
318323

319324
const submissionAttachments = this.generateSubmissionAttachments(report, reportAttachments);
@@ -324,6 +329,7 @@ export abstract class BacktraceCoreClient<O extends BacktraceConfiguration = Bac
324329
.send(backtraceData, submissionAttachments, abortSignal)
325330
.then((submissionResult) => {
326331
this.reportEvents.emit('after-send', report, backtraceData, submissionAttachments, submissionResult);
332+
return submissionResult;
327333
});
328334
}
329335

packages/sdk-core/src/model/http/model/BacktraceSubmissionResult.ts renamed to packages/sdk-core/src/model/data/BacktraceSubmissionResult.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,16 @@ export class BacktraceReportSubmissionResult<T> {
1818
this._result = statusOrResponse;
1919
}
2020

21-
public static OnLimitReached<T>(): BacktraceReportSubmissionResult<T> {
22-
return new BacktraceReportSubmissionResult('Limit reached', 'Client report limit reached');
21+
public static OnLimitReached<T>(target: 'Server' | 'Client' = 'Server'): BacktraceReportSubmissionResult<T> {
22+
return new BacktraceReportSubmissionResult('Limit reached', `${target} report limit reached`);
23+
}
24+
25+
public static SdkDisabled<T>(): BacktraceReportSubmissionResult<T> {
26+
return new BacktraceReportSubmissionResult<T>('Disabled SDK');
27+
}
28+
29+
public static ReportSkipped<T>(): BacktraceReportSubmissionResult<T> {
30+
return new BacktraceReportSubmissionResult<T>('Report skipped');
2331
}
2432

2533
public static OnInternalServerError<T>(message: string): BacktraceReportSubmissionResult<T> {

packages/sdk-core/src/model/http/model/BacktraceSubmissionStatus.ts renamed to packages/sdk-core/src/model/data/BacktraceSubmissionStatus.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ export type BacktraceSubmissionStatus =
88
*/
99
| 'Ok'
1010
/**
11-
* Set on networking error (for example: connection reset )
11+
* Set on networking error (for example: connection reset)
1212
*/
1313
| 'Network Error'
1414
/**
15-
* Set on internal server error.
15+
* Set on internal server error
1616
*/
1717
| 'Server Error'
1818
/**
@@ -22,4 +22,12 @@ export type BacktraceSubmissionStatus =
2222
/**
2323
* Unknown error
2424
*/
25-
| 'Unknown';
25+
| 'Unknown'
26+
/**
27+
* SDK is disabled
28+
*/
29+
| 'Disabled SDK'
30+
/**
31+
* Due to before skip event or skipReport callback the user decided to skip the report
32+
*/
33+
| 'Report skipped';
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
export * from './BacktraceData';
22
export * from './BacktraceStackTrace';
3+
export * from './BacktraceSubmissionResult';
4+
export * from './BacktraceSubmissionStatus';
35
export * from './JavaScriptEngine';

packages/sdk-core/src/model/http/BacktraceReportSubmission.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import { jsonEscaper } from '../../common/jsonEscaper';
22
import { BacktraceAttachment } from '../attachment';
33
import { BacktraceConfiguration } from '../configuration/BacktraceConfiguration';
44
import { BacktraceData } from '../data/BacktraceData';
5+
import { BacktraceReportSubmissionResult } from '../data/BacktraceSubmissionResult';
56
import { BacktraceRequestHandler } from './BacktraceRequestHandler';
6-
import { SubmissionUrlInformation } from './SubmissionUrlInformation';
77
import { BacktraceSubmissionResponse } from './model/BacktraceSubmissionResponse';
8-
import { BacktraceReportSubmissionResult } from './model/BacktraceSubmissionResult';
8+
import { SubmissionUrlInformation } from './SubmissionUrlInformation';
99

1010
export interface BacktraceReportSubmission {
1111
send(

packages/sdk-core/src/model/http/BacktraceRequestHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { BacktraceAttachment } from '../attachment';
2+
import { BacktraceReportSubmissionResult } from '../data/BacktraceSubmissionResult';
23
import { BacktraceSubmissionResponse } from './model/BacktraceSubmissionResponse';
3-
import { BacktraceReportSubmissionResult } from './model/BacktraceSubmissionResult';
44
export const DEFAULT_TIMEOUT = 15_000;
55
export interface BacktraceRequestHandler {
66
/**
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1+
export * from '../data/BacktraceSubmissionResult';
12
export * from './BacktraceReportSubmission';
23
export * from './BacktraceRequestHandler';
3-
export * from './SubmissionUrlInformation';
44
export * from './common/ConnectionError';
55
export * from './model/BacktraceSubmissionResponse';
6-
export * from './model/BacktraceSubmissionResult';
7-
export * from './model/BacktraceSubmissionStatus';
6+
export * from './SubmissionUrlInformation';

0 commit comments

Comments
 (0)