Skip to content

Commit 10d44d6

Browse files
committed
ref: Allow for backslashes in unix paths
1 parent c2fa418 commit 10d44d6

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

packages/integrations/src/rewriteframes.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,18 @@ export class RewriteFrames implements Integration {
2424
* @inheritDoc
2525
*/
2626
private readonly _iteratee: StackFrameIteratee = (frame: StackFrame) => {
27-
// Check if the frame filename begins with `/` or a Windows-style prefix such as `C:\\`
28-
if (frame.filename && /^(\/|[A-Z]:\\)/.test(frame.filename)) {
29-
const filename = frame.filename
30-
.replace(/^[A-Z]:/, '') // remove Windows-style prefix
31-
.replace(/\\/g, '/'); // replace all `\\` instances with `/`
27+
if (!frame.filename) {
28+
return frame;
29+
}
30+
// Check if the frame filename begins with `/` or a Windows-style prefix such as `C:\`
31+
const isWindowsFrame = /^[A-Z]:\\/.test(frame.filename);
32+
const startsWithSlash = /^\//.test(frame.filename);
33+
if (frame.filename && (isWindowsFrame || startsWithSlash)) {
34+
const filename = isWindowsFrame
35+
? frame.filename
36+
.replace(/^[A-Z]:/, '') // remove Windows-style prefix
37+
.replace(/\\/g, '/') // replace all `\\` instances with `/`
38+
: frame.filename;
3239
const base = this._root ? relative(this._root, filename) : basename(filename);
3340
frame.filename = `app:///${base}`;
3441
}

packages/integrations/test/rewriteframes.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ describe('RewriteFrames', () => {
1616
filename: '/www/src/app/file1.js',
1717
},
1818
{
19-
filename: '/www/src/app/file2.js',
19+
filename: '/www/src/app/mo\\dule/file2.js',
2020
},
2121
],
2222
},
@@ -31,7 +31,7 @@ describe('RewriteFrames', () => {
3131
filename: '/www/src/app/file1.js',
3232
},
3333
{
34-
filename: '/www/src/app/file2.js',
34+
filename: '/www/src/app/mo\\dule/file2.js',
3535
},
3636
],
3737
},
@@ -99,13 +99,13 @@ describe('RewriteFrames', () => {
9999
it('transforms messageEvent frames', () => {
100100
const event = rewriteFrames.process(messageEvent);
101101
expect(event.stacktrace!.frames![0].filename).toEqual('app:///src/app/file1.js');
102-
expect(event.stacktrace!.frames![1].filename).toEqual('app:///src/app/file2.js');
102+
expect(event.stacktrace!.frames![1].filename).toEqual('app:///src/app/mo\\dule/file2.js');
103103
});
104104

105105
it('transforms exceptionEvent frames', () => {
106106
const event = rewriteFrames.process(exceptionEvent);
107107
expect(event.exception!.values![0].stacktrace!.frames![0].filename).toEqual('app:///src/app/file1.js');
108-
expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('app:///src/app/file2.js');
108+
expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('app:///src/app/mo\\dule/file2.js');
109109
});
110110

111111
it('trasforms windowsExceptionEvent frames', () => {
@@ -129,15 +129,15 @@ describe('RewriteFrames', () => {
129129
const event = rewriteFrames.process(messageEvent);
130130
expect(event.stacktrace!.frames![0].filename).toEqual('/www/src/app/file1.js');
131131
expect(event.stacktrace!.frames![0].function).toEqual('whoops');
132-
expect(event.stacktrace!.frames![1].filename).toEqual('/www/src/app/file2.js');
132+
expect(event.stacktrace!.frames![1].filename).toEqual('/www/src/app/mo\\dule/file2.js');
133133
expect(event.stacktrace!.frames![1].function).toEqual('whoops');
134134
});
135135

136136
it('transforms exceptionEvent frames', async () => {
137137
const event = rewriteFrames.process(exceptionEvent);
138138
expect(event.exception!.values![0].stacktrace!.frames![0].filename).toEqual('/www/src/app/file1.js');
139139
expect(event.exception!.values![0].stacktrace!.frames![0].function).toEqual('whoops');
140-
expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('/www/src/app/file2.js');
140+
expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('/www/src/app/mo\\dule/file2.js');
141141
expect(event.exception!.values![0].stacktrace!.frames![1].function).toEqual('whoops');
142142
});
143143
});

0 commit comments

Comments
 (0)