@corefunc/decorators
v0.0.5
Published
Decorators for modern JavaScript
Downloads
13
Maintainers
Readme
CoreFunc Decorators
Decorators for modern JavaScript.
Please Note: This is "Work in Progress" package. The new functionality will be added very slowly.
Usage
ECMAScript Module.
import {
attempt, consoleGroup, measureExecution,
} from "@corefunc/decorators";
Deno (Pika https://pika.dev/)
import {
attempt, consoleGroup, measureExecution,
} from "https://cdn.pika.dev/@corefunc/decorators";
Examples
Method Decorators
Attempt
import { attempt } from "@corefunc/decorators";
class Kitty {
@attempt((error: Error, args: any[]) => {
console.warn("Exception thrown!");
console.log(error.message); // "uwu"
console.dir(args); // [ 10, false ]
})
meow(volume: number, cute = true) {
throw new Error("uwu");
}
}
new Kitty().meow(10, false);
Console Group
import { consoleGroup } from "@corefunc/decorators";
class Class {
@consoleGroup("GROUP ASYNC")
async asyncRun() {
console.log("I'm async");
}
@consoleGroup("GROUP SYNC")
syncRun() {
console.log("I'm sync");
}
}
const test = new Class();
test.syncRun();
await test.asyncRun();
Measure Execution
import { measureExecution } from "@corefunc/decorators";
class Class {
/* conole.time() label text */
@measureExecution("long execution time here")
hardTask() {
let result = 0;
for (let index = 0; index < 1_000_000_000; index++) {
result += index;
}
return result;
}
}
new Class().hardTask();
Property Decorators
Instance
import { Instance } from "@corefunc/decorators";
class ClassAlpha {
name;
}
class ClassBeta {
@Instance(ClassAlpha)
alpha;
constructor(alpha) {
this.alpha = alpha;
}
}
const beta = new ClassBeta({ name: 'ALPHA' });
beta.alpha; // ClassAlpha