
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
active-document
Advanced tools
I encourage to read the source code as it is shorter and more precise than the documentation.
Adds getter and setter methods to an object based on existing properties or methods in their prototype.
Define attributes by adding properties (not prefixed with _
) or methods
(prefixed with get
or set
) to the prototype before calling decorate
.
npm install active-document
var aDoc = require('active-document');
function Car(){
aDoc.init(this);
}
aDoc.decorate(Car);
The decorate
function is simply a mixin. It copies functions to the
constructor and the prototype of the given object. This is known as
concatenative inheritance.
In the car example these would be accessed as Car.<name>
(e.g.
Car.attributeNames
).
attributeNames
A list (Array
) of defined attributes
addAttribute(name)
Add an attribute manually
toJSON(document)
Delegates to document.toJSON()
(convenient for .map
etc.)
fromJSON(json)
Creates an object having json
as its attributes
.
Does not invoke constructor.
Use this for bootstrapping from a trusted external source such as a database or a web service.
toJSON
Returns a copy of obj.attributes
.
Overwrite (define on the prototype) to customize format.
Use this for shipping of to an external source such as a database or a web service.
function Person(){
// creates empty attributes container
aDoc.init(this);
// set some defaults
this.born = (new Date()).getFullYear();
}
Object.assign(Person.prototype, {
firstName: null,
lastName: null,
born: null,
_priv: null,
setLastName: function( name ){
this.attributes.lastName = name.substr(0, 1).toUpperCase() + name.substr(1);
},
getName: function(){
return this.firstName + ' ' + this.lastName;
},
});
aDoc.decorate(Person);
Person.attributeNames; // [ 'firstName', 'lastName', 'born', 'name' ]
var child = new Person();
child.born; // 2014
child.firstName = 'Lucas';
child.lastName = 'williams';
child.name; // 'Lucas Williams'
child.toJSON(); // { firstName: 'Lucas', lastName: 'Williams', born: 2014 }
var father = Person.fromJSON({ lastName: 'Smith' });
FAQs
Decorate a constructor to have attributes behind mutators
The npm package active-document receives a total of 0 weekly downloads. As such, active-document popularity was classified as not popular.
We found that active-document 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.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.