# Renderable.ServicesFromObject

Traverse all keys in an object and extract the services from each value. If
the value is a function, extract the services from the return type of the function.

## Signatures

```ts
type ServicesFromObject<T> = [
    {
        [K in keyof T]-?: T[K] extends (...args: Array<any>) => any ? FunctionServices<ReturnType<T[K]>> : Services<T[K]>;
    }[keyof T]
] extends [
    infer U
] ? U : never;
```

## Why

Spread, data, and property objects may contain nested Effect producers whose
requirements must remain visible in the enclosing template.

## Ownership and lifetime

This compile-time traversal acquires no service.
