
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
proto2immutablets
Advanced tools
Converts protobuf files to strongly typed immutable TypeScript classes.
Install this package globally:
npm install -g proto2immutablets
Run the command:
p2it --proto ./test.proto --output ./
This will output an .ts file with TypeScript classes and enums from the proto file.
Proto file:
message Circle {
string uuid = 1;
string name = 2;
string description = 3;
repeated Attribute attributes = 10;
string createdBy = 20;
string createdAt = 21;
string updatedAt = 22;
string decommissionedAt = 23;
repeated Member members = 30;
}
TypeScript:
export class Circle {
private _data: Map<string, any>;
constructor(data: any = {}) {
this._data = fromJS(data);
if (this._data.get('attributes')) {
const attributes = [];
this._data.get('attributes').map(item => {
attributes.push( new Attribute(item.toJS()));
});
this._data = this._data.set('attributes', List(attributes));
}
if (this._data.get('members')) {
const members = [];
this._data.get('members').map(item => {
members.push( new Member(item.toJS()));
});
this._data = this._data.set('members', List(members));
}
}
get uuid(): string {
return this._data.get('uuid');
}
setUuid(uuid: string): Circle {
const data = this._data.set('uuid', uuid);
return new Circle(data.toJS());
}
get name(): string {
return this._data.get('name');
}
setName(name: string): Circle {
const data = this._data.set('name', name);
return new Circle(data.toJS());
}
get description(): string {
return this._data.get('description');
}
setDescription(description: string): Circle {
const data = this._data.set('description', description);
return new Circle(data.toJS());
}
get attributes(): List<Attribute> {
return this._data.get('attributes');
}
setAttributes(attributes: List<Attribute>): Circle {
const data = this._data.set('attributes', attributes);
return new Circle(data.toJS());
}
get createdBy(): string {
return this._data.get('createdBy');
}
setCreatedBy(createdBy: string): Circle {
const data = this._data.set('createdBy', createdBy);
return new Circle(data.toJS());
}
get createdAt(): string {
return this._data.get('createdAt');
}
setCreatedAt(createdAt: string): Circle {
const data = this._data.set('createdAt', createdAt);
return new Circle(data.toJS());
}
get updatedAt(): string {
return this._data.get('updatedAt');
}
setUpdatedAt(updatedAt: string): Circle {
const data = this._data.set('updatedAt', updatedAt);
return new Circle(data.toJS());
}
get decommissionedAt(): string {
return this._data.get('decommissionedAt');
}
setDecommissionedAt(decommissionedAt: string): Circle {
const data = this._data.set('decommissionedAt', decommissionedAt);
return new Circle(data.toJS());
}
get members(): List<Member> {
return this._data.get('members');
}
setMembers(members: List<Member>): Circle {
const data = this._data.set('members', members);
return new Circle(data.toJS());
}
toJS() {
this._data.toJS();
}
}
FAQs
Converts protobuf files to strongly typed immutable TypeScript classes.
The npm package proto2immutablets receives a total of 1 weekly downloads. As such, proto2immutablets popularity was classified as not popular.
We found that proto2immutablets demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.