@russ-b/nestjs-common-tools
Version:
NestJS utility tools
62 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PackageDefinitionManager = void 0;
class PackageDefinitionManager {
constructor(packageName, packageDefinition) {
this.packageName = packageName;
this.packageDefinition = packageDefinition;
}
getPackageName() {
return this.packageName;
}
getServiceDefinition(serviceName) {
const serviceDefinition = this.packageDefinition[`${serviceName}`];
if (!serviceDefinition) {
return this.packageDefinition[`${this.packageName}.${serviceName}`];
}
return serviceDefinition;
}
getMessageDefinition(messageName) {
const message = this.packageDefinition[messageName];
if (!message) {
return this.packageDefinition[`${this.getPackageName()}.${messageName}`];
}
else {
return message;
}
}
getMethodDefinition(serviceName, rpc) {
const serviceDefinition = this.getServiceDefinition(serviceName);
if (!serviceDefinition) {
return undefined;
}
return serviceDefinition[rpc];
}
getRequestFields(serviceName, rpc) {
const messageTypeDefinition = this.getMethodDefinition(serviceName, rpc)?.requestType;
return this.getFields(messageTypeDefinition);
}
getResponseFields(serviceName, rpc) {
const messageTypeDefinition = this.getMethodDefinition(serviceName, rpc)?.responseType;
return this.getFields(messageTypeDefinition);
}
getFields(definition) {
return definition?.type?.field || [];
}
findFieldsByType(fields, typeName) {
return fields
.filter((f) => f.type === 'TYPE_MESSAGE')
.map((f) => {
if (f.typeName === typeName) {
return { name: f.name };
}
return {
name: f.name,
fields: this.findFieldsByType(this.getFields(this.getMessageDefinition(f.typeName)), typeName),
};
})
.filter((f) => f.fields === undefined || f.fields.length > 0);
}
}
exports.PackageDefinitionManager = PackageDefinitionManager;
//# sourceMappingURL=package-definition-manager.js.map