1.0.0 • Published 3 months ago
@x12i/env-tokens
Licence
MIT
Version
1.0.0
Deps
0
Size
52 kB
Vulns
0
Weekly
0
@x12i/env-tokens
Resolve {{ENV.*}} tokens in strings using environment variables, with flexible key matching (exact, case-insensitive, and camelCase → snake_case).
Install
npm install @x12i/env-tokens
Usage
import { resolveEnvTokens } from "@x12i/env-tokens";
const output = resolveEnvTokens(
"mongodb://{{ENV.dbUser}}:{{ENV.dbPassword}}@{{ENV.sourceDatabaseHost}}/{{ENV.sourceDatabaseName}}",
{
env: {
DB_USER: "admin",
DB_PASSWORD: "secret",
SOURCE_DATABASE_HOST: "mongo.example.com",
SOURCE_DATABASE_NAME: "production_db",
},
}
);
// mongodb://admin:secret@mongo.example.com/production_db
By default, env is process.env and missing tokens throw MissingEnvTokenError.
Token format
Only tokens in this form are resolved:
{{ENV.variableName}}
Examples: {{ENV.sourceDatabaseName}}, {{ENV.API_KEY}}
Not supported: expressions, nested paths, or other namespaces ({{CONFIG.x}}).
Lookup order
For {{ENV.sourceDatabaseName}}, the package tries:
sourceDatabaseName(exact)sourceDatabaseName(case-insensitive)source_database_name(camel → snake, exact)source_database_name(camel → snake, case-insensitive)
So env keys like SOURCE_DATABASE_NAME, source_database_name, and SourceDatabaseName all work.
Options
| Option | Default | Description |
|---|---|---|
env |
process.env |
Environment source |
onMissing |
"throw" |
"keep", "empty", or "throw" |
allowEmpty |
true |
Treat "" as a valid value |
trimTokenName |
true |
Trim whitespace inside {{ENV. … }} |
caseInsensitive |
true |
Case-insensitive key matching |
camelToSnake |
true |
Fallback via snake_case keys |
Detailed diagnostics
import { resolveEnvTokensDetailed } from "@x12i/env-tokens";
const result = resolveEnvTokensDetailed("DB={{ENV.sourceDatabaseName}}", {
env: { SOURCE_DATABASE_NAME: "prod" },
});
console.log(result.output);
console.log(result.tokens);
console.log(result.missing);
Lower-level API
import {
resolveEnvValue,
camelToSnake,
findEnvTokens,
} from "@x12i/env-tokens";
resolveEnvValue("apiKey", { API_KEY: "secret" });
camelToSnake("sourceDatabaseName"); // "source_database_name"
findEnvTokens("Hello {{ENV.name}}");
License
MIT