sentry-vir 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,6 +20,12 @@ export type InitSentryInput = {
20
20
  releaseName: Required<Options>['release'];
21
21
  /** DSN needed for Sentry to hook up to your sentry project. */
22
22
  dsn: Required<Options>['dsn'];
23
+ /**
24
+ * Set to `true` to disable all logging output to the console.
25
+ *
26
+ * @default false
27
+ */
28
+ silent?: boolean | undefined;
23
29
  /**
24
30
  * Optionally create extra context to be included in all Sentry events. This will execute for
25
31
  * each event that is processed.
@@ -34,6 +40,6 @@ export type InitSentryInput = {
34
40
  *
35
41
  * To override any default sentry-vir settings, include them in the userConfig input.
36
42
  */
37
- export declare function baseInitSentry({ dsn, releaseEnv, releaseName, sentryConfigOverrides, createUniversalContext, sentryDep, executionEnv, isDev, }: InitSentryInput & {
43
+ export declare function baseInitSentry({ dsn, releaseEnv, releaseName, sentryConfigOverrides, createUniversalContext, sentryDep, executionEnv, isDev, silent, }: InitSentryInput & {
38
44
  sentryDep: SentryDep;
39
45
  }): Promise<SentryDep>;
@@ -7,12 +7,15 @@ import { createSentryConfig } from './sentry-config.js';
7
7
  *
8
8
  * To override any default sentry-vir settings, include them in the userConfig input.
9
9
  */
10
- export async function baseInitSentry({ dsn, releaseEnv, releaseName, sentryConfigOverrides, createUniversalContext, sentryDep, executionEnv, isDev, }) {
10
+ export async function baseInitSentry({ dsn, releaseEnv, releaseName, sentryConfigOverrides, createUniversalContext, sentryDep, executionEnv, isDev, silent, }) {
11
11
  const finalSentryConfig = await createSentryConfig(executionEnv, sentryDep, {
12
12
  dsn,
13
13
  environment: releaseEnv,
14
14
  release: releaseName,
15
- }, sentryConfigOverrides, isDev);
15
+ }, sentryConfigOverrides, {
16
+ isDev,
17
+ isSilent: !!silent,
18
+ });
16
19
  sentryDep.init(finalSentryConfig);
17
20
  sentryDep.addEventProcessor((event, hint) => processSentryEvent(event, hint, createUniversalContext));
18
21
  void setSentryClientForLogging(sentryDep);
@@ -7,4 +7,7 @@ export type UserOverrides = Omit<Partial<Options>, keyof RequiredSentryOptions>
7
7
  /** Sentry config options that are required. */
8
8
  export type RequiredSentryOptions = Pick<Required<Options>, 'dsn' | 'environment' | 'release'>;
9
9
  /** Creates the sentry config used internally by sentry-vir. */
10
- export declare function createSentryConfig<const ExecutionEnv extends SentryExecutionEnvEnum>(executionEnv: ExecutionEnv, sentryDep: SentryDepByEnv<ExecutionEnv>, requiredSentryOptions: RequiredSentryOptions, userOverrides: UserOverrides, isDev: boolean): Promise<BrowserOptions | NodeOptions>;
10
+ export declare function createSentryConfig<const ExecutionEnv extends SentryExecutionEnvEnum>(executionEnv: ExecutionEnv, sentryDep: SentryDepByEnv<ExecutionEnv>, requiredSentryOptions: RequiredSentryOptions, userOverrides: UserOverrides, flagParams: {
11
+ isDev: boolean;
12
+ isSilent: boolean;
13
+ }): Promise<BrowserOptions | NodeOptions>;
@@ -2,10 +2,10 @@ import { mergeDeep } from '@augment-vir/common';
2
2
  import { SentryExecutionEnvEnum, } from '../env/execution-env.js';
3
3
  import { createSentryHandler } from '../processing/handle-sentry-send.js';
4
4
  /** Creates the sentry config used internally by sentry-vir. */
5
- export function createSentryConfig(executionEnv, sentryDep, requiredSentryOptions, userOverrides, isDev) {
5
+ export function createSentryConfig(executionEnv, sentryDep, requiredSentryOptions, userOverrides, flagParams) {
6
6
  const sharedSentryConfig = {
7
- beforeSend: createSentryHandler(isDev),
8
- beforeSendTransaction: createSentryHandler(isDev),
7
+ beforeSend: createSentryHandler(flagParams),
8
+ beforeSendTransaction: createSentryHandler(flagParams),
9
9
  defaultIntegrations: false,
10
10
  enabled: true,
11
11
  maxValueLength: 10_000,
@@ -1,6 +1,9 @@
1
1
  import { type EventHint } from '@sentry/browser';
2
2
  import { type ErrorEvent, type TransactionEvent } from '@sentry/core';
3
3
  /** Creates a handler for Sentry events based on the given env. */
4
- export declare function createSentryHandler<T extends TransactionEvent | ErrorEvent>(
5
- /** If in dev, events won't be sent to Sentry. They will only be logged in the console. */
6
- isDev: boolean): (event: T, hint: EventHint) => T | null;
4
+ export declare function createSentryHandler<T extends TransactionEvent | ErrorEvent>({ isDev, isSilent, }: {
5
+ /** If in dev, events won't be sent to Sentry. They will only be logged in the console. */
6
+ isDev: boolean;
7
+ /** If silent, events won't even get logged to the console. */
8
+ isSilent: boolean;
9
+ }): (event: T, hint: EventHint) => T | null;
@@ -1,8 +1,6 @@
1
1
  import { LoggingState, logToConsoleFromSentry } from './log-to-console.js';
2
2
  /** Creates a handler for Sentry events based on the given env. */
3
- export function createSentryHandler(
4
- /** If in dev, events won't be sent to Sentry. They will only be logged in the console. */
5
- isDev) {
3
+ export function createSentryHandler({ isDev, isSilent, }) {
6
4
  /** The actual function that gets called when handling Sentry events. */
7
5
  function handleSentrySend(
8
6
  /** The event from Sentry. */
@@ -10,7 +8,7 @@ isDev) {
10
8
  /** The EventHint generated by Sentry. */
11
9
  hint) {
12
10
  if (!event.extra?.wasSentPrematurely) {
13
- logToConsoleFromSentry(event, hint, isDev ? LoggingState.Dev : LoggingState.Prod);
11
+ logToConsoleFromSentry(event, hint, isDev ? LoggingState.Dev : LoggingState.Prod, isSilent);
14
12
  }
15
13
  return isDev ? null : event;
16
14
  }
@@ -10,7 +10,7 @@ export declare function logToConsoleFromSentry(
10
10
  /** The event from Sentry. */
11
11
  event: Event,
12
12
  /** The EventHint generated by Sentry. */
13
- hint: EventHint, loggingState: LoggingState): void;
13
+ hint: EventHint, loggingState: LoggingState, silent: boolean): void;
14
14
  export declare function logToConsoleWithoutSentry(severity: EventSeverityEnum, loggingState: LoggingState, logData: {
15
15
  message: string;
16
16
  extra: undefined | Extras;
@@ -1,4 +1,5 @@
1
- import { check } from '@augment-vir/assert';
1
+ import { check, checkWrap } from '@augment-vir/assert';
2
+ import { omitObjectKeys } from '@augment-vir/common';
2
3
  import { consoleLogMethodPerSeverity, extractEventSeverity, } from '../event-context/event-severity.js';
3
4
  import { extractOriginalMessage } from './event-processor.js';
4
5
  export var LoggingState;
@@ -11,7 +12,10 @@ export function logToConsoleFromSentry(
11
12
  /** The event from Sentry. */
12
13
  event,
13
14
  /** The EventHint generated by Sentry. */
14
- hint, loggingState) {
15
+ hint, loggingState, silent) {
16
+ if (silent) {
17
+ return;
18
+ }
15
19
  logToConsoleWithoutSentry(extractEventSeverity(event), loggingState, {
16
20
  event,
17
21
  extra: event.extra,
@@ -22,15 +26,15 @@ hint, loggingState) {
22
26
  }
23
27
  export function logToConsoleWithoutSentry(severity, loggingState, logData) {
24
28
  const consoleMethod = consoleLogMethodPerSeverity[severity];
25
- const eventLogArg = {
26
- ...(logData.event ? { event: logData.event } : undefined),
27
- ...(logData.hint ? { hint: logData.hint } : undefined),
28
- };
29
+ const includedExtra = logData.extra
30
+ ? checkWrap.isNotEmpty(omitObjectKeys(logData.extra, ['originalFullMessage']))
31
+ : undefined;
29
32
  const logArgs = [
30
33
  logData.message,
31
- logData.extra,
32
- Object.keys(eventLogArg).length ? eventLogArg : undefined,
33
- logData.originalException,
34
+ includedExtra,
35
+ logData.originalException instanceof Error
36
+ ? logData.originalException.stack
37
+ : logData.originalException,
34
38
  ].filter(check.isTruthy);
35
39
  if (loggingState === LoggingState.Dev) {
36
40
  consoleMethod('Would have sent to Sentry:', ...logArgs);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sentry-vir",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "Easily use Sentry.",
5
5
  "keywords": [
6
6
  "config",
@@ -44,53 +44,53 @@
44
44
  "test:update": "npm test update"
45
45
  },
46
46
  "dependencies": {
47
- "@augment-vir/assert": "^31.15.0",
48
- "@augment-vir/common": "^31.15.0",
49
- "@sentry/browser": "^9.15.0",
50
- "@sentry/core": "^9.15.0",
51
- "@sentry/node": "^9.15.0",
52
- "type-fest": "^4.40.1"
47
+ "@augment-vir/assert": "^31.32.2",
48
+ "@augment-vir/common": "^31.32.2",
49
+ "@sentry/browser": "^10.5.0",
50
+ "@sentry/core": "^10.5.0",
51
+ "@sentry/node": "^10.5.0",
52
+ "type-fest": "^4.41.0"
53
53
  },
54
54
  "devDependencies": {
55
- "@augment-vir/test": "^31.15.0",
55
+ "@augment-vir/test": "^31.32.2",
56
56
  "@eslint/eslintrc": "^3.3.1",
57
- "@eslint/js": "^9.25.1",
58
- "@stylistic/eslint-plugin": "^4.2.0",
59
- "@stylistic/eslint-plugin-ts": "^4.2.0",
60
- "@typescript-eslint/eslint-plugin": "^8.31.1",
57
+ "@eslint/js": "^9.33.0",
58
+ "@stylistic/eslint-plugin": "^5.2.3",
59
+ "@stylistic/eslint-plugin-ts": "^4.4.1",
60
+ "@typescript-eslint/eslint-plugin": "^8.39.1",
61
61
  "@web/dev-server-esbuild": "^1.0.4",
62
- "@web/test-runner": "^0.20.1",
62
+ "@web/test-runner": "^0.20.2",
63
63
  "@web/test-runner-commands": "^0.9.0",
64
- "@web/test-runner-playwright": "^0.11.0",
64
+ "@web/test-runner-playwright": "^0.11.1",
65
65
  "@web/test-runner-visual-regression": "^0.10.0",
66
- "cspell": "^8.19.3",
67
- "dependency-cruiser": "^16.10.1",
68
- "esbuild": "^0.25.3",
69
- "eslint": "^9.25.1",
70
- "eslint-config-prettier": "^10.1.2",
71
- "eslint-plugin-jsdoc": "^50.6.11",
66
+ "cspell": "^9.2.0",
67
+ "dependency-cruiser": "^17.0.1",
68
+ "esbuild": "^0.25.9",
69
+ "eslint": "^9.33.0",
70
+ "eslint-config-prettier": "^10.1.8",
71
+ "eslint-plugin-jsdoc": "^54.1.0",
72
72
  "eslint-plugin-monorepo-cop": "^1.0.2",
73
- "eslint-plugin-playwright": "^2.2.0",
74
- "eslint-plugin-prettier": "^5.2.6",
73
+ "eslint-plugin-playwright": "^2.2.2",
74
+ "eslint-plugin-prettier": "^5.5.4",
75
75
  "eslint-plugin-require-extensions": "^0.1.3",
76
- "eslint-plugin-sonarjs": "^3.0.2",
77
- "eslint-plugin-unicorn": "^59.0.0",
76
+ "eslint-plugin-sonarjs": "^3.0.4",
77
+ "eslint-plugin-unicorn": "^57.0.0",
78
78
  "istanbul-smart-text-reporter": "^1.1.5",
79
79
  "markdown-code-example-inserter": "^3.0.3",
80
- "npm-check-updates": "^18.0.1",
80
+ "npm-check-updates": "^18.0.2",
81
81
  "prettier": "~3.3.3",
82
82
  "prettier-plugin-interpolated-html-tags": "^2.0.1",
83
- "prettier-plugin-jsdoc": "^1.3.2",
83
+ "prettier-plugin-jsdoc": "^1.3.3",
84
84
  "prettier-plugin-multiline-arrays": "^4.0.3",
85
- "prettier-plugin-organize-imports": "^4.1.0",
86
- "prettier-plugin-packagejson": "^2.5.10",
85
+ "prettier-plugin-organize-imports": "^4.2.0",
86
+ "prettier-plugin-packagejson": "^2.5.19",
87
87
  "prettier-plugin-sort-json": "^4.1.1",
88
- "prettier-plugin-toml": "^2.0.4",
89
- "typedoc": "^0.28.3",
90
- "typescript": "^5.8.3",
91
- "typescript-eslint": "^8.31.1",
92
- "virmator": "^13.14.1",
93
- "vite": "^6.3.4"
88
+ "prettier-plugin-toml": "^2.0.6",
89
+ "typedoc": "^0.28.10",
90
+ "typescript": "^5.9.2",
91
+ "typescript-eslint": "^8.39.1",
92
+ "virmator": "^13.16.2",
93
+ "vite": "^7.1.2"
94
94
  },
95
95
  "engines": {
96
96
  "node": ">=22"