UNPKG

@graphql-codegen/flutter-freezed

Version:

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

55 lines (54 loc) 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnumBlock = 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 plugin_config_js_1 = require("../config/plugin-config.js"); const utils_js_1 = require("../utils.js"); const index_js_1 = require("./index.js"); class EnumBlock { // TODO: @next-version: Implement enhanced enums static build(config, node) { const typeName = pattern_js_1.TypeName.fromString(node.name.value); let block = ''; block += index_js_1.Block.buildComment(node); block += this.buildDecorators(); block += this.buildHeader(config, typeName); block += this.buildBody(config, node); block += this.buildFooter(); return block; } } exports.EnumBlock = EnumBlock; EnumBlock.buildDecorators = () => { // TODO: @next-version: @JsonEnum(valueField: 'code', fieldRename: 'new-name') return ''; }; EnumBlock.buildHeader = (config, typeName) => { const enumTypeName = index_js_1.Block.buildBlockName(config, plugin_config_js_1.APPLIES_ON_ENUM, typeName.value, typeName, undefined, 'PascalCase'); return `enum ${enumTypeName} {\n`; }; EnumBlock.buildBody = (config, node) => { var _a, _b; const typeName = pattern_js_1.TypeName.fromString(node.name.value); return (_b = ((_a = node.values) !== null && _a !== void 0 ? _a : [])) === null || _b === void 0 ? void 0 : _b.map((enumValue) => { const fieldName = pattern_js_1.FieldName.fromString(enumValue.name.value); const enumValueName = index_js_1.Block.buildBlockName(config, plugin_config_js_1.APPLIES_ON_ENUM_VALUE, fieldName.value, typeName, fieldName, config_value_js_1.Config.camelCasedEnums(config)); const comment = index_js_1.Block.buildComment(enumValue); const jsonKey = (0, utils_js_1.atJsonKeyDecorator)({ name: fieldName.value !== enumValueName ? fieldName.value : undefined, }); //TODO: @next-version: const jsonValue = @JsonValue(String|int) const decorators = [ jsonKey, // jsonValue ].join(''); return [comment, decorators, `${enumValueName},\n`] .map(block => ((0, utils_js_1.stringIsNotEmpty)(block) ? (0, visitor_plugin_common_1.indent)(block) : block)) .join(''); }).join(''); }; EnumBlock.buildFooter = () => { return '}\n\n'; };