Skip to content

Commit f5ddf9e

Browse files
RuslanZavackykamilogorek
authored andcommitted
feat: Add fetchParameters to configure fetch (#1177)
* Add `fetchParameters` to configure `fetch` * Add referrerPolicy: 'origin' * Add typescript definition for fetchParameters
1 parent bd3bd9d commit f5ddf9e

File tree

4 files changed

+46
-12
lines changed

4 files changed

+46
-12
lines changed

docs/config.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,20 @@ Those configuration options are documented below:
303303
}
304304
}
305305
306+
.. describe:: fetchParameters
307+
308+
``fetch()`` init parameters (https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters).
309+
310+
Defaults:
311+
312+
.. code-block:: javascript
313+
{
314+
method: 'POST',
315+
credentials: 'include',
316+
keepalive: true,
317+
referrerPolicy: 'origin'
318+
}
319+
306320
307321
.. describe:: allowDuplicates
308322

src/raven.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ function Raven() {
8585
instrument: true,
8686
sampleRate: 1
8787
};
88+
this._fetchDefaults = {
89+
method: 'POST',
90+
credentials: 'include',
91+
keepalive: true,
92+
referrerPolicy: 'origin'
93+
};
8894
this._ignoreOnError = 0;
8995
this._isRavenInstalled = false;
9096
this._originalErrorStackTraceLimit = Error.stackTraceLimit;
@@ -1903,15 +1909,21 @@ Raven.prototype = {
19031909
var url = opts.url + '?' + urlencode(opts.auth);
19041910

19051911
var evaluatedHeaders = null;
1912+
var evaluatedFetchParameters = {};
1913+
19061914
if (opts.options.headers) {
1907-
evaluatedHeaders = this._evaluateHeaders(opts.options.headers);
1915+
evaluatedHeaders = this._evaluateHash(opts.options.headers);
1916+
}
1917+
1918+
if (opts.options.fetchParameters) {
1919+
evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);
19081920
}
19091921

19101922
if (supportsFetch()) {
1911-
var fetchOptions = {
1912-
method: 'POST',
1913-
body: stringify(opts.data)
1914-
};
1923+
evaluatedFetchParameters.body = stringify(opts.data);
1924+
1925+
var defaultFetchOptions = objectMerge({}, this._fetchDefaults);
1926+
var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters);
19151927

19161928
if (evaluatedHeaders) {
19171929
fetchOptions.headers = evaluatedHeaders;
@@ -1986,17 +1998,17 @@ Raven.prototype = {
19861998
request.send(stringify(opts.data));
19871999
},
19882000

1989-
_evaluateHeaders: function(headers) {
1990-
var evaluatedHeaders = {};
2001+
_evaluateHash: function(hash) {
2002+
var evaluated = {};
19912003

1992-
for (var key in headers) {
1993-
if (headers.hasOwnProperty(key)) {
1994-
var value = headers[key];
1995-
evaluatedHeaders[key] = typeof value === 'function' ? value() : value;
2004+
for (var key in hash) {
2005+
if (hash.hasOwnProperty(key)) {
2006+
var value = hash[key];
2007+
evaluated[key] = typeof value === 'function' ? value() : value;
19962008
}
19972009
}
19982010

1999-
return evaluatedHeaders;
2011+
return evaluated;
20002012
},
20012013

20022014
_logDebug: function(level) {

test/raven.test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1783,6 +1783,9 @@ describe('globals', function() {
17831783
assert.deepEqual(window.fetch.lastCall.args, [
17841784
'http://localhost/?a=1&b=2',
17851785
{
1786+
credentials: 'include',
1787+
keepalive: true,
1788+
referrerPolicy: 'origin',
17861789
method: 'POST',
17871790
body: '{"foo":"bar"}'
17881791
}

typescript/raven.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ declare module Raven {
6868
[key: string]: (string | Function);
6969
};
7070

71+
/** `fetch` init parameters */
72+
fetchParameters?: {
73+
[key: string]: (string | Function);
74+
};
75+
7176
/** Allow use of private/secretKey. */
7277
allowSecretKey?: boolean;
7378

0 commit comments

Comments
 (0)