12factor-env
Advanced tools
+17
-0
@@ -21,2 +21,19 @@ import type { CleanedEnv, CleanOptions, Spec, ValidatorSpec } from 'envalid'; | ||
| /** | ||
| * Rollout valve for enforcing newly-reclassified env vars (class 2/3). | ||
| * | ||
| * When a var is promoted from "always has a baked default" to "must be provided | ||
| * in production", a big-bang hard-throw can break every deploy that silently | ||
| * relied on the old default. `STRICT_ENV` lets that enforcement roll out safely: | ||
| * | ||
| * - `STRICT_ENV=throw` -> hard-fail (throw) on a missing/unsafe value | ||
| * - anything else, INCLUDING UNSET -> `warn` (log loudly, keep booting) | ||
| * | ||
| * Defaulting to `warn` means enforcement surfaces in logs for a release before | ||
| * it is turned into a hard failure. NOTE: this only governs opt-in enforcement | ||
| * helpers (e.g. `assertProductionEnvOptions`); the `env()`/`cleanEnv` validators | ||
| * always throw, so existing `required()`/`devDefault()` guarantees are unchanged. | ||
| */ | ||
| export type StrictEnvMode = 'warn' | 'throw'; | ||
| export declare const getStrictEnvMode: (environment?: Record<string, string | undefined>) => StrictEnvMode; | ||
| /** | ||
| * Wrapper around envalid's cleanEnv that uses a throwing reporter by default | ||
@@ -23,0 +40,0 @@ * This prevents process.exit from being called on validation errors |
+1
-0
@@ -16,2 +16,3 @@ import { bool, cleanEnv as envalidCleanEnv, email, EnvError, EnvMissingError, host, json, makeValidator, num, port, str, testOnly, url } from 'envalid'; | ||
| export const isDevelopment = (environment = process.env) => getNodeEnv(environment) === 'development'; | ||
| export const getStrictEnvMode = (environment = process.env) => environment.STRICT_ENV?.toLowerCase() === 'throw' ? 'throw' : 'warn'; | ||
| /** | ||
@@ -18,0 +19,0 @@ * Return a copy of `environment` with `NODE_ENV` populated per house semantics |
+17
-0
@@ -21,2 +21,19 @@ import type { CleanedEnv, CleanOptions, Spec, ValidatorSpec } from 'envalid'; | ||
| /** | ||
| * Rollout valve for enforcing newly-reclassified env vars (class 2/3). | ||
| * | ||
| * When a var is promoted from "always has a baked default" to "must be provided | ||
| * in production", a big-bang hard-throw can break every deploy that silently | ||
| * relied on the old default. `STRICT_ENV` lets that enforcement roll out safely: | ||
| * | ||
| * - `STRICT_ENV=throw` -> hard-fail (throw) on a missing/unsafe value | ||
| * - anything else, INCLUDING UNSET -> `warn` (log loudly, keep booting) | ||
| * | ||
| * Defaulting to `warn` means enforcement surfaces in logs for a release before | ||
| * it is turned into a hard failure. NOTE: this only governs opt-in enforcement | ||
| * helpers (e.g. `assertProductionEnvOptions`); the `env()`/`cleanEnv` validators | ||
| * always throw, so existing `required()`/`devDefault()` guarantees are unchanged. | ||
| */ | ||
| export type StrictEnvMode = 'warn' | 'throw'; | ||
| export declare const getStrictEnvMode: (environment?: Record<string, string | undefined>) => StrictEnvMode; | ||
| /** | ||
| * Wrapper around envalid's cleanEnv that uses a throwing reporter by default | ||
@@ -23,0 +40,0 @@ * This prevents process.exit from being called on validation errors |
+3
-1
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.withDefault = exports.url = exports.testOnly = exports.str = exports.secretPath = exports.secretEnv = exports.secret = exports.required = exports.port = exports.parseEnvNumber = exports.parseEnvBoolean = exports.num = exports.makeValidator = exports.json = exports.host = exports.getSecretsPath = exports.getSecret = exports.EnvMissingError = exports.EnvError = exports.env = exports.email = exports.devDefault = exports.cleanEnv = exports.boolish = exports.bool = exports.isDevelopment = exports.isTest = exports.isProduction = exports.getNodeEnv = void 0; | ||
| exports.withDefault = exports.url = exports.testOnly = exports.str = exports.secretPath = exports.secretEnv = exports.secret = exports.required = exports.port = exports.parseEnvNumber = exports.parseEnvBoolean = exports.num = exports.makeValidator = exports.json = exports.host = exports.getSecretsPath = exports.getSecret = exports.EnvMissingError = exports.EnvError = exports.env = exports.email = exports.devDefault = exports.cleanEnv = exports.boolish = exports.bool = exports.getStrictEnvMode = exports.isDevelopment = exports.isTest = exports.isProduction = exports.getNodeEnv = void 0; | ||
| const envalid_1 = require("envalid"); | ||
@@ -35,2 +35,4 @@ Object.defineProperty(exports, "bool", { enumerable: true, get: function () { return envalid_1.bool; } }); | ||
| exports.isDevelopment = isDevelopment; | ||
| const getStrictEnvMode = (environment = process.env) => environment.STRICT_ENV?.toLowerCase() === 'throw' ? 'throw' : 'warn'; | ||
| exports.getStrictEnvMode = getStrictEnvMode; | ||
| /** | ||
@@ -37,0 +39,0 @@ * Return a copy of `environment` with `NODE_ENV` populated per house semantics |
+2
-2
| { | ||
| "name": "12factor-env", | ||
| "version": "1.16.0", | ||
| "version": "1.17.0", | ||
| "author": "Constructive <developers@constructive.io>", | ||
@@ -49,3 +49,3 @@ "description": "Environment variable validation with secret file support for 12-factor apps", | ||
| ], | ||
| "gitHead": "e72d4d2bc42d1f84f7a68231b9d4c1d8f7885203" | ||
| "gitHead": "ff6c442b789cbe8803f33036110f6e09124e65df" | ||
| } |
43204
5.54%610
6.64%14
16.67%