Skip to content

Commit df0c3d7

Browse files
authored
Merge branch 'major/5' into ref/make-sync
2 parents 2b84aed + 4979bd8 commit df0c3d7

File tree

17 files changed

+108
-39
lines changed

17 files changed

+108
-39
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
- **breaking** [node] fix: Events created from exception shouldnt have top-level message attribute
6+
- [utils] ref: Update wrap method to hide internal sentry flags
7+
- [utils] fix: Make internal Sentry flags non-enumerable in fill util
8+
59
## 4.5.3
610

711
- [browser]: fix: Fix UnhandledPromise: [object Object]

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"lerna": "3.4.0",
3-
"version": "4.5.2",
3+
"version": "4.5.3",
44
"packages": "packages/*",
55
"ignore": "raven-*",
66
"npmClient": "yarn",

packages/browser/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/browser",
3-
"version": "4.5.2",
3+
"version": "4.5.3",
44
"description": "Offical Sentry SDK for browsers",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser",
@@ -15,9 +15,9 @@
1515
"access": "public"
1616
},
1717
"dependencies": {
18-
"@sentry/core": "4.5.2",
19-
"@sentry/types": "4.5.0",
20-
"@sentry/utils": "4.5.2",
18+
"@sentry/core": "4.5.3",
19+
"@sentry/types": "4.5.3",
20+
"@sentry/utils": "4.5.3",
2121
"tslib": "^1.9.3"
2222
},
2323
"devDependencies": {

packages/browser/src/integrations/helpers.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,26 @@ export function wrap(
113113
}
114114
} catch (_oO) {} // tslint:disable-line:no-empty
115115

116+
fn.prototype = fn.prototype || {};
116117
sentryWrapped.prototype = fn.prototype;
117-
fn.__sentry_wrapped__ = sentryWrapped;
118+
119+
Object.defineProperty(fn, '__sentry_wrapped__', {
120+
enumerable: false,
121+
value: sentryWrapped,
122+
});
118123

119124
// Signal that this function has been wrapped/filled already
120125
// for both debugging and to prevent it to being wrapped/filled twice
121-
sentryWrapped.__sentry__ = true;
122-
sentryWrapped.__sentry_original__ = fn;
126+
Object.defineProperties(sentryWrapped, {
127+
__sentry__: {
128+
enumerable: false,
129+
value: true,
130+
},
131+
__sentry_original__: {
132+
enumerable: false,
133+
value: fn,
134+
},
135+
});
123136

124137
return sentryWrapped;
125138
}

packages/browser/src/version.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export const SDK_NAME = 'sentry.javascript.browser';
2-
export const SDK_VERSION = '4.5.2';
2+
export const SDK_VERSION = '4.5.3';

packages/browser/test/integrations/helpers.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,21 @@ describe('wrap()', () => {
179179
expect(error.message).equal('boom');
180180
}
181181
});
182+
183+
it('internal flags shouldnt be enumerable', () => {
184+
const fn = (() => 1337) as SentryWrappedFunction;
185+
const wrapped = wrap(fn);
186+
187+
// Shouldn't show up in iteration
188+
expect(Object.keys(fn)).to.not.include('__sentry__');
189+
expect(Object.keys(fn)).to.not.include('__sentry_original__');
190+
expect(Object.keys(fn)).to.not.include('__sentry_wrapped__');
191+
expect(Object.keys(wrapped)).to.not.include('__sentry__');
192+
expect(Object.keys(wrapped)).to.not.include('__sentry_original__');
193+
expect(Object.keys(wrapped)).to.not.include('__sentry_wrapped__');
194+
// But should be accessible directly
195+
expect(wrapped.__sentry__).to.equal(true);
196+
expect(wrapped.__sentry_original__).to.equal(fn);
197+
expect(fn.__sentry_wrapped__).to.equal(wrapped);
198+
});
182199
});

