Class EnvAccessor<TEnvConfig>

EnvAccessor provides type-safe access to environment variables, with optional schema validation.

It supports multiple sources (sync/async/lazy), schema validation, and convenient access patterns.

Type Parameters

Implements

Constructors

Methods

Constructors

  • Type Parameters

    • TEnvConfig extends Partial<Record<string, string | number | boolean>>

    Parameters

    Returns EnvAccessor<TEnvConfig>

    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");

Methods

  • Get a value from the environment config, or null if missing/undefined.

    Type Parameters

    • TField extends string | number | symbol
    • TValue extends undefined | string | number | boolean

    Parameters

    • field: TField

      The env field to retrieve.

    Returns UndefinedToNull<TValue>

    The value or null if not present.

    If called before initialization.

  • Get a value from the environment config, or return default value.

    Type Parameters

    • TField extends string | number | symbol
    • TValue extends undefined | string | number | boolean

    Parameters

    • field: TField

      The env field to retrieve.

    • defaultValue: NonNullable<TValue>

      The default value when not found.

    Returns NonNullable<TValue>

    The value or default value.

    If called before initialization.

  • Initialize the EnvAccessor by resolving all sources and validating the merged config.

    Returns Promise<void>

    Promise that resolves when initialization is complete.