From 4e552ec0dc7d96a249d0f0ab7df7f4796623a521 Mon Sep 17 00:00:00 2001 From: kuangp Date: Thu, 4 Jun 2020 08:01:27 -0400 Subject: [PATCH] feat(browser): support fetchParameters (#2567) Co-authored-by: Phillip Kuang <> --- packages/browser/src/transports/fetch.ts | 4 ++++ .../test/unit/transports/fetch.test.ts | 24 +++++++++++++++++++ packages/types/src/transport.ts | 2 ++ 3 files changed, 30 insertions(+) diff --git a/packages/browser/src/transports/fetch.ts b/packages/browser/src/transports/fetch.ts index b676eafe70e6..f04e4f1aa521 100644 --- a/packages/browser/src/transports/fetch.ts +++ b/packages/browser/src/transports/fetch.ts @@ -35,6 +35,10 @@ export class FetchTransport extends BaseTransport { referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy, }; + if (this.options.fetchParameters !== undefined) { + Object.assign(options, this.options.fetchParameters); + } + if (this.options.headers !== undefined) { options.headers = this.options.headers; } diff --git a/packages/browser/test/unit/transports/fetch.test.ts b/packages/browser/test/unit/transports/fetch.test.ts index 6df53bdba7b2..293a53bd0969 100644 --- a/packages/browser/test/unit/transports/fetch.test.ts +++ b/packages/browser/test/unit/transports/fetch.test.ts @@ -156,5 +156,29 @@ describe('FetchTransport', () => { }), ).equal(true); }); + + it('passes in fetch parameters', async () => { + transport = new Transports.FetchTransport({ + dsn: testDsn, + fetchParameters: { + credentials: 'include', + }, + }); + const response = { status: 200 }; + + fetch.returns(Promise.resolve(response)); + + const res = await transport.sendEvent(payload); + + expect(res.status).equal(Status.Success); + expect( + fetch.calledWith(transportUrl, { + body: JSON.stringify(payload), + credentials: 'include', + method: 'POST', + referrerPolicy: 'origin', + }), + ).equal(true); + }); }); }); diff --git a/packages/types/src/transport.ts b/packages/types/src/transport.ts index e5b0172b75b7..3a5b4ab4be07 100644 --- a/packages/types/src/transport.ts +++ b/packages/types/src/transport.ts @@ -34,4 +34,6 @@ export interface TransportOptions { httpsProxy?: string; /** HTTPS proxy certificates path */ caCerts?: string; + /** Fetch API init parameters */ + fetchParameters?: { [key: string]: string }; }