Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@corefunc/decorators

corefunc8MIT0.0.5TypeScript support: included

Decorators for modern JavaScript

aop, aspects, decorator, decorators, mixin

readme

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

changelog

Changelog


0.0.3

  • ✨ Added consoleGroup decorator.

0.0.2

  • ✨ Added measureExecution decorator.

0.0.1

  • ✨ Added attempt decorator.