/**
* Projects out part of one of the services output by this layer using the
* specified function.
*
* @tsplus static effect/core/io/Layer.Aspects project
* @tsplus pipeable effect/core/io/Layer project
*/
export function project(
tagA: Tag,
tagB: Tag,
f: (a: A) => B
) {
return (self: Layer): Layer =>
self.map((environment) => Env(tagB, f(environment.unsafeGet(tagA))))
}