UNPKG

@graphql-codegen/flutter-freezed

Version:

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

63 lines (62 loc) 3.3 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.ParameterBlock = void 0; const visitor_plugin_common_1 = require("@graphql-codegen/visitor-plugin-common"); const config_value_js_1 = require("../config/config-value.js"); const pattern_js_1 = require("../config/pattern.js"); const utils_js_1 = require("../utils.js"); const index_js_1 = require("./index.js"); class ParameterBlock { static build(config, node, field, blockAppliesOn) { const typeName = pattern_js_1.TypeName.fromString(node.name.value); const fieldName = pattern_js_1.FieldName.fromString(field.name.value); const parameterName = index_js_1.Block.buildBlockName(config, blockAppliesOn, fieldName.value, typeName, fieldName, 'camelCase'); let block = ''; block += index_js_1.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; } } exports.ParameterBlock = ParameterBlock; _a = ParameterBlock; ParameterBlock.buildDecorators = (config, typeName, fieldName, parameterName, blockAppliesOn) => { const deprecatedDecorator = config_value_js_1.Config.deprecated(config, blockAppliesOn, typeName, fieldName); const defaultValueDecorator = config_value_js_1.Config.defaultValues(config, blockAppliesOn, typeName, fieldName); const jsonKeyDecorator = (0, utils_js_1.atJsonKeyDecorator)({ name: fieldName.value !== parameterName ? fieldName.value : undefined, }); return [ deprecatedDecorator, defaultValueDecorator, jsonKeyDecorator, // TODO: add decorator for unionValueName ] .filter(decorator => (0, utils_js_1.stringIsNotEmpty)(decorator)) .map(decorator => (0, visitor_plugin_common_1.indent)(decorator, 2)) .join(''); }; ParameterBlock.buildBody = (config, field, typeName, fieldName, parameterName, blockAppliesOn) => { const required = _a.isNonNullType(field.type) ? 'required ' : ''; const final = config_value_js_1.Config.final(config, blockAppliesOn, typeName, fieldName) ? 'final ' : ''; const dartType = _a.parameterType(config, field.type); return (0, visitor_plugin_common_1.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_value_js_1.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';