Broken type helper (GetPgResourceRelations)
<!-- Before opening an issue: if you use `npm` try running `yarn` instead; if
      you run `yarn`, please try running `npx yarn-deduplicate && yarn`. -->

### Summary

Various type helpers appear to be broken (`GetPgResourceRelations`) for example always returns `any` even when supplying a fully typed `PgResource` with explicit relations. I would advice to use `infer` instead of property access to prevent type erasure.

Below works:

```typescript
type GetRegistry<U> = U extends PgResource<any, any, any, any, infer R>
  ? R
  : never
type GetRelations<U> = U extends PgRegistry<any, any, infer R> ? R : never
type GetCodec<U> = U extends PgResource<any, infer C, any, any, any>
  ? C
  : never
type GetName<U> = U extends PgCodec<infer N, any, any, any, any, any, any>
  ? N
  : never
type GetPgResourceRelations<U> = U extends PgResource<
  any,
  any,
  any,
  any,
  any
>
  ? GetRelations<GetRegistry<U>>[GetName<GetCodec<U>>]
  : never
```

Whereas this doesnt:

```typescript
type GetPgResourceRelations<TResource extends PgResource<any, any, any, any, any>> = TResource["registry"]["pgRelations"][TResource["codec"]["name"]];
```
