UNPKG

@graphql-codegen/flutter-freezed

Version:

GraphQL Code Generator plugin to generate Freezed models from your GraphQL schema

59 lines (58 loc) 2.94 kB
var _a; import { indent } from '@graphql-codegen/visitor-plugin-common'; import { Config } from '../config/config-value.js'; import { FieldName, TypeName } from '../config/pattern.js'; import { atJsonKeyDecorator, stringIsNotEmpty } from '../utils.js'; import { Block } from './index.js'; export class ParameterBlock { static build(config, node, field, blockAppliesOn) { const typeName = TypeName.fromString(node.name.value); const fieldName = FieldName.fromString(field.name.value); const parameterName = Block.buildBlockName(config, blockAppliesOn, fieldName.value, typeName, fieldName, 'camelCase'); let block = ''; block += Block.buildComment(field); block += this.buildDecorators(config, typeName, fieldName, parameterName, blockAppliesOn); block += this.buildBody(config, field, typeName, fieldName, parameterName, blockAppliesOn); // return indentMultiline(block, 2); return block; } } _a = ParameterBlock; ParameterBlock.buildDecorators = (config, typeName, fieldName, parameterName, blockAppliesOn) => { const deprecatedDecorator = Config.deprecated(config, blockAppliesOn, typeName, fieldName); const defaultValueDecorator = Config.defaultValues(config, blockAppliesOn, typeName, fieldName); const jsonKeyDecorator = atJsonKeyDecorator({ name: fieldName.value !== parameterName ? fieldName.value : undefined, }); return [ deprecatedDecorator, defaultValueDecorator, jsonKeyDecorator, // TODO: add decorator for unionValueName ] .filter(decorator => stringIsNotEmpty(decorator)) .map(decorator => indent(decorator, 2)) .join(''); }; ParameterBlock.buildBody = (config, field, typeName, fieldName, parameterName, blockAppliesOn) => { const required = _a.isNonNullType(field.type) ? 'required ' : ''; const final = Config.final(config, blockAppliesOn, typeName, fieldName) ? 'final ' : ''; const dartType = _a.parameterType(config, field.type); return indent(`${required}${final}${dartType} ${parameterName},\n`, 2); }; ParameterBlock.parameterType = (config, type, parentType) => { if (_a.isNonNullType(type)) { return _a.parameterType(config, type.type, type); } if (_a.isListType(type)) { const T = _a.parameterType(config, type.type, type); return `List<${T}>${_a.isNonNullType(parentType) ? '' : '?'}`; } if (_a.isNamedType(type)) { return `${Config.customScalars(config, type.name.value)}${_a.isNonNullType(parentType) ? '' : '?'}`; } return ''; }; ParameterBlock.isListType = (type) => (type === null || type === void 0 ? void 0 : type.kind) === 'ListType'; ParameterBlock.isNonNullType = (type) => (type === null || type === void 0 ? void 0 : type.kind) === 'NonNullType'; ParameterBlock.isNamedType = (type) => (type === null || type === void 0 ? void 0 : type.kind) === 'NamedType';