Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return (target: TFunction) => {
const t: IProtobufScheme = target as any;
t.localName = params.name || (t as any).name || t.toString().match(/^function\s*([^\s(]+)/)[1];
t.items = t.items || {};
t.target = target;
t.items = assign({}, t.items);
// create protobuf scheme
const scheme = new Type(t.localName);
for (const key in t.items) {
const item = t.items[key];
let rule: string | undefined = void 0;
if (item.repeated) {
rule = "repeated";
} else if (item.required) {
rule = "required";
}
scheme.add(new Field(item.name, item.id, item.type, rule));
}
t.protobuf = scheme;
};
}
return (target: object, propertyKey: string | symbol) => {
const t: IProtobufScheme = target.constructor as any;
const key = propertyKey as string;
t.items = t.items || {};
if (t.target !== t) {
t.items = assign({}, t.items);
t.target = t;
}
t.items[key] = {
id: params.id,
type: params.type || "bytes",
defaultValue: params.defaultValue,
converter: params.converter || null,
parser: params.parser || null,
};
params.name = params.name || key;
t.items[key].name = params.name;
t.items[key].required = params.required || false;
t.items[key].repeated = params.repeated || false;