+2
-1
@@ -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 |
+15
-1
| "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
@@ -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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"} |
+5
-0
@@ -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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"} |
+7
-7
| { | ||
| "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 @@ }, |
+2
-1
@@ -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 |
+16
-1
@@ -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 }) |
+16
-9
@@ -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 |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
84162
3.22%1437
3.46%256
0.39%2
100%