@coderspirit/safe-env

April 28, 2024 ยท View on GitHub

NPM version TypeScript License npm downloads Known Vulnerabilities Security Score

Small library to load strongly typed values from environment variables and enforcing constraints on them.

Install instructions

Node

# With PNPM
pnpm add @coderspirit/safe-env

# With NPM
npm install @coderspirit/safe-env

# Or with Yarn:
yarn add @coderspirit/safe-env

Example

import { getSafeEnv } from '@coderspirit/safe-env'

// It validates the specified constraints at construction time
const safeEnv = getSafeEnv(process.env, {
  host: { type: 'string', default: 'localhost' },
  port: { type: 'uint16', default: 4321 },

  githubToken: { type: 'string', optional: true },
  secretToken: { type: 'string' },
})

// It leverages the powerful TypeScript's type system to tell you at
// compile time if you made a mistake.
const host = safeEnv.get('hostt') // Type Error

const host = safeEnv.get('host') // All good

// The return type tells you not only that you have a number, but also
// that it is an integer and positive.
const port = safeEnv.get('port')

// It will return undefined if the variable does not exist
const githubToken = safeEnv.get('githubToken')

// It fill fail if the variable does not exist
const secretToken = safeEnv.get('secretToken')

Supported types

  • boolean
  • string and string[]
  • int8, int16, int32, int54
  • int8[], int16[], int32[], int54[]
  • uint8, uint16, uint32
  • uint8[], uint16[], uint32[]

Supported Constraints

For numbers

  • min
  • max

For strings

  • minLength
  • maxLength
  • pattern: regular expression object.

For arrays

  • minLength
  • maxLength
  • valueConstraints: number or string constraints.