skimia-sef
v0.1.1
Published
the goal of this project is handle the new developpement way (such as php traits), using "mixin" decorators
Readme
Skimia Extension Framework (SEF)
the goal of this project is handle the new developpement way (such as php traits), using "mixin" decorators
Install
Install with npm
npm i skimia-sef --saveTODO
- [ ] find a way to configure mixins
- [ ] add events (on instance creation to call all "mixinConstructors")
- [ ] export to a new package
Exemple
//mixin definition
const Resource = mixin('MixinName', {
//access to local property in underscored snake case
Premium() : boolean {
return this._is_premium || (this._is_premium = false)
},
//setter
setPremium(value:boolean) : IResource{
this._is_premium = value
return this
}
}, {
//Array of mixinNames dependent for this mixin
dependencies: []
});
//mixin interface
interface IResource{
Premium() : boolean
setPremium(value:boolean) : IResource
}
//apply mixin
@Resource
class ResourceTemplate{
}
//fix (apply mixin interface)
interface ResourceTemplate extends IResource {}
//use
let rezz = new ResourceTemplate()
rezz.setPremium(true)
console.log(rezz.Premium()); // => trueNote:
- a mixin cannot redefine class members
- MixinName in PascalCase
- Property in PascalCase
- private var in underscored snake_case
- volatile var in doubleunderscored snake_case => __volatile (ex state)
