npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@edgarortega/typenv

v1.0.4

Published

`typenv` is a lightweight TypeScript library designed for managing environment variables with type safety in JavaScript server environments. It enables developers to define, validate, and access environment variables in a structured manner, ensuring that

Downloads

84

Readme

🛠️ typenv core

typenv is a lightweight TypeScript library designed for managing environment variables with type safety in JavaScript server environments. It enables developers to define, validate, and access environment variables in a structured manner, ensuring that applications are configured correctly.

🚀 Features

  • Type Safety: Leverage TypeScript to enforce expected types for environment variables, reducing runtime errors.
  • Validation: Automatically validate environment variables against defined schemas, ensuring correctness.
  • Zero Dependencies: Efficient and easy to integrate into your projects without external libraries.
  • Custom Error Handling: Receive clear and descriptive error messages when environment variables are missing or invalid.

Design Decisions

  • KISS principle
  • Focused on JavaScript server environments.
  • No reliance on external schema validation libraries.
  • Does not support environment variable loading, nesting, grouping, or transformations.
  • No default values or optional environment variables.
  • Empty string variables (e.g., AN_API_URL= or AN_API_URL= ) are treated as undefined.

📦 Installation

You can install typenv via:

npm install --save @edgarortega/typenv
bun add @edgarortega/typenv

📖 Usage

Here's how to use typenv in your project:

// create a env.ts file in your root
import {
  createEnv,
  asString,
  asEnum,
  asBoolean,
  asNumber,
} from "@edgarortega/typenv";
// Define your environment variables schema
export const env = createEnv({
  URL: asString(), // Must be a string
  NODE_ENV: asEnum({ values: ["dev", "PROD"] as const }), // Must be one of the specified values
  FEATURE_FLAG: asBoolean(), // Must be a boolean
  MAX_RETRIES: asNumber(), // Must be a number
});
// inferred type for the `env` variable
const env: {
  URL: string;
  NODE_ENV: "dev" | "PROD";
  FEATURE_FLAG: boolean;
  MAX_RETRIES: number;
};
// Access your validated environment variables
console.log({ env });

🛠️ API

createEnv(schema: Schema)

Creates and validates environment variables based on the provided schema.

  • Parameters:

    • schema: An object defining the expected environment variables and their types.
  • Returns: An object containing the validated environment variables.

  • Throws: TypenvError if any environment variable is not defined or invalid.

Validation Functions

  • asString(): Validates and returns a string environment variable.
  • asEnum(values: string[] as const): Validates and returns an environment variable that must be one of the specified enum values.
  • asBoolean(): Validates and returns a boolean environment variable.
  • asNumber(): Validates and returns a number environment variable.

⚠️ Error Handling

If an environment variable is missing or invalid, typenv will throw a TypenvError with a descriptive message, helping you quickly identify configuration issues.