UNPKG

@amirmarmul/waba-common

Version:

![GitHub release](https://img.shields.io/github/v/release/amirmarmul/waba-common?style=flat-square)

60 lines (59 loc) 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JsonResource = void 0; class JsonResource { hidden = []; fillable = []; attributes = {}; constructor(attributes) { this.fill(attributes); return new Proxy(this, { get: (target, property) => { if (target.isAttribute(property)) { return target.getAttribute(property); } return target[property]; }, set: (target, property, value) => { target.setAttribute(property, value); return true; } }); } fill(attributes) { for (const key in attributes) { this.setAttribute(key, attributes[key]); } } isAttribute(key) { return this.attributes.hasOwnProperty(key); } getAttribute(key) { return this.attributes[key]; } setAttribute(key, value) { this.attributes[key] = value; } getHidden() { return this.hidden; } setHidden(keys) { this.hidden = keys; } getFillable() { return this.fillable; } setFillable(keys) { this.fillable = keys; } toJSON() { return Object.keys(this.attributes) .filter(key => this.getFillable().includes(key)) .filter(key => !this.getHidden().includes(key)) .reduce((target, key) => { target[key] = this.attributes[key]; return target; }, {}); } } exports.JsonResource = JsonResource;