Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
class-wrapper
Advanced tools
Set of wrappers to create classes with construction behaviour like in C++
The main goal of this library is to automate some construction routines, that a developer is usually writing by himself, and to provide more flexibility to create new classes. This library suppies:
ClassBuilder
- is the main wrapper that realizes the inheritance, data encapsulation, stores the default values and in result it returns a class. This builder is useful to define custom pre-construction routines by setting the class constructor template.Class
- is a ClassBuilder
with already predefined construction routines. The resulting behavior of how the objects are constructing is similar to the behaviour in C++ - all parent constructors are executing first, starting from the root parent constructor, only then the constructor of the class will be executed. With this there is no need to always explicitly call the parent constructor in each constructor function and pass there all the arguments. The constructor function can contain only the effective code that is needed for a new class.Defined class properties are treated as default values for a new instance and they are isolated between instances. For example if some class has a simple object in properties (Object, or Array), then each instance will have its own copy of that object.
If this library is planned to be used on some environments which are not passing the requirements, then please use v1.x (even transpilers will not help).
Via NPM (Node Package Manager)
$ npm install class-wrapper --save
Then just import the required component
import {Class} from 'class-wrapper';
Or
const Class = require('class-wrapper/dest/class-wrapper.amd').Class;
import {Class} from 'class-wrapper';
// Define a Figure class:
const Figure = Class(function() {
console.log(`Figure::constructor(${[...arguments].join()})`);
}, {
// this will set the name for the class, so by debugging you will see correct name of the class, othervise "Class" will be displayed
__name: 'Figure',
// abstract function for a calculating an area of a figure
calcArea() {}
});
// Define Rectangle class derived from a Figure class:
const Rectangle = Class(Figure, function(width, height) {
console.log('Rectangle::constructor(${[...arguments].join()})');
if (width !== undefined) {
this._width = width;
}
if(height !== undefined) {
this._height = height;
}
}, {
__name: 'Rectangle',
_width: 0,
_height: 0,
calcArea() {
return this._width * this._height;
}
});
// Define Square class as a special case of Rectangle:
const Square = Class(Rectangle, function(length) {
console.log('Square::constructor(${[...arguments].join()})');
this._height = length;
}, {
__name: 'Square'
});
// Create a rectangle with width 2 and height 4
const someRect = new Rectangle(2, 4);
// console will print:
// --> Figure::constructor(2,4)
// --> Rectangle::constructor(2,4)
console.log(someRect.calcArea()); // --> 8
// Create a rectangle with default width and height
console.log((new Rectangle()).calcArea()); // --> 0
// Create a square with an edge length 5
const someSqrt = new Square(5);
// console will print:
// --> Figure::constructor(5)
// --> Rectangle::constructor(5)
// --> Square::constructor(5)
console.log(someSqrt.calcArea()); // --> 25
FAQs
Set of wrappers to define a class like in C++ and few utility functions
The npm package class-wrapper receives a total of 45 weekly downloads. As such, class-wrapper popularity was classified as not popular.
We found that class-wrapper 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.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.