The project runs Git-flow, where the `master` branch is the development one and `production` is the production one.
We're always open to pull requests or code reviews. Everyone can become a permanent contributor. Just ping @lancedikson in the issues or on Twitter ❤️
In a nutshell, if you're about to propose a new feature with adding some totally new functionality to `bowser`, it's better to branch from `master` and make a PR pointing back to `master` as well.
## Branches
If it's a small hotfix, fix a typo in the docs or you've added support for a new browser/OS/platform/etc, then it's better to branch from `production` and make a PR pointing back to `production`.
Following these simple rules will help to maintain the repo a lot! Thanks ❤️
The project runs Git-flow, where the `master` branch is for development and `production` is for production.
In a nutshell, if you are proposing a new feature that adds totally new functionality to `bowser`, it's better to branch from `master` and make a PR pointing back to `master` as well.
If it's a small hot-fix, an improvement to the docs, or added support for a new browser/OS/platform/etc, then it's better to branch from `production` and make a PR pointing back to `production`.
Following these simple rules will really help maintain the repo! Thanks ❤️
## Adding Tests
See the list in `test/acceptance/useragentstrings.yml` with example user agents and their expected `bowser` object.
Whenever you add support for new browsers or notice a bug / mismatch, please update the list and
check if all tests are still passing.
## Testing
If you'd like to contribute a change to `bowser`, modify the files in `src/`, and run the following (you'll need `node` + `npm` installed):
@ -13,19 +13,23 @@ A browser detector. Because sometimes, there is no other way, and not even good
The library is made to help to detect what browser your user has and gives you a convenient API to filter the users somehow depending on their browsers.
The library is made to help to detect what browser your user has and gives you a convenient API to filter the users somehow depending on their browsers.
_Please, note that this is an alpha version. Check out the [1.x](https://github.com/lancedikson/bowser/tree/v1.x) branch for a stable version._
**Changes of version 2.0**
**Changes of version 2.0**
The upcoming 2.0 version has drastically changed API. All available methods can be found in the `docs` folder from now on and on a webpage soon.
The version 2.0 has drastically changed API. All available methods can be found in the `docs` folder from now on and on a webpage soon.
_For legacy code, check out the [1.x](https://github.com/lancedikson/bowser/tree/v1.x) branch and install it through `npm install bowser@1.9.4`._
# Use cases
# Use cases
First of all, require the library. This is a UMD Module, so it will work for AMD, Typescript and CommonJS module systems.
First of all, require the library. This is a UMD Module, so it will work for AMD, TypeScript, ES6, and CommonJS module systems.
```javascript
```javascript
const Bowser = require("bowser"); // CommonJS
const Bowser = require("bowser"); // CommonJS
import * as Bowser from "bowser" // Typescript
import * as Bowser from "bowser"; // TypeScript
import Bowser from "bowser"; // ES6 (and TypeScript with --esModuleInterop enabled)
```
```
By default, the exported version is the *ES5 transpiled version*, which **do not** include any polyfills.
By default, the exported version is the *ES5 transpiled version*, which **do not** include any polyfills.
@ -41,7 +45,7 @@ You may need to use the source files, so they will be available in the package a
Often we need to pick users' browser properties such as the name, the version, the rendering engine and so on. Here is an example how to do it with Bowser:
Often we need to pick users' browser properties such as the name, the version, the rendering engine and so on. Here is an example how to do it with Bowser: