Skip to content

Commit 8022857

Browse files
committed
Fix: TypeError when Client Hints headers represented as array (credit: @arpitjain099)
1 parent eb30609 commit 8022857

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

‎src/main/ua-parser.js‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1442,7 +1442,8 @@
14421442
var normalized = {};
14431443
for (var header in headers) {
14441444
if (headers.hasOwnProperty(header)) {
1445-
normalized[String(header).toLowerCase()] = headers[header];
1445+
var value = headers[header];
1446+
normalized[String(header).toLowerCase()] = Array.isArray(value) ? value.join(', ') : value;
14461447
}
14471448
}
14481449
headers = normalized;

‎test/unit/main.js‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,23 @@ describe('Read user-agent data from req.headers', function () {
421421
assert.strictEqual(engine.name, "EdgeHTML");
422422
});
423423

424+
it('Client hints headers represented as an array', function () {
425+
const req = {
426+
headers : {
427+
'sec-ch-ua' : [
428+
'"Chromium";v="126"',
429+
'"Google Chrome";v="126"',
430+
'"Not:A-Brand";v="99"',
431+
'"Custom Browser";v="99"'
432+
]
433+
}
434+
};
435+
436+
const { browser } = UAParser(req.headers).withClientHints();
437+
assert.strictEqual(browser.name, 'Custom Browser');
438+
assert.strictEqual(browser.version, '99');
439+
});
440+
424441
// Headers supported in node 18+ - https://developer.mozilla.org/en-US/docs/Web/API/Headers
425442
if (typeof Headers !== 'undefined') {
426443
it('Fetch API\'s Header can be passed directly into headers', () => {

0 commit comments

Comments
 (0)