'use strict' const os = require('os') const passwdUser = require('passwd-user') const path = require('path') module.exports = function (aPath) { if (!aPath.startsWith('~')) { return aPath } const sepIndex = aPath.indexOf(path.sep) const user = (sepIndex < 0) ? aPath.substring(1) : aPath.substring(1, sepIndex) const rest = (sepIndex < 0) ? '' : aPath.substring(sepIndex) const home = (user === '') ? os.homedir() : (() => { const passwd = passwdUser.sync(user) if (passwd === undefined) { throw new Error(`Failed to expand the tilde in ${aPath} - user "${user}" does not exist`) } return passwd.homedir })() return `${home}${rest}` }