
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.
[](https://travis-ci.org/fiolkaf/modello) # modello Javascript modeling framework
Javascript modeling framework
npm install modello
// Define a new 'garden' model
Models.define('garden');
// Create an instance of a garden
var garden = new Models.Garden();
You can define your model properties:
// Define a new 'garden' model
Models.define('garden', {
// garden.pumpkins property will be defined for all instances
pumpkins: {},
// garden.opened property will get default value
opened: { default: true },
// Array definition, defaults to []
owners: { array: true }
});
// Create an instance of a garden
var garden = new Models.Garden({ pumpkins: 3 });
expect(garden.pumpkins, 'to equal', 3);
expect(garden.opened, 'to be true');
expect(garden.owners, 'to equal', []);
Your model will get all defined properties:
var garden = new Models.Garden();
expect(garden.hasOwnProperty('pumpkins'), 'to be true');
And can be extended with not defined properties:
var garden = new Models.Garden({ carrots: 7 });
expect(garden.carrots, 'to equal', 7);
Extend your model with helper functions:
Models.define('garden', {
pumpkins: { default: 1 },
carrots: { default: 3 },
getVeggiesCount: function() {
return this.pumpkins + this.carrots;
}
});
garden = new Models.Garden();
expect(garden.getVeggiesCount(), 'to equal', 4);
Init function will be executed when model is created:
Models.define('garden', {
pumpkins: {},
init: function() {
this.pumpkins = 1;
}
});
garden = new Models.Garden();
expect(garden.pumpkins, 'to equal', 1);
Composing models is easy:
// Define pumpkin model with size property
Models.define('pumpkin', { size: {} });
// Define strawberry model
Models.define('strawberry', { color: { default: 'red' }});
// Define garden model
Models.define('garden', {
pumpkin: { type: 'pumpkin' }, // embedded model
strawberries: { type: 'strawberry', array: true }
});
var garden = new Models.Garden({
pumpkin: new Models.Pumpkin({ size: 1 }),
strawberries: [ new Models.Strawberry() ]
});
expect(garden.pumpkin.size, 'to equal', 1);
expect(garden.strawberries[0].color, 'to equal', 'red');
garden = new Models.Garden();
// Attach listener to 'pumpkins' property change
garden.listenTo('pumpkinsChange', callback);
// Attach a generic listener to any change in the model
garden.listenTo('change', callback);
garden.pumpkins++;
All subscriptions will be released when disposing a model:
garden.dispose();
Models.define('garden', { pumpkins: { default: 0 } });
// Specify that we store garden models in localstorage
LocalStorageAdapter.register('garden');
// New instance is created and saved, it gets assigned uri property
var garden = new Models.Garden();
// You can specify uri property by yourself
garden = new Models.Garden({
_uri: '/garden/myGarden'
});
// Get you model using get method on the model
Models.Garden.get('/garden/myGarden');
// Query models using getAll method
result = Models.Garden.getAll( { pumpkins: 0 });
// Model changes will be saved on each modification
garden.pumpkins++;
// remove your models with remove method
result = Models.Garden.remove(garden._uri);
Use store modifier to exlude property from beeing stored:
Models.define('garden', {
pumpkins: { store: false }
});
FAQs
[](https://travis-ci.org/fiolkaf/modello) # modello Javascript modeling framework
We found that modello 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.