Skip to content

Latest commit

 

History

History
85 lines (60 loc) · 2.44 KB

README.md

File metadata and controls

85 lines (60 loc) · 2.44 KB

@coderspirit/safe-env

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.