@berish/pathof
v1.1.0
Published
Control access to the fields of a specific object using a dynamic key
Downloads
1
Readme
@berish/pathof ·
Контроль доступа к полям определенного объекта по динамическому ключу. Полная поддержка typescript
npm install @berish/pathof --save
Пример
import { of } from '@berish/pathof';
const model = {
login: 'root',
password: 'admin123456',
profile: {
firstname: 'Ravil',
lastname: 'Berishev',
},
};
const pathResult = of(model);
const login = pathResult('login');
console.log(login.get()); // 'root'
console.log(login.original); // === model
console.log(login.path); // ['login'];
login.set('root2');
console.log(login.get()); // root2
console.log(model.login); // root2
Конфигурирование (с поддержкой async/await)
import { of } from '@berish/pathof';
const model = {
login: 'root',
password: 'admin123456',
profile: {
firstname: 'Ravil',
lastname: 'Berishev',
age: 18
},
};
const pr = of(model)('profile')('age').config<string>({
afterGet: ({ value }) => `${value}`,
beforeSet: ({ value }) => ,
});
const age = pr.get();
console.log(age, typeof age); // 18 string
pr.set('20');
console.log(model.profile.age, typeof model.profile.age); // 20 number
const pr2 = of(model)('profile')('age').config<string>({
afterGet: ({ value }) => `${value}`,
beforeSet: async ({ value }) => {
await new Promise(resolve => setTimeout(resolve, 1000));
Number.parseInt(value, 10)
},
});
const age = pr2.get();
console.log(age, typeof age); // 20 string
await pr2.set('30');
console.log(model.profile.age, typeof model.profile.age); // 30 number