Resolver Adapters
Attach authoritative secret providers directly to server variables.
Configure provider-wide options once, then attach references to individual
schemas with fromResolver:
import {
configureResolver,
createEnv,
fromResolver,
requiredString,
server,
} from "@ayronforge/envil";
import { awsSecretsAdapter } from "@ayronforge/envil/aws";
const aws = configureResolver(awsSecretsAdapter, {
region: "us-east-1",
});
export const appEnv = createEnv(
server({
DATABASE_PASSWORD: requiredString.pipe(
fromResolver(aws, "production/database#password"),
),
STRIPE_API_KEY: requiredString.pipe(
fromResolver(aws, "production/stripe#api-key"),
),
}),
);
Resolver-backed values:
- are allowed only in server fragments;
- are authoritative and never fall back to the runtime environment;
- are automatically wrapped in Effect
Redacted; - preserve schema optionality;
- contribute their precise errors and Effect requirements to
appEnv.server; - are grouped by configured resolver so adapters can batch requests.
The provider reference is never included in validation errors, resolver errors, CLI output, or type-only CLI metadata.