Skip to content

Latest commit

 

History

History
118 lines (90 loc) · 2.86 KB

README.asciidoc

File metadata and controls

118 lines (90 loc) · 2.86 KB

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();