1 | import { introspectionFromSchema } from 'graphql';
|
2 | import { removeFederation } from '@graphql-codegen/plugin-helpers';
|
3 | import { extname } from 'path';
|
4 |
|
5 | const plugin = async (schema, _documents, pluginConfig) => {
|
6 | const cleanSchema = pluginConfig.federation ? removeFederation(schema) : schema;
|
7 | const introspection = introspectionFromSchema(cleanSchema, { descriptions: true });
|
8 | return pluginConfig.minify ? JSON.stringify(introspection) : JSON.stringify(introspection, null, 2);
|
9 | };
|
10 | const validate = async (schema, documents, config, outputFile) => {
|
11 | if (extname(outputFile) !== '.json') {
|
12 | throw new Error(`Plugin "introspection" requires extension to be ".json"!`);
|
13 | }
|
14 | };
|
15 |
|
16 | export { plugin, validate };
|
17 |
|