2024-03-30 23:08:03 +00:00
|
|
|
# Puter - Common Javascript Module
|
|
|
|
|
|
|
|
This is a small module for javascript which you might call a
|
2024-05-05 08:34:50 +00:00
|
|
|
"language tool"; it adds some behavior to make javascript classes
|
2024-03-30 23:08:03 +00:00
|
|
|
more flexible, with an aim to avoid any significant complexity.
|
|
|
|
|
|
|
|
Each class in this module is best described as an _idea_:
|
|
|
|
|
|
|
|
### BasicBase
|
|
|
|
|
|
|
|
**BasicBase** is the idea that there should be a common way to
|
2024-05-05 08:34:50 +00:00
|
|
|
see the inheritance chain of the current instance, and obtain
|
2024-03-30 23:08:03 +00:00
|
|
|
merged objects and arrays from static members of these classes.
|
|
|
|
|
|
|
|
### TraitBase
|
|
|
|
|
|
|
|
**TraitBase** is the idea that there should be a common way to
|
|
|
|
"install" behavior into objects of a particular class, as
|
|
|
|
dictated by the class definition. A trait might install a common
|
|
|
|
set of methods ("mixins"), decorate all or a specified set of
|
|
|
|
methods in the class (performance monitors, sanitization, etc),
|
|
|
|
or anything else.
|
|
|
|
|
|
|
|
### AdvancedBase
|
|
|
|
|
|
|
|
**AdvancedBase** is the idea that, in a node.js environment,
|
|
|
|
you always want the ability to add traits to a class and there
|
|
|
|
are some default traits you want in all classes, which are:
|
|
|
|
|
|
|
|
- `PropertiesTrait` - add lazy factories for instance members
|
|
|
|
instead of always populating them in the constructor.
|
|
|
|
- `NodeModuleDITrait` - require node modules in a way that
|
|
|
|
allows unit tests to inject mocks easily.
|