packages/core/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/core",
3-
"version": "4.5.2",
3+
"version": "4.5.3",
44
"description": "Base implementation for all Sentry JavaScript SDKs",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core",
@@ -15,10 +15,10 @@
1515
"access": "public"
1616
},
1717
"dependencies": {
18-
"@sentry/hub": "4.5.2",
19-
"@sentry/minimal": "4.5.2",
20-
"@sentry/types": "4.5.0",
21-
"@sentry/utils": "4.5.2",
18+
"@sentry/hub": "4.5.3",
19+
"@sentry/minimal": "4.5.3",
20+
"@sentry/types": "4.5.3",
21+
"@sentry/utils": "4.5.3",
2222
"tslib": "^1.9.3"
2323
},
2424
"devDependencies": {

packages/hub/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/hub",
3-
"version": "4.5.2",
3+
"version": "4.5.3",
44
"description": "Sentry hub which handles global state managment.",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub",
@@ -15,8 +15,8 @@
1515
"access": "public"
1616
},
1717
"dependencies": {
18-
"@sentry/types": "4.5.0",
19-
"@sentry/utils": "4.5.2",
18+
"@sentry/types": "4.5.3",
19+
"@sentry/utils": "4.5.3",
2020
"tslib": "^1.9.3"
2121
},
2222
"devDependencies": {

packages/minimal/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/minimal",
3-
"version": "4.5.2",
3+
"version": "4.5.3",
44
"description": "Sentry minimal library that can be used in other packages",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/minimal",
@@ -15,8 +15,8 @@
1515
"access": "public"
1616
},
1717
"dependencies": {
18-
"@sentry/hub": "4.5.2",
19-
"@sentry/types": "4.5.0",
18+
"@sentry/hub": "4.5.3",
19+
"@sentry/types": "4.5.3",
2020
"tslib": "^1.9.3"
2121
},
2222
"devDependencies": {

packages/node/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/node",
3-
"version": "4.5.2",
3+
"version": "4.5.3",
44
"description": "Offical Sentry SDK for Node.js",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node",
@@ -15,10 +15,10 @@
1515
"access": "public"
1616
},
1717
"dependencies": {
18-
"@sentry/core": "4.5.2",
19-
"@sentry/hub": "4.5.2",
20-
"@sentry/types": "4.5.0",
21-
"@sentry/utils": "4.5.2",
18+
"@sentry/core": "4.5.3",
19+
"@sentry/hub": "4.5.3",
20+
"@sentry/types": "4.5.3",
21+
"@sentry/utils": "4.5.3",
2222
"@types/stack-trace": "0.0.29",
2323
"cookie": "0.3.1",
2424
"https-proxy-agent": "2.2.1",

packages/node/src/parsers.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -250,15 +250,12 @@ export function getExceptionFromError(error: Error, options?: NodeOptions): Sync
250250
export function parseError(error: ExtendedError, options?: NodeOptions): SyncPromise<SentryEvent> {
251251
const name = error.name || error.constructor.name;
252252
return new SyncPromise<SentryEvent>(resolve =>
253-
getExceptionFromError(error, options).then((exception: SentryException) => {
254-
const result = {
253+
getExceptionFromError(error, options).then((exception: SentryException) => resolve({
255254
exception: {
256255
values: [exception],
257256
},
258-
message: `${name}: ${error.message || '<no message>'}`,
259-
};
260-
resolve(result);
261-
}),
257+
}),
258+
),
262259
);
263260
}
264261

packages/node/src/version.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export const SDK_NAME = 'sentry.javascript.node';
2-
export const SDK_VERSION = '4.5.2';
2+
export const SDK_VERSION = '4.5.3';

packages/types/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/types",
3-
"version": "4.5.0",
3+
"version": "4.5.3",
44
"description": "Types for all Sentry JavaScript SDKs",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types",

packages/typescript/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/typescript",
3-
"version": "4.5.0",
3+
"version": "4.5.3",
44
"description": "Typescript configuration used at Sentry",
55
"repository": "git://github.com/getsentry/raven-js.git",
66
"homepage": "https://github.com/getsentry/raven-js/tree/master/packages/typescript",

packages/utils/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/utils",
3-
"version": "4.5.2",
3+
"version": "4.5.3",
44
"description": "Utilities for all Sentry JavaScript SDKs",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils",
@@ -13,7 +13,7 @@
1313
"access": "public"
1414
},
1515
"dependencies": {
16-
"@sentry/types": "4.5.0",
16+
"@sentry/types": "4.5.3",
1717
"tslib": "^1.9.3"
1818
},
1919
"devDependencies": {

packages/utils/src/object.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,28 @@ export function fill(source: { [key: string]: any }, name: string, replacement:
6262
}
6363
const original = source[name] as () => any;
6464
const wrapped = replacement(original) as SentryWrappedFunction;
65-
wrapped.__sentry__ = true;
66-
wrapped.__sentry_original__ = original;
67-
wrapped.__sentry_wrapped__ = wrapped;
65+
66+
// Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work
67+
// otherwise it'll throw "TypeError: Object.defineProperties called on non-object"
68+
// tslint:disable-next-line:strict-type-predicates
69+
if (typeof wrapped === 'function') {
70+
wrapped.prototype = {};
71+
Object.defineProperties(wrapped, {
72+
__sentry__: {
73+
enumerable: false,
74+
value: true,
75+
},
76+
__sentry_original__: {
77+
enumerable: false,
78+
value: original,
79+
},
80+
__sentry_wrapped__: {
81+
enumerable: false,
82+
value: wrapped,
83+
},
84+
});
85+
}
86+
6887
source[name] = wrapped;
6988
}
7089

packages/utils/test/object.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,25 @@ describe('fill()', () => {
207207
expect(replacement).toBeCalled();
208208
expect.assertions(3);
209209
});
210+
211+
test('internal flags shouldnt be enumerable', () => {
212+
const source = {
213+
foo: (): number => 42,
214+
};
215+
const name = 'foo';
216+
const replacement = cb => cb;
217+
218+
fill(source, name, replacement);
219+
220+
// Shouldn't show up in iteration
221+
expect(Object.keys(replacement)).not.toContain('__sentry__');
222+
expect(Object.keys(replacement)).not.toContain('__sentry_original__');
223+
expect(Object.keys(replacement)).not.toContain('__sentry_wrapped__');
224+
// But should be accessible directly
225+
expect(source.foo.__sentry__).toBe(true);
226+
expect(source.foo.__sentry_original__).toBe(source.foo);
227+
expect(source.foo.__sentry_wrapped__).toBe(source.foo);
228+
});
210229
});
211230

212231
describe('urlEncode()', () => {

0 commit comments

Comments
 (0)