@graphql-codegen/flutter-freezed
Version:
GraphQL Code Generator plugin to generate Freezed models from your GraphQL schema
20 lines (19 loc) • 1.3 kB
JavaScript
import { oldVisit } from '@graphql-codegen/plugin-helpers';
import { transformSchemaAST } from '@graphql-codegen/schema-ast';
import { defaultFreezedPluginConfig } from './config/plugin-config.js';
import { Block } from './freezed-declaration-blocks/index.js';
import { schemaVisitor } from './schema-visitor.js';
export { Pattern, TypeName, FieldName, TypeNamePattern, FieldNamePattern, } from './config/pattern.js';
export const plugin = (schema, _documents, _config, info) => {
var _a;
// sets the defaults for the config
const config = { ...defaultFreezedPluginConfig, ..._config };
const { schema: _schema, ast } = transformSchemaAST(schema, config);
const { nodeRepository, ...visitor } = schemaVisitor(_schema, config);
const visitorResult = oldVisit(ast, { leave: visitor });
const importStatements = Block.buildImportStatements((_a = info === null || info === void 0 ? void 0 : info.outputFile) !== null && _a !== void 0 ? _a : 'app_models');
const generatedBlocks = visitorResult.definitions.filter((def) => typeof def === 'string' && def.length > 0);
// return [importStatements, ...generatedBlocks].join('').trim();
const output = Block.replaceTokens(config, nodeRepository, generatedBlocks);
return [importStatements, output].join('').trim();
};