🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

envalid

Package Overview
Dependencies
Maintainers
1
Versions
60
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

envalid - npm Package Compare versions

Comparing version
8.0.0
to
8.1.0-beta.1
+2
-1
dist/core.d.ts

@@ -1,3 +0,4 @@

import { CleanOptions, SpecsOutput } from './types';
import { CleanOptions, SpecsOutput, Spec } from './types';
export declare const testOnlySymbol: unique symbol;
export declare function formatSpecDescription<T>(spec: Spec<T>): string;
/**

@@ -4,0 +5,0 @@ * Perform the central validation/sanitization logic on the full environment object

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSanitizedEnv = exports.testOnlySymbol = void 0;
exports.getSanitizedEnv = exports.formatSpecDescription = exports.testOnlySymbol = void 0;
var errors_1 = require("./errors");

@@ -37,2 +37,3 @@ var reporter_1 = require("./reporter");

}
exports.formatSpecDescription = formatSpecDescription;
var readRawEnvValue = function (env, k) {

@@ -89,2 +90,15 @@ return env[k];

}
// This block is for supporting requiredWhen. If that field was provided for a var's spec and
// its condition evaluates to a truthy value, ensure that env var is present.
for (var _a = 0, varKeys_2 = varKeys; _a < varKeys_2.length; _a++) {
var k = varKeys_2[_a];
if (errors[k] == undefined) {
var spec = castedSpecs[k];
if (cleanedEnv[k] == undefined &&
spec.requiredWhen !== undefined &&
spec.requiredWhen(cleanedEnv)) {
errors[k] = new errors_1.EnvMissingError(formatSpecDescription(spec));
}
}
}
var reporter = (options === null || options === void 0 ? void 0 : options.reporter) || reporter_1.defaultReporter;

@@ -91,0 +105,0 @@ reporter({ errors: errors, env: cleanedEnv });

@@ -1,1 +0,1 @@

{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}

@@ -27,2 +27,7 @@ export interface Spec<T> {

devDefault?: NonNullable<T> | undefined;
/**
* A function (env -> boolean) that allows an env var to be required only when certain
* conditions are met with the rest of the env object. Use With default: undefined.
*/
requiredWhen?: (cleanedEnv: Record<string, unknown>) => boolean | undefined;
}

@@ -29,0 +34,0 @@ type OptionalAttrs<T> = {

@@ -40,2 +40,4 @@ "use strict";

case 't':
case 'yes':
case 'on':
case '1':

@@ -46,2 +48,4 @@ return true;

case 'f':
case 'no':
case 'off':
case '0':

@@ -48,0 +52,0 @@ return false;

@@ -1,1 +0,1 @@

{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
{
"name": "envalid",
"version": "8.0.0",
"version": "8.1.0-beta.1",
"description": "Validation for your environment variables",

@@ -40,9 +40,9 @@ "main": "dist/index.js",

"devDependencies": {
"@types/jest": "29.5.5",
"@types/node": "20.6.2",
"expect-type": "^0.16.0",
"husky": "8.0.3",
"@types/jest": "29.5.12",
"@types/node": "20.12.5",
"expect-type": "^0.19.0",
"husky": "9.0.11",
"jest": "29.7.0",
"prettier": "3.0.3",
"ts-jest": "29.1.1",
"prettier": "3.2.5",
"ts-jest": "29.1.2",
"typescript": "5.2.2"

@@ -49,0 +49,0 @@ },

@@ -91,3 +91,3 @@ <p align="center">

if this is undesirable you can easily create your own validator (see below)
- `bool()` - Parses env var strings `"1", "0", "true", "false", "t", "f"` into booleans
- `bool()` - Parses env var strings `"1", "0", "true", "false", "t", "f", "yes", "no", "on", "off"` into booleans
- `num()` - Parses an env var (eg. `"42", "0.23", "1e5"`) into a Number

@@ -112,2 +112,3 @@ - `email()` - Ensures an env var is an email address

- `docs` - A URL that leads to more detailed documentation about the env var.
- `requiredWhen` - A function (env -> boolean) specifying when this env var is required. Use With default: undefined (optional value).

@@ -114,0 +115,0 @@ ## Custom validators

@@ -39,3 +39,3 @@ import { EnvError, EnvMissingError } from './errors'

// Format a string error message for when a required env var is missing
function formatSpecDescription<T>(spec: Spec<T>) {
export function formatSpecDescription<T>(spec: Spec<T>) {
const egText = spec.example ? ` (eg. "${spec.example}")` : ''

@@ -104,2 +104,17 @@ const docsText = spec.docs ? `. See ${spec.docs}` : ''

// This block is for supporting requiredWhen. If that field was provided for a var's spec and
// its condition evaluates to a truthy value, ensure that env var is present.
for (const k of varKeys) {
if (errors[k] == undefined) {
const spec = castedSpecs[k]
if (
cleanedEnv[k] == undefined &&
spec.requiredWhen !== undefined &&
spec.requiredWhen(cleanedEnv)
) {
errors[k] = new EnvMissingError(formatSpecDescription(spec))
}
}
}
const reporter = options?.reporter || defaultReporter

@@ -106,0 +121,0 @@ reporter({ errors, env: cleanedEnv })

@@ -27,2 +27,8 @@ export interface Spec<T> {

devDefault?: NonNullable<T> | undefined
/**
* A function (env -> boolean) that allows an env var to be required only when certain
* conditions are met with the rest of the env object. Use With default: undefined.
*/
requiredWhen?: (cleanedEnv: Record<string, unknown>) => boolean | undefined
}

@@ -103,12 +109,13 @@

export type CleanedEnv<S> = S extends Record<string, ValidatorSpec<unknown>>
export type CleanedEnv<S> =
S extends Record<string, ValidatorSpec<unknown>>
? Readonly<
{
[K in keyof S]: S[K] extends OptionalValidatorSpec<infer U>
? U | undefined
: S[K] extends RequiredValidatorSpec<infer U>
? U
: never
} & CleanedEnvAccessors
>
{
[K in keyof S]: S[K] extends OptionalValidatorSpec<infer U>
? U | undefined
: S[K] extends RequiredValidatorSpec<infer U>
? U
: never
} & CleanedEnvAccessors
>
: never

@@ -115,0 +122,0 @@

@@ -37,2 +37,4 @@ import { EnvError } from './errors'

case 't':
case 'yes':
case 'on':
case '1':

@@ -43,2 +45,4 @@ return true

case 'f':
case 'no':
case 'off':
case '0':

@@ -45,0 +49,0 @@ return false