@eddeee888/gcg-typescript-resolver-files 0.18.0 → 0.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/defineConfig.d.ts +1 -1
- package/dist/defineConfig.js +8 -0
- package/package.json +7 -3
- package/CHANGELOG.md +0 -816
- package/DEVELOPMENT.md +0 -49
- package/dist/tsconfig.lib.tsbuildinfo +0 -1
- package/eslint.config.mjs +0 -22
- package/project.json +0 -8
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.ts +0 -109
- package/src/addVirtualTypesFileToTsMorphProject/index.ts +0 -1
- package/src/defineConfig.spec.ts +0 -76
- package/src/defineConfig.ts +0 -37
- package/src/generateResolverFiles/addExternalResolverImport.ts +0 -185
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.spec.ts +0 -1174
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.ts +0 -144
- package/src/generateResolverFiles/addResolverMainFiles.ts +0 -343
- package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.ts +0 -51
- package/src/generateResolverFiles/generateResolverFiles.ts +0 -148
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.spec.ts +0 -127
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.ts +0 -25
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.spec.ts +0 -147
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.ts +0 -34
- package/src/generateResolverFiles/handleGraphQLEnumType.ts +0 -100
- package/src/generateResolverFiles/handleGraphQLInterfaceType.ts +0 -70
- package/src/generateResolverFiles/handleGraphQLObjectType.ts +0 -171
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts +0 -105
- package/src/generateResolverFiles/handleGraphQLScalarType.ts +0 -81
- package/src/generateResolverFiles/handleGraphQLUnionType.ts +0 -68
- package/src/generateResolverFiles/index.ts +0 -2
- package/src/generateResolverFiles/postProcessFiles.ts +0 -287
- package/src/generateResolverFiles/types.ts +0 -203
- package/src/generateResolverFiles/visitNamedType.ts +0 -66
- package/src/generateTypeDefsFiles/generateTypeDefsContent.ts +0 -15
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.ts +0 -100
- package/src/generateTypeDefsFiles/index.ts +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts +0 -361
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.spec.ts +0 -115
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.ts +0 -88
- package/src/getGraphQLObjectTypeResolversToGenerate/index.ts +0 -1
- package/src/index.ts +0 -3
- package/src/normalizeAddConfigPath/index.ts +0 -1
- package/src/normalizeAddConfigPath/normalizeAddConfigPath.ts +0 -29
- package/src/parseGraphQLSchema/index.ts +0 -2
- package/src/parseGraphQLSchema/normalizeResolverName.ts +0 -28
- package/src/parseGraphQLSchema/parseGraphQLSchema.ts +0 -531
- package/src/parseGraphQLSchema/parseLocationForOutputDir.ts +0 -76
- package/src/parseSources/index.ts +0 -1
- package/src/parseSources/parseSources.ts +0 -83
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.spec.ts +0 -789
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts +0 -197
- package/src/parseTypeMappers/index.ts +0 -1
- package/src/parseTypeMappers/parseTypeMappers.ts +0 -75
- package/src/preset.ts +0 -317
- package/src/utils/cwd.ts +0 -8
- package/src/utils/fmt.ts +0 -16
- package/src/utils/index.ts +0 -12
- package/src/utils/isMatchResolverNamePattern.ts +0 -27
- package/src/utils/isNativeNamedType.ts +0 -21
- package/src/utils/isRootObjectType.ts +0 -8
- package/src/utils/isWhitelistedModule.spec.ts +0 -71
- package/src/utils/isWhitelistedModule.ts +0 -21
- package/src/utils/logger.ts +0 -14
- package/src/utils/normalizeImportExtension.spec.ts +0 -42
- package/src/utils/normalizeImportExtension.ts +0 -16
- package/src/utils/normalizeRelativePath.ts +0 -6
- package/src/utils/parseLocationForWhitelistedModule.spec.ts +0 -130
- package/src/utils/parseLocationForWhitelistedModule.ts +0 -38
- package/src/utils/printImportLine.spec.ts +0 -150
- package/src/utils/printImportLine.ts +0 -78
- package/src/utils/relativeModulePath.ts +0 -7
- package/src/validateAndMergeParsedConfigs/index.ts +0 -1
- package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.spec.ts +0 -211
- package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.ts +0 -92
- package/src/validatePresetConfig/index.ts +0 -1
- package/src/validatePresetConfig/validatePresetConfig.spec.ts +0 -706
- package/src/validatePresetConfig/validatePresetConfig.ts +0 -571
- package/tsconfig.json +0 -14
- package/tsconfig.lib.json +0 -18
- package/tsconfig.spec.json +0 -20
- package/vite.config.ts +0 -24
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { validateAndMergeParsedConfigs } from './validateAndMergeParsedConfigs';
|
|
2
|
-
|
|
3
|
-
describe('validateAndMergeParsedConfigs', () => {
|
|
4
|
-
it('merges configs correctly', () => {
|
|
5
|
-
const result = validateAndMergeParsedConfigs({
|
|
6
|
-
unmanagedNonScalarResolvers: {
|
|
7
|
-
User: 'userResolvers#User as UserResolver',
|
|
8
|
-
},
|
|
9
|
-
parsedGraphQLSchemaMeta: {
|
|
10
|
-
userDefinedSchemaTypeMap: {
|
|
11
|
-
query: {},
|
|
12
|
-
mutation: {},
|
|
13
|
-
subscription: {},
|
|
14
|
-
interface: {},
|
|
15
|
-
union: {},
|
|
16
|
-
enum: {},
|
|
17
|
-
object: {
|
|
18
|
-
User: {
|
|
19
|
-
'src/schema/user': {
|
|
20
|
-
moduleName: 'user',
|
|
21
|
-
schemaType: 'User',
|
|
22
|
-
normalizedResolverName: {
|
|
23
|
-
base: 'User',
|
|
24
|
-
withModule: 'user.User',
|
|
25
|
-
},
|
|
26
|
-
fieldsToPick: [],
|
|
27
|
-
relativePathFromBaseToModule: ['user'],
|
|
28
|
-
relativePathToResolverTypesFile: '../types.generated.ts',
|
|
29
|
-
resolverFile: {
|
|
30
|
-
name: 'User',
|
|
31
|
-
path: 'user/User.ts',
|
|
32
|
-
isOnFilesystem: false,
|
|
33
|
-
},
|
|
34
|
-
typeNamedImport: () => 'User',
|
|
35
|
-
typeString: () => 'UserResolver',
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
scalar: {
|
|
40
|
-
DateTime: {
|
|
41
|
-
moduleName: 'base',
|
|
42
|
-
schemaType: 'DateTime',
|
|
43
|
-
typeString: () => 'DateTimeResolver',
|
|
44
|
-
typeNamedImport: () => 'DateTimeResolver',
|
|
45
|
-
resolverFile: {
|
|
46
|
-
name: 'DateTime',
|
|
47
|
-
path: 'base/DateTime.ts',
|
|
48
|
-
isOnFilesystem: false,
|
|
49
|
-
},
|
|
50
|
-
relativePathToResolverTypesFile: '../types.generated.ts',
|
|
51
|
-
relativePathFromBaseToModule: ['./DateTime'],
|
|
52
|
-
normalizedResolverName: {
|
|
53
|
-
base: 'DateTime',
|
|
54
|
-
withModule: 'base.DateTime',
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
pluginsConfig: {
|
|
60
|
-
defaultTypeMappers: {
|
|
61
|
-
User: './user/schema.mappers#UserMapper',
|
|
62
|
-
},
|
|
63
|
-
defaultScalarTypesMap: {
|
|
64
|
-
DateTime: 'string',
|
|
65
|
-
},
|
|
66
|
-
scalarsModuleResolvers: {
|
|
67
|
-
DateTime: '~graphql-scalars#DateTimeResolver',
|
|
68
|
-
},
|
|
69
|
-
unmanagedScalarResolvers: {},
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
expect(result).toEqual({
|
|
75
|
-
unmanagedResolvers: {
|
|
76
|
-
User: 'userResolvers#User as UserResolver',
|
|
77
|
-
DateTime: '~graphql-scalars#DateTimeResolver',
|
|
78
|
-
},
|
|
79
|
-
scalarTypes: {
|
|
80
|
-
DateTime: 'string',
|
|
81
|
-
},
|
|
82
|
-
typeMappers: {
|
|
83
|
-
User: './user/schema.mappers#UserMapper',
|
|
84
|
-
},
|
|
85
|
-
userDefinedSchemaTypeMap: {
|
|
86
|
-
query: {},
|
|
87
|
-
mutation: {},
|
|
88
|
-
subscription: {},
|
|
89
|
-
interface: {},
|
|
90
|
-
union: {},
|
|
91
|
-
enum: {},
|
|
92
|
-
object: {
|
|
93
|
-
User: {
|
|
94
|
-
'src/schema/user': {
|
|
95
|
-
moduleName: 'user',
|
|
96
|
-
schemaType: 'User',
|
|
97
|
-
normalizedResolverName: {
|
|
98
|
-
base: 'User',
|
|
99
|
-
withModule: 'user.User',
|
|
100
|
-
},
|
|
101
|
-
fieldsToPick: [],
|
|
102
|
-
relativePathFromBaseToModule: ['user'],
|
|
103
|
-
relativePathToResolverTypesFile: '../types.generated.ts',
|
|
104
|
-
resolverFile: {
|
|
105
|
-
name: 'User',
|
|
106
|
-
path: 'user/User.ts',
|
|
107
|
-
isOnFilesystem: false,
|
|
108
|
-
},
|
|
109
|
-
typeNamedImport: expect.any(Function),
|
|
110
|
-
typeString: expect.any(Function),
|
|
111
|
-
},
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
scalar: {
|
|
115
|
-
DateTime: {
|
|
116
|
-
moduleName: 'base',
|
|
117
|
-
schemaType: 'DateTime',
|
|
118
|
-
typeString: expect.any(Function),
|
|
119
|
-
typeNamedImport: expect.any(Function),
|
|
120
|
-
resolverFile: {
|
|
121
|
-
name: 'DateTime',
|
|
122
|
-
path: 'base/DateTime.ts',
|
|
123
|
-
isOnFilesystem: false,
|
|
124
|
-
},
|
|
125
|
-
relativePathToResolverTypesFile: '../types.generated.ts',
|
|
126
|
-
relativePathFromBaseToModule: ['./DateTime'],
|
|
127
|
-
normalizedResolverName: {
|
|
128
|
-
base: 'DateTime',
|
|
129
|
-
withModule: 'base.DateTime',
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
},
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
it('throws error if input externalResolvers is used for scalars', () => {
|
|
138
|
-
expect(() =>
|
|
139
|
-
validateAndMergeParsedConfigs({
|
|
140
|
-
unmanagedNonScalarResolvers: {
|
|
141
|
-
DateTime: '~graphql-scalars#DateTimeResolver',
|
|
142
|
-
},
|
|
143
|
-
parsedGraphQLSchemaMeta: {
|
|
144
|
-
userDefinedSchemaTypeMap: {
|
|
145
|
-
query: {},
|
|
146
|
-
mutation: {},
|
|
147
|
-
subscription: {},
|
|
148
|
-
interface: {},
|
|
149
|
-
union: {},
|
|
150
|
-
enum: {},
|
|
151
|
-
object: {
|
|
152
|
-
User: {
|
|
153
|
-
'src/schema/user': {
|
|
154
|
-
moduleName: 'user',
|
|
155
|
-
schemaType: 'User',
|
|
156
|
-
normalizedResolverName: {
|
|
157
|
-
base: 'User',
|
|
158
|
-
withModule: 'user.User',
|
|
159
|
-
},
|
|
160
|
-
fieldsToPick: [],
|
|
161
|
-
relativePathFromBaseToModule: ['user'],
|
|
162
|
-
relativePathToResolverTypesFile: '../types.generated.ts',
|
|
163
|
-
resolverFile: {
|
|
164
|
-
name: 'User',
|
|
165
|
-
path: 'user/User.ts',
|
|
166
|
-
isOnFilesystem: false,
|
|
167
|
-
},
|
|
168
|
-
typeNamedImport: () => 'User',
|
|
169
|
-
typeString: () => 'UserResolver',
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
},
|
|
173
|
-
scalar: {
|
|
174
|
-
DateTime: {
|
|
175
|
-
moduleName: 'base',
|
|
176
|
-
schemaType: 'DateTime',
|
|
177
|
-
typeString: () => 'DateTimeResolver',
|
|
178
|
-
typeNamedImport: () => 'DateTimeResolver',
|
|
179
|
-
resolverFile: {
|
|
180
|
-
name: 'DateTime',
|
|
181
|
-
path: 'base/DateTime.ts',
|
|
182
|
-
isOnFilesystem: false,
|
|
183
|
-
},
|
|
184
|
-
relativePathToResolverTypesFile: '../types.generated.ts',
|
|
185
|
-
relativePathFromBaseToModule: ['./DateTime'],
|
|
186
|
-
normalizedResolverName: {
|
|
187
|
-
base: 'DateTime',
|
|
188
|
-
withModule: 'base.DateTime',
|
|
189
|
-
},
|
|
190
|
-
},
|
|
191
|
-
},
|
|
192
|
-
},
|
|
193
|
-
pluginsConfig: {
|
|
194
|
-
defaultTypeMappers: {
|
|
195
|
-
User: './user/schema.mappers#UserMapper',
|
|
196
|
-
},
|
|
197
|
-
defaultScalarTypesMap: {
|
|
198
|
-
DateTime: 'string',
|
|
199
|
-
},
|
|
200
|
-
scalarsModuleResolvers: {
|
|
201
|
-
DateTime: '~graphql-scalars#DateTimeResolver',
|
|
202
|
-
},
|
|
203
|
-
unmanagedScalarResolvers: {},
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
})
|
|
207
|
-
).toThrow(
|
|
208
|
-
'Validation - Scalar "DateTime" found in presetConfig.externalResolvers. Use presetConfig.scalarsOverrides to override scalar implementation and type. Remove "DateTime" from presetConfig.externalResolvers.'
|
|
209
|
-
);
|
|
210
|
-
});
|
|
211
|
-
});
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema/index.js';
|
|
2
|
-
import type {
|
|
3
|
-
ParsedPresetConfig,
|
|
4
|
-
ScalarsOverridesType,
|
|
5
|
-
} from '../validatePresetConfig/index.js';
|
|
6
|
-
import { fmt } from '../utils/index.js';
|
|
7
|
-
|
|
8
|
-
interface MergedConfig {
|
|
9
|
-
userDefinedSchemaTypeMap: ParsedGraphQLSchemaMeta['userDefinedSchemaTypeMap'];
|
|
10
|
-
scalarTypes: Record<string, ScalarsOverridesType>;
|
|
11
|
-
typeMappers: Record<string, string>;
|
|
12
|
-
/**
|
|
13
|
-
* Resolvers users explicitly wants to control i.e. unmanaged by server preset so no static analysis is run on these resolvers
|
|
14
|
-
* This is set by a few options:
|
|
15
|
-
* - config.externalResolvers: for non-scalar types
|
|
16
|
-
* - config.scalarsOverrides: for scalar types
|
|
17
|
-
* - external resolvers e.g. from `graphql-scalars` module
|
|
18
|
-
**/
|
|
19
|
-
unmanagedResolvers: Record<string, string>;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* validateAndMergeParsedConfigs is used to make sure all parsed configs do not incorrectly override each other.
|
|
24
|
-
* Use this to ensure there's only one way of doing something. e.g.
|
|
25
|
-
* - scalarsOverrides must be used over externalResolvers to override scalars
|
|
26
|
-
*/
|
|
27
|
-
export const validateAndMergeParsedConfigs = ({
|
|
28
|
-
unmanagedNonScalarResolvers,
|
|
29
|
-
parsedGraphQLSchemaMeta: {
|
|
30
|
-
userDefinedSchemaTypeMap,
|
|
31
|
-
pluginsConfig: {
|
|
32
|
-
scalarsModuleResolvers,
|
|
33
|
-
unmanagedScalarResolvers,
|
|
34
|
-
defaultScalarTypesMap,
|
|
35
|
-
defaultTypeMappers,
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
}: {
|
|
39
|
-
unmanagedNonScalarResolvers: ParsedPresetConfig['externalResolvers'];
|
|
40
|
-
parsedGraphQLSchemaMeta: ParsedGraphQLSchemaMeta;
|
|
41
|
-
}): MergedConfig => {
|
|
42
|
-
Object.keys(scalarsModuleResolvers).forEach((schemaType) => {
|
|
43
|
-
if (
|
|
44
|
-
// If the scalar is defined on the filesystem, it means user wants to use their custom definition.
|
|
45
|
-
// This means we should use it, instead of importing it from scalar module
|
|
46
|
-
userDefinedSchemaTypeMap.scalar[schemaType]?.resolverFile.isOnFilesystem
|
|
47
|
-
) {
|
|
48
|
-
delete scalarsModuleResolvers[schemaType];
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// By default, codegen doesn't generate types for enums
|
|
53
|
-
// This is great for the default codegen setup but it's not great for server preset - where we need to be able to import
|
|
54
|
-
// generated resolver types to fill in content for resolver files without needing to manually set up mappers/enumValues
|
|
55
|
-
// `schemaEnumTypeMappers` is the schema mappers for enums, which can be overriden by user's provided mapper types
|
|
56
|
-
const schemaEnumTypeMappers = Object.entries(
|
|
57
|
-
userDefinedSchemaTypeMap.enum
|
|
58
|
-
).reduce<Record<string, string>>(
|
|
59
|
-
(result, [enumTypename, { allowedValues }]) => {
|
|
60
|
-
result[enumTypename] = allowedValues.map((v) => `'${v}'`).join(' | ');
|
|
61
|
-
return result;
|
|
62
|
-
},
|
|
63
|
-
{}
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
Object.keys(unmanagedNonScalarResolvers).forEach((schemaType) => {
|
|
67
|
-
if (userDefinedSchemaTypeMap.scalar[schemaType]) {
|
|
68
|
-
throw new Error(
|
|
69
|
-
fmt.error(
|
|
70
|
-
`Scalar "${schemaType}" found in presetConfig.externalResolvers. Use presetConfig.scalarsOverrides to override scalar implementation and type. Remove "${schemaType}" from presetConfig.externalResolvers.`,
|
|
71
|
-
'Validation'
|
|
72
|
-
)
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
userDefinedSchemaTypeMap,
|
|
79
|
-
scalarTypes: {
|
|
80
|
-
...defaultScalarTypesMap,
|
|
81
|
-
},
|
|
82
|
-
typeMappers: {
|
|
83
|
-
...schemaEnumTypeMappers,
|
|
84
|
-
...defaultTypeMappers,
|
|
85
|
-
},
|
|
86
|
-
unmanagedResolvers: {
|
|
87
|
-
...unmanagedNonScalarResolvers,
|
|
88
|
-
...scalarsModuleResolvers,
|
|
89
|
-
...unmanagedScalarResolvers,
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './validatePresetConfig.js';
|