Product
Introducing SSO
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
Readme
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.
Product
Streamline your login process and enhance security by enabling Single Sign-On (SSO) on the Socket platform, now available for all customers on the Enterprise plan, supporting 20+ identity providers.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.