UNPKG

protoc-gen-ts-alt

Version:

Generate d.ts definitions for generated js files from grpc_tools_node_protoc

64 lines 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * This is the ProtoC compiler plugin. * * It only accepts stdin/stdout output according to the protocol * specified in [plugin.proto](https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/plugin.proto). */ const ExportMap_1 = require("./lib/ExportMap"); const Utility_1 = require("./lib/Utility"); const plugin_pb_1 = require("google-protobuf/google/protobuf/compiler/plugin_pb"); const ProtoMsgTsdFormatter_1 = require("./lib/format/ProtoMsgTsdFormatter"); const ProtoSvcTsdFormatter_1 = require("./lib/format/ProtoSvcTsdFormatter"); const TplEngine_1 = require("./lib/TplEngine"); Utility_1.Utility.withAllStdIn((inputBuff) => { try { let typedInputBuff = new Uint8Array(inputBuff.length); //noinspection TypeScriptValidateTypes typedInputBuff.set(inputBuff); let codeGenRequest = plugin_pb_1.CodeGeneratorRequest.deserializeBinary(typedInputBuff); let codeGenResponse = new plugin_pb_1.CodeGeneratorResponse(); let exportMap = new ExportMap_1.ExportMap(); let fileNameToDescriptor = {}; codeGenRequest.getProtoFileList().forEach(protoFileDescriptor => { fileNameToDescriptor[protoFileDescriptor.getName()] = protoFileDescriptor; exportMap.addFileDescriptor(protoFileDescriptor); }); codeGenRequest.getFileToGenerateList().forEach(fileName => { // message part let msgFileName = Utility_1.Utility.filePathFromProtoWithoutExt(fileName); let msgTsdFile = new plugin_pb_1.CodeGeneratorResponse.File(); msgTsdFile.setName(msgFileName + ".d.ts"); const msgModel = ProtoMsgTsdFormatter_1.ProtoMsgTsdFormatter.format(fileNameToDescriptor[fileName], exportMap); msgTsdFile.setContent(TplEngine_1.TplEngine.render('msg_tsd', msgModel)); codeGenResponse.addFile(msgTsdFile); let msgExtTsFile = new plugin_pb_1.CodeGeneratorResponse.File(); msgExtTsFile.setName(msgFileName + "_ext.ts"); msgExtTsFile.setContent(TplEngine_1.TplEngine.render('msg_ext_ts', msgModel)); codeGenResponse.addFile(msgExtTsFile); // service part let fileDescriptorModel = ProtoSvcTsdFormatter_1.ProtoSvcTsdFormatter.format(fileNameToDescriptor[fileName], exportMap); if (fileDescriptorModel != null) { let svcFileName = Utility_1.Utility.svcFilePathFromProtoWithoutExt(fileName); let svtTsdFile = new plugin_pb_1.CodeGeneratorResponse.File(); svtTsdFile.setName(svcFileName + ".d.ts"); svtTsdFile.setContent(TplEngine_1.TplEngine.render('svc_tsd', fileDescriptorModel)); codeGenResponse.addFile(svtTsdFile); } if (fileDescriptorModel != null) { let svcFileName = Utility_1.Utility.svcFilePathFromProtoWithoutExt(fileName); let svtTsdFile = new plugin_pb_1.CodeGeneratorResponse.File(); svtTsdFile.setName(svcFileName + "_async_cli.ts"); svtTsdFile.setContent(TplEngine_1.TplEngine.render('async_cli_ts', fileDescriptorModel)); codeGenResponse.addFile(svtTsdFile); } }); process.stdout.write(new Buffer(codeGenResponse.serializeBinary())); } catch (err) { console.error("protoc-gen-ts error: " + err.stack + "\n"); process.exit(1); } }); //# sourceMappingURL=index.js.map