UNPKG

@dotenvx/dotenvx-radar

Version:
99 lines (79 loc) 2.3 kB
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