@dotenvx/dotenvx-radar
Version:
Dotenvx Radar
99 lines (79 loc) • 2.3 kB
JavaScript
const Conf = require('conf')
const dotenv = require('dotenv')
const jsonToEnv = require('./../lib/helpers/jsonToEnv')
class Session {
constructor () {
this.store = new Conf({
cwd: process.env.DOTENVX_CONFIG || undefined,
projectName: 'dotenvx',
configName: '.env',
projectSuffix: '',
fileExtension: '',
serialize: function (json) {
return jsonToEnv(json)
},
// Convert .env format to an object
deserialize: function (env) {
return dotenv.parse(env)
}
})
}
status () {
// if logged in
if (this.username() && this.token()) {
return 'on'
}
return 'off'
}
//
// Get
//
hostname () {
return this.store.get('DOTENVX_RADAR_HOSTNAME') || 'https://radar.dotenvx.com'
}
username () {
return this.store.get('DOTENVX_RADAR_USERNAME') || undefined
}
token () {
return this.store.get('DOTENVX_RADAR_TOKEN') || undefined
}
//
// Set/Delete
//
login (hostname, id, username, accessToken) {
if (!hostname) {
throw new Error('DOTENVX_RADAR_HOSTNAME not set. Run [dotenvx-radar login]')
}
if (!id) {
throw new Error('DOTENVX_RADAR_USER not set. Run [dotenvx-radar login]')
}
if (!username) {
throw new Error('DOTENVX_RADAR_USERNAME not set. Run [dotenvx-radar login]')
}
if (!accessToken) {
throw new Error('DOTENVX_RADAR_TOKEN not set. Run [dotenvx-radar login]')
}
this.store.set('DOTENVX_RADAR_USER', id)
this.store.set('DOTENVX_RADAR_USERNAME', username)
this.store.set('DOTENVX_RADAR_TOKEN', accessToken)
this.store.set('DOTENVX_RADAR_HOSTNAME', hostname)
return accessToken
}
logout (hostname, id, accessToken) {
if (!hostname) {
throw new Error('DOTENVX_RADAR_HOSTNAME not set. Run [dotenvx-radar login]')
}
if (!id) {
throw new Error('DOTENVX_RADAR_USER not set. Run [dotenvx-radar login]')
}
if (!accessToken) {
throw new Error('DOTENVX_RADAR_TOKEN not set. Run [dotenvx-radar login]')
}
this.store.delete('DOTENVX_RADAR_USER')
this.store.delete('DOTENVX_RADAR_USERNAME')
this.store.delete('DOTENVX_RADAR_TOKEN')
this.store.delete('DOTENVX_RADAR_HOSTNAME')
return true
}
}
module.exports = Session