protoc-gen-ts-alt
Version:
Generate d.ts definitions for generated js files from grpc_tools_node_protoc
64 lines • 3.56 kB
JavaScript
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
;