OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-booking / node_modules / bare-env / index.js

51 lines · javascript ref:
const os = require('bare-os')

module.exports = new Proxy(Object.create(null), {
  ownKeys (target) {
    return os.getEnvKeys()
  },

  get (target, property) {
    if (typeof property !== 'string') return

    return os.getEnv(property)
  },

  has (target, property) {
    if (typeof property !== 'string') return false

    return os.hasEnv(property)
  },

  set (target, property, value) {
    if (typeof property !== 'string') return

    const type = typeof value

    if (type !== 'string' && type !== 'number' && type !== 'boolean') {
      throw new Error('Environment variable must be of type string, number, or boolean')
    }

    value = String(value)

    os.setEnv(property, value)

    return true
  },

  deleteProperty (target, property) {
    if (typeof property !== 'string') return

    os.unsetEnv(property)
  },

  getOwnPropertyDescriptor (target, property) {
    return {
      value: this.get(target, property),
      enumerable: true,
      configurable: true,
      writable: true
    }
  }
})