Type Generation for Plan Resolvers
Currently there is no TypeScript type generation tool for Plan Resolvers, similar to graphql-codegen for graphql.js.

I wrote a small utility type available to convert types generated from [@graphql-codegen/typescript-resolvers](https://the-guild.dev/graphql/codegen/plugins/typescript/typescript-resolvers) to work with Grafast:

```typescript
export type PlanResolversFromRawResolversType<Resolvers> = {
  [P in keyof Resolvers]: {
    [Q in keyof NonNullable<Resolvers[P]>]: PlanResolverFromRawResolverType<NonNullable<Resolvers[P]>[Q]>
  };
};

type PlanResolverFromRawResolverType<T> = T extends (parent: infer TParent, args: infer TArgs, ...rest: any) => infer TResult
  ? ($parent: ExecutableStep<TParent>, args: { [TKey in keyof TArgs as `$${TKey & string}`]: ExecutableStep<TArgs[TKey]> }) => ExecutableStep<ExtractResult<TResult>>
  : never;

type ExtractResult<T> = Awaited<T> extends readonly (infer Q | Promise<infer Q>)[]
  ? readonly Q[]
  : Awaited<T>


// Usage:
import { Resolvers } from './graphql-codegen-generated.ts';
export const planResolvers: PlanResolversFromRawResolversType<Resolvers> = {
  Query: { ... },
};
```

But it falls short in certain scenarios, such as when resolver arguments are nullable. It still need improvement.

### Feature description

It is desirable to have a situation where appropriate type information is generated, allowing for comfortable writing of Plan Resolvers.

There are two possible ways:

- Document or include to `grafast` package a type that converts types generated by existing tools, as mentioned above(brush it up)
- Create a new tool or new plugin of graphql-codegen to generate type code for Grafast

### Motivating example

People writing Grafast Plan Resolvers in TypeScript

<!-- What motivated this feature request? Why is this feature useful to other
      people? What other use cases can you think of for it?  -->

### Breaking changes

<!-- If this feature requires breaking changes, detail them here, otherwise
      delete this section -->

### Supporting development

I [tick all that apply]:

<!-- To tick a checkbox, change it from `[ ]` to `[x]` -->

- [ ] am interested in building this feature myself
- [ ] am interested in collaborating on building this feature
- [x] am willing to help testing this feature before it's released
- [ ] am willing to write a test-driven test suite for this feature (before it exists)
- [ ] am a [Graphile sponsor](https://www.graphile.org/sponsor/) ❤️
- [ ] have an active [support or consultancy contract](https://www.graphile.org/support/) with Graphile
