@corefunc/decorators
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

CoreFunc Decorators

CoreFunc Decorators

Decorators for modern JavaScript.

NPM Version NPM Downloads GitHub Stars TypeScript Typings Travis CI LGTM


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

See also

💾 My other projects

Open Source

Package Sidebar

Install

npm i @corefunc/decorators

Weekly Downloads

7

Version

0.0.5

License

MIT

Unpacked Size

42.8 kB

Total Files

11

Last publish

Collaborators

  • r37r0m0d3l