Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Base class with pub-sub and observers for JS object properties using ECMA5 getters/setters
This provides a flexible base class and extension mechanism for building JS objects which can have properties which listen for changes on other properties. Inspired by Ember.JS observers it aims to be smaller in scope and functionality and thus more lightweight.
var MyClass = Abide.extend({
firstName: 'John',
lastName: 'Smith',
fullName: (function() {
return this.firstName + ' ' + this.lastName;
}).computed('firstName', 'lastName'),
showWelcomeMessage: (function() {
console.log('Welcome ' + this.fullName);
}).observes('fullName')
});
var m = new MyClass();
m.showWelcomeMessage();
// console.log 'John Smith'
m.firstName = 'Mark';
// showWelcomeMessage() automatically gets triggered
// console.log 'Mark Smith'
Node:
$ npm install abide
Bower:
$ bower install abide
Browser:
<script type="text/javascript" src="https://rawgithub.com/hiddentao/abide/master/abide.min.js"></script>
Create a new class by extending the base class with the given mixins.
var EmailClient = Abide.extend(EventEmitterMixin, {
server: 'gmail.com',
port: 993
});
var ImapClient = EmailClient.extend({
ssl: true
});
Params:
mixins...
- one more mixins and class definitionsSpecify an object property which gets computed whenever a given dependency gets updated.
var EmailClient = Abide.extend(EventEmitterMixin, {
username: 'john',
server: 'gmail.com',
email: (function(){
return this.username + '@' + this.server;
}).computed('username', 'server')
});
var client = new EmailClient();
client.username = 'mark'; // will auto-trigger a re-calculation of 'email' property
Params:
dependencies...
- names of properties which, when modified, should auto-trigger a recalculation of this property.Specify an object method which gets called whenever a given dependency gets updated.
var EmailClient = Abide.extend(EventEmitterMixin, {
username: 'john',
server: 'gmail.com',
logEmailAddress: (function(){
console.log(this.username + '@' + this.server);
}).observes('username', 'server')
});
var client = new EmailClient();
client.username = 'mark'; // will auto-trigger a call to 'logEmailAddress()'
Params:
dependencies...
- names of properties which, when modified, should auto-trigger a call to this method.Notify all dependents of a property that it has been updated.
var EmailClient = Abide.extend(EventEmitterMixin, {
username: 'john',
server: 'gmail.com',
logEmailAddress: (function(){
console.log(this.username + '@' + this.server);
}).observes('username', 'server')
});
var client = new EmailClient();
client.notifyPropertyUpdated('username'); // will auto-trigger a call to 'logEmailAddress()'
Params:
name
- name of properties whose dependents should be notified.Some nice-to-haves for the future:
Pull requests with comprehensive tests are welcome as long as they fit well with the goals of the library.
See LICENSE.md
FAQs
Base class pub-sub observers for JS objects based on ECMA5 getters/setters
The npm package abide receives a total of 1 weekly downloads. As such, abide popularity was classified as not popular.
We found that abide 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
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.