forked from projectmoon/tenebrous-dicebot
138 lines
5.5 KiB
JavaScript
138 lines
5.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var plugin_pb_1 = require("google-protobuf/google/protobuf/compiler/plugin_pb");
|
|
var WellKnown_1 = require("../WellKnown");
|
|
var FieldTypes_1 = require("../ts/FieldTypes");
|
|
var util_1 = require("../util");
|
|
function createFile(output, filename) {
|
|
var file = new plugin_pb_1.CodeGeneratorResponse.File();
|
|
file.setName(filename);
|
|
file.setContent(output);
|
|
return file;
|
|
}
|
|
exports.createFile = createFile;
|
|
function getCallingTypes(method, exportMap) {
|
|
return {
|
|
requestType: FieldTypes_1.getFieldType(FieldTypes_1.MESSAGE_TYPE, method.getInputType().slice(1), "", exportMap),
|
|
responseType: FieldTypes_1.getFieldType(FieldTypes_1.MESSAGE_TYPE, method.getOutputType().slice(1), "", exportMap),
|
|
};
|
|
}
|
|
function isUsed(fileDescriptor, pseudoNamespace, exportMap) {
|
|
return fileDescriptor.getServiceList().some(function (service) {
|
|
return service.getMethodList().some(function (method) {
|
|
var callingTypes = getCallingTypes(method, exportMap);
|
|
var namespacePackage = pseudoNamespace + ".";
|
|
return (callingTypes.requestType.indexOf(namespacePackage) === 0 ||
|
|
callingTypes.responseType.indexOf(namespacePackage) === 0);
|
|
});
|
|
});
|
|
}
|
|
var RPCDescriptor = (function () {
|
|
function RPCDescriptor(grpcService, protoService, exportMap) {
|
|
this.grpcService = grpcService;
|
|
this.protoService = protoService;
|
|
this.exportMap = exportMap;
|
|
}
|
|
Object.defineProperty(RPCDescriptor.prototype, "name", {
|
|
get: function () {
|
|
return this.protoService.getName();
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(RPCDescriptor.prototype, "qualifiedName", {
|
|
get: function () {
|
|
return (this.grpcService.packageName ? this.grpcService.packageName + "." : "") + this.name;
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(RPCDescriptor.prototype, "methods", {
|
|
get: function () {
|
|
var _this = this;
|
|
return this.protoService.getMethodList()
|
|
.map(function (method) {
|
|
var callingTypes = getCallingTypes(method, _this.exportMap);
|
|
var nameAsCamelCase = method.getName()[0].toLowerCase() + method.getName().substr(1);
|
|
return {
|
|
nameAsPascalCase: method.getName(),
|
|
nameAsCamelCase: nameAsCamelCase,
|
|
functionName: util_1.normaliseFieldObjectName(nameAsCamelCase),
|
|
serviceName: _this.name,
|
|
requestStream: method.getClientStreaming(),
|
|
responseStream: method.getServerStreaming(),
|
|
requestType: callingTypes.requestType,
|
|
responseType: callingTypes.responseType,
|
|
};
|
|
});
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
return RPCDescriptor;
|
|
}());
|
|
exports.RPCDescriptor = RPCDescriptor;
|
|
var GrpcServiceDescriptor = (function () {
|
|
function GrpcServiceDescriptor(fileDescriptor, exportMap) {
|
|
this.fileDescriptor = fileDescriptor;
|
|
this.exportMap = exportMap;
|
|
this.pathToRoot = util_1.getPathToRoot(fileDescriptor.getName());
|
|
}
|
|
Object.defineProperty(GrpcServiceDescriptor.prototype, "filename", {
|
|
get: function () {
|
|
return this.fileDescriptor.getName();
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(GrpcServiceDescriptor.prototype, "packageName", {
|
|
get: function () {
|
|
return this.fileDescriptor.getPackage();
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(GrpcServiceDescriptor.prototype, "imports", {
|
|
get: function () {
|
|
var _this = this;
|
|
var dependencies = this.fileDescriptor.getDependencyList()
|
|
.filter(function (dependency) { return isUsed(_this.fileDescriptor, util_1.filePathToPseudoNamespace(dependency), _this.exportMap); })
|
|
.map(function (dependency) {
|
|
var namespace = util_1.filePathToPseudoNamespace(dependency);
|
|
if (dependency in WellKnown_1.WellKnownTypesMap) {
|
|
return {
|
|
namespace: namespace,
|
|
path: WellKnown_1.WellKnownTypesMap[dependency],
|
|
};
|
|
}
|
|
else {
|
|
return {
|
|
namespace: namespace,
|
|
path: "" + _this.pathToRoot + util_1.replaceProtoSuffix(util_1.replaceProtoSuffix(dependency))
|
|
};
|
|
}
|
|
});
|
|
var hostProto = {
|
|
namespace: util_1.filePathToPseudoNamespace(this.filename),
|
|
path: "" + this.pathToRoot + util_1.replaceProtoSuffix(this.filename),
|
|
};
|
|
return [hostProto].concat(dependencies);
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(GrpcServiceDescriptor.prototype, "services", {
|
|
get: function () {
|
|
var _this = this;
|
|
return this.fileDescriptor.getServiceList()
|
|
.map(function (service) {
|
|
return new RPCDescriptor(_this, service, _this.exportMap);
|
|
});
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
return GrpcServiceDescriptor;
|
|
}());
|
|
exports.GrpcServiceDescriptor = GrpcServiceDescriptor;
|
|
//# sourceMappingURL=common.js.map
|