Skip to content

Commit eb33c75

Browse files
committed
[v7] Remove SyncPromise in favor of native Promise
1 parent 7ff9996 commit eb33c75

File tree

10 files changed

+28
-260
lines changed

10 files changed

+28
-260
lines changed

packages/core/src/baseclient.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import {
1616
logger,
1717
normalize,
1818
SentryError,
19-
SyncPromise,
2019
truncate,
2120
uuid4,
2221
} from '@sentry/utils';
@@ -276,7 +275,7 @@ export abstract class BaseClient<O extends OptionsV7> implements ClientLike<O> {
276275

277276
/** Waits for the client to be done with processing. */
278277
protected _isClientProcessing(timeout?: number): PromiseLike<boolean> {
279-
return new SyncPromise(resolve => {
278+
return new Promise(resolve => {
280279
let ticked: number = 0;
281280
const tick: number = 1;
282281

@@ -484,22 +483,22 @@ export abstract class BaseClient<O extends OptionsV7> implements ClientLike<O> {
484483
* @param event The event to send to Sentry.
485484
* @param hint May contain additional information about the original exception.
486485
* @param scope A scope containing event metadata.
487-
* @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.
486+
* @returns A Promise that resolves with the event or rejects in case event was/will not be send.
488487
*/
489488
protected _processEvent(event: SentryEvent, captureContext: CaptureContext): PromiseLike<SentryEvent> {
490489
// eslint-disable-next-line @typescript-eslint/unbound-method
491490
const { beforeSend, sampleRate } = this.options;
492491

493492
if (this.options.enabled === false) {
494-
return SyncPromise.reject(new SentryError('SDK not enabled, will not send event.'));
493+
return Promise.reject(new SentryError('SDK not enabled, will not send event.'));
495494
}
496495

497496
const isTransaction = event.type === 'transaction';
498497
// 1.0 === 100% events are sent
499498
// 0.0 === 0% events are sent
500499
// Sampling for transaction happens somewhere else
501500
if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {
502-
return SyncPromise.reject(
501+
return Promise.reject(
503502
new SentryError(
504503
`Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,
505504
),

packages/eventbuilder-browser/src/index.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
isErrorEvent,
1111
isEvent,
1212
isPlainObject,
13-
SyncPromise,
1413
} from '@sentry/utils';
1514

1615
import { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';
@@ -42,7 +41,7 @@ export function eventFromException(
4241
}
4342
event.level = Severity.Error;
4443
event.platform = 'javascript';
45-
return SyncPromise.resolve(event);
44+
return Promise.resolve(event);
4645
}
4746

4847
/**
@@ -63,7 +62,7 @@ export function eventFromMessage(
6362
}
6463
event.level = captureContext.scope?.level ?? Severity.Info;
6564
event.platform = 'javascript';
66-
return SyncPromise.resolve(event);
65+
return Promise.resolve(event);
6766
}
6867

6968
/**

packages/eventbuilder-node/src/index.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
isError,
99
isPlainObject,
1010
normalizeToSize,
11-
SyncPromise,
1211
} from '@sentry/utils';
1312

1413
import { extractStackFromError, parseError, parseStack, prepareFramesForEvent } from './parsers';
@@ -44,7 +43,7 @@ export function eventFromException(
4443
mechanism.synthetic = true;
4544
}
4645

47-
return new SyncPromise<SentryEvent>((resolve, reject) =>
46+
return new Promise((resolve, reject) =>
4847
parseError(ex as Error)
4948
.then(event => {
5049
addExceptionTypeValue(event, undefined, undefined);
@@ -82,7 +81,7 @@ export function eventFromMessage(
8281
event.event_id = captureContext.hint?.event_id;
8382
}
8483

85-
return new SyncPromise<SentryEvent>(resolve => {
84+
return new Promise(resolve => {
8685
if (options.attachStacktrace && captureContext.hint?.syntheticException) {
8786
const stack = extractStackFromError(captureContext.hint?.syntheticException);
8887
parseStack(stack)

packages/eventbuilder-node/src/parsers.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { SentryEvent, Exception, ExtendedError, StackFrame } from '@sentry/types';
2-
import { basename, dirname, SyncPromise } from '@sentry/utils';
2+
import { basename, dirname } from '@sentry/utils';
33

44
import * as stacktrace from './stacktrace';
55

@@ -90,7 +90,7 @@ export function parseStack(stack: stacktrace.StackFrame[]): PromiseLike<StackFra
9090
return parsedFrame;
9191
});
9292

93-
return SyncPromise.resolve(frames);
93+
return Promise.resolve(frames);
9494
}
9595

9696
/**
@@ -99,7 +99,7 @@ export function parseStack(stack: stacktrace.StackFrame[]): PromiseLike<StackFra
9999
export function getExceptionFromError(error: Error): PromiseLike<Exception> {
100100
const name = error.name || error.constructor.name;
101101
const stack = extractStackFromError(error);
102-
return new SyncPromise<Exception>(resolve =>
102+
return new Promise(resolve =>
103103
parseStack(stack).then(frames => {
104104
const result = {
105105
stacktrace: {
@@ -117,7 +117,7 @@ export function getExceptionFromError(error: Error): PromiseLike<Exception> {
117117
* @hidden
118118
*/
119119
export function parseError(error: ExtendedError): PromiseLike<SentryEvent> {
120-
return new SyncPromise<SentryEvent>(resolve =>
120+
return new Promise(resolve =>
121121
getExceptionFromError(error).then((exception: Exception) => {
122122
resolve({
123123
exception: {

packages/integration-node-contextlines/src/index.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { readFile } from 'fs';
22

33
import { ClientLike, Integration, StackFrame } from '@sentry/types';
4-
import { snipLine, SyncPromise } from '@sentry/utils';
4+
import { snipLine } from '@sentry/utils';
55
import { LRUMap } from 'lru_map';
66

77
const DEFAULT_LINES_OF_CONTEXT: number = 7;
88
const FILE_CONTENT_CACHE = new LRUMap<string, string | null>(100);
99

10+
// TODO: Write some performance tests for LRU/Promise memory issue.
11+
1012
/**
1113
* Resets the file cache. Exists for testing purposes.
1214
* @hidden
@@ -91,12 +93,10 @@ function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: n
9193
function readSourceFiles(filenames: string[]): PromiseLike<{ [key: string]: string | null }> {
9294
// we're relying on filenames being de-duped already
9395
if (filenames.length === 0) {
94-
return SyncPromise.resolve({});
96+
return Promise.resolve({});
9597
}
9698

97-
return new SyncPromise<{
98-
[key: string]: string | null;
99-
}>(resolve => {
99+
return new Promise(resolve => {
100100
const sourceFiles: {
101101
[key: string]: string | null;
102102
} = {};

packages/integration-node-linkederrors/src/index.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ClientLike, EventHint, Exception, ExtendedError, Integration, SentryEvent } from '@sentry/types';
2-
import { isInstanceOf, SyncPromise } from '@sentry/utils';
2+
import { isInstanceOf } from '@sentry/utils';
33
import { getExceptionFromError } from '@sentry/eventbuilder-node';
44

55
const DEFAULT_KEY = 'cause';
@@ -19,10 +19,10 @@ export class LinkedErrors implements Integration {
1919
public install(client: ClientLike): void {
2020
client.addEventProcessor((event: SentryEvent, hint?: EventHint) => {
2121
if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {
22-
return SyncPromise.resolve(event);
22+
return Promise.resolve(event);
2323
}
2424

25-
return new SyncPromise<SentryEvent>(resolve => {
25+
return new Promise(resolve => {
2626
this._walkErrorTree(hint.originalException as Error, this._key)
2727
.then((linkedErrors: Exception[]) => {
2828
if (event && event.exception && event.exception.values) {
@@ -39,9 +39,9 @@ export class LinkedErrors implements Integration {
3939

4040
private _walkErrorTree(error: ExtendedError, key: string, stack: Exception[] = []): PromiseLike<Exception[]> {
4141
if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {
42-
return SyncPromise.resolve(stack);
42+
return Promise.resolve(stack);
4343
}
44-
return new SyncPromise<Exception[]>((resolve, reject) => {
44+
return new Promise((resolve, reject) => {
4545
getExceptionFromError(error[key])
4646
.then((exception: Exception) => {
4747
this._walkErrorTree(error[key], key, [exception, ...stack])

packages/scope/src/scope.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
User,
1717
BreadcrumbHint,
1818
} from '@sentry/types';
19-
import { dateTimestampInSeconds, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';
19+
import { dateTimestampInSeconds, isPlainObject, isThenable } from '@sentry/utils';
2020

2121
import { Session } from './session';
2222

@@ -441,7 +441,7 @@ export class Scope implements ScopeLike {
441441
hint?: EventHint,
442442
index: number = 0,
443443
): PromiseLike<SentryEvent | null> {
444-
return new SyncPromise<SentryEvent | null>((resolve, reject) => {
444+
return new Promise((resolve, reject) => {
445445
const processor = processors[index];
446446
if (event === null || typeof processor !== 'function') {
447447
resolve(event);

packages/utils/src/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,4 @@ export * from './promisebuffer';
1313
export * from './stacktrace';
1414
export * from './string';
1515
export * from './supports';
16-
export * from './syncpromise';
1716
export * from './time';

packages/utils/src/promisebuffer.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { SentryError } from './error';
2-
import { SyncPromise } from './syncpromise';
32

43
/** A simple queue that holds promises. */
54
export class PromiseBuffer<T> {
@@ -23,7 +22,7 @@ export class PromiseBuffer<T> {
2322
*/
2423
public add(task: PromiseLike<T>): PromiseLike<T> {
2524
if (!this.isReady()) {
26-
return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));
25+
return Promise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));
2726
}
2827
if (this._buffer.indexOf(task) === -1) {
2928
this._buffer.push(task);
@@ -64,13 +63,14 @@ export class PromiseBuffer<T> {
6463
* @param timeout Number in ms to wait until it resolves with false.
6564
*/
6665
public drain(timeout?: number): PromiseLike<boolean> {
67-
return new SyncPromise<boolean>(resolve => {
66+
return new Promise(resolve => {
6867
const capturedSetTimeout = setTimeout(() => {
6968
if (timeout && timeout > 0) {
7069
resolve(false);
7170
}
7271
}, timeout);
73-
SyncPromise.all(this._buffer)
72+
73+
Promise.all(this._buffer)
7474
.then(() => {
7575
clearTimeout(capturedSetTimeout);
7676
resolve(true);

0 commit comments

Comments
 (0)