UNPKG

graphql-from-swagger

Version:

<a href="http://badge.fury.io/js/graphql-from-swagger"><img src="https://badge.fury.io/js/graphql-from-swagger.svg"></a>

59 lines (50 loc) 2.16 kB
import path from 'path'; import fs from 'fs'; // deleteCustomerUsingDELETE -> MutationDeleteCustomerUsingDeleteArgs export function getArgsStringFromOperationId(operationId: string, method: string): string { const prefix = method.toLowerCase() === 'get' ? 'Query' : 'Mutation'; let prevChar: string = ''; return ( prefix + operationId.split('').reduce((result: string, char, index) => { if (index === 0) return char.toUpperCase(); if (/[A-Z]/.test(prevChar) && /[A-Z]/.test(char)) result += char.toLowerCase(); else result += char; prevChar = char; return result; }, '') + 'Args' ); } export function indent(str: string, count = 1): string { return new Array(count).fill(' ').join('') + str; } // "../generated/HeroesApi.ts" 파일에서 "../generated/types1.ts" 파일의 상대경로는 "./types1" export function getRelativePath(from: string, to: string, ext: string = '.ts'): string { const targetFileName = path.basename(to, ext); let relativePath = path.relative(path.dirname(from), path.dirname(to)); if (relativePath === '') relativePath = '.'; if (targetFileName === 'index') return relativePath; return `${relativePath}/${targetFileName}` } export function getInstanceNameFromClass(className: string): string { if (!className) throw new Error('[getInstanceNameFromClass] className can not be empty string or undefined!'); return className[0].toLowerCase() + className.substring(1); } export function checkUrlForm(strUrl: string): boolean { var expUrl = /^http[s]?\:\/\//i; return expUrl.test(strUrl); } export function writeFiles(paths: string[], strs: string[]) { const currentDir = process.cwd(); for (let i=0; i<paths.length; i++) { fs.writeFile(path.join(currentDir, paths[i]), strs[i], () => { console.info(`[${path.join(currentDir, paths[i])}] was generated!`); }); } } export const replaceOddChars = (str: string): string => str.replace(/[^_a-zA-Z0-9]/g, '_'); export const getGQLTypeNameFromURL = (method: string, url: string): string => { const fromUrl = replaceOddChars(url.replace(/[{}]+/g, '')); return `${method}${fromUrl}`; };