@eddeee888/gcg-typescript-resolver-files 0.16.0 → 0.18.0
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/CHANGELOG.md +816 -0
- package/DEVELOPMENT.md +49 -0
- package/LICENSE +21 -0
- package/README.md +3 -3
- package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.d.ts +2 -2
- package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +11 -17
- package/dist/addVirtualTypesFileToTsMorphProject/index.d.ts +1 -0
- package/dist/addVirtualTypesFileToTsMorphProject/index.js +1 -0
- package/{src → dist}/defineConfig.d.ts +1 -1
- package/{src → dist}/defineConfig.js +4 -10
- package/{src → dist}/generateResolverFiles/addExternalResolverImport.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/addExternalResolverImport.js +3 -8
- package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +9 -14
- package/{src → dist}/generateResolverFiles/addResolverMainFiles.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/addResolverMainFiles.js +11 -17
- package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js +6 -11
- package/{src → dist}/generateResolverFiles/generateResolverFiles.d.ts +1 -1
- package/dist/generateResolverFiles/generateResolverFiles.js +87 -0
- package/{src → dist}/generateResolverFiles/getImportStatementWithExpectedNamedImport.d.ts +1 -1
- package/dist/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +14 -0
- package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +1 -6
- package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.js +6 -11
- package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.js +6 -11
- package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.js +8 -14
- package/dist/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +3 -0
- package/{src → dist}/generateResolverFiles/handleGraphQLRootObjectTypeField.js +8 -13
- package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.js +6 -11
- package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.js +5 -10
- package/dist/generateResolverFiles/index.d.ts +2 -0
- package/dist/generateResolverFiles/index.js +1 -0
- package/{src → dist}/generateResolverFiles/postProcessFiles.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/postProcessFiles.js +24 -26
- package/{src → dist}/generateResolverFiles/types.d.ts +6 -6
- package/dist/generateResolverFiles/types.js +1 -0
- package/{src → dist}/generateResolverFiles/visitNamedType.d.ts +2 -2
- package/{src → dist}/generateResolverFiles/visitNamedType.js +3 -8
- package/dist/generateTypeDefsFiles/generateTypeDefsContent.js +7 -0
- package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.d.ts +3 -3
- package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.js +7 -13
- package/dist/generateTypeDefsFiles/index.d.ts +1 -0
- package/dist/generateTypeDefsFiles/index.js +1 -0
- package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -3
- package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +17 -22
- package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js +5 -10
- package/dist/getGraphQLObjectTypeResolversToGenerate/index.d.ts +1 -0
- package/dist/getGraphQLObjectTypeResolversToGenerate/index.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/normalizeAddConfigPath/index.d.ts +1 -0
- package/dist/normalizeAddConfigPath/index.js +1 -0
- package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.d.ts +1 -1
- package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.js +2 -8
- package/{src → dist}/parseGraphQLSchema/index.d.ts +2 -2
- package/dist/parseGraphQLSchema/index.js +1 -0
- package/{src → dist}/parseGraphQLSchema/normalizeResolverName.d.ts +1 -1
- package/{src → dist}/parseGraphQLSchema/normalizeResolverName.js +1 -6
- package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.d.ts +5 -5
- package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.js +43 -50
- package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.d.ts +2 -2
- package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.js +4 -10
- package/dist/parseSources/index.d.ts +1 -0
- package/dist/parseSources/index.js +1 -0
- package/{src → dist}/parseSources/parseSources.d.ts +1 -1
- package/{src → dist}/parseSources/parseSources.js +2 -7
- package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -2
- package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.js +15 -21
- package/dist/parseTypeMappers/index.d.ts +1 -0
- package/dist/parseTypeMappers/index.js +1 -0
- package/{src → dist}/parseTypeMappers/parseTypeMappers.d.ts +2 -2
- package/dist/parseTypeMappers/parseTypeMappers.js +20 -0
- package/{src → dist}/preset.d.ts +1 -1
- package/dist/preset.js +214 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/dist/utils/cwd.js +7 -0
- package/dist/utils/fmt.js +15 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.js +12 -0
- package/{src → dist}/utils/isMatchResolverNamePattern.js +3 -9
- package/dist/utils/isNativeNamedType.js +13 -0
- package/dist/utils/isRootObjectType.js +3 -0
- package/{src → dist}/utils/isWhitelistedModule.js +1 -6
- package/{src → dist}/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +13 -0
- package/dist/utils/normalizeImportExtension.js +9 -0
- package/dist/utils/normalizeRelativePath.js +6 -0
- package/{src → dist}/utils/parseLocationForWhitelistedModule.d.ts +1 -1
- package/dist/utils/parseLocationForWhitelistedModule.js +17 -0
- package/{src → dist}/utils/printImportLine.d.ts +1 -1
- package/{src → dist}/utils/printImportLine.js +3 -7
- package/dist/utils/relativeModulePath.js +6 -0
- package/dist/validateAndMergeParsedConfigs/index.d.ts +1 -0
- package/dist/validateAndMergeParsedConfigs/index.js +1 -0
- package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.d.ts +2 -2
- package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js +16 -13
- package/dist/validatePresetConfig/index.d.ts +1 -0
- package/dist/validatePresetConfig/index.js +1 -0
- package/{src → dist}/validatePresetConfig/validatePresetConfig.d.ts +2 -2
- package/{src → dist}/validatePresetConfig/validatePresetConfig.js +29 -36
- package/eslint.config.mjs +22 -0
- package/package.json +25 -18
- package/project.json +8 -0
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.ts +109 -0
- package/src/addVirtualTypesFileToTsMorphProject/index.ts +1 -0
- package/src/defineConfig.spec.ts +76 -0
- package/src/defineConfig.ts +37 -0
- package/src/generateResolverFiles/addExternalResolverImport.ts +185 -0
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.spec.ts +1174 -0
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.ts +144 -0
- package/src/generateResolverFiles/addResolverMainFiles.ts +343 -0
- package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.ts +51 -0
- package/src/generateResolverFiles/generateResolverFiles.ts +148 -0
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.spec.ts +127 -0
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.ts +25 -0
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.spec.ts +147 -0
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.ts +34 -0
- package/src/generateResolverFiles/handleGraphQLEnumType.ts +100 -0
- package/src/generateResolverFiles/handleGraphQLInterfaceType.ts +70 -0
- package/src/generateResolverFiles/handleGraphQLObjectType.ts +171 -0
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts +105 -0
- package/src/generateResolverFiles/handleGraphQLScalarType.ts +81 -0
- package/src/generateResolverFiles/handleGraphQLUnionType.ts +68 -0
- package/src/generateResolverFiles/index.ts +2 -0
- package/src/generateResolverFiles/postProcessFiles.ts +287 -0
- package/src/generateResolverFiles/types.ts +203 -0
- package/src/generateResolverFiles/visitNamedType.ts +66 -0
- package/src/generateTypeDefsFiles/generateTypeDefsContent.ts +15 -0
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.ts +100 -0
- package/src/generateTypeDefsFiles/index.ts +1 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts +361 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.spec.ts +115 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.ts +88 -0
- package/src/getGraphQLObjectTypeResolversToGenerate/index.ts +1 -0
- package/src/index.ts +3 -0
- package/src/normalizeAddConfigPath/index.ts +1 -0
- package/src/normalizeAddConfigPath/normalizeAddConfigPath.ts +29 -0
- package/src/parseGraphQLSchema/index.ts +2 -0
- package/src/parseGraphQLSchema/normalizeResolverName.ts +28 -0
- package/src/parseGraphQLSchema/parseGraphQLSchema.ts +531 -0
- package/src/parseGraphQLSchema/parseLocationForOutputDir.ts +76 -0
- package/src/parseSources/index.ts +1 -0
- package/src/parseSources/parseSources.ts +83 -0
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.spec.ts +789 -0
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts +197 -0
- package/src/parseTypeMappers/index.ts +1 -0
- package/src/parseTypeMappers/parseTypeMappers.ts +75 -0
- package/src/preset.ts +317 -0
- package/src/utils/cwd.ts +8 -0
- package/src/utils/fmt.ts +16 -0
- package/src/utils/index.ts +12 -0
- package/src/utils/isMatchResolverNamePattern.ts +27 -0
- package/src/utils/isNativeNamedType.ts +21 -0
- package/src/utils/isRootObjectType.ts +8 -0
- package/src/utils/isWhitelistedModule.spec.ts +71 -0
- package/src/utils/isWhitelistedModule.ts +21 -0
- package/src/utils/logger.ts +14 -0
- package/src/utils/normalizeImportExtension.spec.ts +42 -0
- package/src/utils/normalizeImportExtension.ts +16 -0
- package/src/utils/normalizeRelativePath.ts +6 -0
- package/src/utils/parseLocationForWhitelistedModule.spec.ts +130 -0
- package/src/utils/parseLocationForWhitelistedModule.ts +38 -0
- package/src/utils/printImportLine.spec.ts +150 -0
- package/src/utils/printImportLine.ts +78 -0
- package/src/utils/relativeModulePath.ts +7 -0
- package/src/validateAndMergeParsedConfigs/index.ts +1 -0
- package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.spec.ts +211 -0
- package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.ts +92 -0
- package/src/validatePresetConfig/index.ts +1 -0
- package/src/validatePresetConfig/validatePresetConfig.spec.ts +706 -0
- package/src/validatePresetConfig/validatePresetConfig.ts +571 -0
- package/tsconfig.json +14 -0
- package/tsconfig.lib.json +18 -0
- package/tsconfig.spec.json +20 -0
- package/vite.config.ts +24 -0
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +0 -1
- package/src/addVirtualTypesFileToTsMorphProject/index.d.ts +0 -1
- package/src/addVirtualTypesFileToTsMorphProject/index.js +0 -5
- package/src/addVirtualTypesFileToTsMorphProject/index.js.map +0 -1
- package/src/defineConfig.js.map +0 -1
- package/src/generateResolverFiles/addExternalResolverImport.js.map +0 -1
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +0 -1
- package/src/generateResolverFiles/addResolverMainFiles.js.map +0 -1
- package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js.map +0 -1
- package/src/generateResolverFiles/generateResolverFiles.js +0 -54
- package/src/generateResolverFiles/generateResolverFiles.js.map +0 -1
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +0 -20
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js.map +0 -1
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLEnumType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLObjectType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +0 -3
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLScalarType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLUnionType.js.map +0 -1
- package/src/generateResolverFiles/index.d.ts +0 -2
- package/src/generateResolverFiles/index.js +0 -6
- package/src/generateResolverFiles/index.js.map +0 -1
- package/src/generateResolverFiles/postProcessFiles.js.map +0 -1
- package/src/generateResolverFiles/types.js +0 -3
- package/src/generateResolverFiles/types.js.map +0 -1
- package/src/generateResolverFiles/visitNamedType.js.map +0 -1
- package/src/generateTypeDefsFiles/generateTypeDefsContent.js +0 -12
- package/src/generateTypeDefsFiles/generateTypeDefsContent.js.map +0 -1
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.js.map +0 -1
- package/src/generateTypeDefsFiles/index.d.ts +0 -1
- package/src/generateTypeDefsFiles/index.js +0 -5
- package/src/generateTypeDefsFiles/index.js.map +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/index.d.ts +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/index.js +0 -5
- package/src/getGraphQLObjectTypeResolversToGenerate/index.js.map +0 -1
- package/src/index.d.ts +0 -3
- package/src/index.js +0 -10
- package/src/index.js.map +0 -1
- package/src/normalizeAddConfigPath/index.d.ts +0 -1
- package/src/normalizeAddConfigPath/index.js +0 -5
- package/src/normalizeAddConfigPath/index.js.map +0 -1
- package/src/normalizeAddConfigPath/normalizeAddConfigPath.js.map +0 -1
- package/src/parseGraphQLSchema/index.js +0 -5
- package/src/parseGraphQLSchema/index.js.map +0 -1
- package/src/parseGraphQLSchema/normalizeResolverName.js.map +0 -1
- package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +0 -1
- package/src/parseGraphQLSchema/parseLocationForOutputDir.js.map +0 -1
- package/src/parseSources/index.d.ts +0 -1
- package/src/parseSources/index.js +0 -5
- package/src/parseSources/index.js.map +0 -1
- package/src/parseSources/parseSources.js.map +0 -1
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +0 -1
- package/src/parseTypeMappers/index.d.ts +0 -1
- package/src/parseTypeMappers/index.js +0 -5
- package/src/parseTypeMappers/index.js.map +0 -1
- package/src/parseTypeMappers/parseTypeMappers.js +0 -26
- package/src/parseTypeMappers/parseTypeMappers.js.map +0 -1
- package/src/preset.js +0 -214
- package/src/preset.js.map +0 -1
- package/src/utils/cwd.js +0 -13
- package/src/utils/cwd.js.map +0 -1
- package/src/utils/fmt.js +0 -19
- package/src/utils/fmt.js.map +0 -1
- package/src/utils/index.d.ts +0 -12
- package/src/utils/index.js +0 -16
- package/src/utils/index.js.map +0 -1
- package/src/utils/isMatchResolverNamePattern.js.map +0 -1
- package/src/utils/isNativeNamedType.js +0 -18
- package/src/utils/isNativeNamedType.js.map +0 -1
- package/src/utils/isRootObjectType.js +0 -8
- package/src/utils/isRootObjectType.js.map +0 -1
- package/src/utils/isWhitelistedModule.js.map +0 -1
- package/src/utils/logger.js +0 -17
- package/src/utils/logger.js.map +0 -1
- package/src/utils/normalizeImportExtension.js +0 -13
- package/src/utils/normalizeImportExtension.js.map +0 -1
- package/src/utils/normalizeRelativePath.js +0 -11
- package/src/utils/normalizeRelativePath.js.map +0 -1
- package/src/utils/parseLocationForWhitelistedModule.js +0 -22
- package/src/utils/parseLocationForWhitelistedModule.js.map +0 -1
- package/src/utils/printImportLine.js.map +0 -1
- package/src/utils/relativeModulePath.js +0 -12
- package/src/utils/relativeModulePath.js.map +0 -1
- package/src/validateAndMergeParsedConfigs/index.d.ts +0 -1
- package/src/validateAndMergeParsedConfigs/index.js +0 -5
- package/src/validateAndMergeParsedConfigs/index.js.map +0 -1
- package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js.map +0 -1
- package/src/validatePresetConfig/index.d.ts +0 -1
- package/src/validatePresetConfig/index.js +0 -5
- package/src/validatePresetConfig/index.js.map +0 -1
- package/src/validatePresetConfig/validatePresetConfig.js.map +0 -1
- /package/{src → dist}/generateTypeDefsFiles/generateTypeDefsContent.d.ts +0 -0
- /package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.d.ts +0 -0
- /package/{src → dist}/utils/cwd.d.ts +0 -0
- /package/{src → dist}/utils/fmt.d.ts +0 -0
- /package/{src → dist}/utils/isMatchResolverNamePattern.d.ts +0 -0
- /package/{src → dist}/utils/isNativeNamedType.d.ts +0 -0
- /package/{src → dist}/utils/isRootObjectType.d.ts +0 -0
- /package/{src → dist}/utils/isWhitelistedModule.d.ts +0 -0
- /package/{src → dist}/utils/normalizeImportExtension.d.ts +0 -0
- /package/{src → dist}/utils/normalizeRelativePath.d.ts +0 -0
- /package/{src → dist}/utils/relativeModulePath.d.ts +0 -0
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateAndMergeParsedConfigs = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
1
|
+
import { fmt } from '../utils/index.js';
|
|
5
2
|
/**
|
|
6
3
|
* validateAndMergeParsedConfigs is used to make sure all parsed configs do not incorrectly override each other.
|
|
7
4
|
* Use this to ensure there's only one way of doing something. e.g.
|
|
8
5
|
* - scalarsOverrides must be used over externalResolvers to override scalars
|
|
9
6
|
*/
|
|
10
|
-
const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGraphQLSchemaMeta: { userDefinedSchemaTypeMap, pluginsConfig: { scalarsModuleResolvers, unmanagedScalarResolvers, defaultScalarTypesMap, defaultTypeMappers, }, }, }) => {
|
|
7
|
+
export const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGraphQLSchemaMeta: { userDefinedSchemaTypeMap, pluginsConfig: { scalarsModuleResolvers, unmanagedScalarResolvers, defaultScalarTypesMap, defaultTypeMappers, }, }, }) => {
|
|
11
8
|
Object.keys(scalarsModuleResolvers).forEach((schemaType) => {
|
|
12
|
-
var _a;
|
|
13
9
|
if (
|
|
14
10
|
// If the scalar is defined on the filesystem, it means user wants to use their custom definition.
|
|
15
11
|
// This means we should use it, instead of importing it from scalar module
|
|
16
|
-
|
|
12
|
+
userDefinedSchemaTypeMap.scalar[schemaType]?.resolverFile.isOnFilesystem) {
|
|
17
13
|
delete scalarsModuleResolvers[schemaType];
|
|
18
14
|
}
|
|
19
15
|
});
|
|
@@ -27,15 +23,22 @@ const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGrap
|
|
|
27
23
|
}, {});
|
|
28
24
|
Object.keys(unmanagedNonScalarResolvers).forEach((schemaType) => {
|
|
29
25
|
if (userDefinedSchemaTypeMap.scalar[schemaType]) {
|
|
30
|
-
throw new Error(
|
|
26
|
+
throw new Error(fmt.error(`Scalar "${schemaType}" found in presetConfig.externalResolvers. Use presetConfig.scalarsOverrides to override scalar implementation and type. Remove "${schemaType}" from presetConfig.externalResolvers.`, 'Validation'));
|
|
31
27
|
}
|
|
32
28
|
});
|
|
33
29
|
return {
|
|
34
30
|
userDefinedSchemaTypeMap,
|
|
35
|
-
scalarTypes:
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
scalarTypes: {
|
|
32
|
+
...defaultScalarTypesMap,
|
|
33
|
+
},
|
|
34
|
+
typeMappers: {
|
|
35
|
+
...schemaEnumTypeMappers,
|
|
36
|
+
...defaultTypeMappers,
|
|
37
|
+
},
|
|
38
|
+
unmanagedResolvers: {
|
|
39
|
+
...unmanagedNonScalarResolvers,
|
|
40
|
+
...scalarsModuleResolvers,
|
|
41
|
+
...unmanagedScalarResolvers,
|
|
42
|
+
},
|
|
38
43
|
};
|
|
39
44
|
};
|
|
40
|
-
exports.validateAndMergeParsedConfigs = validateAndMergeParsedConfigs;
|
|
41
|
-
//# sourceMappingURL=validateAndMergeParsedConfigs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validatePresetConfig.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validatePresetConfig.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { AddPluginConfig } from '@graphql-codegen/add
|
|
1
|
+
import type { AddPluginConfig } from '@graphql-codegen/add';
|
|
2
2
|
import type * as typeScriptPlugin from '@graphql-codegen/typescript';
|
|
3
3
|
import type * as typeScriptResolversPlugin from '@graphql-codegen/typescript-resolvers';
|
|
4
4
|
import type * as schemaAstPlugin from '@graphql-codegen/schema-ast';
|
|
5
5
|
import type { ProjectOptions } from 'ts-morph';
|
|
6
|
-
import { type ImportExtension } from '../utils';
|
|
6
|
+
import { type ImportExtension } from '../utils/index.js';
|
|
7
7
|
type ParsedTypesPluginsConfig = Omit<typeScriptPlugin.TypeScriptPluginConfig & typeScriptResolversPlugin.TypeScriptResolversPluginConfig, 'scalars' | 'emitLegacyCommonJSImports' | 'importExtension'>;
|
|
8
8
|
type ConfigMode = 'merged' | 'modules';
|
|
9
9
|
type ResolverMainFileMode = 'merged' | 'modules';
|
|
@@ -1,75 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const path = tslib_1.__importStar(require("path"));
|
|
6
|
-
const fs = tslib_1.__importStar(require("fs"));
|
|
7
|
-
const utils_1 = require("../utils");
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import { cwd, fmt, logger, normalizeImportExtension, } from '../utils/index.js';
|
|
8
4
|
const defaultResolverRelativeTargetDirMap = {
|
|
9
5
|
modules: 'resolvers',
|
|
10
6
|
merged: '',
|
|
11
7
|
};
|
|
12
8
|
const defaultTypeDefsFilePath = './typeDefs.generated.ts';
|
|
13
9
|
const defaultScalarsModule = 'graphql-scalars';
|
|
14
|
-
const validatePresetConfig = ({ add, resolverTypesPath = './types.generated.ts', resolverRelativeTargetDir, resolverMainFile = 'resolvers.generated.ts', resolverMainFileMode = 'merged', resolverGeneration = 'recommended', typeDefsFilePath = defaultTypeDefsFilePath, typeDefsFileMode: inputTypeDefsFileMode = 'merged', mappersRelativeTargetDir = './', mappersFileExtension = '.mappers.ts', mappersSuffix = 'Mapper', moduleNamingMode = 'last', mergeSchema, scalarsModule = 'graphql-scalars', scalarsOverrides = {}, mode = 'modules', whitelistedModules, blacklistedModules, externalResolvers = {}, typesPluginsConfig = {}, tsConfigFilePath = './tsconfig.json', fixObjectTypeResolvers = 'fast', emitLegacyCommonJSImports, importExtension, }, baseConfig) => {
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const finalImportExtension = importExtension !== null && importExtension !== void 0 ? importExtension : baseImportExtension;
|
|
10
|
+
export const validatePresetConfig = ({ add, resolverTypesPath = './types.generated.ts', resolverRelativeTargetDir, resolverMainFile = 'resolvers.generated.ts', resolverMainFileMode = 'merged', resolverGeneration = 'recommended', typeDefsFilePath = defaultTypeDefsFilePath, typeDefsFileMode: inputTypeDefsFileMode = 'merged', mappersRelativeTargetDir = './', mappersFileExtension = '.mappers.ts', mappersSuffix = 'Mapper', moduleNamingMode = 'last', mergeSchema, scalarsModule = 'graphql-scalars', scalarsOverrides = {}, mode = 'modules', whitelistedModules, blacklistedModules, externalResolvers = {}, typesPluginsConfig = {}, tsConfigFilePath = './tsconfig.json', fixObjectTypeResolvers = 'fast', emitLegacyCommonJSImports, importExtension, }, baseConfig) => {
|
|
11
|
+
const finalEmitLegacyCommonJSImports = emitLegacyCommonJSImports ?? baseConfig?.emitLegacyCommonJSImports ?? true;
|
|
12
|
+
const baseImportExtension = baseConfig?.importExtension || undefined;
|
|
13
|
+
const finalImportExtension = importExtension ?? baseImportExtension;
|
|
19
14
|
if (mode !== 'merged' && mode !== 'modules') {
|
|
20
|
-
throw new Error(
|
|
15
|
+
throw new Error(fmt.error('presetConfig.mode must be "merged" or "modules" (default is "modules")', 'Validation'));
|
|
21
16
|
}
|
|
22
17
|
if (typeof fixObjectTypeResolvers !== 'object' &&
|
|
23
18
|
fixObjectTypeResolvers !== 'smart' &&
|
|
24
19
|
fixObjectTypeResolvers !== 'fast' &&
|
|
25
20
|
fixObjectTypeResolvers !== 'disabled') {
|
|
26
|
-
throw new Error(
|
|
21
|
+
throw new Error(fmt.error('presetConfig.fixObjectTypeResolvers must be an object, "smart", "fast" or "disabled" (default is "fast")', 'Validation'));
|
|
27
22
|
}
|
|
28
23
|
if (typeof resolverGeneration !== 'object' &&
|
|
29
24
|
resolverGeneration !== 'disabled' &&
|
|
30
25
|
resolverGeneration !== 'recommended' &&
|
|
31
26
|
resolverGeneration !== 'minimal' &&
|
|
32
27
|
resolverGeneration !== 'all') {
|
|
33
|
-
throw new Error(
|
|
28
|
+
throw new Error(fmt.error('presetConfig.resolverGeneration must be an object, "disabled", "recommended", "minimal" or "all" (default is "recommended")', 'Validation'));
|
|
34
29
|
}
|
|
35
30
|
if (resolverMainFileMode !== 'merged' && resolverMainFileMode !== 'modules') {
|
|
36
|
-
throw new Error(
|
|
31
|
+
throw new Error(fmt.error('presetConfig.resolverMainFileMode must be "merged" or "modules" (default is "merged")', 'Validation'));
|
|
37
32
|
}
|
|
38
33
|
let typeDefsFileMode = inputTypeDefsFileMode;
|
|
39
34
|
if (mode === 'merged') {
|
|
40
35
|
// If mode is `merged`, `typeDefsFileMode` is also `merged` because there's no whitelisted or modules concepts
|
|
41
36
|
typeDefsFileMode = 'merged';
|
|
42
|
-
|
|
37
|
+
logger.warn(`presetConfig.typeDefsFileMode has automatically been set to "merged" because presetConfig.mode is "merged"`);
|
|
43
38
|
}
|
|
44
39
|
if (typeDefsFileMode !== 'merged' &&
|
|
45
40
|
typeDefsFileMode !== 'modules' &&
|
|
46
41
|
typeDefsFileMode !== 'mergedWhitelisted') {
|
|
47
|
-
throw new Error(
|
|
42
|
+
throw new Error(fmt.error('presetConfig.typeDefsFileMode must be "merged", "mergedWhitelisted" or "modules" (default is "merged")', 'Validation'));
|
|
48
43
|
}
|
|
49
44
|
const finalModuleNamingMode = parseModuleNamingMode(moduleNamingMode);
|
|
50
45
|
if (!resolverTypesPath) {
|
|
51
|
-
throw new Error(
|
|
46
|
+
throw new Error(fmt.error('presetConfig.resolverTypesPath is required', 'Validation'));
|
|
52
47
|
}
|
|
53
48
|
const finalResolverRelativeTargetDir = resolverRelativeTargetDir === undefined
|
|
54
49
|
? defaultResolverRelativeTargetDirMap[mode]
|
|
55
50
|
: resolverRelativeTargetDir;
|
|
56
51
|
if (path.extname(resolverMainFile) === '') {
|
|
57
|
-
throw new Error(
|
|
52
|
+
throw new Error(fmt.error('presetConfig.mainFile must be a valid file name', 'Validation'));
|
|
58
53
|
}
|
|
59
54
|
if (whitelistedModules) {
|
|
60
55
|
if (!Array.isArray(whitelistedModules)) {
|
|
61
|
-
throw new Error(
|
|
56
|
+
throw new Error(fmt.error('presetConfig.whitelistedModules must be an array if provided', 'Validation'));
|
|
62
57
|
}
|
|
63
58
|
if (mode !== 'modules') {
|
|
64
|
-
throw new Error(
|
|
59
|
+
throw new Error(fmt.error('presetConfig.whitelistedModules can only be used with presetConfig.mode == "modules"', 'Validation'));
|
|
65
60
|
}
|
|
66
61
|
}
|
|
67
62
|
if (blacklistedModules) {
|
|
68
63
|
if (!Array.isArray(blacklistedModules)) {
|
|
69
|
-
throw new Error(
|
|
64
|
+
throw new Error(fmt.error('presetConfig.blacklistedModules must be an array if provided', 'Validation'));
|
|
70
65
|
}
|
|
71
66
|
if (mode !== 'modules') {
|
|
72
|
-
throw new Error(
|
|
67
|
+
throw new Error(fmt.error('presetConfig.blacklistedModules can only be used with presetConfig.mode == "modules"', 'Validation'));
|
|
73
68
|
}
|
|
74
69
|
}
|
|
75
70
|
const validatedTypesPluginsConfig = validateTypesPluginsConfig(typesPluginsConfig);
|
|
@@ -85,16 +80,16 @@ const validatePresetConfig = ({ add, resolverTypesPath = './types.generated.ts',
|
|
|
85
80
|
skipAddingFilesFromTsConfig: true, // avoid long startup time by NOT loading files included by tsconfig.json. We only use this virtually anyways so we don't need all the files
|
|
86
81
|
};
|
|
87
82
|
if (tsConfigFilePath) {
|
|
88
|
-
const absoluteTsConfigFilePath = path.join(
|
|
83
|
+
const absoluteTsConfigFilePath = path.join(cwd(), tsConfigFilePath);
|
|
89
84
|
if (fs.existsSync(absoluteTsConfigFilePath)) {
|
|
90
85
|
tsMorphProjectOptions.tsConfigFilePath = absoluteTsConfigFilePath;
|
|
91
86
|
}
|
|
92
87
|
else {
|
|
93
|
-
|
|
88
|
+
logger.warn(`Unable to find TypeScript config at ${absoluteTsConfigFilePath}. Use presetConfig.tsConfigFilePath to set a custom value. Otherwise, type analysis may not work correctly.`);
|
|
94
89
|
}
|
|
95
90
|
}
|
|
96
91
|
const validatedAdd = validateAddOption(add);
|
|
97
|
-
const normalizedImportExtension =
|
|
92
|
+
const normalizedImportExtension = normalizeImportExtension(finalImportExtension, finalEmitLegacyCommonJSImports);
|
|
98
93
|
return {
|
|
99
94
|
add: validatedAdd,
|
|
100
95
|
resolverTypesPath,
|
|
@@ -122,18 +117,17 @@ const validatePresetConfig = ({ add, resolverTypesPath = './types.generated.ts',
|
|
|
122
117
|
importExtension: normalizedImportExtension,
|
|
123
118
|
};
|
|
124
119
|
};
|
|
125
|
-
exports.validatePresetConfig = validatePresetConfig;
|
|
126
120
|
const validateTypesPluginsConfig = (config) => {
|
|
127
121
|
if ('scalars' in config) {
|
|
128
|
-
throw new Error(
|
|
122
|
+
throw new Error(fmt.error('presetConfig.typesPluginsConfig.scalars is not supported. Use presetConfig.scalarsOverrides instead.', 'Validation'));
|
|
129
123
|
}
|
|
130
124
|
if ('emitLegacyCommonJSImports' in config) {
|
|
131
|
-
throw new Error(
|
|
125
|
+
throw new Error(fmt.error('presetConfig.typesPluginsConfig.emitLegacyCommonJSImports is not supported. Use presetConfig.emitLegacyCommonJSImports instead.', 'Validation'));
|
|
132
126
|
}
|
|
133
127
|
if ('importExtension' in config) {
|
|
134
|
-
throw new Error(
|
|
128
|
+
throw new Error(fmt.error('presetConfig.typesPluginsConfig.importExtension is not supported. Use presetConfig.importExtension instead.', 'Validation'));
|
|
135
129
|
}
|
|
136
|
-
const { scalars: _, emitLegacyCommonJSImports: __
|
|
130
|
+
const { scalars: _, emitLegacyCommonJSImports: __, ...rest } = config;
|
|
137
131
|
return rest;
|
|
138
132
|
};
|
|
139
133
|
const parseResolverGeneration = (resolverGeneration) => {
|
|
@@ -219,10 +213,10 @@ const validateAddOption = (add) => {
|
|
|
219
213
|
}
|
|
220
214
|
Object.entries(add).forEach(([_, pluginConfig]) => {
|
|
221
215
|
if (typeof pluginConfig !== 'object' || pluginConfig === null) {
|
|
222
|
-
throw new Error(
|
|
216
|
+
throw new Error(fmt.error('presetConfig.add must be an object', 'Validation'));
|
|
223
217
|
}
|
|
224
218
|
if (!('content' in pluginConfig)) {
|
|
225
|
-
throw new Error(
|
|
219
|
+
throw new Error(fmt.error('presetConfig.add must contain a "content" property', 'Validation'));
|
|
226
220
|
}
|
|
227
221
|
});
|
|
228
222
|
// TODO: a bit hacky here but what's a good way to coerce this type? 🤔
|
|
@@ -269,6 +263,5 @@ const parseModuleNamingMode = (moduleNamingMode) => {
|
|
|
269
263
|
if (typeof moduleNamingMode === 'number') {
|
|
270
264
|
return moduleNamingMode;
|
|
271
265
|
}
|
|
272
|
-
throw new Error(
|
|
266
|
+
throw new Error(fmt.error('presetConfig.moduleNamingMode must be "first" or "last" or a number (default is "last")', 'Validation'));
|
|
273
267
|
};
|
|
274
|
-
//# sourceMappingURL=validatePresetConfig.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import baseConfig from '../../eslint.config.mjs';
|
|
2
|
+
|
|
3
|
+
export default [
|
|
4
|
+
...baseConfig,
|
|
5
|
+
{
|
|
6
|
+
files: ['**/*.json'],
|
|
7
|
+
rules: {
|
|
8
|
+
'@nx/dependency-checks': [
|
|
9
|
+
'error',
|
|
10
|
+
{
|
|
11
|
+
ignoredFiles: [
|
|
12
|
+
'{projectRoot}/eslint.config.mjs',
|
|
13
|
+
'{projectRoot}/vite.config.ts',
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
languageOptions: {
|
|
19
|
+
parser: await import('jsonc-eslint-parser'),
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eddeee888/gcg-typescript-resolver-files",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/eddeee888/graphql-code-generator-plugins.git",
|
|
@@ -23,26 +23,33 @@
|
|
|
23
23
|
],
|
|
24
24
|
"author": "Eddy Nguyen <ch@eddeee888.me>",
|
|
25
25
|
"license": "MIT",
|
|
26
|
+
"type": "module",
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"module": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"exports": {
|
|
31
|
+
"./package.json": "./package.json",
|
|
32
|
+
".": {
|
|
33
|
+
"@workspace/source": "./src/index.ts",
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"import": "./dist/index.js",
|
|
36
|
+
"default": "./dist/index.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
26
39
|
"peerDependencies": {
|
|
27
|
-
"graphql": "^15.0.0 || ^16.0.0"
|
|
40
|
+
"graphql": "^15.0.0 || ^16.0.0 || ^17.0.0"
|
|
28
41
|
},
|
|
29
42
|
"dependencies": {
|
|
30
|
-
"@
|
|
31
|
-
"@graphql-codegen/
|
|
32
|
-
"@graphql-codegen/
|
|
33
|
-
"@graphql-codegen/
|
|
34
|
-
"@graphql-codegen/typescript": "^6.
|
|
35
|
-
"@graphql-
|
|
36
|
-
"@graphql-tools/
|
|
37
|
-
"@graphql-tools/utils": "^11.0.1",
|
|
43
|
+
"@graphql-codegen/add": "^7.1.0",
|
|
44
|
+
"@graphql-codegen/plugin-helpers": "^7.1.0",
|
|
45
|
+
"@graphql-codegen/schema-ast": "^6.1.0",
|
|
46
|
+
"@graphql-codegen/typescript": "^6.1.0",
|
|
47
|
+
"@graphql-codegen/typescript-resolvers": "^6.1.0",
|
|
48
|
+
"@graphql-tools/merge": "^9.2.2",
|
|
49
|
+
"@graphql-tools/utils": "^11.2.2",
|
|
38
50
|
"micromatch": "^4.0.0",
|
|
39
51
|
"ts-morph": "^22.0.0",
|
|
40
|
-
"tslib": "^2.8.0"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"directory": "../../dist/packages/typescript-resolver-files"
|
|
44
|
-
},
|
|
45
|
-
"types": "./src/index.d.ts",
|
|
46
|
-
"main": "./src/index.js",
|
|
47
|
-
"type": "commonjs"
|
|
52
|
+
"tslib": "^2.8.0",
|
|
53
|
+
"@eddeee888/gcg-server-config": "0.6.0"
|
|
54
|
+
}
|
|
48
55
|
}
|
package/project.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { Types } from '@graphql-codegen/plugin-helpers';
|
|
2
|
+
import * as addPlugin from '@graphql-codegen/add';
|
|
3
|
+
import type { AddPluginConfig } from '@graphql-codegen/add';
|
|
4
|
+
import * as typeScriptPlugin from '@graphql-codegen/typescript';
|
|
5
|
+
import * as typeScriptResolversPlugin from '@graphql-codegen/typescript-resolvers';
|
|
6
|
+
import type { GraphQLSchema } from 'graphql';
|
|
7
|
+
import type { SourceFile, Project } from 'ts-morph';
|
|
8
|
+
import type { ServerConfig } from '@eddeee888/gcg-server-config';
|
|
9
|
+
import type { GeneratedTypesFileMeta } from '../generateResolverFiles/index.js';
|
|
10
|
+
|
|
11
|
+
export const addVirtualTypesFileToTsMorphProject = async ({
|
|
12
|
+
tsMorphProject,
|
|
13
|
+
schemaAst,
|
|
14
|
+
resolverTypesPath,
|
|
15
|
+
resolverTypesConfig,
|
|
16
|
+
addConfig,
|
|
17
|
+
}: {
|
|
18
|
+
tsMorphProject: Project;
|
|
19
|
+
schemaAst: GraphQLSchema;
|
|
20
|
+
resolverTypesPath: string;
|
|
21
|
+
resolverTypesConfig: ServerConfig;
|
|
22
|
+
addConfig?: AddPluginConfig;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
typesSourceFile: SourceFile;
|
|
25
|
+
meta: GeneratedTypesFileMeta;
|
|
26
|
+
}> => {
|
|
27
|
+
const typesFile = await generateVirtualTypesFile({
|
|
28
|
+
schemaAst,
|
|
29
|
+
resolverTypesPath,
|
|
30
|
+
resolverTypesConfig,
|
|
31
|
+
addConfig,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const typesSourceFile = tsMorphProject.createSourceFile(
|
|
35
|
+
typesFile.filePath,
|
|
36
|
+
typesFile.content,
|
|
37
|
+
{ overwrite: true }
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
return { typesSourceFile, meta: typesFile.meta };
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* getVirtualTypesFile generates a virtual types.generated.ts file
|
|
45
|
+
* This is used to statically detect and compare types in the parse and post-process steps
|
|
46
|
+
*/
|
|
47
|
+
const generateVirtualTypesFile = async ({
|
|
48
|
+
schemaAst,
|
|
49
|
+
resolverTypesPath,
|
|
50
|
+
resolverTypesConfig,
|
|
51
|
+
addConfig,
|
|
52
|
+
}: {
|
|
53
|
+
schemaAst: GraphQLSchema;
|
|
54
|
+
resolverTypesPath: string;
|
|
55
|
+
resolverTypesConfig: ServerConfig;
|
|
56
|
+
addConfig?: AddPluginConfig;
|
|
57
|
+
}): Promise<{
|
|
58
|
+
filePath: string;
|
|
59
|
+
content: string;
|
|
60
|
+
meta: GeneratedTypesFileMeta;
|
|
61
|
+
}> => {
|
|
62
|
+
const [typescriptResult, typescriptResolversResult, addResult] =
|
|
63
|
+
await Promise.all([
|
|
64
|
+
typeScriptPlugin.plugin(schemaAst, [], resolverTypesConfig),
|
|
65
|
+
typeScriptResolversPlugin.plugin(schemaAst, [], resolverTypesConfig),
|
|
66
|
+
addConfig ? addPlugin.plugin(schemaAst, [], addConfig) : '',
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
const addResultAsComplextOutput =
|
|
70
|
+
convertPluginOutputToComplextPluginOutput(addResult);
|
|
71
|
+
|
|
72
|
+
const print = (value: string[] | undefined): string =>
|
|
73
|
+
value ? value.join('\n') : '';
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
filePath: resolverTypesPath,
|
|
77
|
+
content: `
|
|
78
|
+
${print(addResultAsComplextOutput.prepend)}
|
|
79
|
+
${print(typescriptResult.prepend)}
|
|
80
|
+
${print(typescriptResolversResult.prepend)}
|
|
81
|
+
${typescriptResult.content}
|
|
82
|
+
${typescriptResolversResult.content}
|
|
83
|
+
${addResultAsComplextOutput.content}
|
|
84
|
+
${print(addResultAsComplextOutput.append)}
|
|
85
|
+
`,
|
|
86
|
+
meta: {
|
|
87
|
+
generatedResolverTypes: typescriptResolversResult.meta
|
|
88
|
+
?.generatedResolverTypes || {
|
|
89
|
+
resolversMap: { name: 'Resolvers' },
|
|
90
|
+
userDefined: {},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const convertPluginOutputToComplextPluginOutput = (
|
|
97
|
+
output: Types.PluginOutput
|
|
98
|
+
): Types.ComplexPluginOutput => {
|
|
99
|
+
if (typeof output === 'string') {
|
|
100
|
+
return {
|
|
101
|
+
content: output || '',
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (Array.isArray(output.content)) {
|
|
106
|
+
output.content = output.content.join('\n');
|
|
107
|
+
}
|
|
108
|
+
return output;
|
|
109
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './addVirtualTypesFileToTsMorphProject.js';
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { defineConfig } from './defineConfig.js';
|
|
2
|
+
import { preset as defaultPreset } from './preset.js';
|
|
3
|
+
|
|
4
|
+
describe('defineConfig()', () => {
|
|
5
|
+
it('returns default values correctly', () => {
|
|
6
|
+
const result = defineConfig();
|
|
7
|
+
|
|
8
|
+
expect(result).toEqual({
|
|
9
|
+
preset: defaultPreset,
|
|
10
|
+
presetConfig: {},
|
|
11
|
+
watchPattern: ['**/*.mappers.ts'],
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('returns default values correctly with baseOutputDir', () => {
|
|
16
|
+
const result = defineConfig({}, { baseOutputDir: 'src/schema' });
|
|
17
|
+
|
|
18
|
+
expect(result).toEqual({
|
|
19
|
+
preset: defaultPreset,
|
|
20
|
+
presetConfig: {},
|
|
21
|
+
watchPattern: ['src/schema/**/*.mappers.ts'],
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('returns schema value correctly when set', () => {
|
|
26
|
+
const result = defineConfig({}, { schema: ['src/**/*.graphqls'] });
|
|
27
|
+
|
|
28
|
+
expect(result).toEqual({
|
|
29
|
+
preset: defaultPreset,
|
|
30
|
+
presetConfig: {},
|
|
31
|
+
watchPattern: ['**/*.mappers.ts'],
|
|
32
|
+
schema: ['src/**/*.graphqls'],
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('returns hooks value correctly when set', () => {
|
|
37
|
+
const result = defineConfig(
|
|
38
|
+
{},
|
|
39
|
+
{ hooks: { afterAllFileWrite: ['prettier --write'] } }
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
expect(result).toEqual({
|
|
43
|
+
preset: defaultPreset,
|
|
44
|
+
presetConfig: {},
|
|
45
|
+
watchPattern: ['**/*.mappers.ts'],
|
|
46
|
+
hooks: { afterAllFileWrite: ['prettier --write'] },
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it('returns presetConfig with declared config', () => {
|
|
51
|
+
const { presetConfig } = defineConfig({
|
|
52
|
+
mode: 'merged',
|
|
53
|
+
fixObjectTypeResolvers: 'disabled',
|
|
54
|
+
typesPluginsConfig: {
|
|
55
|
+
defaultMapper: 'Partial<{T}>',
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
expect(presetConfig).toEqual({
|
|
59
|
+
mode: 'merged',
|
|
60
|
+
fixObjectTypeResolvers: 'disabled',
|
|
61
|
+
typesPluginsConfig: {
|
|
62
|
+
defaultMapper: 'Partial<{T}>',
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('returns updated watchPattern if custom presetConfig.mappersFileExtension is used', () => {
|
|
68
|
+
const { presetConfig, watchPattern } = defineConfig({
|
|
69
|
+
mappersFileExtension: '.model.ts',
|
|
70
|
+
});
|
|
71
|
+
expect(presetConfig).toEqual({
|
|
72
|
+
mappersFileExtension: '.model.ts',
|
|
73
|
+
});
|
|
74
|
+
expect(watchPattern).toEqual(['**/*.model.ts']);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import type { Types } from '@graphql-codegen/plugin-helpers';
|
|
3
|
+
import type { TypedPresetConfig } from './validatePresetConfig/index.js';
|
|
4
|
+
import { preset } from './preset.js';
|
|
5
|
+
|
|
6
|
+
export const defineConfig = (
|
|
7
|
+
presetConfig: TypedPresetConfig = {},
|
|
8
|
+
context: {
|
|
9
|
+
baseOutputDir?: string;
|
|
10
|
+
schema?: Types.ConfiguredOutput['schema'];
|
|
11
|
+
hooks?: Types.ConfiguredOutput['hooks'];
|
|
12
|
+
} = {}
|
|
13
|
+
): Pick<
|
|
14
|
+
Types.ConfiguredOutput,
|
|
15
|
+
'preset' | 'presetConfig' | 'watchPattern' | 'schema' | 'hooks'
|
|
16
|
+
> => {
|
|
17
|
+
const { schema, baseOutputDir = '', hooks } = context;
|
|
18
|
+
|
|
19
|
+
const mappersFileExtension =
|
|
20
|
+
presetConfig.mappersFileExtension || '.mappers.ts';
|
|
21
|
+
|
|
22
|
+
const watchPattern: string[] = [];
|
|
23
|
+
const mapperWatchPattern = path.posix.join(
|
|
24
|
+
baseOutputDir,
|
|
25
|
+
'**',
|
|
26
|
+
`*${mappersFileExtension}`
|
|
27
|
+
);
|
|
28
|
+
watchPattern.push(mapperWatchPattern);
|
|
29
|
+
|
|
30
|
+
return {
|
|
31
|
+
preset,
|
|
32
|
+
presetConfig,
|
|
33
|
+
watchPattern,
|
|
34
|
+
schema,
|
|
35
|
+
hooks,
|
|
36
|
+
};
|
|
37
|
+
};
|