UNPKG

@eddeee888/gcg-typescript-resolver-files

Version:

This [GraphQL Code Generator](https://www.the-guild.dev/graphql/codegen) plugin creates resolvers given GraphQL schema.

62 lines 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addVirtualTypesFileToTsMorphProject = void 0; const tslib_1 = require("tslib"); const addPlugin = tslib_1.__importStar(require("@graphql-codegen/add")); const typeScriptPlugin = tslib_1.__importStar(require("@graphql-codegen/typescript")); const typeScriptResolversPlugin = tslib_1.__importStar(require("@graphql-codegen/typescript-resolvers")); const addVirtualTypesFileToTsMorphProject = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ tsMorphProject, schemaAst, resolverTypesPath, resolverTypesConfig, addConfig, }) { const typesFile = yield generateVirtualTypesFile({ schemaAst, resolverTypesPath, resolverTypesConfig, addConfig, }); const typesSourceFile = tsMorphProject.createSourceFile(typesFile.filePath, typesFile.content, { overwrite: true }); return { typesSourceFile, meta: typesFile.meta }; }); exports.addVirtualTypesFileToTsMorphProject = addVirtualTypesFileToTsMorphProject; /** * getVirtualTypesFile generates a virtual types.generated.ts file * This is used to statically detect and compare types in the parse and post-process steps */ const generateVirtualTypesFile = (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ schemaAst, resolverTypesPath, resolverTypesConfig, addConfig, }) { var _b; const [typescriptResult, typescriptResolversResult, addResult] = yield Promise.all([ typeScriptPlugin.plugin(schemaAst, [], resolverTypesConfig), typeScriptResolversPlugin.plugin(schemaAst, [], resolverTypesConfig), addConfig ? addPlugin.plugin(schemaAst, [], addConfig) : '', ]); const addResultAsComplextOutput = convertPluginOutputToComplextPluginOutput(addResult); const print = (value) => value ? value.join('\n') : ''; return { filePath: resolverTypesPath, content: ` ${print(addResultAsComplextOutput.prepend)} ${print(typescriptResult.prepend)} ${print(typescriptResolversResult.prepend)} ${typescriptResult.content} ${typescriptResolversResult.content} ${addResultAsComplextOutput.content} ${print(addResultAsComplextOutput.append)} `, meta: { generatedResolverTypes: ((_b = typescriptResolversResult.meta) === null || _b === void 0 ? void 0 : _b.generatedResolverTypes) || { resolversMap: { name: 'Resolvers' }, userDefined: {}, }, }, }; }); const convertPluginOutputToComplextPluginOutput = (output) => { if (typeof output === 'string') { return { content: output || '', }; } if (Array.isArray(output.content)) { output.content = output.content.join('\n'); } return output; }; //# sourceMappingURL=addVirtualTypesFileToTsMorphProject.js.map