├── .eslintrc.json
├── .gitignore
├── LICENSE
├── README.md
├── detect-browser.js
├── index.html
├── package-lock.json
└── package.json
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "google",
3 | "env": {
4 | "browser": true
5 | },
6 | "rules": {
7 | "no-unused-vars": "error",
8 | "no-undef": "error",
9 | "indent": [
10 | "error",
11 | "tab"
12 | ],
13 | "require-jsdoc": "off",
14 | "no-var": "off",
15 | "no-tabs": "off",
16 | "space-before-function-paren": "off",
17 | "new-cap": "off"
18 | }
19 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .vscode
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Ahmad Raza
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # detect-browser
2 | A JavaScript library to detect browser properties like browser name, device, OS, referrer, timezone, screen resolution and much more.
3 | # How to use
4 | Add js file in src
folder or wherever you like.
5 | Add
in html file where you want to detect browser properties.
6 | Add after adding above code.
7 |
8 | It will print browser info in console
9 |
10 | # List of properties available
11 |
12 | info.language // browser language e.g en-US
13 |
14 | info.languages // Gives Array of languages
15 |
16 | info.user_agent // Gives User Agent
17 |
18 | info.browser // Gives Browser name e.g Chrome
19 |
20 | info.device // Gives Device e.g Mobile or Desktop
21 |
22 | info.referer // Gives Referer
23 |
24 | info.os // Gives User OS e.g windows 10 64-bit
25 |
26 | info.online // Gives user online status true or false
27 |
28 | info.timezone // Gives User Timezone
29 |
30 | info.screen_resolution // Gives Screen Resolution e.g 1366 x 768
31 |
32 | info.cookie_enabled // Gives Cookie enabled status true or false
33 |
--------------------------------------------------------------------------------
/detect-browser.js:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | 'use strict';
3 | // detect-browser.js v1.0.0
4 | // Get Browser Data
5 |
6 | // MIT License
7 |
8 | // Copyright (c) 2018 Ahmad Raza
9 |
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy
11 | // of this software and associated documentation files (the "Software"), to deal
12 | // in the Software without restriction, including without limitation the rights
13 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14 | // copies of the Software, and to permit persons to whom the Software is
15 | // furnished to do so, subject to the following conditions:
16 |
17 | // The above copyright notice and this permission notice shall be included in all
18 | // copies or substantial portions of the Software.
19 |
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 | // SOFTWARE.
27 |
28 |
29 | function isMobile() {
30 | return /Mobi/.test(navigator.userAgent);
31 | }
32 |
33 | function getBrowserName() {
34 | // Opera 8.0+
35 | if ((window.opr && window.opr.addons)
36 | || window.opera
37 | || navigator.userAgent.indexOf(' OPR/') >= 0) {
38 | return 'Opera';
39 | }
40 |
41 | // Firefox 1.0+
42 | if (typeof InstallTrigger !== 'undefined') {
43 | return 'Firefox';
44 | }
45 |
46 | // Safari 3.0+ "[object HTMLElementConstructor]"
47 | if (/constructor/i.test(window.HTMLElement) || (function (p) {
48 | return p.toString() === '[object SafariRemoteNotification]';
49 | })(!window['safari'])) {
50 | return 'Safari';
51 | }
52 |
53 | // Internet Explorer 6-11
54 | if (/* @cc_on!@*/false || document.documentMode) {
55 | return 'Internet Explorer';
56 | }
57 |
58 | // Edge 20+
59 | if (!(document.documentMode) && window.StyleMedia) {
60 | return 'Microsoft Edge';
61 | }
62 |
63 | // Chrome
64 | if (window.chrome) {
65 | return 'Chrome';
66 | }
67 | }
68 |
69 | function getOSName() {
70 | var os;
71 | if (isMobile()) {
72 | if (/Windows/.test(navigator.userAgent)) {
73 | os = 'Windows';
74 | if (/Phone 8.0/.test(navigator.userAgent)) {
75 | os += ' Phone 8.0';
76 | } else if (/Phone 10.0/.test(navigator.userAgent)) {
77 | os += ' Phone 10.0';
78 | }
79 | } else if (/Android/.test(navigator.userAgent)) {
80 | function androidVersion() {
81 | if (/Android/.test(navigator.appVersion)) {
82 | var v = (navigator.appVersion).match(/Android (\d+).(\d+)/);
83 | return v;
84 | }
85 | }
86 |
87 | var ver = androidVersion();
88 | os = ver[0];
89 | } else if (/iPhone;/.test(navigator.userAgent)) {
90 | function iOSversion() {
91 | if (/iP(hone|od|ad)/.test(navigator.appVersion)) {
92 | var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
93 | return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
94 | }
95 | }
96 |
97 | var ver = iOSversion();
98 | os = 'iOS ' + ver[0] + '.' + ver[1] + '.' + ver[2];
99 | } else if (/iPad;/.test(navigator.userAgent)) {
100 | function iOSversion() {
101 | if (/iP(hone|od|ad)/.test(navigator.appVersion)) {
102 | var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
103 | return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
104 | }
105 | }
106 |
107 | var ver = iOSversion();
108 | os = 'iOS ' + ver[0] + '.' + ver[1] + '.' + ver[2];
109 | } else if (/BBd*/.test(navigator.userAgent)) {
110 | os = 'BlackBerry';
111 | }
112 | } else {
113 | if (/Windows/.test(navigator.userAgent)) {
114 | os = 'Windows';
115 | if (/5.1;/.test(navigator.userAgent)) {
116 | os += ' XP';
117 | } else if (/6.0;/.test(navigator.userAgent)) {
118 | os += ' Vista';
119 | } else if (/6.1;/.test(navigator.userAgent)) {
120 | os += ' 7';
121 | } else if (/6.2/.test(navigator.userAgent)) {
122 | os += ' 8';
123 | } else if (/10.0;/.test(navigator.userAgent)) {
124 | os += ' 10';
125 | }
126 |
127 | if (/64/.test(navigator.userAgent)) {
128 | os += ' 64-bit';
129 | } else {
130 | os += ' 32-bit';
131 | }
132 | } else if (/Macintosh/.test(navigator.userAgent)) {
133 | os = 'Macintosh';
134 | if (/OS X/.test(navigator.userAgent)) {
135 | os += ' OS X';
136 | }
137 | }
138 | }
139 |
140 | return os;
141 | }
142 |
143 | function getBrowser() {
144 | return {
145 | os: getOSName(),
146 | browser: getBrowserName(),
147 | language: navigator.language,
148 | languages: navigator.languages,
149 | user_agent: navigator.userAgent,
150 | device: isMobile() ? 'Mobile' : 'Desktop',
151 | referrer: document.referrer || 'N/A',
152 | online: navigator.onLine,
153 | timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
154 | screen_resolution: screen.width + ' x ' + screen.height,
155 | cookie_enabled: navigator.cookieEnabled,
156 | };
157 | }
158 |
159 |
160 | // var xhr = new XMLHttpRequest();
161 | // xhr.open('GET', 'http://ip-api.com/json');
162 | // xhr.onreadystatechange = function () {
163 | // if (xhr.readyState == 4) {
164 | // if (xhr.status == 200) {
165 | // var IPdata = xhr.responseText;
166 | // jsonResponse = JSON.parse(IPdata);
167 | // }
168 | // }
169 | // };
170 | // xhr.send(null);
171 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Document
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "detect-browser",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "acorn": {
8 | "version": "5.5.3",
9 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
10 | "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ=="
11 | },
12 | "acorn-jsx": {
13 | "version": "3.0.1",
14 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
15 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
16 | "requires": {
17 | "acorn": "3.3.0"
18 | },
19 | "dependencies": {
20 | "acorn": {
21 | "version": "3.3.0",
22 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
23 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
24 | }
25 | }
26 | },
27 | "ajv": {
28 | "version": "5.5.2",
29 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
30 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
31 | "requires": {
32 | "co": "4.6.0",
33 | "fast-deep-equal": "1.1.0",
34 | "fast-json-stable-stringify": "2.0.0",
35 | "json-schema-traverse": "0.3.1"
36 | }
37 | },
38 | "ajv-keywords": {
39 | "version": "2.1.1",
40 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
41 | "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I="
42 | },
43 | "ansi-escapes": {
44 | "version": "3.0.0",
45 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
46 | "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ=="
47 | },
48 | "ansi-regex": {
49 | "version": "2.1.1",
50 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
51 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
52 | },
53 | "ansi-styles": {
54 | "version": "2.2.1",
55 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
56 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
57 | },
58 | "argparse": {
59 | "version": "1.0.10",
60 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
61 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
62 | "requires": {
63 | "sprintf-js": "1.0.3"
64 | }
65 | },
66 | "array-union": {
67 | "version": "1.0.2",
68 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
69 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
70 | "requires": {
71 | "array-uniq": "1.0.3"
72 | }
73 | },
74 | "array-uniq": {
75 | "version": "1.0.3",
76 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
77 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
78 | },
79 | "arrify": {
80 | "version": "1.0.1",
81 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
82 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
83 | },
84 | "babel-code-frame": {
85 | "version": "6.26.0",
86 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
87 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
88 | "requires": {
89 | "chalk": "1.1.3",
90 | "esutils": "2.0.2",
91 | "js-tokens": "3.0.2"
92 | },
93 | "dependencies": {
94 | "chalk": {
95 | "version": "1.1.3",
96 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
97 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
98 | "requires": {
99 | "ansi-styles": "2.2.1",
100 | "escape-string-regexp": "1.0.5",
101 | "has-ansi": "2.0.0",
102 | "strip-ansi": "3.0.1",
103 | "supports-color": "2.0.0"
104 | }
105 | },
106 | "strip-ansi": {
107 | "version": "3.0.1",
108 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
109 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
110 | "requires": {
111 | "ansi-regex": "2.1.1"
112 | }
113 | }
114 | }
115 | },
116 | "balanced-match": {
117 | "version": "1.0.0",
118 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
119 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
120 | },
121 | "brace-expansion": {
122 | "version": "1.1.11",
123 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
124 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
125 | "requires": {
126 | "balanced-match": "1.0.0",
127 | "concat-map": "0.0.1"
128 | }
129 | },
130 | "caller-path": {
131 | "version": "0.1.0",
132 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
133 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
134 | "requires": {
135 | "callsites": "0.2.0"
136 | }
137 | },
138 | "callsites": {
139 | "version": "0.2.0",
140 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
141 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo="
142 | },
143 | "chalk": {
144 | "version": "2.3.2",
145 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
146 | "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
147 | "requires": {
148 | "ansi-styles": "3.2.1",
149 | "escape-string-regexp": "1.0.5",
150 | "supports-color": "5.3.0"
151 | },
152 | "dependencies": {
153 | "ansi-styles": {
154 | "version": "3.2.1",
155 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
156 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
157 | "requires": {
158 | "color-convert": "1.9.1"
159 | }
160 | },
161 | "supports-color": {
162 | "version": "5.3.0",
163 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
164 | "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
165 | "requires": {
166 | "has-flag": "3.0.0"
167 | }
168 | }
169 | }
170 | },
171 | "chardet": {
172 | "version": "0.4.2",
173 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
174 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
175 | },
176 | "circular-json": {
177 | "version": "0.3.3",
178 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
179 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A=="
180 | },
181 | "cli-cursor": {
182 | "version": "2.1.0",
183 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
184 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
185 | "requires": {
186 | "restore-cursor": "2.0.0"
187 | }
188 | },
189 | "cli-width": {
190 | "version": "2.2.0",
191 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
192 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
193 | },
194 | "co": {
195 | "version": "4.6.0",
196 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
197 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
198 | },
199 | "color-convert": {
200 | "version": "1.9.1",
201 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
202 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
203 | "requires": {
204 | "color-name": "1.1.3"
205 | }
206 | },
207 | "color-name": {
208 | "version": "1.1.3",
209 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
210 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
211 | },
212 | "concat-map": {
213 | "version": "0.0.1",
214 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
215 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
216 | },
217 | "concat-stream": {
218 | "version": "1.6.1",
219 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz",
220 | "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==",
221 | "requires": {
222 | "inherits": "2.0.3",
223 | "readable-stream": "2.3.5",
224 | "typedarray": "0.0.6"
225 | }
226 | },
227 | "core-util-is": {
228 | "version": "1.0.2",
229 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
230 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
231 | },
232 | "cross-spawn": {
233 | "version": "5.1.0",
234 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
235 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
236 | "requires": {
237 | "lru-cache": "4.1.2",
238 | "shebang-command": "1.2.0",
239 | "which": "1.3.0"
240 | }
241 | },
242 | "debug": {
243 | "version": "3.1.0",
244 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
245 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
246 | "requires": {
247 | "ms": "2.0.0"
248 | }
249 | },
250 | "deep-is": {
251 | "version": "0.1.3",
252 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
253 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
254 | },
255 | "del": {
256 | "version": "2.2.2",
257 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
258 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
259 | "requires": {
260 | "globby": "5.0.0",
261 | "is-path-cwd": "1.0.0",
262 | "is-path-in-cwd": "1.0.0",
263 | "object-assign": "4.1.1",
264 | "pify": "2.3.0",
265 | "pinkie-promise": "2.0.1",
266 | "rimraf": "2.6.2"
267 | }
268 | },
269 | "doctrine": {
270 | "version": "2.1.0",
271 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
272 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
273 | "requires": {
274 | "esutils": "2.0.2"
275 | }
276 | },
277 | "escape-string-regexp": {
278 | "version": "1.0.5",
279 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
280 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
281 | },
282 | "eslint": {
283 | "version": "4.18.2",
284 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.2.tgz",
285 | "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==",
286 | "requires": {
287 | "ajv": "5.5.2",
288 | "babel-code-frame": "6.26.0",
289 | "chalk": "2.3.2",
290 | "concat-stream": "1.6.1",
291 | "cross-spawn": "5.1.0",
292 | "debug": "3.1.0",
293 | "doctrine": "2.1.0",
294 | "eslint-scope": "3.7.1",
295 | "eslint-visitor-keys": "1.0.0",
296 | "espree": "3.5.4",
297 | "esquery": "1.0.0",
298 | "esutils": "2.0.2",
299 | "file-entry-cache": "2.0.0",
300 | "functional-red-black-tree": "1.0.1",
301 | "glob": "7.1.2",
302 | "globals": "11.3.0",
303 | "ignore": "3.3.7",
304 | "imurmurhash": "0.1.4",
305 | "inquirer": "3.3.0",
306 | "is-resolvable": "1.1.0",
307 | "js-yaml": "3.11.0",
308 | "json-stable-stringify-without-jsonify": "1.0.1",
309 | "levn": "0.3.0",
310 | "lodash": "4.17.5",
311 | "minimatch": "3.0.4",
312 | "mkdirp": "0.5.1",
313 | "natural-compare": "1.4.0",
314 | "optionator": "0.8.2",
315 | "path-is-inside": "1.0.2",
316 | "pluralize": "7.0.0",
317 | "progress": "2.0.0",
318 | "require-uncached": "1.0.3",
319 | "semver": "5.5.0",
320 | "strip-ansi": "4.0.0",
321 | "strip-json-comments": "2.0.1",
322 | "table": "4.0.2",
323 | "text-table": "0.2.0"
324 | }
325 | },
326 | "eslint-config-google": {
327 | "version": "0.9.1",
328 | "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.9.1.tgz",
329 | "integrity": "sha512-5A83D+lH0PA81QMESKbLJd/a3ic8tPZtwUmqNrxMRo54nfFaUvtt89q/+icQ+fd66c2xQHn0KyFkzJDoAUfpZA==",
330 | "dev": true
331 | },
332 | "eslint-scope": {
333 | "version": "3.7.1",
334 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
335 | "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
336 | "requires": {
337 | "esrecurse": "4.2.1",
338 | "estraverse": "4.2.0"
339 | }
340 | },
341 | "eslint-visitor-keys": {
342 | "version": "1.0.0",
343 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
344 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ=="
345 | },
346 | "espree": {
347 | "version": "3.5.4",
348 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
349 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
350 | "requires": {
351 | "acorn": "5.5.3",
352 | "acorn-jsx": "3.0.1"
353 | }
354 | },
355 | "esprima": {
356 | "version": "4.0.0",
357 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
358 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
359 | },
360 | "esquery": {
361 | "version": "1.0.0",
362 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
363 | "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
364 | "requires": {
365 | "estraverse": "4.2.0"
366 | }
367 | },
368 | "esrecurse": {
369 | "version": "4.2.1",
370 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
371 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
372 | "requires": {
373 | "estraverse": "4.2.0"
374 | }
375 | },
376 | "estraverse": {
377 | "version": "4.2.0",
378 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
379 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
380 | },
381 | "esutils": {
382 | "version": "2.0.2",
383 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
384 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
385 | },
386 | "external-editor": {
387 | "version": "2.1.0",
388 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz",
389 | "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==",
390 | "requires": {
391 | "chardet": "0.4.2",
392 | "iconv-lite": "0.4.19",
393 | "tmp": "0.0.33"
394 | }
395 | },
396 | "fast-deep-equal": {
397 | "version": "1.1.0",
398 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
399 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
400 | },
401 | "fast-json-stable-stringify": {
402 | "version": "2.0.0",
403 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
404 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
405 | },
406 | "fast-levenshtein": {
407 | "version": "2.0.6",
408 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
409 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
410 | },
411 | "figures": {
412 | "version": "2.0.0",
413 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
414 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
415 | "requires": {
416 | "escape-string-regexp": "1.0.5"
417 | }
418 | },
419 | "file-entry-cache": {
420 | "version": "2.0.0",
421 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
422 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
423 | "requires": {
424 | "flat-cache": "1.3.0",
425 | "object-assign": "4.1.1"
426 | }
427 | },
428 | "flat-cache": {
429 | "version": "1.3.0",
430 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
431 | "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
432 | "requires": {
433 | "circular-json": "0.3.3",
434 | "del": "2.2.2",
435 | "graceful-fs": "4.1.11",
436 | "write": "0.2.1"
437 | }
438 | },
439 | "fs.realpath": {
440 | "version": "1.0.0",
441 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
442 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
443 | },
444 | "functional-red-black-tree": {
445 | "version": "1.0.1",
446 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
447 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
448 | },
449 | "glob": {
450 | "version": "7.1.2",
451 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
452 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
453 | "requires": {
454 | "fs.realpath": "1.0.0",
455 | "inflight": "1.0.6",
456 | "inherits": "2.0.3",
457 | "minimatch": "3.0.4",
458 | "once": "1.4.0",
459 | "path-is-absolute": "1.0.1"
460 | }
461 | },
462 | "globals": {
463 | "version": "11.3.0",
464 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz",
465 | "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw=="
466 | },
467 | "globby": {
468 | "version": "5.0.0",
469 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
470 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
471 | "requires": {
472 | "array-union": "1.0.2",
473 | "arrify": "1.0.1",
474 | "glob": "7.1.2",
475 | "object-assign": "4.1.1",
476 | "pify": "2.3.0",
477 | "pinkie-promise": "2.0.1"
478 | }
479 | },
480 | "graceful-fs": {
481 | "version": "4.1.11",
482 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
483 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
484 | },
485 | "has-ansi": {
486 | "version": "2.0.0",
487 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
488 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
489 | "requires": {
490 | "ansi-regex": "2.1.1"
491 | }
492 | },
493 | "has-flag": {
494 | "version": "3.0.0",
495 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
496 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
497 | },
498 | "iconv-lite": {
499 | "version": "0.4.19",
500 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
501 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
502 | },
503 | "ignore": {
504 | "version": "3.3.7",
505 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
506 | "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA=="
507 | },
508 | "imurmurhash": {
509 | "version": "0.1.4",
510 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
511 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
512 | },
513 | "inflight": {
514 | "version": "1.0.6",
515 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
516 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
517 | "requires": {
518 | "once": "1.4.0",
519 | "wrappy": "1.0.2"
520 | }
521 | },
522 | "inherits": {
523 | "version": "2.0.3",
524 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
525 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
526 | },
527 | "inquirer": {
528 | "version": "3.3.0",
529 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
530 | "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
531 | "requires": {
532 | "ansi-escapes": "3.0.0",
533 | "chalk": "2.3.2",
534 | "cli-cursor": "2.1.0",
535 | "cli-width": "2.2.0",
536 | "external-editor": "2.1.0",
537 | "figures": "2.0.0",
538 | "lodash": "4.17.5",
539 | "mute-stream": "0.0.7",
540 | "run-async": "2.3.0",
541 | "rx-lite": "4.0.8",
542 | "rx-lite-aggregates": "4.0.8",
543 | "string-width": "2.1.1",
544 | "strip-ansi": "4.0.0",
545 | "through": "2.3.8"
546 | }
547 | },
548 | "is-fullwidth-code-point": {
549 | "version": "2.0.0",
550 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
551 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
552 | },
553 | "is-path-cwd": {
554 | "version": "1.0.0",
555 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
556 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
557 | },
558 | "is-path-in-cwd": {
559 | "version": "1.0.0",
560 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
561 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
562 | "requires": {
563 | "is-path-inside": "1.0.1"
564 | }
565 | },
566 | "is-path-inside": {
567 | "version": "1.0.1",
568 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
569 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
570 | "requires": {
571 | "path-is-inside": "1.0.2"
572 | }
573 | },
574 | "is-promise": {
575 | "version": "2.1.0",
576 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
577 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
578 | },
579 | "is-resolvable": {
580 | "version": "1.1.0",
581 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
582 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
583 | },
584 | "isarray": {
585 | "version": "1.0.0",
586 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
587 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
588 | },
589 | "isexe": {
590 | "version": "2.0.0",
591 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
592 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
593 | },
594 | "js-tokens": {
595 | "version": "3.0.2",
596 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
597 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
598 | },
599 | "js-yaml": {
600 | "version": "3.11.0",
601 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
602 | "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
603 | "requires": {
604 | "argparse": "1.0.10",
605 | "esprima": "4.0.0"
606 | }
607 | },
608 | "json-schema-traverse": {
609 | "version": "0.3.1",
610 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
611 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
612 | },
613 | "json-stable-stringify-without-jsonify": {
614 | "version": "1.0.1",
615 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
616 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
617 | },
618 | "levn": {
619 | "version": "0.3.0",
620 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
621 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
622 | "requires": {
623 | "prelude-ls": "1.1.2",
624 | "type-check": "0.3.2"
625 | }
626 | },
627 | "lodash": {
628 | "version": "4.17.5",
629 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
630 | "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw=="
631 | },
632 | "lru-cache": {
633 | "version": "4.1.2",
634 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
635 | "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
636 | "requires": {
637 | "pseudomap": "1.0.2",
638 | "yallist": "2.1.2"
639 | }
640 | },
641 | "mimic-fn": {
642 | "version": "1.2.0",
643 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
644 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
645 | },
646 | "minimatch": {
647 | "version": "3.0.4",
648 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
649 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
650 | "requires": {
651 | "brace-expansion": "1.1.11"
652 | }
653 | },
654 | "minimist": {
655 | "version": "0.0.8",
656 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
657 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
658 | },
659 | "mkdirp": {
660 | "version": "0.5.1",
661 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
662 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
663 | "requires": {
664 | "minimist": "0.0.8"
665 | }
666 | },
667 | "ms": {
668 | "version": "2.0.0",
669 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
670 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
671 | },
672 | "mute-stream": {
673 | "version": "0.0.7",
674 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
675 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
676 | },
677 | "natural-compare": {
678 | "version": "1.4.0",
679 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
680 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
681 | },
682 | "object-assign": {
683 | "version": "4.1.1",
684 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
685 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
686 | },
687 | "once": {
688 | "version": "1.4.0",
689 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
690 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
691 | "requires": {
692 | "wrappy": "1.0.2"
693 | }
694 | },
695 | "onetime": {
696 | "version": "2.0.1",
697 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
698 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
699 | "requires": {
700 | "mimic-fn": "1.2.0"
701 | }
702 | },
703 | "optionator": {
704 | "version": "0.8.2",
705 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
706 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
707 | "requires": {
708 | "deep-is": "0.1.3",
709 | "fast-levenshtein": "2.0.6",
710 | "levn": "0.3.0",
711 | "prelude-ls": "1.1.2",
712 | "type-check": "0.3.2",
713 | "wordwrap": "1.0.0"
714 | }
715 | },
716 | "os-tmpdir": {
717 | "version": "1.0.2",
718 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
719 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
720 | },
721 | "path-is-absolute": {
722 | "version": "1.0.1",
723 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
724 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
725 | },
726 | "path-is-inside": {
727 | "version": "1.0.2",
728 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
729 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
730 | },
731 | "pify": {
732 | "version": "2.3.0",
733 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
734 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
735 | },
736 | "pinkie": {
737 | "version": "2.0.4",
738 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
739 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
740 | },
741 | "pinkie-promise": {
742 | "version": "2.0.1",
743 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
744 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
745 | "requires": {
746 | "pinkie": "2.0.4"
747 | }
748 | },
749 | "pluralize": {
750 | "version": "7.0.0",
751 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
752 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow=="
753 | },
754 | "prelude-ls": {
755 | "version": "1.1.2",
756 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
757 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
758 | },
759 | "process-nextick-args": {
760 | "version": "2.0.0",
761 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
762 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
763 | },
764 | "progress": {
765 | "version": "2.0.0",
766 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
767 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8="
768 | },
769 | "pseudomap": {
770 | "version": "1.0.2",
771 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
772 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
773 | },
774 | "readable-stream": {
775 | "version": "2.3.5",
776 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz",
777 | "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==",
778 | "requires": {
779 | "core-util-is": "1.0.2",
780 | "inherits": "2.0.3",
781 | "isarray": "1.0.0",
782 | "process-nextick-args": "2.0.0",
783 | "safe-buffer": "5.1.1",
784 | "string_decoder": "1.0.3",
785 | "util-deprecate": "1.0.2"
786 | }
787 | },
788 | "require-uncached": {
789 | "version": "1.0.3",
790 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
791 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
792 | "requires": {
793 | "caller-path": "0.1.0",
794 | "resolve-from": "1.0.1"
795 | }
796 | },
797 | "resolve-from": {
798 | "version": "1.0.1",
799 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
800 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY="
801 | },
802 | "restore-cursor": {
803 | "version": "2.0.0",
804 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
805 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
806 | "requires": {
807 | "onetime": "2.0.1",
808 | "signal-exit": "3.0.2"
809 | }
810 | },
811 | "rimraf": {
812 | "version": "2.6.2",
813 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
814 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
815 | "requires": {
816 | "glob": "7.1.2"
817 | }
818 | },
819 | "run-async": {
820 | "version": "2.3.0",
821 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
822 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
823 | "requires": {
824 | "is-promise": "2.1.0"
825 | }
826 | },
827 | "rx-lite": {
828 | "version": "4.0.8",
829 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
830 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ="
831 | },
832 | "rx-lite-aggregates": {
833 | "version": "4.0.8",
834 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
835 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
836 | "requires": {
837 | "rx-lite": "4.0.8"
838 | }
839 | },
840 | "safe-buffer": {
841 | "version": "5.1.1",
842 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
843 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
844 | },
845 | "semver": {
846 | "version": "5.5.0",
847 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
848 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
849 | },
850 | "shebang-command": {
851 | "version": "1.2.0",
852 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
853 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
854 | "requires": {
855 | "shebang-regex": "1.0.0"
856 | }
857 | },
858 | "shebang-regex": {
859 | "version": "1.0.0",
860 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
861 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
862 | },
863 | "signal-exit": {
864 | "version": "3.0.2",
865 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
866 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
867 | },
868 | "slice-ansi": {
869 | "version": "1.0.0",
870 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
871 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
872 | "requires": {
873 | "is-fullwidth-code-point": "2.0.0"
874 | }
875 | },
876 | "sprintf-js": {
877 | "version": "1.0.3",
878 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
879 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
880 | },
881 | "string-width": {
882 | "version": "2.1.1",
883 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
884 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
885 | "requires": {
886 | "is-fullwidth-code-point": "2.0.0",
887 | "strip-ansi": "4.0.0"
888 | }
889 | },
890 | "string_decoder": {
891 | "version": "1.0.3",
892 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
893 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
894 | "requires": {
895 | "safe-buffer": "5.1.1"
896 | }
897 | },
898 | "strip-ansi": {
899 | "version": "4.0.0",
900 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
901 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
902 | "requires": {
903 | "ansi-regex": "3.0.0"
904 | },
905 | "dependencies": {
906 | "ansi-regex": {
907 | "version": "3.0.0",
908 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
909 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
910 | }
911 | }
912 | },
913 | "strip-json-comments": {
914 | "version": "2.0.1",
915 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
916 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
917 | },
918 | "supports-color": {
919 | "version": "2.0.0",
920 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
921 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
922 | },
923 | "table": {
924 | "version": "4.0.2",
925 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
926 | "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
927 | "requires": {
928 | "ajv": "5.5.2",
929 | "ajv-keywords": "2.1.1",
930 | "chalk": "2.3.2",
931 | "lodash": "4.17.5",
932 | "slice-ansi": "1.0.0",
933 | "string-width": "2.1.1"
934 | }
935 | },
936 | "text-table": {
937 | "version": "0.2.0",
938 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
939 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
940 | },
941 | "through": {
942 | "version": "2.3.8",
943 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
944 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
945 | },
946 | "tmp": {
947 | "version": "0.0.33",
948 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
949 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
950 | "requires": {
951 | "os-tmpdir": "1.0.2"
952 | }
953 | },
954 | "type-check": {
955 | "version": "0.3.2",
956 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
957 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
958 | "requires": {
959 | "prelude-ls": "1.1.2"
960 | }
961 | },
962 | "typedarray": {
963 | "version": "0.0.6",
964 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
965 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
966 | },
967 | "util-deprecate": {
968 | "version": "1.0.2",
969 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
970 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
971 | },
972 | "which": {
973 | "version": "1.3.0",
974 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
975 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
976 | "requires": {
977 | "isexe": "2.0.0"
978 | }
979 | },
980 | "wordwrap": {
981 | "version": "1.0.0",
982 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
983 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
984 | },
985 | "wrappy": {
986 | "version": "1.0.2",
987 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
988 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
989 | },
990 | "write": {
991 | "version": "0.2.1",
992 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
993 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
994 | "requires": {
995 | "mkdirp": "0.5.1"
996 | }
997 | },
998 | "yallist": {
999 | "version": "2.1.2",
1000 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
1001 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
1002 | }
1003 | }
1004 | }
1005 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "detect-browser",
3 | "version": "1.0.0",
4 | "description": "A JavaScript library to detect browser properties like browser name, device, OS, referrer, timezone, screen resolution and much more. \r # Documentation\r Add
at the top of your page.
\r Add
",
5 | "main": "detect-browser.js",
6 | "devDependencies": {
7 | "eslint": "^4.18.2",
8 | "eslint-config-google": "^0.9.1"
9 | },
10 | "scripts": {
11 | "test": "mocha"
12 | },
13 | "repository": {
14 | "type": "git",
15 | "url": "git+https://github.com/Ahmdrza/detect-browser.git"
16 | },
17 | "author": "Ahmdrza",
18 | "license": "MIT",
19 | "bugs": {
20 | "url": "https://github.com/Ahmdrza/detect-browser/issues"
21 | },
22 | "homepage": "https://github.com/Ahmdrza/detect-browser#readme"
23 | }
--------------------------------------------------------------------------------