• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 'use strict'
2 var path = require('path')
3 
4 module.exports = moduleName
5 module.exports.test = {}
6 
7 module.exports.test.pathToPackageName = pathToPackageName
8 function pathToPackageName (dir) {
9   if (dir == null) return ''
10   if (dir === '') return ''
11   var name = path.relative(path.resolve(dir, '..'), dir)
12   var scoped = path.relative(path.resolve(dir, '../..'), dir)
13   if (scoped[0] === '@') return scoped.replace(/\\/g, '/')
14   return name.trim()
15 }
16 
17 module.exports.test.isNotEmpty = isNotEmpty
18 function isNotEmpty (str) {
19   return str != null && str !== ''
20 }
21 
22 var unknown = 0
23 function moduleName (tree) {
24   if (tree.name) { return tree.name }
25   var pkg = tree.package || tree
26   if (isNotEmpty(pkg.name) && typeof pkg.name === 'string') return pkg.name.trim()
27   var pkgName = pathToPackageName(tree.path)
28   if (pkgName !== '') return pkgName
29   if (tree._invalidName != null) return tree._invalidName
30   tree._invalidName = '!invalid#' + (++unknown)
31   return tree._invalidName
32 }
33