@russ-b/nestjs-common-tools
Version:
NestJS utility tools
34 lines • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FieldSelector = void 0;
const proto_constants_1 = require("./constants/proto.constants");
class FieldSelector {
constructor(fields, messageTypes) {
this.fields = fields;
this.messageTypes = messageTypes;
}
findFieldsByType(typeName, fields) {
return (fields ? fields : this.fields)
.filter(this.isMessageType)
.map((field) => this.mapField(field, typeName))
.filter((f) => f.fields === undefined || f.fields.length > 0);
}
isMessageType(field) {
return field.type === proto_constants_1.TYPE_MESSAGE;
}
mapField(field, typeName) {
if (field.typeName === typeName) {
return { name: field.name };
}
const fieldDescriptor = this.messageTypes.get(field.typeName);
if (!fieldDescriptor) {
throw new Error(`Could not find field definition for type: ${field.typeName}`);
}
return {
name: field.name,
fields: this.findFieldsByType(typeName, fieldDescriptor),
};
}
}
exports.FieldSelector = FieldSelector;
//# sourceMappingURL=field.selector.js.map