How the resulting config names the environment. Exactly one branch is
populated — a dataset target carries the classic pair, anything else carries
the resource — but both are stated optional so the result assigns to a host's
client config without narrowing the union first. The unused branch is removed
from the result so a leftover from the host's base cannot survive the merge:
@sanity/client prefers resource over projectId/dataset whenever both
are present, which would otherwise silently address the wrong environment.
How the resulting config names the environment. Exactly one branch is populated — a dataset target carries the classic pair, anything else carries the resource — but both are stated optional so the result assigns to a host's client config without narrowing the union first. The unused branch is removed from the result so a leftover from the host's base cannot survive the merge:
@sanity/clientprefersresourceoverprojectId/datasetwhenever both are present, which would otherwise silently address the wrong environment.