UNPKG

46.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.esm.js","sources":["../../../dist/plugins/c-sharp/common/scalars.js","../../../dist/plugins/c-sharp/common/utils.js","../../../dist/plugins/c-sharp/common/c-sharp-declaration-block.js","../../../dist/plugins/c-sharp/common/c-sharp-field-types.js","../../../dist/plugins/c-sharp/common/keywords.js","../../../dist/plugins/c-sharp/c-sharp/src/visitor.js","../../../dist/plugins/c-sharp/c-sharp/src/index.js"],"sourcesContent":["export const C_SHARP_SCALARS = {\n ID: 'string',\n String: 'string',\n Boolean: 'bool',\n Int: 'int',\n Float: 'float',\n Date: 'DateTime',\n};\n// All native C# built-in value types\n// See https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/built-in-types\nexport const csharpNativeValueTypes = [\n 'bool',\n 'byte',\n 'sbyte',\n 'char',\n 'decimal',\n 'double',\n 'float',\n 'int',\n 'uint',\n 'long',\n 'ulong',\n 'short',\n 'ushort',\n];\n//# sourceMappingURL=scalars.js.map","import { Kind } from 'graphql';\nimport { indent } from '@graphql-codegen/visitor-plugin-common';\nimport { csharpNativeValueTypes } from './scalars';\nexport function buildPackageNameFromPath(path) {\n const unixify = require('unixify');\n return unixify(path || '')\n .replace(/src\\/main\\/.*?\\//, '')\n .replace(/\\//g, '.');\n}\nexport function transformComment(comment, indentLevel = 0) {\n if (!comment) {\n return '';\n }\n if (isStringValueNode(comment)) {\n comment = comment.value;\n }\n comment = comment\n .trimStart()\n .split('*/')\n .join('*\\\\/');\n let lines = comment.split('\\n');\n lines = ['/// <summary>', ...lines.map(line => `/// ${line}`), '/// </summary>'];\n return lines\n .map(line => indent(line, indentLevel))\n .concat('')\n .join('\\n');\n}\nfunction isStringValueNode(node) {\n return node && typeof node === 'object' && node.kind === Kind.STRING;\n}\nexport function isValueType(type) {\n // Limitation: only checks the list of known built in value types\n // Eg .NET types and struct types won't be detected correctly\n return csharpNativeValueTypes.includes(type);\n}\nexport function getListTypeField(typeNode) {\n if (typeNode.kind === Kind.LIST_TYPE) {\n return {\n required: false,\n type: getListTypeField(typeNode.type),\n };\n }\n else if (typeNode.kind === Kind.NON_NULL_TYPE && typeNode.type.kind === Kind.LIST_TYPE) {\n return Object.assign(getListTypeField(typeNode.type), {\n required: true,\n });\n }\n else if (typeNode.kind === Kind.NON_NULL_TYPE) {\n return getListTypeField(typeNode.type);\n }\n else {\n return undefined;\n }\n}\nexport function getListTypeDepth(listType) {\n if (listType) {\n return getListTypeDepth(listType.type) + 1;\n }\n else {\n return 0;\n }\n}\nexport function getListInnerTypeNode(typeNode) {\n if (typeNode.kind === Kind.LIST_TYPE) {\n return getListInnerTypeNode(typeNode.type);\n }\n else if (typeNode.kind === Kind.NON_NULL_TYPE && typeNode.type.kind === Kind.LIST_TYPE) {\n return getListInnerTypeNode(typeNode.type);\n }\n else {\n return typeNode;\n }\n}\nexport function wrapFieldType(fieldType, listTypeField, listType = 'IEnumerable') {\n if (listTypeField) {\n const innerType = wrapFieldType(fieldType, listTypeField.type, listType);\n return `${listType}<${innerType}>`;\n }\n else {\n return fieldType.innerTypeName;\n }\n}\n//# sourceMappingURL=utils.js.map","import { indentMultiline } from '@graphql-codegen/visitor-plugin-common';\nimport { transformComment } from './utils';\nconst stripIndent = require('strip-indent');\nexport class CSharpDeclarationBlock {\n constructor() {\n this._name = null;\n this._extendStr = [];\n this._implementsStr = [];\n this._kind = null;\n this._access = 'public';\n this._final = false;\n this._static = false;\n this._block = null;\n this._comment = null;\n this._annotations = [];\n this._members = [];\n this._methods = [];\n this._nestedClasses = [];\n }\n nestedClass(nstCls) {\n this._nestedClasses.push(nstCls);\n return this;\n }\n access(access) {\n this._access = access;\n return this;\n }\n asKind(kind) {\n this._kind = kind;\n return this;\n }\n final() {\n this._final = true;\n return this;\n }\n static() {\n this._static = true;\n return this;\n }\n annotate(annotations) {\n this._annotations = annotations;\n return this;\n }\n withComment(comment) {\n if (comment) {\n this._comment = transformComment(comment, 1);\n }\n return this;\n }\n withBlock(block) {\n this._block = block;\n return this;\n }\n extends(extendStr) {\n this._extendStr = extendStr;\n return this;\n }\n implements(implementsStr) {\n this._implementsStr = implementsStr;\n return this;\n }\n withName(name) {\n this._name = typeof name === 'object' ? name.value : name;\n return this;\n }\n printMember(member) {\n const flags = member.flags || {};\n const pieces = [\n member.access,\n flags.static ? 'static' : null,\n flags.final ? 'final' : null,\n flags.transient ? 'transient' : null,\n flags.volatile ? 'volatile' : null,\n ...(member.annotations || []).map(annotation => `@${annotation}`),\n member.type,\n member.name,\n ].filter(f => f);\n return pieces.join(' ') + (member.value ? ` = ${member.value}` : '');\n }\n printMethod(method) {\n const pieces = [\n ...method.methodAnnotations.map(a => `@${a}\\n`),\n method.access,\n method.flags.static ? 'static' : null,\n method.flags.final ? 'final' : null,\n method.flags.transient ? 'transient' : null,\n method.flags.volatile ? 'volatile' : null,\n ...(method.returnTypeAnnotations || []).map(annotation => `@${annotation}`),\n method.returnType,\n method.name,\n ].filter(f => f);\n const args = method.args.map(arg => this.printMember(arg)).join(', ');\n return `${pieces.join(' ')}(${args}) {\n${indentMultiline(method.implementation)}\n}`;\n }\n addClassMember(name, type, value, typeAnnotations = [], access = null, flags = {}) {\n this._members.push({\n name,\n type,\n value,\n annotations: typeAnnotations,\n access,\n flags: {\n final: false,\n transient: false,\n volatile: false,\n static: false,\n ...flags,\n },\n });\n return this;\n }\n addClassMethod(name, returnType, impl, args = [], returnTypeAnnotations = [], access = null, flags = {}, methodAnnotations = []) {\n this._methods.push({\n name,\n returnType,\n implementation: impl,\n args,\n returnTypeAnnotations,\n access,\n flags: {\n final: false,\n transient: false,\n volatile: false,\n static: false,\n ...flags,\n },\n methodAnnotations: methodAnnotations || [],\n });\n return this;\n }\n get string() {\n let result = '';\n if (this._kind) {\n let name = '';\n if (this._name) {\n name = this._name;\n }\n if (this._kind === 'namespace') {\n result += `${this._kind} ${name} `;\n }\n else {\n let extendStr = '';\n let implementsStr = '';\n let annotatesStr = '';\n const final = this._final ? ' final' : '';\n const isStatic = this._static ? ' static' : '';\n if (this._extendStr.length > 0) {\n extendStr = ` : ${this._extendStr.join(', ')}`;\n }\n if (this._implementsStr.length > 0) {\n implementsStr = ` : ${this._implementsStr.join(', ')}`;\n }\n if (this._annotations.length > 0) {\n annotatesStr = this._annotations.map(a => `@${a}`).join('\\n') + '\\n';\n }\n result += `${annotatesStr}${this._access}${isStatic}${final} ${this._kind} ${name}${extendStr}${implementsStr} `;\n }\n }\n const members = this._members.length\n ? indentMultiline(stripIndent(this._members.map(member => this.printMember(member) + ';').join('\\n')))\n : null;\n const methods = this._methods.length\n ? indentMultiline(stripIndent(this._methods.map(method => this.printMethod(method)).join('\\n\\n')))\n : null;\n const nestedClasses = this._nestedClasses.length\n ? this._nestedClasses.map(c => indentMultiline(c.string)).join('\\n\\n')\n : null;\n const before = '{';\n const after = '}';\n const block = [before, members, methods, nestedClasses, this._block, after].filter(f => f).join('\\n');\n result += block;\n return (this._comment ? this._comment : '') + result + '\\n';\n }\n}\n//# sourceMappingURL=c-sharp-declaration-block.js.map","export class CSharpFieldType {\n constructor(fieldType) {\n Object.assign(this, fieldType);\n }\n get innerTypeName() {\n const nullable = this.baseType.valueType && !this.baseType.required ? '?' : '';\n return `${this.baseType.type}${nullable}`;\n }\n get isOuterTypeRequired() {\n return this.listType ? this.listType.required : this.baseType.required;\n }\n}\n//# sourceMappingURL=c-sharp-field-types.js.map","/**\n * C# keywords\n * https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\n */\nexport const csharpKeywords = [\n 'abstract',\n 'as',\n 'base',\n 'bool',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'checked',\n 'class',\n 'const',\n 'continue',\n 'decimal',\n 'default',\n 'delegate',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'event',\n 'explicit',\n 'extern',\n 'false',\n 'finally',\n 'fixed',\n 'float',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'int',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'long',\n 'namespace',\n 'new',\n 'null',\n 'object',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'ref',\n 'return',\n 'sbyte',\n 'sealed',\n 'short',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'string',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'true',\n 'try',\n 'typeof',\n 'uint',\n 'ulong',\n 'unchecked',\n 'unsafe',\n 'ushort',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while',\n];\n//# sourceMappingURL=keywords.js.map","import { BaseVisitor, indentMultiline, indent, buildScalars, getBaseTypeNode, } from '@graphql-codegen/visitor-plugin-common';\nimport { Kind, isScalarType, isInputObjectType, isEnumType, } from 'graphql';\nimport { C_SHARP_SCALARS, CSharpDeclarationBlock, transformComment, isValueType, getListInnerTypeNode, CSharpFieldType, csharpKeywords, wrapFieldType, getListTypeField, } from '../../common/common';\nexport class CSharpResolversVisitor extends BaseVisitor {\n constructor(rawConfig, _schema, defaultPackageName) {\n super(rawConfig, {\n enumValues: rawConfig.enumValues || {},\n listType: rawConfig.listType || 'List',\n namespaceName: rawConfig.namespaceName || 'GraphQLCodeGen',\n className: rawConfig.className || 'Types',\n scalars: buildScalars(_schema, rawConfig.scalars, C_SHARP_SCALARS),\n });\n this._schema = _schema;\n this.keywords = new Set(csharpKeywords);\n }\n /**\n * Checks name against list of keywords. If it is, will prefix value with @\n *\n * Note:\n * This class should first invoke the convertName from base-visitor to convert the string or node\n * value according the naming configuration, eg upper or lower case. Then resulting string checked\n * against the list or keywords.\n * However the generated C# code is not yet able to handle fields that are in a different case so\n * the invocation of convertName is omitted purposely.\n */\n convertSafeName(node) {\n const name = typeof node === 'string' ? node : node.value;\n return this.keywords.has(name) ? `@${name}` : name;\n }\n getImports() {\n const allImports = ['System', 'System.Collections.Generic', 'Newtonsoft.Json', 'GraphQL'];\n return allImports.map(i => `using ${i};`).join('\\n') + '\\n';\n }\n wrapWithNamespace(content) {\n return new CSharpDeclarationBlock()\n .asKind('namespace')\n .withName(this.config.namespaceName)\n .withBlock(indentMultiline(content)).string;\n }\n wrapWithClass(content) {\n return new CSharpDeclarationBlock()\n .access('public')\n .asKind('class')\n .withName(this.convertSafeName(this.config.className))\n .withBlock(indentMultiline(content)).string;\n }\n getEnumValue(enumName, enumOption) {\n if (this.config.enumValues[enumName] &&\n typeof this.config.enumValues[enumName] === 'object' &&\n this.config.enumValues[enumName][enumOption]) {\n return this.config.enumValues[enumName][enumOption];\n }\n return enumOption;\n }\n EnumValueDefinition(node) {\n return (enumName) => {\n const enumHeader = this.getFieldHeader(node);\n const enumOption = this.convertSafeName(node.name);\n return enumHeader + indent(this.getEnumValue(enumName, enumOption));\n };\n }\n EnumTypeDefinition(node) {\n const enumName = this.convertName(node.name);\n const enumValues = node.values.map(enumValue => enumValue(node.name.value)).join(',\\n');\n const enumBlock = [enumValues].join('\\n');\n return new CSharpDeclarationBlock()\n .access('public')\n .asKind('enum')\n .withComment(node.description)\n .withName(enumName)\n .withBlock(enumBlock).string;\n }\n getFieldHeader(node, fieldType) {\n var _a;\n const attributes = [];\n const commentText = transformComment((_a = node.description) === null || _a === void 0 ? void 0 : _a.value);\n const deprecationDirective = node.directives.find(v => { var _a; return ((_a = v.name) === null || _a === void 0 ? void 0 : _a.value) === 'deprecated'; });\n if (deprecationDirective) {\n const deprecationReason = this.getDeprecationReason(deprecationDirective);\n attributes.push(`[Obsolete(\"${deprecationReason}\")]`);\n }\n if (node.kind === Kind.FIELD_DEFINITION) {\n attributes.push(`[JsonProperty(\"${node.name.value}\")]`);\n }\n if (node.kind === Kind.INPUT_VALUE_DEFINITION && fieldType.isOuterTypeRequired) {\n attributes.push(`[JsonRequired]`);\n }\n if (commentText || attributes.length > 0) {\n const summary = commentText ? indentMultiline(commentText.trimRight()) + '\\n' : '';\n const attributeLines = attributes.length > 0\n ? attributes\n .map(attr => indent(attr))\n .concat('')\n .join('\\n')\n : '';\n return summary + attributeLines;\n }\n return '';\n }\n getDeprecationReason(directive) {\n if (directive.name.value !== 'deprecated') {\n return '';\n }\n const hasArguments = directive.arguments.length > 0;\n let reason = 'Field no longer supported';\n if (hasArguments && directive.arguments[0].value.kind === Kind.STRING) {\n reason = directive.arguments[0].value.value;\n }\n return reason;\n }\n resolveInputFieldType(typeNode, hasDefaultValue = false) {\n const innerType = getBaseTypeNode(typeNode);\n const schemaType = this._schema.getType(innerType.name.value);\n const listType = getListTypeField(typeNode);\n const required = getListInnerTypeNode(typeNode).kind === Kind.NON_NULL_TYPE;\n let result = null;\n if (isScalarType(schemaType)) {\n if (this.scalars[schemaType.name]) {\n const baseType = this.scalars[schemaType.name];\n result = new CSharpFieldType({\n baseType: {\n type: baseType,\n required,\n valueType: isValueType(baseType),\n },\n listType,\n });\n }\n else {\n result = new CSharpFieldType({\n baseType: {\n type: 'object',\n required,\n valueType: false,\n },\n listType,\n });\n }\n }\n else if (isInputObjectType(schemaType)) {\n result = new CSharpFieldType({\n baseType: {\n type: `${this.convertName(schemaType.name)}`,\n required,\n valueType: false,\n },\n listType,\n });\n }\n else if (isEnumType(schemaType)) {\n result = new CSharpFieldType({\n baseType: {\n type: this.convertName(schemaType.name),\n required,\n valueType: true,\n },\n listType,\n });\n }\n else {\n result = new CSharpFieldType({\n baseType: {\n type: `${schemaType.name}`,\n required,\n valueType: false,\n },\n listType,\n });\n }\n if (hasDefaultValue) {\n // Required field is optional when default value specified, see #4273\n (result.listType || result.baseType).required = false;\n }\n return result;\n }\n buildClass(name, description, inputValueArray, interfaces) {\n const classSummary = transformComment(description === null || description === void 0 ? void 0 : description.value);\n const interfaceImpl = interfaces && interfaces.length > 0 ? ` : ${interfaces.map(ntn => ntn.name.value).join(', ')}` : '';\n const classMembers = inputValueArray\n .map(arg => {\n const fieldType = this.resolveInputFieldType(arg.type);\n const fieldHeader = this.getFieldHeader(arg, fieldType);\n const fieldName = this.convertSafeName(arg.name);\n const csharpFieldType = wrapFieldType(fieldType, fieldType.listType, this.config.listType);\n return fieldHeader + indent(`public ${csharpFieldType} ${fieldName} { get; set; }`);\n })\n .join('\\n\\n');\n return `\n#region ${name}\n${classSummary}public class ${this.convertSafeName(name)}${interfaceImpl} {\n #region members\n${classMembers}\n #endregion\n}\n#endregion`;\n }\n buildInterface(name, description, inputValueArray) {\n const classSummary = transformComment(description === null || description === void 0 ? void 0 : description.value);\n const classMembers = inputValueArray\n .map(arg => {\n const fieldType = this.resolveInputFieldType(arg.type);\n const fieldHeader = this.getFieldHeader(arg, fieldType);\n const fieldName = this.convertSafeName(arg.name);\n const csharpFieldType = wrapFieldType(fieldType, fieldType.listType, this.config.listType);\n return fieldHeader + indent(`public ${csharpFieldType} ${fieldName} { get; set; }`);\n })\n .join('\\n\\n');\n return `\n${classSummary}public interface ${this.convertSafeName(name)} {\n${classMembers}\n}`;\n }\n buildInputTransformer(name, description, inputValueArray) {\n const classSummary = transformComment(description === null || description === void 0 ? void 0 : description.value);\n const classMembers = inputValueArray\n .map(arg => {\n const fieldType = this.resolveInputFieldType(arg.type, !!arg.defaultValue);\n const fieldHeader = this.getFieldHeader(arg, fieldType);\n const fieldName = this.convertSafeName(arg.name);\n const csharpFieldType = wrapFieldType(fieldType, fieldType.listType, this.config.listType);\n return fieldHeader + indent(`public ${csharpFieldType} ${fieldName} { get; set; }`);\n })\n .join('\\n\\n');\n return `\n#region ${name}\n${classSummary}public class ${this.convertSafeName(name)} {\n #region members\n${classMembers}\n #endregion\n\n #region methods\n public dynamic GetInputObject()\n {\n IDictionary<string, object> d = new System.Dynamic.ExpandoObject();\n\n var properties = GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);\n foreach (var propertyInfo in properties)\n {\n var value = propertyInfo.GetValue(this);\n var defaultValue = propertyInfo.PropertyType.IsValueType ? Activator.CreateInstance(propertyInfo.PropertyType) : null;\n\n var requiredProp = propertyInfo.GetCustomAttributes(typeof(JsonRequiredAttribute), false).Length > 0;\n if (requiredProp || value != defaultValue)\n {\n d[propertyInfo.Name] = value;\n }\n }\n return d;\n }\n #endregion\n}\n#endregion`;\n }\n InputObjectTypeDefinition(node) {\n const name = `${this.convertName(node)}`;\n return this.buildInputTransformer(name, node.description, node.fields);\n }\n ObjectTypeDefinition(node) {\n return this.buildClass(node.name.value, node.description, node.fields, node.interfaces);\n }\n InterfaceTypeDefinition(node) {\n return this.buildInterface(node.name.value, node.description, node.fields);\n }\n}\n//# sourceMappingURL=visitor.js.map","import { parse, printSchema, visit } from 'graphql';\nimport { CSharpResolversVisitor } from './visitor';\nimport { buildPackageNameFromPath } from '../../common/common';\nimport { dirname, normalize } from 'path';\nexport const plugin = async (schema, documents, config, { outputFile }) => {\n const relevantPath = dirname(normalize(outputFile));\n const defaultPackageName = buildPackageNameFromPath(relevantPath);\n const visitor = new CSharpResolversVisitor(config, schema, defaultPackageName);\n const printedSchema = printSchema(schema);\n const astNode = parse(printedSchema);\n const visitorResult = visit(astNode, { leave: visitor });\n const imports = visitor.getImports();\n const blockContent = visitorResult.definitions.filter(d => typeof d === 'string').join('\\n');\n const wrappedBlockContent = visitor.wrapWithClass(blockContent);\n const wrappedContent = visitor.wrapWithNamespace(wrappedBlockContent);\n return [imports, wrappedContent].join('\\n');\n};\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}
\No newline at end of file