1.1.1 • Published 2 years ago
node-lombok v1.1.1
node-lombok
- A lightweight npm package for typescript decorators which mimic some of the functionalities offered by lombok for java.
Usage
- Install with
npm i node-lombok
- Please ensure that you have set
experimentalDecorators
set astrue
in your tsconfig.json
@Data
@Data
adds getters and setters for all defined attributes. Refer example below:- If you define your own getters / setters methods then it will be overwritten by @Data
import { Data } from 'node-lombok';
@Data()
class User {
[x: string]: any;
private name: string;
private email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
}
const user = new User('', '');
user.setName('user');
user.setEmail('user@email.com');
console.log(user.getName());
console.log(user.getEmail());
@Getters
@Getters
adds getters for all defined attributes- If you define your own getter method then it will be overwritten by @Getters
import { Getters } from 'node-lombok';
@Getters()
class User {
[x: string]: any;
private name: string;
private email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
}
const user = new User('user', 'user@email');
console.log(user.getName());
console.log(user.getEmail());
@Setters
@Setters
adds setters for all defined attributes- If you define your own setter method then it will be overwritten by @Setters
- A set method is will capitilize the first letter of the attribute and add
set
as a prefix. So basically a set method for name will look likesetName
import { Setters } from 'node-lombok';
@Setters()
class User {
[x: string]: any;
private name: string;
private email: string;
constructor(name: string, email: string) {
this.name = name;
this.email = email;
}
}
const user = new User('', '');
user.setName('user');
user.setEmail('user@email.com');
console.log(user);
@Store
@Store
sets up storage for all objects of a class.- storage is basically just a map where the instantiated object is stored agains it's
_id
. - The
_id
is auto incremented and storageMap looks like:{ _id: object }
.
import { Store } from 'node-lombok';
@Store()
class User {
[x: string]: any;
private name: string;
constructor(name: string) {
this.name = name;
}
}
const a = new User('A');
const b = new User('B');
// b will have _id = 2 so you can search it from storage like:
// @ts-ignore
console.log(User.findById(2));