Type-safe environment variable resolver with async resolvers - lightweight, tree-shakeable, no dependencies