• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict'
2var path = require('path')
3
4module.exports = moduleName
5module.exports.test = {}
6
7module.exports.test.pathToPackageName = pathToPackageName
8function 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
17module.exports.test.isNotEmpty = isNotEmpty
18function isNotEmpty (str) {
19  return str != null && str !== ''
20}
21
22var unknown = 0
23function 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