import { expectType } from 'tsd'; import { UAParser, IResult, IBrowser, ICPU, IEngine, IDevice, IOS } from "../../src/main/ua-parser"; import { isAppleSilicon, isChromeFamily } from "../../src/helpers/ua-parser-helpers"; const uastring = 'Mozilla/5.0 (X11; MyCustomOS; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'; const extensions = { os : [ [/(mycustomos)/], [UAParser.OS.NAME, [UAParser.OS.VERSION, '10']] ] }; const headers = { 'sec-ch-ua-mobile' : '?1' }; expectType(UAParser()); expectType(UAParser(uastring)); expectType(UAParser(uastring, extensions)); expectType(UAParser(uastring, headers)); expectType(UAParser(extensions, headers)); expectType(UAParser(extensions)); expectType(UAParser(headers)); expectType(new UAParser()); const parser = new UAParser(uastring); const browser = parser.getBrowser(); expectType(browser); expectType(browser.name); expectType(browser.version); expectType(browser.major); expectType<'crawler' | 'cli' | 'email' | 'fetcher' | 'inapp' | 'mediaplayer' | 'library' | undefined>(browser.type); expectType(browser.is('')); expectType(browser.toString()); expectType>(browser.withClientHints()); expectType>((browser.withClientHints()).withFeatureCheck()); expectType(((browser.withClientHints()).withFeatureCheck()).is('')); expectType(parser.getCPU()); expectType(parser.getDevice()); expectType(parser.getEngine()); expectType(parser.getOS()); expectType(parser.getResult()); expectType(parser.getUA()); expectType(parser.setUA(uastring)); const result = parser.getResult(); expectType(isAppleSilicon(result)); expectType(isChromeFamily(result));