@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
JavaScript
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
;