Skip to content

Commit d07b0aa

Browse files
committed
node: add BacktraceApi
1 parent 7d18b0a commit d07b0aa

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

packages/node/src/BacktraceApi.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { BacktraceCoreApi, BacktraceCoreApiOptions } from '@backtrace/sdk-core';
2+
import { BacktraceNodeRequestHandler, BacktraceNodeRequestHandlerOptions } from './BacktraceNodeRequestHandler.js';
3+
4+
export interface BacktraceApiOptions extends BacktraceCoreApiOptions {
5+
readonly requestHandlerOptions?: BacktraceNodeRequestHandlerOptions;
6+
}
7+
8+
export class BacktraceApi extends BacktraceCoreApi {
9+
constructor(options: BacktraceApiOptions) {
10+
super(options, options.requestHandler ?? new BacktraceNodeRequestHandler(options.requestHandlerOptions));
11+
}
12+
}

packages/node/src/BacktraceNodeRequestHandler.ts

+10-11
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ import FormData from 'form-data';
1111
import http, { ClientRequest, IncomingMessage } from 'http';
1212
import https from 'https';
1313
import { Readable } from 'stream';
14+
15+
export interface BacktraceNodeRequestHandlerOptions {
16+
readonly timeout?: number;
17+
readonly ignoreSslCertificate?: boolean;
18+
}
19+
1420
export class BacktraceNodeRequestHandler implements BacktraceRequestHandler {
1521
private readonly UPLOAD_FILE_NAME = 'upload_file';
1622
private readonly _timeout: number;
@@ -24,15 +30,8 @@ export class BacktraceNodeRequestHandler implements BacktraceRequestHandler {
2430
'Transfer-Encoding': 'chunked',
2531
};
2632

27-
constructor(
28-
private readonly _options: {
29-
url: string;
30-
token?: string;
31-
timeout?: number;
32-
ignoreSslCertificate?: boolean;
33-
},
34-
) {
35-
this._timeout = this._options.timeout ?? DEFAULT_TIMEOUT;
33+
constructor(private readonly _options?: BacktraceNodeRequestHandlerOptions) {
34+
this._timeout = this._options?.timeout ?? DEFAULT_TIMEOUT;
3635
}
3736

3837
public async postError(
@@ -71,7 +70,7 @@ export class BacktraceNodeRequestHandler implements BacktraceRequestHandler {
7170
const request = httpClient.request(
7271
url,
7372
{
74-
rejectUnauthorized: this._options.ignoreSslCertificate === true,
73+
rejectUnauthorized: this._options?.ignoreSslCertificate === true,
7574
timeout: this._timeout,
7675
method: 'POST',
7776
},
@@ -129,7 +128,7 @@ export class BacktraceNodeRequestHandler implements BacktraceRequestHandler {
129128
const request = httpClient.request(
130129
url,
131130
{
132-
rejectUnauthorized: this._options.ignoreSslCertificate === true,
131+
rejectUnauthorized: this._options?.ignoreSslCertificate === true,
133132
timeout: this._timeout,
134133
method: 'POST',
135134
headers:

packages/node/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export {
1212
RawBreadcrumb,
1313
} from '@backtrace/sdk-core';
1414
export * from './attachment/index.js';
15+
export * from './BacktraceApi.js';
1516
export * from './BacktraceClient.js';
1617
export * from './BacktraceConfiguration.js';
1718
export * from './BacktraceNodeRequestHandler.js';

0 commit comments

Comments
 (0)