pantheon-secrets
A lightweight TypeScript utility package for Node.js applications to retrieve secrets from Pantheon-style environment variables. It simplifies the process of fetching environment-specific and production secrets with full type safety.
Installation
You can install this package via npm:
npm install pantheon-secrets
Features
- 🔐 Secure secret management - Environment-based secret resolution
- 📦 Dual module support - Works with both ESM (
import
) and CommonJS (require
)
- 🎯 TypeScript native - Full type safety and IntelliSense support
- 🚀 Zero dependencies - Lightweight with no external dependencies
- ✅ Well tested - Comprehensive test suite included
Usage
The package exposes a single function, pantheonGetSecret
, which takes the name of a secret as a string and returns the corresponding value or null
if not found.
ESM (Modern JavaScript/TypeScript)
import { pantheonGetSecret } from 'pantheon-secrets';
const mySecret = pantheonGetSecret('HELLO');
console.log(`The value of HELLO is: ${mySecret}`);
const anotherSecret = pantheonGetSecret('nonexistent');
console.log(`The value of nonexistent is: ${anotherSecret}`);
CommonJS (Traditional Node.js)
const { pantheonGetSecret } = require('pantheon-secrets');
const mySecret = pantheonGetSecret('HELLO');
console.log(`The value of HELLO is: ${mySecret}`);
How It Works
The function automatically determines which secret to use based on your application's environment variables. It first checks for a live production secret, then looks for a value specific to your current environment, and finally falls back to a default value if no other options are found. If the secret is not defined, it returns null.
Development
Building
npm run build
npm run build:esm
npm run build:cjs
Testing
npm install
npm test
Project Structure
src/pantheon-secrets.ts
- Main TypeScript source
index.ts
- Entry point that exports from source
__tests__/
- Test directory containing all test files
dist/esm/
- ESM build output (ESNext)
dist/cjs/
- CommonJS build output (ES2020)
- TypeScript definitions included for both formats