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.1.1
to
8.2.0
+7
-2
dist/core.js

@@ -57,5 +57,10 @@ "use strict";

try {
// If no value was given and default/devDefault were provided, return the appropriate default
// value without passing it through validation
// If no value was given and default/devDefault/testDefault were provided, return the
// appropriate default value without passing it through validation
if (rawValue === undefined) {
// Use testDefault only when NODE_ENV is 'test'. Takes priority over devDefault and default.
if (rawNodeEnv === 'test' && Object.hasOwn(spec, 'testDefault')) {
cleanedEnv[k] = spec.testDefault;
continue;
}
// Use devDefault values only if NODE_ENV was explicitly set, and isn't 'production'

@@ -62,0 +67,0 @@ var usingDevDefault = rawNodeEnv && rawNodeEnv !== 'production' && Object.hasOwn(spec, 'devDefault');

@@ -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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"}

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

/**
* A fallback value to use only when NODE_ENV is 'test'. Takes priority over `devDefault` and `default`.
* Unlike the `testOnly()` helper (which wraps a `devDefault` value), `testDefault` can be combined
* with both `default` and `devDefault` to specify distinct values for production, development, and test.
*/
testDefault?: NonNullable<T> | undefined;
/**
* A function (env -> boolean) that allows an env var to be required only when certain

@@ -39,10 +45,46 @@ * conditions are met with the rest of the env object. Use With default: undefined.

} | {
testDefault: undefined;
} | {
default: undefined;
devDefault: undefined;
} | {
default: undefined;
testDefault: undefined;
} | {
devDefault: undefined;
testDefault: undefined;
} | {
default: undefined;
devDefault: undefined;
testDefault: undefined;
} | {
default: NonNullable<T>;
devDefault: undefined;
} | {
default: NonNullable<T>;
testDefault: undefined;
} | {
devDefault: NonNullable<T>;
testDefault: undefined;
} | {
default: undefined;
devDefault: NonNullable<T>;
} | {
default: undefined;
testDefault: NonNullable<T>;
} | {
devDefault: undefined;
testDefault: NonNullable<T>;
} | {
default: NonNullable<T>;
devDefault: NonNullable<T>;
testDefault: undefined;
} | {
default: NonNullable<T>;
devDefault: undefined;
testDefault: NonNullable<T>;
} | {
default: undefined;
devDefault: NonNullable<T>;
testDefault: NonNullable<T>;
};

@@ -54,6 +96,18 @@ type RequiredAttrs<T> = {

} | {
testDefault: NonNullable<T>;
} | {
devDefault: NonNullable<T>;
default: NonNullable<T>;
} | {
testDefault: NonNullable<T>;
default: NonNullable<T>;
} | {
testDefault: NonNullable<T>;
devDefault: NonNullable<T>;
} | {
testDefault: NonNullable<T>;
devDefault: NonNullable<T>;
default: NonNullable<T>;
} | {};
type DefaultKeys = 'default' | 'devDefault';
type DefaultKeys = 'default' | 'devDefault' | 'testDefault';
type OptionalSpec<T> = Spec<T> & OptionalAttrs<T>;

@@ -60,0 +114,0 @@ type OptionalTypelessSpec = Omit<OptionalSpec<unknown>, 'choices'>;

{
"name": "envalid",
"version": "8.1.1",
"version": "8.2.0",
"description": "Validation for your environment variables",

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

"@arethetypeswrong/cli": "0.18.2",
"@biomejs/biome": "2.0.6",
"@types/node": "24.0.13",
"@vitest/coverage-v8": "3.2.4",
"expect-type": "1.2.2",
"@biomejs/biome": "2.4.4",
"@types/node": "25.3.2",
"@vitest/coverage-v8": "4.0.18",
"expect-type": "1.3.0",
"husky": "9.1.7",
"typescript": "5.2.2",
"vitest": "3.2.4"
"vitest": "4.0.18"
},

@@ -57,6 +57,6 @@ "author": "Aaron Franks",

"hooks": {
"pre-commit": "yarn lint && yarn tsc",
"pre-push": "yarn test"
"pre-commit": "npm run lint && npm run tsc",
"pre-push": "npm run test"
}
}
}

@@ -108,2 +108,7 @@ <p align="center">

for development and testing.
- `testDefault` - A fallback value to use _only_ when `NODE_ENV=test`. When provided, it takes
priority over both `devDefault` and `default` in test environments. Unlike the `testOnly()`
helper (which is wrapped around a `devDefault` and therefore can't coexist with a separate
dev value), `testDefault` can be combined with `default` and `devDefault` to provide
distinct values for production, development, and test.
- `desc` - A string that describes the env var.

@@ -224,3 +229,3 @@ - `example` - An example value for the env var.

The `testOnly` helper function is available for setting a default value for an env var only when `NODE_ENV=test`. It is recommended to use this function along with `devDefault`. For example:
The `testOnly` helper function is available for setting a default value for an env var only when `NODE_ENV=test`. It is used by wrapping a `devDefault` value:

@@ -233,2 +238,14 @@ ```js

Because `testOnly` is applied via `devDefault`, you cannot use it to express both a development default _and_ a separate test default. For that, prefer the `testDefault` spec attribute, which can be combined freely with `default` and `devDefault`:
```js
const env = cleanEnv(process.env, {
SOME_VAR: envalid.str({
default: 'productionValue',
devDefault: 'devValue',
testDefault: 'myTestValue',
}),
})
```
For more context see [this issue](https://github.com/af/envalid/issues/32).

@@ -235,0 +252,0 @@

@@ -70,5 +70,11 @@ import { EnvError, EnvMissingError } from './errors'

try {
// If no value was given and default/devDefault were provided, return the appropriate default
// value without passing it through validation
// If no value was given and default/devDefault/testDefault were provided, return the
// appropriate default value without passing it through validation
if (rawValue === undefined) {
// Use testDefault only when NODE_ENV is 'test'. Takes priority over devDefault and default.
if (rawNodeEnv === 'test' && Object.hasOwn(spec, 'testDefault')) {
cleanedEnv[k] = spec.testDefault
continue
}
// Use devDefault values only if NODE_ENV was explicitly set, and isn't 'production'

@@ -75,0 +81,0 @@ const usingDevDefault =

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

devDefault?: NonNullable<T> | undefined
/**
* A fallback value to use only when NODE_ENV is 'test'. Takes priority over `devDefault` and `default`.
* Unlike the `testOnly()` helper (which wraps a `devDefault` value), `testDefault` can be combined
* with both `default` and `devDefault` to specify distinct values for production, development, and test.
*/
testDefault?: NonNullable<T> | undefined

@@ -39,12 +45,27 @@ /**

| { devDefault: undefined }
| { testDefault: undefined }
| { default: undefined; devDefault: undefined }
| { default: undefined; testDefault: undefined }
| { devDefault: undefined; testDefault: undefined }
| { default: undefined; devDefault: undefined; testDefault: undefined }
| { default: NonNullable<T>; devDefault: undefined }
| { default: NonNullable<T>; testDefault: undefined }
| { devDefault: NonNullable<T>; testDefault: undefined }
| { default: undefined; devDefault: NonNullable<T> }
| { default: undefined; testDefault: NonNullable<T> }
| { devDefault: undefined; testDefault: NonNullable<T> }
| { default: NonNullable<T>; devDefault: NonNullable<T>; testDefault: undefined }
| { default: NonNullable<T>; devDefault: undefined; testDefault: NonNullable<T> }
| { default: undefined; devDefault: NonNullable<T>; testDefault: NonNullable<T> }
type RequiredAttrs<T> =
| { default: NonNullable<T> }
| { devDefault: NonNullable<T> }
| { testDefault: NonNullable<T> }
| { devDefault: NonNullable<T>; default: NonNullable<T> }
| { testDefault: NonNullable<T>; default: NonNullable<T> }
| { testDefault: NonNullable<T>; devDefault: NonNullable<T> }
| { testDefault: NonNullable<T>; devDefault: NonNullable<T>; default: NonNullable<T> }
| {}
type DefaultKeys = 'default' | 'devDefault'
type DefaultKeys = 'default' | 'devDefault' | 'testDefault'

@@ -51,0 +72,0 @@ type OptionalSpec<T> = Spec<T> & OptionalAttrs<T>