The environment config type.
import { EnvAccessor } from "@daiso-tech/core/env-accessor";
import { z } from "zod";
import { SecretsManagerClient, GetSecretValueCommand } from "@aws-sdk/client-secrets-manager";
// Combine AWS Secrets Manager and process.env as sources
// Note: The order matters—later sources override previous ones for overlapping keys.
const secretsManager = new SecretsManagerClient({ region: "us-east-1" });
const sources = [
process.env,
async () => {
const secret = await secretsManager.send(
new GetSecretValueCommand({ SecretId: "my-app/env" })
);
return JSON.parse(secret.SecretString ?? "{}");
},
];
// Define a schema for your environment variables
const schema = z.object({
NODE_ENV: z.string(),
PORT: z.string().default("3000").pipe(z.coerce.number()),
});
// Initialize the accessor
const accessor = new EnvAccessor({ schema, sources });
await accessor.init();
// Retrieve a value
const port = accessor.get("PORT");
Get a value from the environment config, or null if missing/undefined.
The env field to retrieve.
The value or null if not present.
Get a value from the environment config, or return default value.
The value or default value.
EnvAccessorprovides type-safe access to environment variables, with optional schema validation.It supports multiple sources (sync/async/lazy), schema validation, and convenient access patterns.