Skip to content

Commit d1dce8e

Browse files
committed
Renamed parametrize to parameterize
1 parent 7b27a1e commit d1dce8e

File tree

10 files changed

+57
-22
lines changed

10 files changed

+57
-22
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { parameterize } from '@sentry/utils';
2+
3+
const x = 'first';
4+
const y = 'second';
5+
6+
Sentry.captureMessage(parameterize`This is a log statement with ${x} and ${y} params`);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { expect } from '@playwright/test';
2+
import type { Event } from '@sentry/types';
3+
4+
import { sentryTest } from '../../../../utils/fixtures';
5+
import { getFirstSentryEnvelopeRequest } from '../../../../utils/helpers';
6+
7+
sentryTest('should capture a paramaterized representation of the message', async ({ getLocalTestPath, page }) => {
8+
const url = await getLocalTestPath({ testDir: __dirname });
9+
10+
const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);
11+
12+
expect(eventData.logentry).toStrictEqual({
13+
message: 'This is a log statement with %s and %s params',
14+
params: ['first', 'second'],
15+
});
16+
});

packages/browser/src/eventbuilder.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
import { getCurrentHub } from '@sentry/core';
2-
import type { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';
2+
import type {
3+
Event,
4+
EventHint,
5+
Exception,
6+
Severity,
7+
SeverityLevel,
8+
StackFrame,
9+
StackParser,
10+
ParameterizedString,
11+
} from '@sentry/types';
312
import {
413
addExceptionMechanism,
514
addExceptionTypeValue,
@@ -265,7 +274,7 @@ export function eventFromUnknownInput(
265274
*/
266275
export function eventFromString(
267276
stackParser: StackParser,
268-
input: string & { __sentry_template_string__?: string; __sentry_template_values__?: string[] },
277+
input: ParameterizedString,
269278
syntheticException?: Error,
270279
attachStacktrace?: boolean,
271280
): Event {

packages/types/src/client.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type { Event, EventHint } from './event';
88
import type { EventProcessor } from './eventprocessor';
99
import type { Integration, IntegrationClass } from './integration';
1010
import type { ClientOptions } from './options';
11+
import { ParameterizedString } from './parameterize';
1112
import type { Scope } from './scope';
1213
import type { SdkMetadata } from './sdkmetadata';
1314
import type { Session, SessionAggregates } from './session';
@@ -157,7 +158,7 @@ export interface Client<O extends ClientOptions = ClientOptions> {
157158

158159
/** Creates an {@link Event} from primitive inputs to `captureMessage`. */
159160
eventFromMessage(
160-
message: string,
161+
message: ParameterizedString,
161162
// eslint-disable-next-line deprecation/deprecation
162163
level?: Severity | SeverityLevel,
163164
hint?: EventHint,

packages/types/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,4 @@ export type { HandlerDataFetch, HandlerDataXhr, SentryXhrData, SentryWrappedXMLH
126126

127127
export type { BrowserClientReplayOptions, BrowserClientProfilingOptions } from './browseroptions';
128128
export type { CheckIn, MonitorConfig, SerializedCheckIn } from './checkin';
129+
export type { ParameterizedString } from './parameterize';

packages/types/src/parameterize.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export type ParameterizedString = string & {
2+
__sentry_template_string__?: string;
3+
__sentry_template_values__?: string[];
4+
};

packages/utils/src/eventbuilder.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type {
88
SeverityLevel,
99
StackFrame,
1010
StackParser,
11+
ParameterizedString,
1112
} from '@sentry/types';
1213

1314
import { isError, isPlainObject } from './is';
@@ -119,7 +120,7 @@ export function eventFromUnknownInput(
119120
*/
120121
export function eventFromMessage(
121122
stackParser: StackParser,
122-
input: string & { __sentry_template_string__?: string; __sentry_template_values__?: string[] },
123+
message: ParameterizedString,
123124
// eslint-disable-next-line deprecation/deprecation
124125
level: Severity | SeverityLevel = 'info',
125126
hint?: EventHint,
@@ -136,15 +137,15 @@ export function eventFromMessage(
136137
event.exception = {
137138
values: [
138139
{
139-
value: input,
140+
value: message,
140141
stacktrace: { frames },
141142
},
142143
],
143144
};
144145
}
145146
}
146147

147-
const { __sentry_template_string__, __sentry_template_values__ } = input;
148+
const { __sentry_template_string__, __sentry_template_values__ } = message;
148149

149150
if (__sentry_template_string__ && __sentry_template_values__) {
150151
event.logentry = {
@@ -154,6 +155,6 @@ export function eventFromMessage(
154155
return event;
155156
}
156157

157-
event.message = input;
158+
event.message = message;
158159
return event;
159160
}

packages/utils/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ export * from './url';
3131
export * from './userIntegrations';
3232
export * from './cache';
3333
export * from './eventbuilder';
34-
export * from './parametrize';
34+
export * from './parameterize';
3535
export * from './anr';

packages/utils/src/parametrize.ts renamed to packages/utils/src/parameterize.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
1-
export interface ParamerizedString extends String {
2-
__sentry_template_string__: string;
3-
__sentry_template_values__: string[];
4-
}
1+
import { ParameterizedString } from '@sentry/types';
52

63
/**
74
* Tagged template function which returns paramaterized representation of the message
8-
* For example: parametrize`This is a log statement with ${x} and ${y} params`, would return:
5+
* For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:
96
* "__sentry_template_string__": "My raw message with interpreted strings like %s",
107
* "__sentry_template_values__": ["this"]
118
* @param strings An array of string values splitted between expressions
129
* @param values Expressions extracted from template string
1310
* @returns String with template information in __sentry_template_string__ and __sentry_template_values__ properties
1411
*/
15-
export function parametrize(strings: TemplateStringsArray, ...values: string[]): ParamerizedString {
16-
const formatted = new String(String.raw(strings, ...values)) as ParamerizedString;
12+
export function parameterize(strings: TemplateStringsArray, ...values: string[]): ParameterizedString {
13+
const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;
1714
formatted.__sentry_template_string__ = strings.join('\x00').replace(/%/g, '%%').replace(/\0/g, '%s');
1815
formatted.__sentry_template_values__ = values;
1916
return formatted;

packages/utils/test/parametrize.test.ts renamed to packages/utils/test/parameterize.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
1-
import type { ParamerizedString } from '../src/parametrize';
2-
import { parametrize } from '../src/parametrize';
1+
import type { ParameterizedString } from '@sentry/types';
2+
import { parameterize } from '../src/parameterize';
33

4-
describe('parametrize()', () => {
4+
describe('parameterize()', () => {
55
test('works with empty string', () => {
6-
const string = new String() as ParamerizedString;
6+
const string = new String() as ParameterizedString;
77
string.__sentry_template_string__ = '';
88
string.__sentry_template_values__ = [];
99

10-
const formatted = parametrize``;
10+
const formatted = parameterize``;
1111
expect(formatted.__sentry_template_string__).toEqual('');
1212
expect(formatted.__sentry_template_values__).toEqual([]);
1313
});
1414

1515
test('works as expected with template literals', () => {
1616
const x = 'first';
1717
const y = 'second';
18-
const string = new String() as ParamerizedString;
18+
const string = new String() as ParameterizedString;
1919
string.__sentry_template_string__ = 'This is a log statement with %s and %s params';
2020
string.__sentry_template_values__ = ['first', 'second'];
2121

22-
const formatted = parametrize`This is a log statement with ${x} and ${y} params`;
22+
const formatted = parameterize`This is a log statement with ${x} and ${y} params`;
2323
expect(formatted.__sentry_template_string__).toEqual(string.__sentry_template_string__);
2424
expect(formatted.__sentry_template_values__).toEqual(string.__sentry_template_values__);
2525
});

0 commit comments

Comments
 (0)