UNPKG

@gql2ts/language-typescript

Version:
97 lines (95 loc) 4.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("@gql2ts/util"); const typescriptPrettify_1 = require("./typescriptPrettify"); const humps_1 = require("humps"); exports.DEFAULT_INTERFACE_DECLARATION = fields => `{ ${util_1.filterAndJoinArray(fields)} }`; exports.DEFAULT_INTERFACE_BUILDER = (name, body) => `interface ${name} ${body}`; exports.DEFAULT_INTERFACE_NAMER = name => `I${humps_1.pascalize(name)}`; exports.DEFAULT_TYPE_BUILDER = (name, body) => `type ${name} = ${body}`; exports.DEFAULT_TYPE_JOINER = types => util_1.filterAndJoinArray(types, ' & '); exports.DEFAULT_TYPE_NAMER = name => name; exports.interfaceExtendListToString = exts => { if (!exts.length) { return ''; } return ` extends ${util_1.filterAndJoinArray(exts, ', ')}`; }; exports.ADD_INTERFACE_EXTENSIONS = (opName, exts) => opName + exports.interfaceExtendListToString(exts); exports.DEFAULT_NAME_FRAGMENT = name => `IFragment${humps_1.pascalize(name)}`; exports.DEFAULT_NAME_QUERY = def => def.name ? humps_1.pascalize(def.name.value) : 'Anonymous'; exports.DEFAULT_FORMAT_INPUT = (name, isOptional, type) => exports.ADD_SEMICOLON(`${name}${isOptional ? '?:' : ':'} ${type}`); exports.DEFAULT_TYPE_MAP = { ID: 'string', String: 'string', Boolean: 'boolean', Float: 'number', Int: 'number', __DEFAULT: 'any', }; exports.DEFAULT_WRAP_LIST = type => `Array<${type}>`; exports.DEFAULT_WRAP_PARTIAL = partial => `Partial<${partial}>`; exports.DEFAULT_TYPE_PRINTER = (type, isNonNull) => isNonNull ? type : `${type} | null`; exports.DEFAULT_GENERATE_SUBTYPE_INTERFACE_NAME = selectionName => `SelectionOn${humps_1.pascalize(selectionName)}`; exports.DEFAULT_ENUM_FORMATTER = (values, documentationGenerator) => `{ ${util_1.filterAndJoinArray(values.map(value => util_1.filterAndJoinArray([ documentationGenerator(util_1.buildDocumentation(value)), `${value.name} = '${value.name}'` ])), ',\n')} }`; exports.DEFAULT_ENUM_TYPE_BUILDER = (name, values) => `const enum ${name} ${values}`; exports.DEFAULT_ENUM_NAME_GENERATOR = name => `${humps_1.pascalize(name)}`; exports.DEFAULT_INPUT_NAME_GENERATOR = name => `${humps_1.pascalize(name)}Input`; exports.DEFAULT_EXPORT_FUNCTION = declaration => `export ${declaration}`; exports.ADD_SEMICOLON = str => `${str};`; exports.DEFAULT_NAMESPACE_GENERATOR = (namespaceName, interfaces) => `// tslint:disable // graphql typescript definitions declare namespace ${namespaceName} { ${interfaces} } // tslint:enable `; const fixDescriptionDocblock = description => description ? description.replace(/\n/g, '\n* ') : description; exports.DEFAULT_DOCUMENTATION_GENERATOR = ({ description, tags = [] }) => { if (!description && !tags.length) { return ''; } const arr = [ fixDescriptionDocblock(description), ...tags.map(({ tag, value }) => `@${tag} ${JSON.stringify(value)}`) ]; return ` /** * ${util_1.filterAndJoinArray(arr, '\n * ')} */`; }; exports.DEFAULT_OPTIONS = { wrapList: exports.DEFAULT_WRAP_LIST, wrapPartial: exports.DEFAULT_WRAP_PARTIAL, generateSubTypeInterfaceName: exports.DEFAULT_GENERATE_SUBTYPE_INTERFACE_NAME, printType: exports.DEFAULT_TYPE_PRINTER, formatInput: exports.DEFAULT_FORMAT_INPUT, generateFragmentName: exports.DEFAULT_NAME_FRAGMENT, generateQueryName: exports.DEFAULT_NAME_QUERY, formatEnum: exports.DEFAULT_ENUM_FORMATTER, interfaceBuilder: exports.DEFAULT_INTERFACE_BUILDER, typeBuilder: exports.DEFAULT_TYPE_BUILDER, enumTypeBuilder: exports.DEFAULT_ENUM_TYPE_BUILDER, typeJoiner: exports.DEFAULT_TYPE_JOINER, generateInterfaceDeclaration: exports.DEFAULT_INTERFACE_DECLARATION, generateEnumName: exports.DEFAULT_ENUM_NAME_GENERATOR, generateTypeName: exports.DEFAULT_TYPE_NAMER, generateInterfaceName: exports.DEFAULT_INTERFACE_NAMER, exportFunction: exports.DEFAULT_EXPORT_FUNCTION, addSemicolon: exports.ADD_SEMICOLON, generateNamespace: exports.DEFAULT_NAMESPACE_GENERATOR, postProcessor: typescriptPrettify_1.default, generateInputName: exports.DEFAULT_INPUT_NAME_GENERATOR, addExtensionsToInterfaceName: exports.ADD_INTERFACE_EXTENSIONS, generateDocumentation: exports.DEFAULT_DOCUMENTATION_GENERATOR, typeMap: exports.DEFAULT_TYPE_MAP }; exports.default = exports.DEFAULT_OPTIONS; //# sourceMappingURL=index.js.map