@graphql-codegen/flutter-freezed
Version:
GraphQL Code Generator plugin to generate Freezed models from your GraphQL schema
63 lines (62 loc) • 3.3 kB
JavaScript
;
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';