-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
Copy pathmetadataBuilder.ts
45 lines (38 loc) · 1.1 KB
/
metadataBuilder.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { SDK_VERSION } from '@sentry/core';
import { Package, SdkInfo } from '@sentry/types';
import { NextjsOptions } from './nextjsOptions';
export const SDK_NAME = 'sentry.javascript.nextjs';
export const PACKAGE_NAME_PREFIX = 'npm:@sentry/';
/**
* A builder for the SDK metadata in the options for the SDK initialization.
*/
export class MetadataBuilder {
private _options: NextjsOptions;
private _packageNames: string[];
public constructor(options: NextjsOptions, packages: string[]) {
this._options = options;
this._packageNames = packages;
}
/** JSDoc */
public addSdkMetadata(): void {
this._options._metadata = this._options._metadata || {};
this._options._metadata.sdk = this._getSdkInfo();
}
/** JSDoc */
private _getSdkInfo(): SdkInfo {
return {
name: SDK_NAME,
version: SDK_VERSION,
packages: this._getPackages(),
};
}
/** JSDoc */
private _getPackages(): Package[] {
return this._packageNames.map((pkgName: string) => {
return {
name: PACKAGE_NAME_PREFIX + pkgName,
version: SDK_VERSION,
};
});
}
}