@eddeee888/gcg-typescript-resolver-files
Version:
This [GraphQL Code Generator](https://www.the-guild.dev/graphql/codegen) plugin creates resolvers given GraphQL schema.
41 lines • 2.76 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateAndMergeParsedConfigs = void 0;
const utils_1 = require("../utils");
/**
* validateAndMergeParsedConfigs is used to make sure all parsed configs do not incorrectly override each other.
* Use this to ensure there's only one way of doing something. e.g.
* - scalarsOverrides must be used over externalResolvers to override scalars
*/
const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGraphQLSchemaMeta: { userDefinedSchemaTypeMap, pluginsConfig: { scalarsModuleResolvers, unmanagedScalarResolvers, defaultScalarTypesMap, defaultTypeMappers, }, }, }) => {
Object.keys(scalarsModuleResolvers).forEach((schemaType) => {
var _a;
if (
// If the scalar is defined on the filesystem, it means user wants to use their custom definition.
// This means we should use it, instead of importing it from scalar module
(_a = userDefinedSchemaTypeMap.scalar[schemaType]) === null || _a === void 0 ? void 0 : _a.resolverFile.isOnFilesystem) {
delete scalarsModuleResolvers[schemaType];
}
});
// By default, codegen doesn't generate types for enums
// This is great for the default codegen setup but it's not great for server preset - where we need to be able to import
// generated resolver types to fill in content for resolver files without needing to manually set up mappers/enumValues
// `schemaEnumTypeMappers` is the schema mappers for enums, which can be overriden by user's provided mapper types
const schemaEnumTypeMappers = Object.entries(userDefinedSchemaTypeMap.enum).reduce((result, [enumTypename, { allowedValues }]) => {
result[enumTypename] = allowedValues.map((v) => `'${v}'`).join(' | ');
return result;
}, {});
Object.keys(unmanagedNonScalarResolvers).forEach((schemaType) => {
if (userDefinedSchemaTypeMap.scalar[schemaType]) {
throw new Error(utils_1.fmt.error(`Scalar "${schemaType}" found in presetConfig.externalResolvers. Use presetConfig.scalarsOverrides to override scalar implementation and type. Remove "${schemaType}" from presetConfig.externalResolvers.`, 'Validation'));
}
});
return {
userDefinedSchemaTypeMap,
scalarTypes: Object.assign({}, defaultScalarTypesMap),
typeMappers: Object.assign(Object.assign({}, schemaEnumTypeMappers), defaultTypeMappers),
unmanagedResolvers: Object.assign(Object.assign(Object.assign({}, unmanagedNonScalarResolvers), scalarsModuleResolvers), unmanagedScalarResolvers),
};
};
exports.validateAndMergeParsedConfigs = validateAndMergeParsedConfigs;
//# sourceMappingURL=validateAndMergeParsedConfigs.js.map
;