diff --git a/.prettierignore b/.prettierignore index 0e75fe55..a4a9265e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,5 @@ node_modules dist coverage +generator/**/*.yml +*.yml \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 20d4a48a..606f45f5 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,7 +1,7 @@ -{ - "tabWidth": 4, - "singleQuote": true, - "printWidth": 80, - "useTabs": true, - "trailingComma": "es5" +{ + "tabWidth": 2, + "singleQuote": true, + "printWidth": 80, + "useTabs": false, + "trailingComma": "es5" } diff --git a/generator/generators/aws/generator.ts b/generator/generators/aws/generator.ts index b46e1e31..a905e499 100644 --- a/generator/generators/aws/generator.ts +++ b/generator/generators/aws/generator.ts @@ -1,9 +1,9 @@ -import * as fs from "fs"; -import { createSourceFile, ScriptTarget, SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; -import { getAST } from "../../parsers/aws/parser"; -import { transform } from "../../transformers/aws/transformer"; -import { filters, getDir,groupers, printFile } from "../lib/helper"; +import { getAST } from '../../parsers/aws/parser'; +import { transform } from '../../transformers/aws/transformer'; +import { filters, getDir, groupers, printFile } from '../lib/helper'; interface FunctionData { functionName: string; @@ -23,7 +23,7 @@ interface ClassData { serviceName: string; } -const dummyFile = process.cwd() + "/dummyClasses/aws.js"; +const dummyFile = process.cwd() + '/dummyClasses/aws.js'; const dummyAst = createSourceFile( dummyFile, fs.readFileSync(dummyFile).toString(), @@ -36,29 +36,29 @@ export function extractSDKData(sdkClassAst, serviceClass) { const functions = []; Object.keys(serviceClass).map((key, index) => { - functions.push(serviceClass[key].split(" ")[1]); + functions.push(serviceClass[key].split(' ')[1]); }); sdkClassAst.members.map(method => { if (method.name && functions.includes(method.name.text)) { let name; Object.keys(serviceClass).map((key, index) => { - if (serviceClass[key].split(" ")[1] === method.name.text) { + if (serviceClass[key].split(' ')[1] === method.name.text) { name = key; } }); const parameters = []; method.parameters.map(param => { - if (param.name.text !== "callback") { + if (param.name.text !== 'callback') { const parameter = { name: param.name.text, optional: param.questionToken ? true : false, type: SyntaxKind[param.type.kind], - typeName: null + typeName: null, }; - if (parameter.type === "TypeReference" && param.type.typeName) { + if (parameter.type === 'TypeReference' && param.type.typeName) { parameter.typeName = param.type.typeName.right.text; } @@ -69,7 +69,7 @@ export function extractSDKData(sdkClassAst, serviceClass) { methods.push({ functionName: name.toString(), SDKFunctionName: method.name.text.toString(), - params: parameters + params: parameters, }); } }); @@ -80,14 +80,14 @@ export function extractSDKData(sdkClassAst, serviceClass) { const classData: ClassData = { className: sdkClassAst.name.text, functions: methods, - serviceName: null + serviceName: null, }; return classData; } export function generateAWSClass(serviceClass, serviceName) { - const sdkFile = serviceClass[Object.keys(serviceClass)[0]].split(" ")[0]; + const sdkFile = serviceClass[Object.keys(serviceClass)[0]].split(' ')[0]; getAST(sdkFile).then(async result => { const sdkClassAst = result; try { @@ -96,26 +96,26 @@ export function generateAWSClass(serviceClass, serviceName) { const output = await transform(dummyAst, classData); let filePath; const dir = getDir(serviceName); - if (!fs.existsSync(process.cwd() + "/generatedClasses/AWS/" + dir)) { - fs.mkdirSync(process.cwd() + "/generatedClasses/AWS/" + dir); + if (!fs.existsSync(process.cwd() + '/generatedClasses/AWS/' + dir)) { + fs.mkdirSync(process.cwd() + '/generatedClasses/AWS/' + dir); } if (/^[A-Z]*$/.test(serviceName)) { filePath = process.cwd() + - "/generatedClasses/AWS/" + + '/generatedClasses/AWS/' + dir + - "/aws-" + + '/aws-' + serviceName + - ".js"; + '.js'; } else { filePath = process.cwd() + - "/generatedClasses/AWS/" + + '/generatedClasses/AWS/' + dir + - "/aws-" + + '/aws-' + serviceName.charAt(0).toLowerCase() + serviceName.slice(1) + - ".js"; + '.js'; } printFile(filePath, output); } catch (e) { diff --git a/generator/generators/azure/generator.ts b/generator/generators/azure/generator.ts index 2aa27b60..183d1526 100644 --- a/generator/generators/azure/generator.ts +++ b/generator/generators/azure/generator.ts @@ -1,9 +1,9 @@ -import * as fs from "fs"; -import { createSourceFile, ScriptTarget,SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; -import { getAST } from "../../parsers/azure/parser"; -import { transform } from "../../transformers/azure/transformer"; -import { filters, getDir,groupers, printFile } from "../lib/helper"; +import { getAST } from '../../parsers/azure/parser'; +import { transform } from '../../transformers/azure/transformer'; +import { filters, getDir, groupers, printFile } from '../lib/helper'; interface FunctionData { pkgName: string; @@ -20,7 +20,7 @@ interface param { type: string; } -const dummyFile = process.cwd() + "/dummyClasses/azure.js"; +const dummyFile = process.cwd() + '/dummyClasses/azure.js'; const dummyAst = createSourceFile( dummyFile, fs.readFileSync(dummyFile).toString(), @@ -32,16 +32,16 @@ export function extractSDKData(sdkFiles, methods) { const specifiedMethods = JSON.parse(JSON.stringify(methods)); sdkFiles.map(sdkFile => { sdkFile.ast.members.map(member => { - if (SyntaxKind[member.kind] === "Constructor") { + if (SyntaxKind[member.kind] === 'Constructor') { member.parameters.map(param => { const tempStr = param.type.typeName.text.split(/(?=[A-Z])/); tempStr.pop(); - sdkFile.client = tempStr.join(""); + sdkFile.client = tempStr.join(''); }); } if ( - SyntaxKind[member.kind] === "MethodDeclaration" && + SyntaxKind[member.kind] === 'MethodDeclaration' && sdkFile.sdkFunctionNames.includes(member.name.text) ) { const method = methods.find( @@ -53,7 +53,7 @@ export function extractSDKData(sdkFiles, methods) { return { name: param.name.text, optional: param.questionToken ? true : false, - type: SyntaxKind[param.type.kind] + type: SyntaxKind[param.type.kind], }; }); @@ -74,14 +74,14 @@ export function extractSDKData(sdkFiles, methods) { }); if (JSON.stringify(methods) === JSON.stringify(specifiedMethods)) { - throw new Error("Data extraction unsuccessful"); + throw new Error('Data extraction unsuccessful'); } const groupedMethods = groupers.azure(methods); methods = filters.azure(groupedMethods); const classData = { - functions: methods + functions: methods, }; return classData; @@ -92,13 +92,13 @@ export async function generateAzureClass(serviceClass, serviceName) { Object.keys(serviceClass).map((key, index) => { methods.push({ - pkgName: serviceClass[key].split(" ")[0], - fileName: serviceClass[key].split(" ")[1], + pkgName: serviceClass[key].split(' ')[0], + fileName: serviceClass[key].split(' ')[1], functionName: key, - SDKFunctionName: serviceClass[key].split(" ")[2], + SDKFunctionName: serviceClass[key].split(' ')[2], params: [], returnType: null, - client: null + client: null, }); }); @@ -112,7 +112,7 @@ export async function generateAzureClass(serviceClass, serviceName) { client: null, sdkFunctionNames: methods .filter(method => method.fileName === file) - .map(method => method.SDKFunctionName) + .map(method => method.SDKFunctionName), }; }); @@ -127,26 +127,26 @@ export async function generateAzureClass(serviceClass, serviceName) { const output = await transform(dummyAst, classData); let filePath; const dir = getDir(serviceName); - if (!fs.existsSync(process.cwd() + "/generatedClasses/Azure/" + dir)) { - fs.mkdirSync(process.cwd() + "/generatedClasses/Azure/" + dir); + if (!fs.existsSync(process.cwd() + '/generatedClasses/Azure/' + dir)) { + fs.mkdirSync(process.cwd() + '/generatedClasses/Azure/' + dir); } if (/^[A-Z]*$/.test(serviceName)) { filePath = process.cwd() + - "/generatedClasses/Azure/" + + '/generatedClasses/Azure/' + dir + - "/azure-" + + '/azure-' + serviceName + - ".js"; + '.js'; } else { filePath = process.cwd() + - "/generatedClasses/Azure/" + + '/generatedClasses/Azure/' + dir + - "/azure-" + + '/azure-' + serviceName.charAt(0).toLowerCase() + serviceName.slice(1) + - ".js"; + '.js'; } printFile(filePath, output); } diff --git a/generator/generators/do/generator.ts b/generator/generators/do/generator.ts index 052b13e0..518b9d4b 100644 --- a/generator/generators/do/generator.ts +++ b/generator/generators/do/generator.ts @@ -1,9 +1,9 @@ -import * as fs from "fs"; -import { createSourceFile, ScriptTarget, SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; -import { getAST } from "../../parsers/do/parser"; -import { transform } from "../../transformers/do/transformer"; -import { getDir,printFile } from "../lib/helper"; +import { getAST } from '../../parsers/do/parser'; +import { transform } from '../../transformers/do/transformer'; +import { getDir, printFile } from '../lib/helper'; interface FunctionData { functionName: string; @@ -23,7 +23,7 @@ interface ClassData { serviceName: string; } -const dummyFile = process.cwd() + "/dummyClasses/do.js"; +const dummyFile = process.cwd() + '/dummyClasses/do.js'; const dummyAst = createSourceFile( dummyFile, @@ -37,29 +37,29 @@ export function extractSDKData(sdkClassAst, serviceClass) { const functions = []; Object.keys(serviceClass).map((key, index) => { - functions.push(serviceClass[key].split(" ")[1]); + functions.push(serviceClass[key].split(' ')[1]); }); sdkClassAst.members.map(method => { if (method.name && functions.includes(method.name.text)) { let name; Object.keys(serviceClass).map((key, index) => { - if (serviceClass[key].split(" ")[1] === method.name.text) { + if (serviceClass[key].split(' ')[1] === method.name.text) { name = key; } }); const parameters = []; method.parameters.map(param => { - if (param.name.text !== "callback") { + if (param.name.text !== 'callback') { const parameter = { name: param.name.text, optional: param.questionToken ? true : false, type: SyntaxKind[param.type.kind], - typeName: null + typeName: null, }; - if (parameter.type === "TypeReference" && param.type.typeName) { + if (parameter.type === 'TypeReference' && param.type.typeName) { parameter.typeName = param.type.typeName.text; } @@ -70,7 +70,7 @@ export function extractSDKData(sdkClassAst, serviceClass) { methods.push({ functionName: name.toString(), SDKFunctionName: method.name.text.toString(), - params: parameters + params: parameters, }); } }); @@ -78,14 +78,14 @@ export function extractSDKData(sdkClassAst, serviceClass) { const classData: ClassData = { className: sdkClassAst.name.text, functions: methods, - serviceName: null + serviceName: null, }; return classData; } export function generateDOClass(serviceClass, serviceName) { - const sdkFile = serviceClass[Object.keys(serviceClass)[0]].split(" ")[0]; + const sdkFile = serviceClass[Object.keys(serviceClass)[0]].split(' ')[0]; getAST(sdkFile).then(async result => { const sdkClassAst = result; try { @@ -94,26 +94,26 @@ export function generateDOClass(serviceClass, serviceName) { const output = await transform(dummyAst, classData); let filePath; const dir = getDir(serviceName); - if (!fs.existsSync(process.cwd() + "/generatedClasses/DO/" + dir)) { - fs.mkdirSync(process.cwd() + "/generatedClasses/DO/" + dir); + if (!fs.existsSync(process.cwd() + '/generatedClasses/DO/' + dir)) { + fs.mkdirSync(process.cwd() + '/generatedClasses/DO/' + dir); } if (/^[A-Z]*$/.test(serviceName)) { filePath = process.cwd() + - "/generatedClasses/DO/" + + '/generatedClasses/DO/' + dir + - "/do-" + + '/do-' + serviceName + - ".js"; + '.js'; } else { filePath = process.cwd() + - "/generatedClasses/DO/" + + '/generatedClasses/DO/' + dir + - "/do-" + + '/do-' + serviceName.charAt(0).toLowerCase() + serviceName.slice(1) + - ".js"; + '.js'; } printFile(filePath, output); } catch (e) { diff --git a/generator/generators/googleCloud/generator.ts b/generator/generators/googleCloud/generator.ts index 9a2702cf..246e5edb 100644 --- a/generator/generators/googleCloud/generator.ts +++ b/generator/generators/googleCloud/generator.ts @@ -1,11 +1,11 @@ -import * as fs from "fs"; -import * as path from "path"; -import { createSourceFile, ScriptTarget,SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import * as path from 'path'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; -import { getAST } from "../../parsers/googleCloud/parser"; -import { classBasedTransform } from "../../transformers/googleCloud/classBasedTransformer"; -import { clientBasedTransform } from "../../transformers/googleCloud/clientBasedTransformer"; -import { filters, getDir,groupers, printFile } from "../lib/helper"; +import { getAST } from '../../parsers/googleCloud/parser'; +import { classBasedTransform } from '../../transformers/googleCloud/classBasedTransformer'; +import { clientBasedTransform } from '../../transformers/googleCloud/clientBasedTransformer'; +import { filters, getDir, groupers, printFile } from '../lib/helper'; interface ClassData { name: string; @@ -41,7 +41,7 @@ interface param { optional: boolean; } -const dummyFile = process.cwd() + "/dummyClasses/gcp.js"; +const dummyFile = process.cwd() + '/dummyClasses/gcp.js'; const dummyAst = createSourceFile( dummyFile, fs.readFileSync(dummyFile).toString(), @@ -61,18 +61,18 @@ export function extractClassBasedSDKData(methods, sdkFiles): any { name: classAst.name.text, methods: [], properties: [], - constructor: null + constructor: null, }; classAst.members.map(member => { - if (SyntaxKind[member.kind] === "MethodDeclaration") { + if (SyntaxKind[member.kind] === 'MethodDeclaration') { const returnType = SyntaxKind[member.type.kind]; const parameters = member.parameters.map(param => { return { name: param.name.text, optional: param.questionToken ? true : false, - type: SyntaxKind[param.type.kind] + type: SyntaxKind[param.type.kind], }; }); const method: FunctionData = { @@ -84,10 +84,10 @@ export function extractClassBasedSDKData(methods, sdkFiles): any { params: parameters, returnType: returnType, returnTypeName: null, - client: classAst.name.text // Class name + client: classAst.name.text, // Class name }; - if (returnType === "TypeReference") { + if (returnType === 'TypeReference') { method.returnTypeName = member.type.typeName.text; } @@ -100,7 +100,7 @@ export function extractClassBasedSDKData(methods, sdkFiles): any { classInfo.methods.push(method); } - if (SyntaxKind[member.kind] === "Constructor") { + if (SyntaxKind[member.kind] === 'Constructor') { const parameters = member.parameters.map(param => { return { name: param.name.text, @@ -108,20 +108,20 @@ export function extractClassBasedSDKData(methods, sdkFiles): any { type: SyntaxKind[param.type.kind], typeRefName: param.type.typeName ? param.type.typeName.text - : null + : null, }; }); classInfo.constructor = { - parameters + parameters, }; } - if (SyntaxKind[member.kind] === "PropertyDeclaration") { + if (SyntaxKind[member.kind] === 'PropertyDeclaration') { const isPrivateProp = member.modifiers && member.modifiers.some( - modifier => SyntaxKind[modifier.kind] === "PrivateKeyword" + modifier => SyntaxKind[modifier.kind] === 'PrivateKeyword' ); if (!isPrivateProp) { const prop = { @@ -129,7 +129,7 @@ export function extractClassBasedSDKData(methods, sdkFiles): any { type: SyntaxKind[member.type.kind], typeRefName: member.type.typeName ? member.type.typeName.text - : null + : null, }; classInfo.properties.push(prop); } @@ -154,10 +154,10 @@ export function extractClassBasedSDKData(methods, sdkFiles): any { const extractedData = { classes, - methods + methods, }; if (JSON.stringify(methods) === JSON.stringify(specifiedMethods)) { - reject(new Error("Data extraction unsuccessful")); + reject(new Error('Data extraction unsuccessful')); } else { resolve(extractedData); } @@ -175,7 +175,7 @@ export function extractClientBasedSDKdata(methods, sdkFiles): any { sdkFile.client = sdkFile.ast.name.text; sdkFile.ast.members.map(member => { if ( - SyntaxKind[member.kind] === "MethodDeclaration" && + SyntaxKind[member.kind] === 'MethodDeclaration' && sdkFile.sdkFunctionNames.includes(member.name.text) ) { const method = methods.find( @@ -186,12 +186,12 @@ export function extractClientBasedSDKdata(methods, sdkFiles): any { return { name: param.name.text, optional: param.questionToken ? true : false, - type: SyntaxKind[param.type.kind] + type: SyntaxKind[param.type.kind], }; }); const returnType = SyntaxKind[member.type.kind]; - if (returnType === "TypeReference") { + if (returnType === 'TypeReference') { method.returnTypeName = member.type.typeName.text; } @@ -211,7 +211,7 @@ export function extractClientBasedSDKdata(methods, sdkFiles): any { }); if (JSON.stringify(methods) === JSON.stringify(specifiedMethods)) { - reject(new Error("Data extraction unsuccessful")); + reject(new Error('Data extraction unsuccessful')); } else { resolve(methods); } @@ -226,7 +226,7 @@ async function generateClassBasedCode(methods, data, serviceName) { let files = fs.readdirSync(path.join(__dirname, dirPath)); files = files.filter( fileName => - fileName.split(".")[1] === "d" && fileName.split(".")[2] === "ts" + fileName.split('.')[1] === 'd' && fileName.split('.')[2] === 'ts' ); const sdkFiles = files.map(fileName => { @@ -236,7 +236,7 @@ async function generateClassBasedCode(methods, data, serviceName) { classes: null, sdkFunctionNames: methods .filter(method => method.fileName === fileName) - .map(method => method.SDKFunctionName) + .map(method => method.SDKFunctionName), }; }); @@ -258,44 +258,44 @@ async function generateClassBasedCode(methods, data, serviceName) { const output = await classBasedTransform(dummyAst, data); let filePath; const dir = getDir(serviceName); - if (!fs.existsSync(process.cwd() + "/generatedClasses/googleCloud/" + dir)) { - fs.mkdirSync(process.cwd() + "/generatedClasses/googleCloud/" + dir); + if (!fs.existsSync(process.cwd() + '/generatedClasses/googleCloud/' + dir)) { + fs.mkdirSync(process.cwd() + '/generatedClasses/googleCloud/' + dir); } if (/^[A-Z]*$/.test(serviceName)) { filePath = process.cwd() + - "/generatedClasses/googleCloud/" + + '/generatedClasses/googleCloud/' + dir + - "/gcp-" + + '/gcp-' + serviceName + - ".js"; + '.js'; } else { filePath = process.cwd() + - "/generatedClasses/googleCloud/" + + '/generatedClasses/googleCloud/' + dir + - "/gcp-" + + '/gcp-' + serviceName.charAt(0).toLowerCase() + serviceName.slice(1) + - ".js"; + '.js'; } printFile(filePath, output); } async function generateClientBasedCode(methods, serviceName) { const files = Array.from( - new Set(methods.map(method => method.fileName + " " + method.version)) + new Set(methods.map(method => method.fileName + ' ' + method.version)) ); const sdkFiles = files.map(file => { return { - fileName: (file).split(" ")[0], - version: (file).split(" ")[1], + fileName: (file).split(' ')[0], + version: (file).split(' ')[1], pkgName: methods[0].pkgName, ast: null, client: null, sdkFunctionNames: methods - .filter(method => method.fileName === (file).split(" ")[0]) - .map(method => method.SDKFunctionName) + .filter(method => method.fileName === (file).split(' ')[0]) + .map(method => method.SDKFunctionName), }; }); @@ -313,32 +313,32 @@ async function generateClientBasedCode(methods, serviceName) { const classData = { functions: methods, - serviceName + serviceName, }; const output = await clientBasedTransform(dummyAst, classData); let filePath; const dir = getDir(serviceName); - if (!fs.existsSync(process.cwd() + "/generatedClasses/googleCloud/" + dir)) { - fs.mkdirSync(process.cwd() + "/generatedClasses/googleCloud/" + dir); + if (!fs.existsSync(process.cwd() + '/generatedClasses/googleCloud/' + dir)) { + fs.mkdirSync(process.cwd() + '/generatedClasses/googleCloud/' + dir); } if (/^[A-Z]*$/.test(serviceName)) { filePath = process.cwd() + - "/generatedClasses/googleCloud/" + + '/generatedClasses/googleCloud/' + dir + - "/gcp-" + + '/gcp-' + serviceName + - ".js"; + '.js'; } else { filePath = process.cwd() + - "/generatedClasses/googleCloud/" + + '/generatedClasses/googleCloud/' + dir + - "/gcp-" + + '/gcp-' + serviceName.charAt(0).toLowerCase() + serviceName.slice(1) + - ".js"; + '.js'; } printFile(filePath, output); } @@ -348,34 +348,34 @@ export async function generateGCPClass(serviceClass, serviceName) { const data: any = {}; Object.keys(serviceClass).map((key, index) => { - if (key === "mainClass") { + if (key === 'mainClass') { data.mainClass = serviceClass[key]; } else if ( - serviceClass[key].split(" ")[1].length === 2 && - serviceClass[key].split(" ")[1].charAt(0) === "v" + serviceClass[key].split(' ')[1].length === 2 && + serviceClass[key].split(' ')[1].charAt(0) === 'v' ) { methods.push({ - pkgName: serviceClass[key].split(" ")[0], - version: serviceClass[key].split(" ")[1], - fileName: serviceClass[key].split(" ")[2], + pkgName: serviceClass[key].split(' ')[0], + version: serviceClass[key].split(' ')[1], + fileName: serviceClass[key].split(' ')[2], functionName: key, - SDKFunctionName: serviceClass[key].split(" ")[3], + SDKFunctionName: serviceClass[key].split(' ')[3], params: [], returnType: null, returnTypeName: null, - client: null + client: null, }); } else { methods.push({ - pkgName: serviceClass[key].split(" ")[0], + pkgName: serviceClass[key].split(' ')[0], version: null, - fileName: serviceClass[key].split(" ")[1], + fileName: serviceClass[key].split(' ')[1], functionName: key, - SDKFunctionName: serviceClass[key].split(" ")[2], + SDKFunctionName: serviceClass[key].split(' ')[2], params: [], returnType: null, returnTypeName: null, - client: null + client: null, }); } }); diff --git a/generator/generators/lib/aws/awsHelper.ts b/generator/generators/lib/aws/awsHelper.ts index 7cfe04de..c01119ec 100644 --- a/generator/generators/lib/aws/awsHelper.ts +++ b/generator/generators/lib/aws/awsHelper.ts @@ -5,13 +5,13 @@ export function groupAWSMethods(methods): any { if (!result[functionName]) result[functionName] = { functionName, - array: [] + array: [], }; // Append to group result[functionName].array.push({ functionName, SDKFunctionName, - params + params, }); return result; }, {}) diff --git a/generator/generators/lib/azure/azureHelper.ts b/generator/generators/lib/azure/azureHelper.ts index dc066724..dc126e66 100644 --- a/generator/generators/lib/azure/azureHelper.ts +++ b/generator/generators/lib/azure/azureHelper.ts @@ -10,14 +10,14 @@ export function groupAzureMethods(methods): any { pkgName, fileName, client, - returnType + returnType, } ) => { // Create new group if (!result[functionName]) result[functionName] = { functionName, - array: [] + array: [], }; // Append to group result[functionName].array.push({ @@ -27,7 +27,7 @@ export function groupAzureMethods(methods): any { pkgName, fileName, client, - returnType + returnType, }); return result; }, @@ -46,7 +46,7 @@ export function filterAzureMethods(groupedMethods): any { } else { let methodPushed = false; group.array.map(method => { - if (!method.params.find(param => param.name === "callback")) { + if (!method.params.find(param => param.name === 'callback')) { methods.push(method); methodPushed = true; } diff --git a/generator/generators/lib/googleCloud/gcpHelper.ts b/generator/generators/lib/googleCloud/gcpHelper.ts index 2b93f726..50d023b3 100644 --- a/generator/generators/lib/googleCloud/gcpHelper.ts +++ b/generator/generators/lib/googleCloud/gcpHelper.ts @@ -12,14 +12,14 @@ export function groupGCPMethods(methods): any { client, returnType, returnTypeName, - classConstructorData + classConstructorData, } ) => { // Create new group if (!result[functionName]) result[functionName] = { functionName, - array: [] + array: [], }; // Append to group result[functionName].array.push({ @@ -31,7 +31,7 @@ export function groupGCPMethods(methods): any { client, returnType, returnTypeName, - classConstructorData + classConstructorData, }); return result; }, @@ -50,7 +50,7 @@ export function filterGCPMethods(groupedMethods): any { } else { let methodPushed = false; group.array.map(method => { - if (!method.params.find(param => param.name === "callback")) { + if (!method.params.find(param => param.name === 'callback')) { methods.push(method); methodPushed = true; } diff --git a/generator/generators/lib/helper.ts b/generator/generators/lib/helper.ts index 31c67b7c..9f1759ac 100644 --- a/generator/generators/lib/helper.ts +++ b/generator/generators/lib/helper.ts @@ -1,21 +1,21 @@ -import * as fs from "fs"; +import * as fs from 'fs'; -import { groupAWSMethods } from "../lib/aws/awsHelper"; -import { filterAWSMethods } from "../lib/aws/awsHelper"; -import { groupAzureMethods } from "../lib/azure/azureHelper"; -import { filterAzureMethods } from "../lib/azure/azureHelper"; -import { groupGCPMethods } from "../lib/googleCloud/gcpHelper"; -import { filterGCPMethods } from "../lib/googleCloud/gcpHelper"; +import { groupAWSMethods } from '../lib/aws/awsHelper'; +import { filterAWSMethods } from '../lib/aws/awsHelper'; +import { groupAzureMethods } from '../lib/azure/azureHelper'; +import { filterAzureMethods } from '../lib/azure/azureHelper'; +import { groupGCPMethods } from '../lib/googleCloud/gcpHelper'; +import { filterGCPMethods } from '../lib/googleCloud/gcpHelper'; const dirMap = { - appServices: ["PaaS"], - compute: ["ComputeInstance", "Kubernetes", "Container"], - database: ["NoSqlIndexed", "RDBMS", "NoSql"], - management: ["Monitoring", "KeyManagement", "NotificationService"], - network: ["DNS", "LoadBalancer"], - security: ["IAM"], - storage: ["StorageBucket", "BlockStorage", "ArchivalStorage"], - artificialinteligence: ["Translation"] + appServices: ['PaaS'], + compute: ['ComputeInstance', 'Kubernetes', 'Container'], + database: ['NoSqlIndexed', 'RDBMS', 'NoSql'], + management: ['Monitoring', 'KeyManagement', 'NotificationService'], + network: ['DNS', 'LoadBalancer'], + security: ['IAM'], + storage: ['StorageBucket', 'BlockStorage', 'ArchivalStorage'], + artificialinteligence: ['Translation'], }; export function printFile(fileName, data) { @@ -27,13 +27,13 @@ export function printFile(fileName, data) { const groupers = { aws: groupAWSMethods, gcp: groupGCPMethods, - azure: groupAzureMethods + azure: groupAzureMethods, }; const filters = { aws: filterAWSMethods, gcp: filterGCPMethods, - azure: filterAzureMethods + azure: filterAzureMethods, }; const getDir = (service: string): string => { @@ -42,7 +42,7 @@ const getDir = (service: string): string => { return dir; } } - throw new Error("Not a valid service: " + service); + throw new Error('Not a valid service: ' + service); }; -export { filters, getDir,groupers }; +export { filters, getDir, groupers }; diff --git a/generator/main.ts b/generator/main.ts index 5374718c..5c567bcb 100644 --- a/generator/main.ts +++ b/generator/main.ts @@ -1,26 +1,26 @@ -import * as fs from "fs"; -import * as yaml from "js-yaml"; +import * as fs from 'fs'; +import * as yaml from 'js-yaml'; -import { generateAWSClass } from "./generators/aws/generator"; -import { generateAzureClass } from "./generators/azure/generator"; -import { generateDOClass } from "./generators/do/generator"; -import { generateGCPClass } from "./generators/googleCloud/generator"; +import { generateAWSClass } from './generators/aws/generator'; +import { generateAzureClass } from './generators/azure/generator'; +import { generateDOClass } from './generators/do/generator'; +import { generateGCPClass } from './generators/googleCloud/generator'; try { - const services = yaml.safeLoad(fs.readFileSync("node-cloud.yml", "utf8")); + const services = yaml.safeLoad(fs.readFileSync('node-cloud.yml', 'utf8')); Object.keys(services).map((service, index) => { Object.keys(services[service]).map((provider, index1) => { - if (provider === "Azure") { + if (provider === 'Azure') { generateAzureClass(services[service][provider], service); - } else if (provider === "AWS") { + } else if (provider === 'AWS') { generateAWSClass(services[service][provider], service); - } else if (provider === "GCP") { + } else if (provider === 'GCP') { generateGCPClass(services[service][provider], service); - } else if (provider == "DO") { + } else if (provider == 'DO') { generateDOClass(services[service][provider], service); } }); }); } catch (error) { - console.error("Error : ", error); + console.error('Error : ', error); } diff --git a/generator/package.json b/generator/package.json index 9ac31b84..bc3fca71 100644 --- a/generator/package.json +++ b/generator/package.json @@ -13,7 +13,7 @@ "test": "cross-env TS_NODE_FILES=true mocha --exit --require ts-node/register --colors test/**/*.ts", "tool": "tsc main && node main", "lint": "eslint .", - "lint-fix": "eslint --fix ." + "lint-fix": "eslint --fix ." }, "dependencies": { "@azure/arm-appservice": "^6.0.0", diff --git a/generator/parsers/aws/parser.ts b/generator/parsers/aws/parser.ts index ed85b453..25515020 100644 --- a/generator/parsers/aws/parser.ts +++ b/generator/parsers/aws/parser.ts @@ -1,13 +1,13 @@ -import * as fs from "fs"; -import * as path from "path"; -import { createSourceFile, ScriptTarget, SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import * as path from 'path'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; export function getAST(sdkFileName) { return new Promise(async (resolve, reject) => { try { const file = path.join( __dirname, - "../../../node_modules/aws-sdk/clients/" + sdkFileName.toLowerCase() + '../../../node_modules/aws-sdk/clients/' + sdkFileName.toLowerCase() ); const ast = createSourceFile( file, @@ -18,19 +18,19 @@ export function getAST(sdkFileName) { let cloned = null; await ast.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); if (!cloned) { - reject(new Error("Class not found!")); + reject(new Error('Class not found!')); } else { resolve(cloned); } } catch (error) { - if (error.code === "ENOENT") { - reject(new Error("File not found!")); + if (error.code === 'ENOENT') { + reject(new Error('File not found!')); } else { reject(error); } diff --git a/generator/parsers/azure/parser.ts b/generator/parsers/azure/parser.ts index a8d30c21..e8965f89 100644 --- a/generator/parsers/azure/parser.ts +++ b/generator/parsers/azure/parser.ts @@ -1,6 +1,6 @@ -import * as fs from "fs"; -import * as path from "path"; -import { createSourceFile, ScriptTarget, SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import * as path from 'path'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; export function getAST(sdkFileInfo) { return new Promise(async (resolve, reject) => { @@ -18,19 +18,19 @@ export function getAST(sdkFileInfo) { let cloned = null; await ast.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); if (!cloned) { - reject(new Error("Class not found!")); + reject(new Error('Class not found!')); } else { resolve(cloned); } } catch (error) { - if (error.code === "ENOENT") { - reject(new Error("File not found!")); + if (error.code === 'ENOENT') { + reject(new Error('File not found!')); } else { reject(error); } diff --git a/generator/parsers/do/parser.ts b/generator/parsers/do/parser.ts index 093f24a7..a56c6fb9 100644 --- a/generator/parsers/do/parser.ts +++ b/generator/parsers/do/parser.ts @@ -1,13 +1,13 @@ -import * as fs from "fs"; -import * as path from "path"; -import { createSourceFile, ScriptTarget, SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import * as path from 'path'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; export function getAST(sdkFileName) { return new Promise(async (resolve, reject) => { try { const file = path.join( __dirname, - "../../../node_modules/do-wrapper/dist/modules/" + + '../../../node_modules/do-wrapper/dist/modules/' + sdkFileName.toLowerCase() ); const ast = createSourceFile( @@ -20,19 +20,19 @@ export function getAST(sdkFileName) { let cloned = null; await ast.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); if (!cloned) { - reject(new Error("Class not found!")); + reject(new Error('Class not found!')); } else { resolve(cloned); } } catch (error) { - if (error.code === "ENOENT") { - reject(new Error("File not found!")); + if (error.code === 'ENOENT') { + reject(new Error('File not found!')); } else { reject(error); } diff --git a/generator/parsers/googleCloud/parser.ts b/generator/parsers/googleCloud/parser.ts index b8701074..85ae37a0 100644 --- a/generator/parsers/googleCloud/parser.ts +++ b/generator/parsers/googleCloud/parser.ts @@ -1,6 +1,6 @@ -import * as fs from "fs"; -import * as path from "path"; -import { createSourceFile, ScriptTarget, SyntaxKind } from "typescript"; +import * as fs from 'fs'; +import * as path from 'path'; +import { createSourceFile, ScriptTarget, SyntaxKind } from 'typescript'; export function getAST(sdkFileInfo, multi?: boolean) { let filePath; @@ -23,7 +23,7 @@ export function getAST(sdkFileInfo, multi?: boolean) { if (multi === true) { let classes = []; ast.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { let cloned = Object.assign({}, child); classes.push(cloned); } @@ -32,21 +32,21 @@ export function getAST(sdkFileInfo, multi?: boolean) { } else { let cloned = null; await ast.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { let cloned = Object.assign({}, child); return resolve(cloned); } }); if (!cloned) { - return reject(new Error("Class not found!")); + return reject(new Error('Class not found!')); } else { return resolve(cloned); } } } catch (error) { - if (error.code === "ENOENT") { - reject(new Error("File not found!")); + if (error.code === 'ENOENT') { + reject(new Error('File not found!')); } else { reject(error); } diff --git a/generator/test/generators/aws/generator.test.ts b/generator/test/generators/aws/generator.test.ts index 965b9fe0..20745003 100644 --- a/generator/test/generators/aws/generator.test.ts +++ b/generator/test/generators/aws/generator.test.ts @@ -1,47 +1,47 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; -import { extractSDKData } from "../../../generators/aws/generator"; -import { readJsonData,readSourceFile } from "../lib/helper"; +import { extractSDKData } from '../../../generators/aws/generator'; +import { readJsonData, readSourceFile } from '../lib/helper'; -describe("AWS generator extractSDKData", () => { - context("with valid methods and valid AST", () => { - it("should return extracted class data", async () => { - const sdkFile: any = await readSourceFile("validDataset", "aws"); +describe('AWS generator extractSDKData', () => { + context('with valid methods and valid AST', () => { + it('should return extracted class data', async () => { + const sdkFile: any = await readSourceFile('validDataset', 'aws'); const data: any = await readJsonData( - "validDataset", - "aws", - "serviceClass" + 'validDataset', + 'aws', + 'serviceClass' ); let cloned = null; sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); if (cloned) { const result = extractSDKData(cloned, data); - expect(result).to.be.an("object"); - expect(result.functions).to.be.an("array"); + expect(result).to.be.an('object'); + expect(result.functions).to.be.an('array'); expect(result.className).to.be.string; } else { - console.error("Error in cloning class"); + console.error('Error in cloning class'); } }); }); - context("with invalid method data:missing method name", () => { - it("should drop invalid method", async () => { - const sdkFile: any = await readSourceFile("invalidDataset_1", "aws"); + context('with invalid method data:missing method name', () => { + it('should drop invalid method', async () => { + const sdkFile: any = await readSourceFile('invalidDataset_1', 'aws'); const data: any = await readJsonData( - "invalidDataset_1", - "aws", - "serviceClass" + 'invalidDataset_1', + 'aws', + 'serviceClass' ); let cloned = null; sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); @@ -52,34 +52,34 @@ describe("AWS generator extractSDKData", () => { Object.keys(data).length ).to.be.true; } else { - console.error("Error in cloning class"); + console.error('Error in cloning class'); } }); }); - context("AST with no functions", () => { - it("should return empty array of methods", async () => { - const sdkFile: any = await readSourceFile("invalidDataset_2", "aws"); + context('AST with no functions', () => { + it('should return empty array of methods', async () => { + const sdkFile: any = await readSourceFile('invalidDataset_2', 'aws'); const data: any = await readJsonData( - "invalidDataset_2", - "aws", - "serviceClass" + 'invalidDataset_2', + 'aws', + 'serviceClass' ); let cloned = null; sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); if (cloned) { const result = extractSDKData(cloned, data); - expect(result).to.be.an("object"); - expect(result.functions).to.be.an("array"); + expect(result).to.be.an('object'); + expect(result.functions).to.be.an('array'); expect(result.className).to.be.string; expect(result.functions.length).to.eql(0); } else { - console.error("Error in cloning class"); + console.error('Error in cloning class'); } }); }); diff --git a/generator/test/generators/azure/generator.test.ts b/generator/test/generators/azure/generator.test.ts index e14197b9..61b95fdf 100644 --- a/generator/test/generators/azure/generator.test.ts +++ b/generator/test/generators/azure/generator.test.ts @@ -1,29 +1,29 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; -import { extractSDKData } from "../../../generators/azure/generator"; -import { readJsonData,readSourceFile } from "../lib/helper"; +import { extractSDKData } from '../../../generators/azure/generator'; +import { readJsonData, readSourceFile } from '../lib/helper'; -describe("Azure generator extractSDKData", () => { - context("with valid methods and valid AST", () => { - it("should return class data", async () => { +describe('Azure generator extractSDKData', () => { + context('with valid methods and valid AST', () => { + it('should return class data', async () => { const methods: any = await readJsonData( - "validDataset", - "azure", - "methods" + 'validDataset', + 'azure', + 'methods' ); const sdkFiles: any = await readJsonData( - "validDataset", - "azure", - "files" + 'validDataset', + 'azure', + 'files' ); await Promise.all( sdkFiles.map(async file => { - const sdkFile: any = await readSourceFile("validDataset", "azure"); + const sdkFile: any = await readSourceFile('validDataset', 'azure'); sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { file.ast = Object.assign({}, child); } }); @@ -31,33 +31,33 @@ describe("Azure generator extractSDKData", () => { ); const result = extractSDKData(sdkFiles, methods); - expect(result).to.be.an("object"); - expect(result.functions).to.be.an("array"); + expect(result).to.be.an('object'); + expect(result.functions).to.be.an('array'); }); }); - context("AST with no functions", () => { - it("should throw error", async () => { + context('AST with no functions', () => { + it('should throw error', async () => { const methods: any = await readJsonData( - "invalidDataset_1", - "azure", - "methods" + 'invalidDataset_1', + 'azure', + 'methods' ); const sdkFiles: any = await readJsonData( - "invalidDataset_1", - "azure", - "files" + 'invalidDataset_1', + 'azure', + 'files' ); await Promise.all( sdkFiles.map(async file => { const sdkFile: any = await readSourceFile( - "invalidDataset_1", - "azure" + 'invalidDataset_1', + 'azure' ); sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { file.ast = Object.assign({}, child); } }); @@ -66,7 +66,7 @@ describe("Azure generator extractSDKData", () => { expect(function() { extractSDKData(sdkFiles, methods); - }).to.throw("Data extraction unsuccessful"); + }).to.throw('Data extraction unsuccessful'); }); }); }); diff --git a/generator/test/generators/do/generator.test.ts b/generator/test/generators/do/generator.test.ts index ce9de66d..bd1d7d2e 100644 --- a/generator/test/generators/do/generator.test.ts +++ b/generator/test/generators/do/generator.test.ts @@ -1,47 +1,47 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; -import { extractSDKData } from "../../../generators/do/generator"; -import { readJsonData,readSourceFile } from "../lib/helper"; +import { extractSDKData } from '../../../generators/do/generator'; +import { readJsonData, readSourceFile } from '../lib/helper'; -describe("Digital Ocean generator extractSDKData", () => { - context("with valid methods and valid AST", () => { - it("should return extracted class data", async () => { - const sdkFile: any = await readSourceFile("validDataset", "do"); +describe('Digital Ocean generator extractSDKData', () => { + context('with valid methods and valid AST', () => { + it('should return extracted class data', async () => { + const sdkFile: any = await readSourceFile('validDataset', 'do'); const data: any = await readJsonData( - "validDataset", - "do", - "serviceClass" + 'validDataset', + 'do', + 'serviceClass' ); let cloned = null; sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); if (cloned) { const result = extractSDKData(cloned, data); - expect(result).to.be.an("object"); - expect(result.functions).to.be.an("array"); + expect(result).to.be.an('object'); + expect(result.functions).to.be.an('array'); expect(result.className).to.be.string; } else { - console.error("Error in cloning class"); + console.error('Error in cloning class'); } }); }); - context("with invalid method data:missing method name", () => { - it("should drop invalid method", async () => { - const sdkFile: any = await readSourceFile("invalidDataset_1", "do"); + context('with invalid method data:missing method name', () => { + it('should drop invalid method', async () => { + const sdkFile: any = await readSourceFile('invalidDataset_1', 'do'); const data: any = await readJsonData( - "invalidDataset_1", - "do", - "serviceClass" + 'invalidDataset_1', + 'do', + 'serviceClass' ); let cloned = null; sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); @@ -52,34 +52,34 @@ describe("Digital Ocean generator extractSDKData", () => { Object.keys(data).length ).to.be.true; } else { - console.error("Error in cloning class"); + console.error('Error in cloning class'); } }); }); - context("Digital Ocean with no functions", () => { - it("should return empty array of methods", async () => { - const sdkFile: any = await readSourceFile("invalidDataset_2", "do"); + context('Digital Ocean with no functions', () => { + it('should return empty array of methods', async () => { + const sdkFile: any = await readSourceFile('invalidDataset_2', 'do'); const data: any = await readJsonData( - "invalidDataset_2", - "do", - "serviceClass" + 'invalidDataset_2', + 'do', + 'serviceClass' ); let cloned = null; sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { cloned = Object.assign({}, child); } }); if (cloned) { const result = extractSDKData(cloned, data); - expect(result).to.be.an("object"); - expect(result.functions).to.be.an("array"); + expect(result).to.be.an('object'); + expect(result.functions).to.be.an('array'); expect(result.className).to.be.string; expect(result.functions.length).to.eql(0); } else { - console.error("Error in cloning class"); + console.error('Error in cloning class'); } }); }); diff --git a/generator/test/generators/googleCloud/generator.test.ts b/generator/test/generators/googleCloud/generator.test.ts index 3b339d3c..d34f65f0 100644 --- a/generator/test/generators/googleCloud/generator.test.ts +++ b/generator/test/generators/googleCloud/generator.test.ts @@ -1,36 +1,36 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; import { extractClassBasedSDKData, - extractClientBasedSDKdata -} from "../../../generators/googleCloud/generator"; -import { readJsonData, readSourceFile } from "../lib/helper"; + extractClientBasedSDKdata, +} from '../../../generators/googleCloud/generator'; +import { readJsonData, readSourceFile } from '../lib/helper'; -describe("GCP generator extractClassBasedSDKData", () => { - context("with valid methods and valid AST", () => { - it("should return class data", async () => { +describe('GCP generator extractClassBasedSDKData', () => { + context('with valid methods and valid AST', () => { + it('should return class data', async () => { const methods: any = await readJsonData( - "validDataset_1", - "googleCloud", - "methods" + 'validDataset_1', + 'googleCloud', + 'methods' ); const sdkFiles: any = await readJsonData( - "validDataset_1", - "googleCloud", - "files" + 'validDataset_1', + 'googleCloud', + 'files' ); await Promise.all( sdkFiles.map(async file => { file.classes = []; const sdkFile: any = await readSourceFile( - "validDataset_1", - "googleCloud" + 'validDataset_1', + 'googleCloud' ); sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { let cloned = Object.assign({}, child); file.classes.push(cloned); } @@ -39,35 +39,35 @@ describe("GCP generator extractClassBasedSDKData", () => { ); extractClassBasedSDKData(methods, sdkFiles).then(result => { - expect(result).to.be.an("object"); - expect(result.methods).to.be.an("array"); + expect(result).to.be.an('object'); + expect(result.methods).to.be.an('array'); }); }); }); - context("with invalid AST", () => { - it("should return Error", async () => { + context('with invalid AST', () => { + it('should return Error', async () => { const methods: any = await readJsonData( - "invalidDataset_1", - "googleCloud", - "methods" + 'invalidDataset_1', + 'googleCloud', + 'methods' ); const sdkFiles: any = await readJsonData( - "invalidDataset_1", - "googleCloud", - "files" + 'invalidDataset_1', + 'googleCloud', + 'files' ); await Promise.all( sdkFiles.map(async file => { file.classes = []; const sdkFile: any = await readSourceFile( - "invalidDataset_1", - "googleCloud" + 'invalidDataset_1', + 'googleCloud' ); sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { let cloned = Object.assign({}, child); file.classes.push(cloned); } @@ -78,36 +78,36 @@ describe("GCP generator extractClassBasedSDKData", () => { extractClassBasedSDKData(methods, sdkFiles).then( result => {}, error => { - expect(error.message).to.eql("Data extraction unsuccessful"); + expect(error.message).to.eql('Data extraction unsuccessful'); } ); }); }); }); -describe("GCP generator extractClientBasedSDKdata", () => { - context("with valid methods and valid AST", () => { - it("should return class data", async () => { +describe('GCP generator extractClientBasedSDKdata', () => { + context('with valid methods and valid AST', () => { + it('should return class data', async () => { const methods: any = await readJsonData( - "validDataset_2", - "googleCloud", - "methods" + 'validDataset_2', + 'googleCloud', + 'methods' ); const sdkFiles: any = await readJsonData( - "validDataset_2", - "googleCloud", - "files" + 'validDataset_2', + 'googleCloud', + 'files' ); await Promise.all( sdkFiles.map(async file => { const sdkFile: any = await readSourceFile( - "validDataset_2", - "googleCloud" + 'validDataset_2', + 'googleCloud' ); sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { file.ast = Object.assign({}, child); } }); @@ -115,33 +115,33 @@ describe("GCP generator extractClientBasedSDKdata", () => { ); extractClientBasedSDKdata(methods, sdkFiles).then(result => { - expect(result).to.be.an("array"); + expect(result).to.be.an('array'); }); }); }); - context("with invalid AST", () => { - it("should return Error", async () => { + context('with invalid AST', () => { + it('should return Error', async () => { const methods: any = await readJsonData( - "invalidDataset_2", - "googleCloud", - "methods" + 'invalidDataset_2', + 'googleCloud', + 'methods' ); const sdkFiles: any = await readJsonData( - "invalidDataset_2", - "googleCloud", - "files" + 'invalidDataset_2', + 'googleCloud', + 'files' ); await Promise.all( sdkFiles.map(async file => { const sdkFile: any = await readSourceFile( - "invalidDataset_2", - "googleCloud" + 'invalidDataset_2', + 'googleCloud' ); sdkFile.forEachChild(child => { - if (SyntaxKind[child.kind] === "ClassDeclaration") { + if (SyntaxKind[child.kind] === 'ClassDeclaration') { file.ast = Object.assign({}, child); } }); @@ -151,7 +151,7 @@ describe("GCP generator extractClientBasedSDKdata", () => { extractClientBasedSDKdata(methods, sdkFiles).then( result => {}, error => { - expect(error.message).to.eql("Data extraction unsuccessful"); + expect(error.message).to.eql('Data extraction unsuccessful'); } ); }); diff --git a/generator/test/generators/lib/helper.ts b/generator/test/generators/lib/helper.ts index deecb432..6a13334d 100644 --- a/generator/test/generators/lib/helper.ts +++ b/generator/test/generators/lib/helper.ts @@ -1,5 +1,5 @@ -import * as fs from "fs"; -import { createSourceFile,ScriptTarget } from "typescript"; +import * as fs from 'fs'; +import { createSourceFile, ScriptTarget } from 'typescript'; export function readSourceFile(datasetName, provider) { return new Promise((resolve, reject) => { @@ -26,7 +26,7 @@ export function readJsonData(datasetName, provider, fileName) { const testFile = process.cwd() + `/test/generators/${provider}/dummyData/${datasetName}/${fileName}.json`; - const testData = JSON.parse(fs.readFileSync(testFile, "utf8")); + const testData = JSON.parse(fs.readFileSync(testFile, 'utf8')); resolve(testData); } catch (error) { console.error(error); diff --git a/generator/test/parsers/aws/parser.test.ts b/generator/test/parsers/aws/parser.test.ts index 0c27cc5c..61326b51 100644 --- a/generator/test/parsers/aws/parser.test.ts +++ b/generator/test/parsers/aws/parser.test.ts @@ -1,33 +1,33 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; -import { getAST } from "../../../parsers/aws/parser"; +import { getAST } from '../../../parsers/aws/parser'; -describe("AWS parser getAST", () => { - context("with existing file", () => { - it("should return Abstract syntax tree of the class", async () => { - const ast: any = await getAST("amplify.d.ts"); - expect(ast).to.be.an("object"); - expect(SyntaxKind[ast.kind] === "ClassDeclaration").to.be.true; +describe('AWS parser getAST', () => { + context('with existing file', () => { + it('should return Abstract syntax tree of the class', async () => { + const ast: any = await getAST('amplify.d.ts'); + expect(ast).to.be.an('object'); + expect(SyntaxKind[ast.kind] === 'ClassDeclaration').to.be.true; }); }); - context("with non-existing file", () => { - it("should return File not found Error", async () => { + context('with non-existing file', () => { + it('should return File not found Error', async () => { try { - await getAST("unknown.d.ts"); + await getAST('unknown.d.ts'); } catch (error) { - expect(error.message).to.eql("File not found!"); + expect(error.message).to.eql('File not found!'); } }); }); - context("with wrong format file", () => { - it("should return class not found Error", async () => { + context('with wrong format file', () => { + it('should return class not found Error', async () => { try { - await getAST("browser_default.d.ts"); + await getAST('browser_default.d.ts'); } catch (error) { - expect(error.message).to.eql("Class not found!"); + expect(error.message).to.eql('Class not found!'); } }); }); diff --git a/generator/test/parsers/azure/parser.test.ts b/generator/test/parsers/azure/parser.test.ts index 308694be..3633f01a 100644 --- a/generator/test/parsers/azure/parser.test.ts +++ b/generator/test/parsers/azure/parser.test.ts @@ -1,37 +1,40 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; -import { getAST } from "../../../parsers/azure/parser"; +import { getAST } from '../../../parsers/azure/parser'; -describe("Azure parser getAST", () => { - context("with existing file", () => { - it("should return Abstract syntax tree of the class", async () => { +describe('Azure parser getAST', () => { + context('with existing file', () => { + it('should return Abstract syntax tree of the class', async () => { const ast: any = await getAST({ - pkgName: "arm-containerservice", - fileName: "managedClusters.d.ts" + pkgName: 'arm-containerservice', + fileName: 'managedClusters.d.ts', }); - expect(ast).to.be.an("object"); - expect(SyntaxKind[ast.kind] === "ClassDeclaration").to.be.true; + expect(ast).to.be.an('object'); + expect(SyntaxKind[ast.kind] === 'ClassDeclaration').to.be.true; }); }); - context("with non-existing file", () => { - it("should return File not found Error", async () => { + context('with non-existing file', () => { + it('should return File not found Error', async () => { try { - await getAST("unknown.d.ts"); + await getAST('unknown.d.ts'); } catch (error) { - expect(error.message).to.eql("File not found!"); + expect(error.message).to.eql('File not found!'); } }); }); - context("with wrong format file", () => { - it("should return class not found Error", async () => { + context('with wrong format file', () => { + it('should return class not found Error', async () => { try { - const fileInfo = { pkgName: "arm-storage", fileName: "index.d.ts" }; + const fileInfo = { + pkgName: 'arm-storage', + fileName: 'index.d.ts', + }; await getAST(fileInfo); } catch (error) { - expect(error.message).to.eql("Class not found!"); + expect(error.message).to.eql('Class not found!'); } }); }); diff --git a/generator/test/parsers/do/parser.test.ts b/generator/test/parsers/do/parser.test.ts index d686eb4e..95aefd68 100644 --- a/generator/test/parsers/do/parser.test.ts +++ b/generator/test/parsers/do/parser.test.ts @@ -1,33 +1,33 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; -import { getAST } from "../../../parsers/do/parser"; +import { getAST } from '../../../parsers/do/parser'; -describe("Digital Ocean parser getAST", () => { - context("With existing file", () => { - it("Should return Abstract syntax tree of the class", async () => { - const ast: any = await getAST("droplets.d.ts"); - expect(ast).to.be.an("object"); - expect(SyntaxKind[ast.kind] === "ClassDeclaration").to.be.true; +describe('Digital Ocean parser getAST', () => { + context('With existing file', () => { + it('Should return Abstract syntax tree of the class', async () => { + const ast: any = await getAST('droplets.d.ts'); + expect(ast).to.be.an('object'); + expect(SyntaxKind[ast.kind] === 'ClassDeclaration').to.be.true; }); }); - context("With non-existing file", () => { - it("should return File not found Error", async () => { + context('With non-existing file', () => { + it('should return File not found Error', async () => { try { - await getAST("unknown.d.ts"); + await getAST('unknown.d.ts'); } catch (error) { - expect(error.message).to.eql("File not found!"); + expect(error.message).to.eql('File not found!'); } }); }); - context("With wrong format file", () => { - it("Should return class not found Error", async () => { + context('With wrong format file', () => { + it('Should return class not found Error', async () => { try { - await getAST("../types/common.d.ts"); + await getAST('../types/common.d.ts'); } catch (error) { - expect(error.message).to.eql("Class not found!"); + expect(error.message).to.eql('Class not found!'); } }); }); diff --git a/generator/test/parsers/googleCloud/parser.test.ts b/generator/test/parsers/googleCloud/parser.test.ts index ea49e99e..1a8fddd3 100644 --- a/generator/test/parsers/googleCloud/parser.test.ts +++ b/generator/test/parsers/googleCloud/parser.test.ts @@ -1,63 +1,63 @@ -import { expect } from "chai"; -import { SyntaxKind } from "typescript"; +import { expect } from 'chai'; +import { SyntaxKind } from 'typescript'; -import { getAST } from "../../../parsers/googleCloud/parser"; +import { getAST } from '../../../parsers/googleCloud/parser'; -describe("Google cloud parser getAST", () => { - context("with existing file, multi:false", () => { - it("should return Abstract syntax tree of the class", async () => { +describe('Google cloud parser getAST', () => { + context('with existing file, multi:false', () => { + it('should return Abstract syntax tree of the class', async () => { const fileInfo = { - pkgName: "monitoring", - version: "v3", - fileName: "alert_policy_service_client.d.ts" + pkgName: 'monitoring', + version: 'v3', + fileName: 'alert_policy_service_client.d.ts', }; const ast: any = await getAST(fileInfo); - expect(ast).to.be.an("object"); - expect(SyntaxKind[ast.kind] === "ClassDeclaration").to.be.true; + expect(ast).to.be.an('object'); + expect(SyntaxKind[ast.kind] === 'ClassDeclaration').to.be.true; }); }); - context("with existing file, multi:true", () => { - it("should return an array of Abstract syntax tree classes", async () => { - const fileInfo = { pkgName: "dns", fileName: "zone.d.ts" }; + context('with existing file, multi:true', () => { + it('should return an array of Abstract syntax tree classes', async () => { + const fileInfo = { pkgName: 'dns', fileName: 'zone.d.ts' }; const classes: any = await getAST(fileInfo, true); - expect(classes).to.be.an("array"); + expect(classes).to.be.an('array'); classes.forEach((elt, index) => { - expect(SyntaxKind[elt.kind] === "ClassDeclaration").to.be.true; + expect(SyntaxKind[elt.kind] === 'ClassDeclaration').to.be.true; }); }); }); - context("with non-existing file", () => { - it("should return File not found Error", async () => { + context('with non-existing file', () => { + it('should return File not found Error', async () => { try { - await getAST("unknown.d.ts"); + await getAST('unknown.d.ts'); } catch (error) { - expect(error.message).to.eql("File not found!"); + expect(error.message).to.eql('File not found!'); } }); }); - context("with wrong format file, multi:true", () => { - it("should return an empty array", async () => { - const fileInfo = { pkgName: "storage", fileName: "index.d.ts" }; + context('with wrong format file, multi:true', () => { + it('should return an empty array', async () => { + const fileInfo = { pkgName: 'storage', fileName: 'index.d.ts' }; const classes: any = await getAST(fileInfo, true); - expect(classes).to.be.an("array"); + expect(classes).to.be.an('array'); expect(classes.length).to.be.equal(0); }); }); - context("with wrong format file", () => { - it("should return a Class not found Error", async () => { + context('with wrong format file', () => { + it('should return a Class not found Error', async () => { const fileInfo = { - pkgName: "monitoring", - version: "v3", - fileName: "index.d.ts" + pkgName: 'monitoring', + version: 'v3', + fileName: 'index.d.ts', }; try { const ast: any = await getAST(fileInfo); } catch (error) { - expect(error.message).to.eql("Class not found!"); + expect(error.message).to.eql('Class not found!'); } }); }); diff --git a/generator/test/transformers/aws/transformer.test.ts b/generator/test/transformers/aws/transformer.test.ts index c98366ba..c21b1493 100644 --- a/generator/test/transformers/aws/transformer.test.ts +++ b/generator/test/transformers/aws/transformer.test.ts @@ -1,32 +1,32 @@ -import { expect } from "chai"; -import { createSourceFile, isSourceFile,ScriptTarget } from "typescript"; +import { expect } from 'chai'; +import { createSourceFile, isSourceFile, ScriptTarget } from 'typescript'; -import { transform } from "../../../transformers/aws/transformer"; -import { readJsonData, readSourceFile } from "../lib/helper"; +import { transform } from '../../../transformers/aws/transformer'; +import { readJsonData, readSourceFile } from '../lib/helper'; interface TestData { AST: any; data: any; } -describe("AWS transformer transform", () => { - context("Valid source code and valid data", () => { +describe('AWS transformer transform', () => { + context('Valid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("validDataset", "aws"); - testData.data = await readJsonData("validDataset", "aws"); + testData.AST = await readSourceFile('validDataset', 'aws'); + testData.data = await readJsonData('validDataset', 'aws'); }); - it("Should return a String", async () => { + it('Should return a String', async () => { const result = await transform(testData.AST, testData.data); expect(result).to.be.string; }); - it("Should return a Javascript code in String format", async () => { + it('Should return a Javascript code in String format', async () => { const result = await transform(testData.AST, testData.data); try { const sourceCode = createSourceFile( - "someClass.js", + 'someClass.js', result, ScriptTarget.Latest ); @@ -37,34 +37,34 @@ describe("AWS transformer transform", () => { }); }); - context("Invalid source code and valid data", () => { + context('Invalid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("invalidDataset_1", "aws"); - testData.data = await readJsonData("invalidDataset_1", "aws"); + testData.AST = await readSourceFile('invalidDataset_1', 'aws'); + testData.data = await readJsonData('invalidDataset_1', 'aws'); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await transform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Code is invalid"); + expect(error.message).to.eql('Code is invalid'); } }); }); - context("Valid source code and invalid data", () => { + context('Valid source code and invalid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("invalidDataset_2", "aws"); - testData.data = await readJsonData("invalidDataset_2", "aws"); + testData.AST = await readSourceFile('invalidDataset_2', 'aws'); + testData.data = await readJsonData('invalidDataset_2', 'aws'); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await transform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Input is invalid"); + expect(error.message).to.eql('Input is invalid'); } }); }); diff --git a/generator/test/transformers/azure/transformer.test.ts b/generator/test/transformers/azure/transformer.test.ts index 02143394..6a0b217a 100644 --- a/generator/test/transformers/azure/transformer.test.ts +++ b/generator/test/transformers/azure/transformer.test.ts @@ -1,32 +1,32 @@ -import { expect } from "chai"; -import { createSourceFile, isSourceFile,ScriptTarget } from "typescript"; +import { expect } from 'chai'; +import { createSourceFile, isSourceFile, ScriptTarget } from 'typescript'; -import { transform } from "../../../transformers/azure/transformer"; -import { readJsonData, readSourceFile } from "../lib/helper"; +import { transform } from '../../../transformers/azure/transformer'; +import { readJsonData, readSourceFile } from '../lib/helper'; interface TestData { AST: any; data: any; } -describe("Azure transformer transform", () => { - context("Valid source code and valid data", () => { +describe('Azure transformer transform', () => { + context('Valid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("validDataset", "azure"); - testData.data = await readJsonData("validDataset", "azure"); + testData.AST = await readSourceFile('validDataset', 'azure'); + testData.data = await readJsonData('validDataset', 'azure'); }); - it("Should return a String", async () => { + it('Should return a String', async () => { const result = await transform(testData.AST, testData.data); expect(result).to.be.string; }); - it("Should return a Javascript code in String format", async () => { + it('Should return a Javascript code in String format', async () => { const result = await transform(testData.AST, testData.data); try { const sourceCode = createSourceFile( - "someClass.js", + 'someClass.js', result, ScriptTarget.Latest ); @@ -37,34 +37,34 @@ describe("Azure transformer transform", () => { }); }); - context("Invalid source code and valid data", () => { + context('Invalid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("invalidDataset_1", "azure"); - testData.data = await readJsonData("invalidDataset_1", "azure"); + testData.AST = await readSourceFile('invalidDataset_1', 'azure'); + testData.data = await readJsonData('invalidDataset_1', 'azure'); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await transform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Code is invalid"); + expect(error.message).to.eql('Code is invalid'); } }); }); - context("Valid source code and invalid data", () => { + context('Valid source code and invalid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("invalidDataset_2", "azure"); - testData.data = await readJsonData("invalidDataset_2", "azure"); + testData.AST = await readSourceFile('invalidDataset_2', 'azure'); + testData.data = await readJsonData('invalidDataset_2', 'azure'); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await transform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Input is invalid"); + expect(error.message).to.eql('Input is invalid'); } }); }); diff --git a/generator/test/transformers/do/transformer.test.ts b/generator/test/transformers/do/transformer.test.ts index 6a1b333b..5089e178 100644 --- a/generator/test/transformers/do/transformer.test.ts +++ b/generator/test/transformers/do/transformer.test.ts @@ -1,32 +1,32 @@ -import { expect } from "chai"; -import { createSourceFile, isSourceFile,ScriptTarget } from "typescript"; +import { expect } from 'chai'; +import { createSourceFile, isSourceFile, ScriptTarget } from 'typescript'; -import { transform } from "../../../transformers/do/transformer"; -import { readJsonData, readSourceFile } from "../lib/helper"; +import { transform } from '../../../transformers/do/transformer'; +import { readJsonData, readSourceFile } from '../lib/helper'; interface TestData { AST: any; data: any; } -describe("Digital Ocean transformer transform", () => { - context("Valid source code and valid data", () => { +describe('Digital Ocean transformer transform', () => { + context('Valid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("validDataset", "do"); - testData.data = await readJsonData("validDataset", "do"); + testData.AST = await readSourceFile('validDataset', 'do'); + testData.data = await readJsonData('validDataset', 'do'); }); - it("Should return a String", async () => { + it('Should return a String', async () => { const result = await transform(testData.AST, testData.data); expect(result).to.be.string; }); - it("Should return a Javascript code in String format", async () => { + it('Should return a Javascript code in String format', async () => { const result = await transform(testData.AST, testData.data); try { const sourceCode = createSourceFile( - "someClass.js", + 'someClass.js', result, ScriptTarget.Latest ); @@ -37,34 +37,34 @@ describe("Digital Ocean transformer transform", () => { }); }); - context("Invalid source code and valid data", () => { + context('Invalid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("invalidDataset_1", "do"); - testData.data = await readJsonData("invalidDataset_1", "do"); + testData.AST = await readSourceFile('invalidDataset_1', 'do'); + testData.data = await readJsonData('invalidDataset_1', 'do'); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await transform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Code is invalid"); + expect(error.message).to.eql('Code is invalid'); } }); }); - context("Valid source code and invalid data", () => { + context('Valid source code and invalid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { - testData.AST = await readSourceFile("invalidDataset_2", "do"); - testData.data = await readJsonData("invalidDataset_2", "do"); + testData.AST = await readSourceFile('invalidDataset_2', 'do'); + testData.data = await readJsonData('invalidDataset_2', 'do'); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await transform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Input is invalid"); + expect(error.message).to.eql('Input is invalid'); } }); }); diff --git a/generator/test/transformers/googleCloud/classBasedTransformer.test.ts b/generator/test/transformers/googleCloud/classBasedTransformer.test.ts index 9724e629..e5c6a164 100644 --- a/generator/test/transformers/googleCloud/classBasedTransformer.test.ts +++ b/generator/test/transformers/googleCloud/classBasedTransformer.test.ts @@ -1,38 +1,38 @@ -import { expect } from "chai"; -import { createSourceFile, isSourceFile,ScriptTarget } from "typescript"; +import { expect } from 'chai'; +import { createSourceFile, isSourceFile, ScriptTarget } from 'typescript'; -import { classBasedTransform } from "../../../transformers/googleCloud/classBasedTransformer"; -import { readJsonData, readSourceFile } from "../lib/helper"; +import { classBasedTransform } from '../../../transformers/googleCloud/classBasedTransformer'; +import { readJsonData, readSourceFile } from '../lib/helper'; interface TestData { AST: any; data: any; } -describe("Google Cloud transformer classBasedTransform", () => { - context("Valid source code and valid data", () => { +describe('Google Cloud transformer classBasedTransform', () => { + context('Valid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { testData.AST = await readSourceFile( - "classBasedTransformer/validDataset", - "googleCloud" + 'classBasedTransformer/validDataset', + 'googleCloud' ); testData.data = await readJsonData( - "classBasedTransformer/validDataset", - "googleCloud" + 'classBasedTransformer/validDataset', + 'googleCloud' ); }); - it("Should return a String", async () => { + it('Should return a String', async () => { const result = await classBasedTransform(testData.AST, testData.data); expect(result).to.be.string; }); - it("Should return a Javascript code in String format", async () => { + it('Should return a Javascript code in String format', async () => { const result = await classBasedTransform(testData.AST, testData.data); try { const sourceCode = createSourceFile( - "someClass.js", + 'someClass.js', result, ScriptTarget.Latest ); @@ -43,46 +43,46 @@ describe("Google Cloud transformer classBasedTransform", () => { }); }); - context("Invalid source code and valid data", () => { + context('Invalid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { testData.AST = await readSourceFile( - "classBasedTransformer/invalidDataset_1", - "googleCloud" + 'classBasedTransformer/invalidDataset_1', + 'googleCloud' ); testData.data = await readJsonData( - "classBasedTransformer/invalidDataset_1", - "googleCloud" + 'classBasedTransformer/invalidDataset_1', + 'googleCloud' ); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await classBasedTransform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Code is invalid"); + expect(error.message).to.eql('Code is invalid'); } }); }); - context("Valid source code and invalid data", async () => { + context('Valid source code and invalid data', async () => { const testData: TestData = { AST: null, data: null }; before(async () => { testData.AST = await readSourceFile( - "classBasedTransformer/invalidDataset_2", - "googleCloud" + 'classBasedTransformer/invalidDataset_2', + 'googleCloud' ); testData.data = await readJsonData( - "classBasedTransformer/invalidDataset_2", - "googleCloud" + 'classBasedTransformer/invalidDataset_2', + 'googleCloud' ); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await classBasedTransform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Input is invalid"); + expect(error.message).to.eql('Input is invalid'); } }); }); diff --git a/generator/test/transformers/googleCloud/clientBasedTransformer.test.ts b/generator/test/transformers/googleCloud/clientBasedTransformer.test.ts index c54d3ac5..31e203bd 100644 --- a/generator/test/transformers/googleCloud/clientBasedTransformer.test.ts +++ b/generator/test/transformers/googleCloud/clientBasedTransformer.test.ts @@ -1,38 +1,38 @@ -import { expect } from "chai"; -import { createSourceFile, isSourceFile,ScriptTarget } from "typescript"; +import { expect } from 'chai'; +import { createSourceFile, isSourceFile, ScriptTarget } from 'typescript'; -import { clientBasedTransform } from "../../../transformers/googleCloud/clientBasedTransformer"; -import { readJsonData, readSourceFile } from "../lib/helper"; +import { clientBasedTransform } from '../../../transformers/googleCloud/clientBasedTransformer'; +import { readJsonData, readSourceFile } from '../lib/helper'; interface TestData { AST: any; data: any; } -describe("Google Cloud transformer clientBasedTransform", () => { - context("Valid source code and valid data", () => { +describe('Google Cloud transformer clientBasedTransform', () => { + context('Valid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { testData.AST = await readSourceFile( - "clientBasedTransformer/validDataset", - "googleCloud" + 'clientBasedTransformer/validDataset', + 'googleCloud' ); testData.data = await readJsonData( - "clientBasedTransformer/validDataset", - "googleCloud" + 'clientBasedTransformer/validDataset', + 'googleCloud' ); }); - it("Should return a String", async () => { + it('Should return a String', async () => { const result = await clientBasedTransform(testData.AST, testData.data); expect(result).to.be.string; }); - it("Should return a Javascript code in String format", async () => { + it('Should return a Javascript code in String format', async () => { const result = await clientBasedTransform(testData.AST, testData.data); try { const sourceCode = createSourceFile( - "someClass.js", + 'someClass.js', result, ScriptTarget.Latest ); @@ -43,46 +43,46 @@ describe("Google Cloud transformer clientBasedTransform", () => { }); }); - context("Invalid source code and valid data", () => { + context('Invalid source code and valid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { testData.AST = await readSourceFile( - "clientBasedTransformer/invalidDataset_1", - "googleCloud" + 'clientBasedTransformer/invalidDataset_1', + 'googleCloud' ); testData.data = await readJsonData( - "clientBasedTransformer/invalidDataset_1", - "googleCloud" + 'clientBasedTransformer/invalidDataset_1', + 'googleCloud' ); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await clientBasedTransform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Code is invalid"); + expect(error.message).to.eql('Code is invalid'); } }); }); - context("Valid source code and invalid data", () => { + context('Valid source code and invalid data', () => { const testData: TestData = { AST: null, data: null }; before(async () => { testData.AST = await readSourceFile( - "clientBasedTransformer/invalidDataset_2", - "googleCloud" + 'clientBasedTransformer/invalidDataset_2', + 'googleCloud' ); testData.data = await readJsonData( - "clientBasedTransformer/invalidDataset_2", - "googleCloud" + 'clientBasedTransformer/invalidDataset_2', + 'googleCloud' ); }); - it("Should return a validation Error", async () => { + it('Should return a validation Error', async () => { try { await clientBasedTransform(testData.AST, testData.data); } catch (error) { - expect(error.message).to.eql("Input is invalid"); + expect(error.message).to.eql('Input is invalid'); } }); }); diff --git a/generator/test/transformers/lib/helper.ts b/generator/test/transformers/lib/helper.ts index 886124d5..5186fbaa 100644 --- a/generator/test/transformers/lib/helper.ts +++ b/generator/test/transformers/lib/helper.ts @@ -1,5 +1,5 @@ -import * as fs from "fs"; -import { createSourceFile,ScriptTarget } from "typescript"; +import * as fs from 'fs'; +import { createSourceFile, ScriptTarget } from 'typescript'; export function readSourceFile(datasetName, provider) { return new Promise((resolve, reject) => { @@ -26,7 +26,7 @@ export function readJsonData(datasetName, provider) { const testFile = process.cwd() + `/test/transformers/${provider}/dummyData/${datasetName}/data.json`; - const testData = JSON.parse(fs.readFileSync(testFile, "utf8")); + const testData = JSON.parse(fs.readFileSync(testFile, 'utf8')); resolve(testData); } catch (error) { console.error(error); diff --git a/generator/transformers/aws/transformer.ts b/generator/transformers/aws/transformer.ts index 31230633..24ffeac7 100644 --- a/generator/transformers/aws/transformer.ts +++ b/generator/transformers/aws/transformer.ts @@ -1,16 +1,16 @@ -import { cloneDeep } from "lodash"; -import * as ts from "typescript"; +import { cloneDeep } from 'lodash'; +import * as ts from 'typescript'; const dummyIdentifiers = [ - "ClassName", - "_sdkClassName", - "SDKClassName", - "SDKFunctionName" + 'ClassName', + '_sdkClassName', + 'SDKClassName', + 'SDKFunctionName', ]; const printer: ts.Printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, - removeComments: false + removeComments: false, }); function addMultiLineComment(node, comment: string) { @@ -41,7 +41,7 @@ function runTransformation(sourceCode, transformMethod): Promise { function toSourceFile(sourceCode: string): ts.SourceFile { return ts.createSourceFile( - "dummyClass.js", + 'dummyClass.js', sourceCode, ts.ScriptTarget.Latest, true @@ -96,7 +96,7 @@ export async function transform( ); if (param.optional) { - paramNode.initializer = ts.createIdentifier("undefined"); + paramNode.initializer = ts.createIdentifier('undefined'); } return paramNode; @@ -109,26 +109,26 @@ export async function transform( let updatedIdentifier; switch (node.text) { - case "ClassName": + case 'ClassName': updatedIdentifier = ts.updateIdentifier( - ts.createIdentifier("AWS_" + classData.serviceName) + ts.createIdentifier('AWS_' + classData.serviceName) ); break; - case "_sdkClassName": + case '_sdkClassName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier( - "_" + + '_' + classData.className.charAt(0).toLowerCase() + classData.className.substr(1) ) ); break; - case "SDKClassName": + case 'SDKClassName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.className) ); break; - case "SDKFunctionName": + case 'SDKFunctionName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.functions[count].SDKFunctionName) ); @@ -142,7 +142,7 @@ export async function transform( node.expression.forEachChild(childNode => { if ( ts.isIdentifier(childNode) && - childNode.text === "SDKFunctionName" + childNode.text === 'SDKFunctionName' ) { const args = classData.functions[count].params.map(param => ts.createIdentifier(param.name) @@ -166,7 +166,7 @@ export async function transform( if (ts.isClassDeclaration(node)) { addMultiLineComment( node, - "This is an auto generated class, please do not change." + 'This is an auto generated class, please do not change.' ); const comment = `* * Class to create a ${classData.className} object @@ -189,10 +189,10 @@ export async function transform( let comment; if (parameters.length > 0) { - let paramStatments: string = ""; + let paramStatments: string = ''; parameters.map(param => { paramStatments = paramStatments.concat( - paramStatments === "" ? `${param}` : `\n ${param}` + paramStatments === '' ? `${param}` : `\n ${param}` ); }); @@ -220,11 +220,11 @@ export async function transform( const node: any = code.statements.find(stm => ts.isClassDeclaration(stm)); if (!classData.className || !classData.functions) { - throw new Error("Input is invalid"); + throw new Error('Input is invalid'); } if (!node || !node.members.some(member => ts.isMethodDeclaration(member))) { - throw new Error("Code is invalid"); + throw new Error('Code is invalid'); } code = cloneDeep(code); diff --git a/generator/transformers/azure/transformer.ts b/generator/transformers/azure/transformer.ts index 1c9fd106..86457dcb 100644 --- a/generator/transformers/azure/transformer.ts +++ b/generator/transformers/azure/transformer.ts @@ -1,17 +1,17 @@ -import { cloneDeep } from "lodash"; -import * as ts from "typescript"; +import { cloneDeep } from 'lodash'; +import * as ts from 'typescript'; const dummyIdentifiers = [ - "ClassName", - "SDKClassName", - "SDKFunctionName", - "ClientName", - "functionClient" + 'ClassName', + 'SDKClassName', + 'SDKFunctionName', + 'ClientName', + 'functionClient', ]; const printer: ts.Printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, - removeComments: false + removeComments: false, }); function addMultiLineComment(node, comment: string) { @@ -42,7 +42,7 @@ function runTransformation(sourceCode, transformMethod): Promise { function toSourceFile(sourceCode: string): ts.SourceFile { return ts.createSourceFile( - "dummyClass.js", + 'dummyClass.js', sourceCode, ts.ScriptTarget.Latest, true @@ -56,11 +56,11 @@ export async function transform( const node: any = code.statements.find(stm => ts.isClassDeclaration(stm)); if (!classData.functions) { - throw new Error("Input is invalid"); + throw new Error('Input is invalid'); } if (!node || !node.members.some(member => ts.isMethodDeclaration(member))) { - throw new Error("Code is invalid"); + throw new Error('Code is invalid'); } code = cloneDeep(code); @@ -119,7 +119,7 @@ export async function transform( ); if (param.optional) { - paramNode.initializer = ts.createIdentifier("undefined"); + paramNode.initializer = ts.createIdentifier('undefined'); } return paramNode; @@ -128,39 +128,39 @@ export async function transform( node.parameters = parameters; } - if (ts.isStringLiteral(node) && node.text === "pkgName") { + if (ts.isStringLiteral(node) && node.text === 'pkgName') { return ts.createStringLiteral( - "@azure/" + classData.functions[0].pkgName + '@azure/' + classData.functions[0].pkgName ); } if (ts.isIdentifier(node) && dummyIdentifiers.includes(node.text)) { let updatedIdentifier; switch (node.text) { - case "ClassName": + case 'ClassName': updatedIdentifier = ts.updateIdentifier( - ts.createIdentifier("Azure_" + classData.serviceName) + ts.createIdentifier('Azure_' + classData.serviceName) ); break; - case "SDKClassName": + case 'SDKClassName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier( - classData.functions[count].fileName.split(".")[0] + classData.functions[count].fileName.split('.')[0] ) ); break; - case "functionClient": + case 'functionClient': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.functions[count].client) ); break; - case "ClientName": + case 'ClientName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.clients[clientCount]) ); clientCount++; break; - case "SDKFunctionName": + case 'SDKFunctionName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.functions[count].SDKFunctionName) ); @@ -173,7 +173,7 @@ export async function transform( node.expression.forEachChild(childNode => { if ( ts.isIdentifier(childNode) && - childNode.text === "SDKFunctionName" + childNode.text === 'SDKFunctionName' ) { const args = classData.functions[count].params.map(param => ts.createIdentifier(param.name) @@ -197,7 +197,7 @@ export async function transform( if (ts.isClassDeclaration(node)) { addMultiLineComment( node, - "This is an auto generated class, please do not change." + 'This is an auto generated class, please do not change.' ); const comment = `* * Class to create a ${classData.serviceName} object @@ -220,16 +220,16 @@ export async function transform( let comment; if (parameters.length > 0) { - let paramStatments: string = ""; + let paramStatments: string = ''; parameters.map(param => { paramStatments = paramStatments.concat( - paramStatments === "" ? `${param}` : `\n ${param}` + paramStatments === '' ? `${param}` : `\n ${param}` ); }); comment = `* * Trigers the ${classData.functions[count].SDKFunctionName} function of ${ - classData.functions[0].pkgName.split("-")[1] + classData.functions[0].pkgName.split('-')[1] } ${paramStatments} * @returns {Promise<${classData.functions[count].SDKFunctionName}Response>} @@ -237,7 +237,7 @@ export async function transform( } else { comment = `* * Trigers the ${classData.functions[count].SDKFunctionName} function of ${ - classData.functions[0].pkgName.split("-")[1] + classData.functions[0].pkgName.split('-')[1] } * @returns {Promise<${classData.functions[count].SDKFunctionName}Response>} `; diff --git a/generator/transformers/do/transformer.ts b/generator/transformers/do/transformer.ts index 3f063962..a5b90929 100644 --- a/generator/transformers/do/transformer.ts +++ b/generator/transformers/do/transformer.ts @@ -1,16 +1,16 @@ -import { cloneDeep } from "lodash"; -import * as ts from "typescript"; +import { cloneDeep } from 'lodash'; +import * as ts from 'typescript'; const dummyIdentifiers = [ - "ClassName", - "_sdkClassName", - "SDKClassName", - "SDKFunctionName" + 'ClassName', + '_sdkClassName', + 'SDKClassName', + 'SDKFunctionName', ]; const printer: ts.Printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, - removeComments: false + removeComments: false, }); function addMultiLineComment(node, comment: string) { @@ -41,7 +41,7 @@ function runTransformation(sourceCode, transformMethod): Promise { function toSourceFile(sourceCode: string): ts.SourceFile { return ts.createSourceFile( - "dummyClass.js", + 'dummyClass.js', sourceCode, ts.ScriptTarget.Latest, true @@ -108,7 +108,7 @@ export async function transform( ); if (param.optional) { - paramNode.initializer = ts.createIdentifier("undefined"); + paramNode.initializer = ts.createIdentifier('undefined'); } return paramNode; @@ -121,21 +121,21 @@ export async function transform( let updatedIdentifier; switch (node.text) { - case "ClassName": + case 'ClassName': updatedIdentifier = ts.updateIdentifier( - ts.createIdentifier("DO_" + classData.serviceName) + ts.createIdentifier('DO_' + classData.serviceName) ); break; - case "_sdkClassName": + case '_sdkClassName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier( - "_" + + '_' + classData.className.charAt(0).toLowerCase() + classData.className.substr(1) ) ); break; - case "SDKClassName": + case 'SDKClassName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier( classData.className.charAt(0).toLowerCase() + @@ -143,7 +143,7 @@ export async function transform( ) ); break; - case "SDKFunctionName": + case 'SDKFunctionName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.functions[count].SDKFunctionName) ); @@ -157,7 +157,7 @@ export async function transform( node.expression.forEachChild(childNode => { if ( ts.isIdentifier(childNode) && - childNode.text === "SDKFunctionName" + childNode.text === 'SDKFunctionName' ) { const args = classData.functions[count].params.map(param => ts.createIdentifier(param.name) @@ -185,7 +185,7 @@ export async function transform( if (ts.isClassDeclaration(node)) { addMultiLineComment( node, - "This is an auto generated class, please do not change." + 'This is an auto generated class, please do not change.' ); const comment = `* * Class to create a ${classData.className} object @@ -199,12 +199,12 @@ export async function transform( let statment; if (param.optional) { - if (param.type == "TypeReference") + if (param.type == 'TypeReference') statment = `* @param {${param.typeName}} ${param.name} - Data required for ${classData.functions[count].SDKFunctionName}`; else statment = `* @param {${param.type}} ${param.name} - Data required for ${classData.functions[count].SDKFunctionName}`; } else { - if (param.type == "TypeReference") + if (param.type == 'TypeReference') statment = `* @param {${param.typeName}} ${param.name} - Data required for ${classData.functions[count].SDKFunctionName}`; else statment = `* @param {${param.type}} ${param.name} - Data required for ${classData.functions[count].SDKFunctionName}`; @@ -214,10 +214,10 @@ export async function transform( let comment; if (parameters.length > 0) { - let paramStatments: string = ""; + let paramStatments: string = ''; parameters.map(param => { paramStatments = paramStatments.concat( - paramStatments === "" ? `${param}` : `\n${param}` + paramStatments === '' ? `${param}` : `\n${param}` ); }); @@ -248,11 +248,11 @@ ${paramStatments} const node: any = code.statements.find(stm => ts.isClassDeclaration(stm)); if (!classData.className || !classData.functions) { - throw new Error("Input is invalid"); + throw new Error('Input is invalid'); } if (!node || !node.members.some(member => ts.isMethodDeclaration(member))) { - throw new Error("Code is invalid"); + throw new Error('Code is invalid'); } code = cloneDeep(code); diff --git a/generator/transformers/googleCloud/classBasedTransformer.ts b/generator/transformers/googleCloud/classBasedTransformer.ts index a68f9365..256339e7 100644 --- a/generator/transformers/googleCloud/classBasedTransformer.ts +++ b/generator/transformers/googleCloud/classBasedTransformer.ts @@ -1,19 +1,19 @@ -import { cloneDeep } from "lodash"; -import * as ts from "typescript"; +import { cloneDeep } from 'lodash'; +import * as ts from 'typescript'; const dummyIdentifiers = [ - "ClassName", - "SDKFunctionName", - "ClientName", - "_client", - "_clientObj", - "Client", - "_className" + 'ClassName', + 'SDKFunctionName', + 'ClientName', + '_client', + '_clientObj', + 'Client', + '_className', ]; const printer: ts.Printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, - removeComments: false + removeComments: false, }); function addMultiLineComment(node, comment: string) { @@ -44,7 +44,7 @@ function runTransformation(sourceCode, transformMethod): Promise { function toSourceFile(sourceCode: string): ts.SourceFile { return ts.createSourceFile( - "dummyClass.js", + 'dummyClass.js', sourceCode, ts.ScriptTarget.Latest, true @@ -58,11 +58,11 @@ export async function classBasedTransform( const node: any = code.statements.find(stm => ts.isClassDeclaration(stm)); if (!data.functions || !data.classData) { - throw new Error("Input is invalid"); + throw new Error('Input is invalid'); } if (!node || !node.members.some(member => ts.isMethodDeclaration(member))) { - throw new Error("Code is invalid"); + throw new Error('Code is invalid'); } code = cloneDeep(code); @@ -75,10 +75,10 @@ export async function classBasedTransform( let functions: any = []; data.functions.map(method => { let clonedNode; - if (method.returnTypeName === "Promise") { + if (method.returnTypeName === 'Promise') { if ( (method.classConstructorData.parameters[0].type = - "TypeReference" && + 'TypeReference' && !method.classConstructorData.parameters[0].optional) ) { clonedNode = Object.assign({}, node.members[3]); @@ -120,15 +120,15 @@ export async function classBasedTransform( let params = []; if ( (data.functions[count].classConstructorData.parameters[0].type = - "TypeReference" && + 'TypeReference' && !data.functions[count].classConstructorData.parameters[0].optional) ) { params.push(data.functions[count].classConstructorData.parameters[0]); data.functions[count].allParams.push({ - name: "identifier", + name: 'identifier', optional: true, - type: "string" + type: 'string', }); } @@ -146,7 +146,7 @@ export async function classBasedTransform( ); if (param.optional) { - paramNode.initializer = ts.createIdentifier("undefined"); + paramNode.initializer = ts.createIdentifier('undefined'); } return paramNode; @@ -155,40 +155,40 @@ export async function classBasedTransform( node.parameters = parameters.concat(node.parameters); } - if (ts.isStringLiteral(node) && node.text === "pkgName") { + if (ts.isStringLiteral(node) && node.text === 'pkgName') { return ts.createStringLiteral( - "@google-cloud/" + data.functions[0].pkgName + '@google-cloud/' + data.functions[0].pkgName ); } if (ts.isIdentifier(node) && dummyIdentifiers.includes(node.text)) { let updatedIdentifier; switch (node.text) { - case "ClassName": + case 'ClassName': updatedIdentifier = ts.updateIdentifier( - ts.createIdentifier("GCP_" + data.functions[0].pkgName) + ts.createIdentifier('GCP_' + data.functions[0].pkgName) ); break; - case "ClientName": + case 'ClientName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(data.mainClass) ); break; - case "SDKFunctionName": + case 'SDKFunctionName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(data.functions[count].SDKFunctionName) ); count++; break; - case "_className": + case '_className': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(data.functions[count].client.toLowerCase()) ); break; - case "_client": + case '_client': if ( (data.functions[count].classConstructorData.parameters[0].type = - "TypeReference" && + 'TypeReference' && !data.functions[count].classConstructorData.parameters[0] .optional) ) { @@ -199,16 +199,16 @@ export async function classBasedTransform( ); } else { updatedIdentifier = ts.updateIdentifier( - ts.createIdentifier("_" + data.mainClass.toLowerCase()) + ts.createIdentifier('_' + data.mainClass.toLowerCase()) ); } break; - case "_clientObj": + case '_clientObj': updatedIdentifier = ts.updateIdentifier( - ts.createIdentifier("_" + data.mainClass.toLowerCase()) + ts.createIdentifier('_' + data.mainClass.toLowerCase()) ); break; - case "Client": + case 'Client': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(data.mainClass) ); @@ -221,7 +221,7 @@ export async function classBasedTransform( node.expression.forEachChild(childNode => { if ( ts.isIdentifier(childNode) && - childNode.text === "SDKFunctionName" + childNode.text === 'SDKFunctionName' ) { const args = data.functions[count].params.map(param => ts.createIdentifier(param.name) @@ -245,7 +245,7 @@ export async function classBasedTransform( if (ts.isClassDeclaration(node)) { addMultiLineComment( node, - "This is an auto generated class, please do not change." + 'This is an auto generated class, please do not change.' ); const comment = `* * Class to create a ${data.functions[0].pkgName} object @@ -272,10 +272,10 @@ export async function classBasedTransform( let comment; if (parameters.length > 0) { - let paramStatments: string = ""; + let paramStatments: string = ''; parameters.map(param => { paramStatments = paramStatments.concat( - paramStatments === "" ? `${param}` : `\n ${param}` + paramStatments === '' ? `${param}` : `\n ${param}` ); }); diff --git a/generator/transformers/googleCloud/clientBasedTransformer.ts b/generator/transformers/googleCloud/clientBasedTransformer.ts index 525086dd..d2da42ba 100644 --- a/generator/transformers/googleCloud/clientBasedTransformer.ts +++ b/generator/transformers/googleCloud/clientBasedTransformer.ts @@ -1,18 +1,18 @@ -import { cloneDeep } from "lodash"; -import * as ts from "typescript"; +import { cloneDeep } from 'lodash'; +import * as ts from 'typescript'; const dummyIdentifiers = [ - "ClassName", - "SDKFunctionName", - "ClientName", - "_client", - "_clientObj", - "Client" + 'ClassName', + 'SDKFunctionName', + 'ClientName', + '_client', + '_clientObj', + 'Client', ]; const printer: ts.Printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed, - removeComments: false + removeComments: false, }); function addMultiLineComment(node, comment: string) { @@ -43,7 +43,7 @@ function runTransformation(sourceCode, transformMethod): Promise { function toSourceFile(sourceCode: string): ts.SourceFile { return ts.createSourceFile( - "dummyClass.js", + 'dummyClass.js', sourceCode, ts.ScriptTarget.Latest, true @@ -57,11 +57,11 @@ export async function clientBasedTransform( const node: any = code.statements.find(stm => ts.isClassDeclaration(stm)); if (!classData.functions) { - throw new Error("Input is invalid"); + throw new Error('Input is invalid'); } if (!node || !node.members.some(member => ts.isMethodDeclaration(member))) { - throw new Error("Code is invalid"); + throw new Error('Code is invalid'); } code = cloneDeep(code); @@ -78,7 +78,7 @@ export async function clientBasedTransform( ts.isClassDeclaration(node) ); let constructorNode: any = classDeclarationNode.members.find( - node => ts.SyntaxKind[node.kind] === "Constructor" + node => ts.SyntaxKind[node.kind] === 'Constructor' ); const clientObjects: any = new Array(classData.clients.length); clientObjects.fill(Object.assign({}, constructorNode.body.statements[0])); @@ -93,7 +93,7 @@ export async function clientBasedTransform( let functions: any = []; classData.functions.map(method => { let clonedNode; - if (method.returnTypeName === "Promise") { + if (method.returnTypeName === 'Promise') { clonedNode = Object.assign({}, node.members[1]); } else { clonedNode = Object.assign({}, node.members[2]); @@ -136,7 +136,7 @@ export async function clientBasedTransform( ); if (param.optional) { - paramNode.initializer = ts.createIdentifier("undefined"); + paramNode.initializer = ts.createIdentifier('undefined'); } return paramNode; @@ -145,51 +145,51 @@ export async function clientBasedTransform( node.parameters = parameters; } - if (ts.isStringLiteral(node) && node.text === "pkgName") { + if (ts.isStringLiteral(node) && node.text === 'pkgName') { return ts.createStringLiteral( - "@google-cloud/" + classData.functions[0].pkgName + '@google-cloud/' + classData.functions[0].pkgName ); } if (ts.isIdentifier(node) && dummyIdentifiers.includes(node.text)) { let updatedIdentifier; switch (node.text) { - case "ClassName": + case 'ClassName': updatedIdentifier = ts.updateIdentifier( - ts.createIdentifier("GCP_" + classData.serviceName) + ts.createIdentifier('GCP_' + classData.serviceName) ); break; - case "ClientName": + case 'ClientName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.clients[clientCount]) ); clientCount++; break; - case "SDKFunctionName": + case 'SDKFunctionName': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.functions[count].SDKFunctionName) ); count++; break; - case "_client": + case '_client': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier( - "_" + + '_' + classData.functions[count].client.toLowerCase().charAt(0) + classData.functions[count].client.substr(1) ) ); break; - case "_clientObj": + case '_clientObj': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier( - "_" + + '_' + classData.clients[clientObjCount].toLowerCase().charAt(0) + classData.clients[clientObjCount].substr(1) ) ); break; - case "Client": + case 'Client': updatedIdentifier = ts.updateIdentifier( ts.createIdentifier(classData.clients[clientObjCount]) ); @@ -203,7 +203,7 @@ export async function clientBasedTransform( node.expression.forEachChild(childNode => { if ( ts.isIdentifier(childNode) && - childNode.text === "SDKFunctionName" + childNode.text === 'SDKFunctionName' ) { const args = classData.functions[count].params.map(param => ts.createIdentifier(param.name) @@ -227,7 +227,7 @@ export async function clientBasedTransform( if (ts.isClassDeclaration(node)) { addMultiLineComment( node, - "This is an auto generated class, please do not change." + 'This is an auto generated class, please do not change.' ); const comment = `* * Class to create a ${classData.serviceName} object @@ -250,16 +250,16 @@ export async function clientBasedTransform( let comment; if (parameters.length > 0) { - let paramStatments: string = ""; + let paramStatments: string = ''; parameters.map(param => { paramStatments = paramStatments.concat( - paramStatments === "" ? `${param}` : `\n ${param}` + paramStatments === '' ? `${param}` : `\n ${param}` ); }); comment = `* * Trigers the ${classData.functions[count].SDKFunctionName} function of ${ - classData.functions[0].pkgName.split("-")[1] + classData.functions[0].pkgName.split('-')[1] } ${paramStatments} * @returns {Promise<${classData.functions[count].SDKFunctionName}Response>} @@ -267,7 +267,7 @@ export async function clientBasedTransform( } else { comment = `* * Trigers the ${classData.functions[count].SDKFunctionName} function of ${ - classData.functions[0].pkgName.split("-")[1] + classData.functions[0].pkgName.split('-')[1] } * @returns {Promise<${classData.functions[count].SDKFunctionName}Response>} `; diff --git a/package.json b/package.json index e50b5b8b..3e454f91 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "test": "lerna run test", "lint": "lerna run lint", "prettier": "lerna run prettier", - "format": "prettier --write", + "format": "prettier --write {,*/**/}*.{ts,json}", "doc": "jsdoc -c jsdoc.json", "generator": " cd generator && tsc main.ts && node main.js" },