From c26f3c9ef7a21a10bd606d8f47ccd9eed4c2dd5c Mon Sep 17 00:00:00 2001 From: Katalina Okano Date: Sun, 11 Oct 2020 18:55:30 -0400 Subject: [PATCH] chore(ts-protoc-gen): fix types because lol wtf --- src/ts-protoc-gen/ExportMap.ts | 49 ++++++++++++----------- src/ts-protoc-gen/index.ts | 6 ++- src/ts-protoc-gen/service/common.ts | 22 +++++----- src/ts-protoc-gen/ts/enum.ts | 2 +- src/ts-protoc-gen/ts/extensions.ts | 6 +-- src/ts-protoc-gen/ts/fileDescriptorTSD.ts | 4 +- src/ts-protoc-gen/ts/message.ts | 20 ++++----- src/ts-protoc-gen/ts/oneof.ts | 10 +++-- src/ts-protoc-gen/util.ts | 9 +++-- 9 files changed, 68 insertions(+), 60 deletions(-) diff --git a/src/ts-protoc-gen/ExportMap.ts b/src/ts-protoc-gen/ExportMap.ts index c54a14e..8ae7686 100644 --- a/src/ts-protoc-gen/ExportMap.ts +++ b/src/ts-protoc-gen/ExportMap.ts @@ -34,22 +34,21 @@ export class ExportMap { message: DescriptorProto ) { const messageEntry: ExportMessageEntry = { - pkg: fileDescriptor.getPackage(), - fileName: fileDescriptor.getName(), - messageOptions: message.getOptions(), - mapFieldOptions: - message.getOptions() && message.getOptions().getMapEntry() - ? { - key: [ - message.getFieldList()[0].getType(), - message.getFieldList()[0].getTypeName().slice(1), - ], - value: [ - message.getFieldList()[1].getType(), - message.getFieldList()[1].getTypeName().slice(1), - ], - } - : undefined, + pkg: fileDescriptor.getPackage() as string, + fileName: fileDescriptor.getName() as string, + messageOptions: message.getOptions() as MessageOptions, + mapFieldOptions: (message.getOptions() && message.getOptions()?.getMapEntry() + ? { + key: [ + message.getFieldList()[0].getType(), + (message.getFieldList()[0].getTypeName() as string).slice(1), + ], + value: [ + message.getFieldList()[1].getType(), + (message.getFieldList()[1].getTypeName() as string).slice(1), + ], + } + : undefined) as any, }; const packagePrefix = scope ? scope + '.' : ''; @@ -66,17 +65,19 @@ export class ExportMap { }); message.getEnumTypeList().forEach((enumType) => { - const identifier = `${packagePrefix}${message.getName()}.${enumType.getName()}`; + const identifier = `${packagePrefix}${message.getName() as string}.${ + enumType.getName() as string + }`; this.enumMap[identifier] = { - pkg: fileDescriptor.getPackage(), - fileName: fileDescriptor.getName(), - enumOptions: enumType.getOptions(), + pkg: fileDescriptor.getPackage() as string, + fileName: fileDescriptor.getName() as string, + enumOptions: enumType.getOptions() as EnumOptions, }; }); } addFileDescriptor(fileDescriptor: FileDescriptorProto) { - const scope = fileDescriptor.getPackage(); + const scope = fileDescriptor.getPackage() as string; fileDescriptor.getMessageTypeList().forEach((messageType) => { this.exportNested(scope, fileDescriptor, messageType); }); @@ -84,9 +85,9 @@ export class ExportMap { fileDescriptor.getEnumTypeList().forEach((enumType) => { const packagePrefix = scope ? scope + '.' : ''; this.enumMap[packagePrefix + enumType.getName()] = { - pkg: fileDescriptor.getPackage(), - fileName: fileDescriptor.getName(), - enumOptions: enumType.getOptions(), + pkg: fileDescriptor.getPackage() as string, + fileName: fileDescriptor.getName() as string, + enumOptions: enumType.getOptions() as EnumOptions, }; }); } diff --git a/src/ts-protoc-gen/index.ts b/src/ts-protoc-gen/index.ts index e63c388..bffd925 100644 --- a/src/ts-protoc-gen/index.ts +++ b/src/ts-protoc-gen/index.ts @@ -30,13 +30,15 @@ withAllStdIn((inputBuff: Buffer) => { const fileNameToDescriptor: { [key: string]: FileDescriptorProto } = {}; const parameter = codeGenRequest.getParameter(); - const { service, mode } = getParameterEnums(parameter); + const { service, mode } = getParameterEnums(parameter as string); const generateGrpcWebServices = service === ServiceParameter.GrpcWeb; const generateGrpcNodeServices = service === ServiceParameter.GrpcNode; codeGenRequest.getProtoFileList().forEach((protoFileDescriptor) => { - fileNameToDescriptor[protoFileDescriptor.getName()] = protoFileDescriptor; + fileNameToDescriptor[ + protoFileDescriptor.getName() as string + ] = protoFileDescriptor; exportMap.addFileDescriptor(protoFileDescriptor); }); diff --git a/src/ts-protoc-gen/service/common.ts b/src/ts-protoc-gen/service/common.ts index 7d4c75f..7059b30 100644 --- a/src/ts-protoc-gen/service/common.ts +++ b/src/ts-protoc-gen/service/common.ts @@ -33,13 +33,13 @@ function getCallingTypes( return { requestType: getFieldType( MESSAGE_TYPE, - method.getInputType().slice(1), + (method.getInputType() as string).slice(1), '', exportMap ), responseType: getFieldType( MESSAGE_TYPE, - method.getOutputType().slice(1), + (method.getOutputType() as string).slice(1), '', exportMap ), @@ -94,7 +94,7 @@ export class RPCDescriptor { this.exportMap = exportMap; } get name(): string { - return this.protoService.getName(); + return this.protoService.getName() as string; } get qualifiedName(): string { @@ -107,15 +107,15 @@ export class RPCDescriptor { get methods(): RPCMethodDescriptor[] { return this.protoService.getMethodList().map((method) => { const callingTypes = getCallingTypes(method, this.exportMap); - const nameAsCamelCase = - method.getName()[0].toLowerCase() + method.getName().substr(1); + const name = method.getName() as string; + const nameAsCamelCase = name[0].toLowerCase() + name.substr(1); return { - nameAsPascalCase: method.getName(), + nameAsPascalCase: name, nameAsCamelCase, functionName: normaliseFieldObjectName(nameAsCamelCase), serviceName: this.name, - requestStream: method.getClientStreaming(), - responseStream: method.getServerStreaming(), + requestStream: method.getClientStreaming() as boolean, + responseStream: method.getServerStreaming() as boolean, requestType: callingTypes.requestType, responseType: callingTypes.responseType, }; @@ -131,15 +131,15 @@ export class GrpcServiceDescriptor { constructor(fileDescriptor: FileDescriptorProto, exportMap: ExportMap) { this.fileDescriptor = fileDescriptor; this.exportMap = exportMap; - this.pathToRoot = getPathToRoot(fileDescriptor.getName()); + this.pathToRoot = getPathToRoot(fileDescriptor.getName() as string); } get filename(): string { - return this.fileDescriptor.getName(); + return this.fileDescriptor.getName() as string; } get packageName(): string { - return this.fileDescriptor.getPackage(); + return this.fileDescriptor.getPackage() as string; } get imports(): ImportDescriptor[] { diff --git a/src/ts-protoc-gen/ts/enum.ts b/src/ts-protoc-gen/ts/enum.ts index 18a827f..452a6c7 100644 --- a/src/ts-protoc-gen/ts/enum.ts +++ b/src/ts-protoc-gen/ts/enum.ts @@ -8,7 +8,7 @@ export function printEnum(enumDescriptor: EnumDescriptorProto, indentLevel: numb printer.printLn(`export interface ${enumInterfaceName} {`); enumDescriptor.getValueList().forEach((value) => { printer.printIndentedLn( - `${value.getName().toUpperCase()}: ${value.getNumber()};` + `${(value.getName() as string).toUpperCase()}: ${value.getNumber()};` ); }); printer.printLn(`}`); diff --git a/src/ts-protoc-gen/ts/extensions.ts b/src/ts-protoc-gen/ts/extensions.ts index bd5a02c..a2ad41e 100644 --- a/src/ts-protoc-gen/ts/extensions.ts +++ b/src/ts-protoc-gen/ts/extensions.ts @@ -12,10 +12,10 @@ export function printExtension( ): string { const printer = new Printer(indentLevel + 1); printer.printEmptyLn(); - const extensionName = snakeToCamel(extension.getName()); + const extensionName = snakeToCamel(extension.getName() as string); const fieldType = getFieldType( - extension.getType(), - extension.getTypeName().slice(1), + extension.getType() as FieldDescriptorProto.Type, + (extension.getTypeName() as string).slice(1), fileName, exportMap ); diff --git a/src/ts-protoc-gen/ts/fileDescriptorTSD.ts b/src/ts-protoc-gen/ts/fileDescriptorTSD.ts index 0e7e11a..93e6138 100644 --- a/src/ts-protoc-gen/ts/fileDescriptorTSD.ts +++ b/src/ts-protoc-gen/ts/fileDescriptorTSD.ts @@ -11,8 +11,8 @@ export function printFileDescriptorTSD( fileDescriptor: FileDescriptorProto, exportMap: ExportMap ) { - const fileName = fileDescriptor.getName(); - const packageName = fileDescriptor.getPackage(); + const fileName = fileDescriptor.getName() as string; + const packageName = fileDescriptor.getPackage() as string; const printer = new Printer(0); diff --git a/src/ts-protoc-gen/ts/message.ts b/src/ts-protoc-gen/ts/message.ts index 1930de6..9b732d9 100644 --- a/src/ts-protoc-gen/ts/message.ts +++ b/src/ts-protoc-gen/ts/message.ts @@ -77,7 +77,7 @@ export function printMessage( messageDescriptor.getFieldList().forEach((field) => { if (field.hasOneofIndex()) { - const oneOfIndex = field.getOneofIndex(); + const oneOfIndex = field.getOneofIndex() as number; let existing = oneOfGroups[oneOfIndex]; if (existing === undefined) { existing = []; @@ -85,13 +85,13 @@ export function printMessage( } existing.push(field); } - const snakeCaseName = stripPrefix(field.getName().toLowerCase(), '_'); + const snakeCaseName = stripPrefix((field.getName() as string).toLowerCase(), '_'); const camelCaseName = snakeToCamel(snakeCaseName); const withUppercase = uppercaseFirst(camelCaseName); const type = field.getType(); let exportType; - const fullTypeName = field.getTypeName().slice(1); + const fullTypeName = (field.getTypeName() as string).slice(1); if (type === MESSAGE_TYPE) { const fieldMessageType = exportMap.getMessage(fullTypeName); if (fieldMessageType === undefined) { @@ -168,8 +168,9 @@ export function printMessage( } exportType = `${exportType}Map[keyof ${exportType}Map]`; } else { - if (field.getOptions() && field.getOptions().hasJstype()) { - switch (field.getOptions().getJstype()) { + const options = field.getOptions() as FieldOptions; + if (options && options.hasJstype()) { + switch (options.getJstype()) { case JSType.JS_NUMBER: exportType = 'number'; break; @@ -177,10 +178,10 @@ export function printMessage( exportType = 'string'; break; default: - exportType = getTypeName(type); + exportType = getTypeName((type as unknown) as number); } } else { - exportType = getTypeName(type); + exportType = getTypeName((type as unknown) as number); } } @@ -293,10 +294,9 @@ export function printMessage( toObjectType.printLn(`}`); messageDescriptor.getOneofDeclList().forEach((oneOfDecl) => { + const name = oneOfDecl.getName() as string; printer.printIndentedLn( - `get${oneOfName(oneOfDecl.getName())}Case(): ${messageName}.${oneOfName( - oneOfDecl.getName() - )}Case;` + `get${oneOfName(name)}Case(): ${messageName}.${oneOfName(name)}Case;` ); }); diff --git a/src/ts-protoc-gen/ts/oneof.ts b/src/ts-protoc-gen/ts/oneof.ts index 5224523..1a25026 100644 --- a/src/ts-protoc-gen/ts/oneof.ts +++ b/src/ts-protoc-gen/ts/oneof.ts @@ -12,11 +12,15 @@ export function printOneOfDecl( ) { const printer = new Printer(indentLevel); printer.printEmptyLn(); - printer.printLn(`export enum ${oneOfName(oneOfDecl.getName())}Case {`); - printer.printIndentedLn(`${oneOfDecl.getName().toUpperCase()}_NOT_SET = 0,`); + printer.printLn(`export enum ${oneOfName(oneOfDecl.getName() as string)}Case {`); + printer.printIndentedLn( + `${(oneOfDecl.getName() as string).toUpperCase()}_NOT_SET = 0,` + ); oneOfFields.forEach((field) => { printer.printIndentedLn( - `${field.getName().toUpperCase()} = ${field.getNumber()},` + `${(field.getName() as string).toUpperCase()} = ${ + field.getNumber() as number + },` ); }); printer.printLn('}'); diff --git a/src/ts-protoc-gen/util.ts b/src/ts-protoc-gen/util.ts index f1632c5..86187ca 100644 --- a/src/ts-protoc-gen/util.ts +++ b/src/ts-protoc-gen/util.ts @@ -76,12 +76,13 @@ export function withAllStdIn(callback: (buffer: Buffer) => void): void { const stdin = process.stdin; stdin.on('readable', function () { - let chunk; + let chunk = stdin.read(); - while ((chunk = stdin.read())) { + while (chunk) { if (!(chunk instanceof Buffer)) throw new Error('Did not receive buffer'); ret.push(chunk); len += chunk.length; + chunk = stdin.read(); } }); @@ -194,7 +195,7 @@ export function getParameterEnums( } { const { service, mode } = parse(parameter, ','); return { - service: getServiceParameter(service), - mode: getModeParameter(mode), + service: getServiceParameter(service as string), + mode: getModeParameter(mode as string), }; }