Skip to content

Commit 08f319f

Browse files
committed
[typescript-operations] Clean up selection set processor that depends on typescript plugin (preResolveTypes: false) (#10556)
* Remove legacy selection set proccessor that depends on typescript plugin * Remove obsolete tests * Improve tests to be explicit
1 parent e9b66b8 commit 08f319f

5 files changed

Lines changed: 638 additions & 2436 deletions

File tree

packages/plugins/other/visitor-plugin-common/src/base-documents-visitor.ts

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ function getRootType(operation: OperationTypeNode, schema: GraphQLSchema) {
3333
}
3434

3535
export interface ParsedDocumentsConfig extends ParsedTypesConfig {
36-
preResolveTypes: boolean;
3736
extractAllFieldsToTypes: boolean;
3837
globalNamespace: boolean;
3938
operationResultSuffix: string;
@@ -50,30 +49,6 @@ export interface ParsedDocumentsConfig extends ParsedTypesConfig {
5049
}
5150

5251
export interface RawDocumentsConfig extends RawTypesConfig {
53-
/**
54-
* @default true
55-
* @description Uses primitive types where possible.
56-
* Set to `false` in order to use `Pick` and take use the types generated by `typescript` plugin.
57-
*
58-
* @exampleMarkdown
59-
* ```ts filename="codegen.ts"
60-
* import type { CodegenConfig } from '@graphql-codegen/cli';
61-
*
62-
* const config: CodegenConfig = {
63-
* // ...
64-
* generates: {
65-
* 'path/to/file': {
66-
* // plugins...
67-
* config: {
68-
* preResolveTypes: false
69-
* },
70-
* },
71-
* },
72-
* };
73-
* export default config;
74-
* ```
75-
*/
76-
preResolveTypes?: boolean;
7752
/**
7853
* @default false
7954
* @description Avoid adding `__typename` for root types. This is ignored when a selection explicitly specifies `__typename`.
@@ -250,7 +225,6 @@ export class BaseDocumentsVisitor<
250225
exportFragmentSpreadSubTypes: getConfigValue(rawConfig.exportFragmentSpreadSubTypes, false),
251226
enumPrefix: getConfigValue(rawConfig.enumPrefix, true),
252227
enumSuffix: getConfigValue(rawConfig.enumSuffix, true),
253-
preResolveTypes: getConfigValue(rawConfig.preResolveTypes, true),
254228
dedupeOperationSuffix: getConfigValue(rawConfig.dedupeOperationSuffix, false),
255229
omitOperationSuffix: getConfigValue(rawConfig.omitOperationSuffix, false),
256230
skipTypeNameForRoot: getConfigValue(rawConfig.skipTypeNameForRoot, false),

packages/plugins/typescript/operations/src/visitor.ts

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ import {
5050
SCALARS,
5151
TypeScriptOperationVariablesToObject,
5252
} from './ts-operation-variables-to-object.js';
53-
import { TypeScriptSelectionSetProcessor } from './ts-selection-set-processor.js';
5453

5554
export interface TypeScriptDocumentsParsedConfig extends ParsedDocumentsConfig {
5655
arrayInputCoercion: boolean;
@@ -92,7 +91,6 @@ export class TypeScriptDocumentsVisitor extends BaseDocumentsVisitor<
9291
avoidOptionals: normalizeAvoidOptionals(getConfigValue(config.avoidOptionals, false)),
9392
immutableTypes: getConfigValue(config.immutableTypes, false),
9493
nonOptionalTypename: getConfigValue(config.nonOptionalTypename, false),
95-
preResolveTypes: getConfigValue(config.preResolveTypes, true),
9694
mergeFragmentTypes: getConfigValue(config.mergeFragmentTypes, false),
9795
allowUndefinedQueryVariables: getConfigValue(config.allowUndefinedQueryVariables, false),
9896
enumType: getConfigValue(config.enumType, 'string-literal'),
@@ -109,22 +107,9 @@ export class TypeScriptDocumentsVisitor extends BaseDocumentsVisitor<
109107
this._outputPath = outputPath;
110108
autoBind(this);
111109

112-
const preResolveTypes = getConfigValue(config.preResolveTypes, true);
113110
const defaultMaybeValue = 'T | null';
114111
const maybeValue = getConfigValue(config.maybeValue, defaultMaybeValue);
115112

116-
const wrapOptional = (type: string) => {
117-
if (preResolveTypes === true) {
118-
return maybeValue.replace('T', type);
119-
}
120-
const prefix = this.config.namespacedImportName ? `${this.config.namespacedImportName}.` : '';
121-
return `${prefix}Maybe<${type}>`;
122-
};
123-
const wrapArray = (type: string) => {
124-
const listModifier = this.config.immutableTypes ? 'ReadonlyArray' : 'Array';
125-
return `${listModifier}<${type}>`;
126-
};
127-
128113
const allFragments: LoadedFragment[] = [
129114
...(
130115
documentNode.definitions.filter(
@@ -150,17 +135,18 @@ export class TypeScriptDocumentsVisitor extends BaseDocumentsVisitor<
150135
formatNamedField: ({ name, isOptional }) => {
151136
return (this.config.immutableTypes ? `readonly ${name}` : name) + (isOptional ? '?' : '');
152137
},
153-
wrapTypeWithModifiers(baseType, type) {
138+
wrapTypeWithModifiers: (baseType, type) => {
154139
return wrapTypeWithModifiers(baseType, type, {
155-
wrapOptional,
156-
wrapArray,
140+
wrapOptional: type => maybeValue.replace('T', type),
141+
wrapArray: type => {
142+
const listModifier = this.config.immutableTypes ? 'ReadonlyArray' : 'Array';
143+
return `${listModifier}<${type}>`;
144+
},
157145
});
158146
},
159147
printFieldsOnNewLines: this.config.printFieldsOnNewLines,
160148
};
161-
const processor = new (
162-
preResolveTypes ? PreResolveTypesProcessor : TypeScriptSelectionSetProcessor
163-
)(processorConfig);
149+
const processor = new PreResolveTypesProcessor(processorConfig);
164150
this.setSelectionSetHandler(
165151
new SelectionSetToObject(
166152
processor,

0 commit comments

Comments
 (0)