UNPKG

2.55 kBJavaScriptView Raw
1var fs = require('graceful-fs')
2var path = require('path')
3var _ = require('lodash')
4var useragent = require('useragent')
5var Promise = require('bluebird')
6
7exports.browserFullNameToShort = function (fullName) {
8 var agent = useragent.parse(fullName)
9 var isKnown = agent.family !== 'Other' && agent.os.family !== 'Other'
10 return isKnown ? agent.toAgent() + ' (' + agent.os + ')' : fullName
11}
12
13exports.isDefined = function (value) {
14 return !_.isUndefined(value)
15}
16
17exports.isFunction = _.isFunction
18exports.isString = _.isString
19exports.isObject = _.isObject
20exports.isArray = _.isArray
21
22var ABS_URL = /^https?:\/\//
23exports.isUrlAbsolute = function (url) {
24 return ABS_URL.test(url)
25}
26
27exports.camelToSnake = function (camelCase) {
28 return camelCase.replace(/[A-Z]/g, function (match, pos) {
29 return (pos > 0 ? '_' : '') + match.toLowerCase()
30 })
31}
32
33exports.ucFirst = function (word) {
34 return word.charAt(0).toUpperCase() + word.substr(1)
35}
36
37exports.dashToCamel = function (dash) {
38 var words = dash.split('-')
39 return words.shift() + words.map(exports.ucFirst).join('')
40}
41
42exports.arrayRemove = function (collection, item) {
43 var idx = collection.indexOf(item)
44
45 if (idx !== -1) {
46 collection.splice(idx, 1)
47 return true
48 }
49
50 return false
51}
52
53exports.merge = function () {
54 var args = Array.prototype.slice.call(arguments, 0)
55 args.unshift({})
56 return _.merge.apply({}, args)
57}
58
59exports.formatTimeInterval = function (time) {
60 var mins = Math.floor(time / 60000)
61 var secs = (time - mins * 60000) / 1000
62 var str = secs + (secs === 1 ? ' sec' : ' secs')
63
64 if (mins) {
65 str = mins + (mins === 1 ? ' min ' : ' mins ') + str
66 }
67
68 return str
69}
70
71var replaceWinPath = function (path) {
72 return exports.isDefined(path) ? path.replace(/\\/g, '/') : path
73}
74
75exports.normalizeWinPath = process.platform === 'win32' ? replaceWinPath : _.identity
76
77exports.mkdirIfNotExists = function mkdir (directory, done) {
78 // TODO(vojta): handle if it's a file
79 /* eslint-disable handle-callback-err */
80 fs.stat(directory, function (err, stat) {
81 if (stat && stat.isDirectory()) {
82 done()
83 } else {
84 mkdir(path.dirname(directory), function () {
85 fs.mkdir(directory, done)
86 })
87 }
88 })
89 /* eslint-enable handle-callback-err */
90}
91
92exports.defer = function () {
93 var resolve
94 var reject
95 var promise = new Promise(function () {
96 resolve = arguments[0]
97 reject = arguments[1]
98 })
99
100 return {
101 resolve: resolve,
102 reject: reject,
103 promise: promise
104 }
105}
106
107// export lodash
108exports._ = _