protoc-gen-tsd
Version:
Protocol Buffers Compiler(protoc) plugin for TypeScript - Generate definition file(d.ts)
43 lines (42 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatFileDescriptorProto = void 0;
const enum_descriptor_formatter_1 = require("./enum-descriptor-formatter");
const message_descriptor_formatter_1 = require("./message-descriptor-formatter");
const wellknown_1 = require("../wellknown");
const dependency_filter_1 = require("../dependency-filter");
const util_1 = require("../util");
function formatFileDescriptorProto(fileDescriptorProto, protoAbstractSyntaxTreeMap) {
const protoFileName = fileDescriptorProto.getName();
const packageName = fileDescriptorProto.getPackage();
const imports = [];
const messages = [];
const extensions = [];
const enums = [];
const upToRoot = util_1.getPathToRoot(protoFileName);
fileDescriptorProto.getDependencyList().forEach((dependency) => {
if (dependency_filter_1.DependencyFilter.indexOf(dependency) !== -1) {
return;
}
const pseudoNamespace = util_1.filePathToPseudoNamespace(dependency);
if (!(dependency in wellknown_1.WellKnownTypesMap)) {
const filePath = util_1.filePathFromProtoWithoutExt(dependency);
imports.push(`import * as ${pseudoNamespace} from "${upToRoot}${filePath}";`);
}
});
fileDescriptorProto.getMessageTypeList().forEach((messageType) => {
messages.push(message_descriptor_formatter_1.formatMessageTypeDescriptorProto(protoFileName, protoAbstractSyntaxTreeMap, messageType, '', fileDescriptorProto));
});
fileDescriptorProto.getEnumTypeList().forEach((enumType) => {
enums.push(enum_descriptor_formatter_1.formatEnumDescriptorProto(enumType, ''));
});
return {
packageName,
protoFileName,
imports,
messages,
extensions,
enums,
};
}
exports.formatFileDescriptorProto = formatFileDescriptorProto;