UNPKG

@madarche/donottrack

Version:

Module to check the value of the DNT header

52 lines (44 loc) 1.44 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = doNotTrack; exports.getBrowserDnt = getBrowserDnt; /** * Returns true if the user does not want to be tracked, false otherwise, def if unspecified. * * @param {Object} [headers] The request headers, when used on the server-side. * @param {boolean} [def=false] The value to return if doNotTrack is unspecified. * @returns {boolean} The user agrees to being tracked. */ function doNotTrack(headers) { var def = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; // Dealing with optional headers parameter if (arguments.length == 1 && typeof arguments[0] == 'boolean') { headers = undefined; def = arguments[0]; } var dnt; if (headers !== undefined) { // In Node.js headers keys are lowercased. Values are not modified // cf. https://nodejs.org/api/http.html#http_http dnt = headers.dnt; } else { dnt = getBrowserDnt(); } if (dnt) { if (dnt.charAt(0) === '1' || dnt === 'yes') { return true; } if (dnt.charAt(0) === '0' || dnt === 'no') { return false; } } return def; } function getBrowserDnt() { if (typeof window === 'undefined') { throw new TypeError('do-not-track: first parameter may only be omitted in a browser env.'); } return window.doNotTrack || window.navigator.doNotTrack || window.navigator.msDoNotTrack; }