mirror of
https://github.com/lancedikson/bowser
synced 2024-10-27 20:34:22 +00:00
Merge pull request #277 from alexandercerutti/master
Added typings for v2
This commit is contained in:
commit
5a3b5090ee
@ -4,5 +4,5 @@ node_js:
|
|||||||
- "8.4.0"
|
- "8.4.0"
|
||||||
script:
|
script:
|
||||||
- npm run lint
|
- npm run lint
|
||||||
- npm build
|
- npm run build
|
||||||
- npm test
|
- npm test
|
||||||
|
10
README.md
10
README.md
@ -20,14 +20,15 @@ The upcoming 2.0 version has drastically changed API. All available methods can
|
|||||||
|
|
||||||
# Use cases
|
# Use cases
|
||||||
|
|
||||||
First of all, require the library:
|
First of all, require the library. This is a UMD Module, so it will work for AMD, Typescript and CommonJS module systems.
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
const bowser = require('bowser');
|
const Bowser = require("bowser"); // CommonJS
|
||||||
|
|
||||||
|
import * as Bowser from "bowser" // Typescript
|
||||||
```
|
```
|
||||||
|
|
||||||
By default, `require('bowser')` requires the *ES5 version of files*, which
|
By default, the exported version is the *ES5 transpiled version*, which **do not** include any polyfills.
|
||||||
**do not** include any polyfills.
|
|
||||||
|
|
||||||
In case you don't use your own `babel-polyfill` you may need to have pre-built bundle with all needed polyfills.
|
In case you don't use your own `babel-polyfill` you may need to have pre-built bundle with all needed polyfills.
|
||||||
So, for you it's suitable to require bowser like this: `require('bowser/bundled')`.
|
So, for you it's suitable to require bowser like this: `require('bowser/bundled')`.
|
||||||
@ -63,6 +64,7 @@ or
|
|||||||
const browser = bowser.getParser(window.navigator.userAgent);
|
const browser = bowser.getParser(window.navigator.userAgent);
|
||||||
impression.userTechData = browser.parse();
|
impression.userTechData = browser.parse();
|
||||||
console.log(impression.userTechData);
|
console.log(impression.userTechData);
|
||||||
|
|
||||||
// outputs
|
// outputs
|
||||||
{
|
{
|
||||||
browser: {
|
browser: {
|
||||||
|
224
index.d.ts
vendored
Normal file
224
index.d.ts
vendored
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
// Type definitions for Bowser v2
|
||||||
|
// Project: https://github.com/lancedikson/bowser
|
||||||
|
// Definitions by: Alexander P. Cerutti <https://github.com/alexandercerutti>,
|
||||||
|
|
||||||
|
export = Bowser;
|
||||||
|
export as namespace Bowser;
|
||||||
|
|
||||||
|
declare namespace Bowser {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a Parser instance
|
||||||
|
* @param {string} UA - User agent string
|
||||||
|
* @param {boolean} skipParsing
|
||||||
|
*/
|
||||||
|
|
||||||
|
function getParser(UA: string, skipParsing?: boolean): Parser.Parser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a Parser instance and runs Parser.getResult immediately
|
||||||
|
* @param UA - User agent string
|
||||||
|
* @returns {Parser.ParsedResult}
|
||||||
|
*/
|
||||||
|
|
||||||
|
function parse(UA: string): Parser.ParsedResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
declare namespace Parser {
|
||||||
|
class Parser {
|
||||||
|
constructor(UA: string, skipParsing?: boolean);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parsed browser object
|
||||||
|
* @return {BrowserDetails} Browser's details
|
||||||
|
*/
|
||||||
|
|
||||||
|
getBrowser(): BrowserDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get browser's name
|
||||||
|
* @return {String} Browser's name or an empty string
|
||||||
|
*/
|
||||||
|
|
||||||
|
getBrowserName(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get browser's version
|
||||||
|
* @return {String} version of browser
|
||||||
|
*/
|
||||||
|
|
||||||
|
getBrowserVersion(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get OS
|
||||||
|
* @return {OSDetails} - OS Details
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* this.getOS(); // {
|
||||||
|
* // name: 'macOS',
|
||||||
|
* // version: '10.11.12',
|
||||||
|
* // }
|
||||||
|
*/
|
||||||
|
|
||||||
|
getOS(): OSDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get OS name
|
||||||
|
* @param {Boolean} [toLowerCase] return lower-cased value
|
||||||
|
* @return {String} name of the OS — macOS, Windows, Linux, etc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
getOSName(toLowerCase?: boolean): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get OS version
|
||||||
|
* @return {String} full version with dots ('10.11.12', '5.6', etc)
|
||||||
|
*/
|
||||||
|
|
||||||
|
getOSVersion(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parsed platform
|
||||||
|
* @returns {PlatformDetails}
|
||||||
|
*/
|
||||||
|
|
||||||
|
getPlatform(): PlatformDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get platform name
|
||||||
|
* @param {boolean} toLowerCase
|
||||||
|
*/
|
||||||
|
|
||||||
|
getPlatformType(toLowerCase?: boolean): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parsed engine
|
||||||
|
* @returns {EngineDetails}
|
||||||
|
*/
|
||||||
|
|
||||||
|
getEngine(): EngineDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parsed result
|
||||||
|
* @return {ParsedResult}
|
||||||
|
*/
|
||||||
|
|
||||||
|
getResult(): ParsedResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get UserAgent string of current Parser instance
|
||||||
|
* @return {String} User-Agent String of the current <Parser> object
|
||||||
|
*/
|
||||||
|
|
||||||
|
getUA(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is anything? Check if the browser is called "anything",
|
||||||
|
* the OS called "anything" or the platform called "anything"
|
||||||
|
* @param {String} anything
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
|
||||||
|
is(anything: any): boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse full information about the browser
|
||||||
|
*/
|
||||||
|
|
||||||
|
parse(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parsed browser object
|
||||||
|
* @returns {BrowserDetails}
|
||||||
|
*/
|
||||||
|
|
||||||
|
parseBrowser(): BrowserDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parsed engine
|
||||||
|
* @returns {EngineDetails}
|
||||||
|
*/
|
||||||
|
|
||||||
|
parseEngine(): EngineDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse OS and save it to this.parsedResult.os
|
||||||
|
* @returns {OSDetails}
|
||||||
|
*/
|
||||||
|
|
||||||
|
parseOS(): OSDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get parsed platform
|
||||||
|
* @returns {PlatformDetails}
|
||||||
|
*/
|
||||||
|
|
||||||
|
parsePlatform(): PlatformDetails;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if parsed browser matches certain conditions
|
||||||
|
*
|
||||||
|
* @param {checkTree} checkTree It's one or two layered object,
|
||||||
|
* which can include a platform or an OS on the first layer
|
||||||
|
* and should have browsers specs on the bottom-laying layer
|
||||||
|
*
|
||||||
|
* @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not.
|
||||||
|
* Returns `undefined` when the browser is no described in the checkTree object.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* const browser = new Bowser(UA);
|
||||||
|
* if (browser.check({chrome: '>118.01.1322' }))
|
||||||
|
* // or with os
|
||||||
|
* if (browser.check({windows: { chrome: '>118.01.1322' } }))
|
||||||
|
* // or with platforms
|
||||||
|
* if (browser.check({desktop: { chrome: '>118.01.1322' } }))
|
||||||
|
*/
|
||||||
|
|
||||||
|
satisfies(checkTree: checkTree): boolean | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if any of the given values satifies `.is(anything)`
|
||||||
|
* @param {string[]} anythings
|
||||||
|
* @returns {boolean} true if at least one condition is satisfied, false otherwise.
|
||||||
|
*/
|
||||||
|
|
||||||
|
some(anythings: string[]): boolean | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test a UA string for a regexp
|
||||||
|
* @param regex
|
||||||
|
* @returns {boolean} true if the regex matches the UA, false otherwise.
|
||||||
|
*/
|
||||||
|
|
||||||
|
test(regex: RegExp): boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParsedResult {
|
||||||
|
browser: BrowserDetails;
|
||||||
|
os: OSDetails;
|
||||||
|
platform: PlatformDetails;
|
||||||
|
engine: EngineDetails;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Details {
|
||||||
|
name?: string;
|
||||||
|
version?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OSDetails extends Details {
|
||||||
|
versionName?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PlatformDetails {
|
||||||
|
type?: string;
|
||||||
|
vendor?: string;
|
||||||
|
model?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
type BrowserDetails = Details;
|
||||||
|
type EngineDetails = Details;
|
||||||
|
|
||||||
|
interface checkTree {
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
}
|
@ -64,7 +64,7 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "webpack --config webpack.config.js",
|
"build": "webpack --config webpack.config.js",
|
||||||
"prepublish": "npm run build",
|
"prepublishOnly": "npm run build",
|
||||||
"lint": "eslint ./src",
|
"lint": "eslint ./src",
|
||||||
"testem": "testem",
|
"testem": "testem",
|
||||||
"test": "nyc --reporter=html --reporter=text ava",
|
"test": "nyc --reporter=html --reporter=text ava",
|
||||||
|
Loading…
Reference in New Issue
Block a user