Releases: eddeee888/graphql-code-generator-plugins
@eddeee888/gcg-typescript-resolver-files@0.5.0
Minor Changes
-
f7831c1: Use resolversNonOptionalTypename instead of nonOptionalTypename
This makes using abstract types simpler because we do not return __typename for all types, only for union members and interface implementing types.
-
f7831c1: Add scalarsOverrides config option
Record<string, { resolver?: string; type?: string | { input: string; output: string } }>(Default:{})Overrides scalars' resolver implementation, type or both.
Example:
// codegen.ts { generates: { 'src/schema': defineConfig({ scalarsOverrides: { DateTime: { resolver: './localDateTimeResolver#Resolver', } Currency: { type: 'unknown' }, BigInt: { resolver: '@other/scalars#BigIntResolver', type: 'bigint' } } }) } }
BREAKING CHANGE:
typesPluginsConfig.scalarscan no longer be used. Please usescalarOverridesinstead. -
f7831c1: Use optionalResolveType=true because resolversNonOptionalTypename works
-
f7831c1: Add scalarsModule config option
stringorfalse(Default:graphql-scalars)Where Scalar implementation and codegen types come from. Use
falseto implement your own Scalars.If using an module that is not
graphql-scalars, the module must export resolver implementation and codegen type the same waygraphql-scalarsdoes e.g.{ resolvers: { DateTime: DateTimeResolver, }, DateTimeResolver: { // ... resolver implementation extensions: { codegenScalarType: 'Date | string', }, } }
Patch Changes
- f7831c1: Allows overriding native scalar types' type (Equivalent of typescript plugin's scalars option)
- f7831c1: Correctly implement ID Scalar's input/output type: input is string and output is string | number
By default, ID scalar types are targeted at client types. Example generated type:
type Scalars = {
ID: {
input: string | number;
output: string
}
}Server preset manages the default ID scalar to be correct for server types. Example generated type for the server:
type Scalars = {
ID: {
input: string;
output: string | number;
}
}@eddeee888/gcg-typescript-resolver-files@0.4.1
@eddeee888/gcg-typescript-resolver-files@0.4.0
Minor Changes
-
037afdc: Add resolverMainFileMode.
mergedormodules(Default:merged)How to generate file/s that put resolvers map together:
merged: one filemodules: one file per module. This can be used with module-based libraries like graphql-modules
Example codegen config:
// codegen.ts import type { CodegenConfig } from '@graphql-codegen/cli'; import { defineConfig } from '@eddeee888/gcg-typescript-resolver-files'; const config: CodegenConfig = { schema: '**/*.graphql', generates: { 'src/schema': defineConfig({ resolverMainFileMode: 'modules', }), }, }; export default config;
resolverMainFileMode=modulesgenerates oneresolvers.generated.tsfile in each module:├── src/ │ ├── schema/ │ │ ├── base/ │ │ │ ├── schema.graphql │ │ │ ├── resolvers.generated.ts # contains resolvers of types in `src/schema/base/schema.graphql` │ │ ├── user/ │ │ │ ├── schema.graphql │ │ │ ├── resolvers.generated.ts # contains resolvers of types in `src/schema/user/schema.graphql` │ │ ├── book/ │ │ │ ├── schema.graphql │ │ │ ├── resolvers.generated.ts # contains resolvers of types in `src/schema/book/schema.graphql`If you are using
graphql-modules, you can use the resolvers map like this:// src/schema/user/index.ts import { createModule } from 'graphql-modules'; import { resolvers } from './resolvers.generated.ts'; export const userModule = createModule({ id: 'user-module', dirname: __dirname, typeDefs: [ /* Your typeDefs*/ ], resolvers, });
-
df06e3b: Add typeDefsFileMode.
mergedormergedWhitelistedormodules(Default:merged)How to generate typeDefs file/s:
merged: one filemergedWhitelisted: one file but only contains whitelisted modules. This is useful if your blacklisted modules handle their own type defsmodules: one file per module. This can be used with module-based libraries like graphql-modules
Example codegen config:
// codegen.ts import type { CodegenConfig } from '@graphql-codegen/cli'; import { defineConfig } from '@eddeee888/gcg-typescript-resolver-files'; const config: CodegenConfig = { schema: '**/*.graphql', generates: { 'src/schema': defineConfig({ typeDefsFileMode: 'modules', }), }, }; export default config;
typeDefsFileMode=modulesgenerates onetypeDefs.generated.tsfile in each module:├── src/ │ ├── schema/ │ │ ├── base/ │ │ │ ├── schema.graphql │ │ │ ├── typeDefs.generated.ts # contains typeDefs of `src/schema/base/schema.graphql` │ │ ├── user/ │ │ │ ├── schema.graphql │ │ │ ├── typeDefs.generated.ts # contains typeDefs of `src/schema/user/schema.graphql` │ │ ├── book/ │ │ │ ├── schema.graphql │ │ │ ├── typeDefs.generated.ts # contains typeDefs of `src/schema/book/schema.graphql`If you are using
graphql-modules, you can use the resolvers map like this:// src/schema/user/index.ts import { createModule } from 'graphql-modules'; import { typeDefs } from './typeDefs.generated.ts'; export const userModule = createModule({ id: 'user-module', dirname: __dirname, typeDefs: [typeDefs], resolvers: { /* Your resolver map */ }, });
-
086802e: Add
defineConfig. This sets uppreset,presetConfigandwatchPattern.Example:
import type { CodegenConfig } from '@graphql-codegen/cli'; import { defineConfig } from '@eddeee888/typescript-resolver-files'; const config: CodegenConfig = { schema: 'src/schema/**/*.graphql', generates: { 'src/schema': defineConfig(), }, }; export default config;
Patch Changes
- fe0ca5d: Bump ts-morph to v18
- d5aac16: Handle intersection typeNode usually seen in GQL Interface types e.g.
type TypeA = TypeB & { something: string } & { somethingelse: string } - 6324453: Fix Subscription default generation template
- b70ee7f: Use path.posix to fix Windows errors
- 5302e38: Add example for custom preset config in README
@eddeee888/gcg-typescript-resolver-files@0.3.0
Minor Changes
- 686cafd: Implement type comparison between mapper type vs schema type to generate resolvers
@eddeee888/gcg-typescript-resolver-files@0.2.1
Patch Changes
- 75fc48b: Bump @graphql-codegen/* deps
@eddeee888/gcg-typescript-resolver-files@0.2.0
Minor Changes
- 0d3c9db: Generate typeDefs by default
@eddeee888/gcg-typescript-resolver-files@0.1.2
Patch Changes
- 0a07d09: Make graphql-scalars deps because it is used in implementation
@eddeee888/gcg-typescript-resolver-files@0.1.1
Patch Changes
- 120a06a: Make resolverRelativeTargetDir more reasonable for merged mode
@eddeee888/gcg-typescript-resolver-files@0.1.0
@eddeee888/gcg-typescript-resolver-files@0.0.7
Patch Changes
- a53b315: Make generated RootObjectTypeFields NonNullable to make reexports easier