mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 16:08:47 +03:00
[ua-helpers] Fix type error
This commit is contained in:
parent
05a98aceda
commit
647e115a1e
@ -1,13 +1,13 @@
|
||||
{
|
||||
"title": "User-Agent Helpers",
|
||||
"name": "@ua-parser-js/user-agent-helpers",
|
||||
"version": "0.0.1",
|
||||
"version": "0.0.2",
|
||||
"author": "Faisal Salman <f@faisalman.com>",
|
||||
"description": "A collection of utility methods for working with user-agent",
|
||||
"main": "user-agent-helpers.js",
|
||||
"module": "user-agent-helpers.mjs",
|
||||
"scripts": {
|
||||
"test": "mocha ../../test/mocha-test-helpers"
|
||||
"test": "mocha ./test/*"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -64,4 +64,14 @@ import { unfreezeUA } from '@ua-parser-js/user-agent-helpers';
|
||||
unfreezeUA()
|
||||
.then(newUA => console.log(newUA));
|
||||
// 'Mozilla/5.0 (Windows NT 11.0; ARM) AppleWebKit/537.36 (KHTML, like Gecko) New Browser/110.1.2.3 Chromium/110.1.2.3 Safari/537.36'
|
||||
|
||||
/*
|
||||
// Alternatively:
|
||||
const ua = navigator.userAgent;
|
||||
const ch = await navigator.userAgentData.getHighEntropyValues();
|
||||
const newUA = await unfreezeUA(ua, ch);
|
||||
|
||||
// Server environment:
|
||||
const newUA = await unfreezeUA(req.headers);
|
||||
*/
|
||||
```
|
@ -1,4 +1,4 @@
|
||||
const { isFrozenUA, unfreezeUA } = require('@ua-parser-js/user-agent-helpers');
|
||||
const { isFrozenUA, unfreezeUA } = require('../user-agent-helpers');
|
||||
const { UAClientHints } = require('@ua-parser-js/ua-client-hints');
|
||||
const assert = require('assert');
|
||||
|
||||
@ -35,7 +35,8 @@ describe('isFrozenUA()', () => {
|
||||
});
|
||||
});
|
||||
|
||||
const headers = {
|
||||
const req = {
|
||||
headers : {
|
||||
'sec-ch-ua' : '"Chromium";v="93", "Google Chrome";v="93", " Not;A Brand";v="99"',
|
||||
'sec-ch-ua-full-version-list' : '"Chromium";v="93.0.1.2", "Google Chrome";v="93.0.1.2", " Not;A Brand";v="99.0.1.2"',
|
||||
'sec-ch-ua-arch' : '"arm"',
|
||||
@ -45,58 +46,11 @@ const headers = {
|
||||
'sec-ch-ua-platform' : '"Linux"',
|
||||
'sec-ch-ua-platform-version' : '"13"',
|
||||
'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
|
||||
};
|
||||
}};
|
||||
|
||||
describe('unfreezeUA()', () => {
|
||||
it('returns an unfreezed user-agent using real data from client hints HTTP headers (sec-ch-ua)', async () => {
|
||||
const unfreezed = await unfreezeUA(headers);
|
||||
const unfreezed = await unfreezeUA(req.headers);
|
||||
assert.strictEqual(unfreezed, 'Mozilla/5.0 (X11; Linux arm64) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/93.0.1.2 Chrome/93.0.1.2 Safari/537.36');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Parse CH Headers', () => {
|
||||
it('parse client hints HTTP headers (sec-ch-ua) into a client hints-like JavaScript object', () => {
|
||||
assert.deepEqual(new UAClientHints().setUAData(headers).getUAData(['architecture', 'bitness']), {
|
||||
"architecture": "arm",
|
||||
"bitness": "64"
|
||||
});
|
||||
assert.deepEqual(new UAClientHints().setUAData(headers).getUAData(), {
|
||||
"architecture": "arm",
|
||||
"bitness": "64",
|
||||
"brands": [
|
||||
{
|
||||
"brand": "Chromium",
|
||||
"version": "93"
|
||||
},
|
||||
{
|
||||
"brand": "Google Chrome",
|
||||
"version": "93"
|
||||
},
|
||||
{
|
||||
"brand": "Not;A Brand",
|
||||
"version": "99"
|
||||
}
|
||||
],
|
||||
"fullVersionList": [
|
||||
{
|
||||
"brand": "Chromium",
|
||||
"version": "93.0.1.2"
|
||||
},
|
||||
{
|
||||
"brand": "Google Chrome",
|
||||
"version": "93.0.1.2"
|
||||
},
|
||||
{
|
||||
"brand": "Not;A Brand",
|
||||
"version": "99.0.1.2"
|
||||
}
|
||||
],
|
||||
"formFactor": null,
|
||||
"mobile": true,
|
||||
"model": "Pixel 99",
|
||||
"platform": "Linux",
|
||||
"platformVersion": "13",
|
||||
"wow64": null
|
||||
});
|
||||
});
|
||||
});
|
35
src/user-agent-helpers/user-agent-helpers.d.ts
vendored
35
src/user-agent-helpers/user-agent-helpers.d.ts
vendored
@ -1,4 +1,35 @@
|
||||
export type UABrowser = {
|
||||
brand: string | null,
|
||||
version: string | null
|
||||
};
|
||||
|
||||
export type UADataType = boolean | string | Array<UABrowser> | null;
|
||||
export type UADataField =
|
||||
'brands' |
|
||||
'mobile' |
|
||||
'platform' |
|
||||
'architecture' |
|
||||
'bitness' |
|
||||
'formFactor' |
|
||||
'fullVersionList' |
|
||||
'model' |
|
||||
'platformVersion' |
|
||||
'wow64';
|
||||
|
||||
export type HeaderType = 'sf-boolean' | 'sf-string' | 'sf-list';
|
||||
export type HeaderField =
|
||||
'sec-ch-ua-arch' |
|
||||
'sec-ch-ua-bitness' |
|
||||
'sec-ch-ua' |
|
||||
'sec-ch-ua-form-factor' |
|
||||
'sec-ch-ua-full-version-list' |
|
||||
'sec-ch-ua-mobile' |
|
||||
'sec-ch-ua-model' |
|
||||
'sec-ch-ua-platform' |
|
||||
'sec-ch-ua-platform-version' |
|
||||
'sec-ch-ua-wow64';
|
||||
|
||||
export function isFrozenUA(ua: string): boolean;
|
||||
export function unfreezeUA(): Promise<string>;
|
||||
export function unfreezeUA(ua: string, ch: ClientHintsJSHighEntropy): Promise<string>;
|
||||
export function unfreezeUA(headers: ClientHintsHTTPHeaders): Promise<string>;
|
||||
export function unfreezeUA(ua: string, ch: Record<UADataField, UADataType>): Promise<string>;
|
||||
export function unfreezeUA(headers: Record<HeaderField, HeaderType>): Promise<string>;
|
Loading…
x
Reference in New Issue
Block a user