1.0.3 • Published 1 year ago

@dizmo/functions-experimental v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

NPM version Build Status Coverage Status

@dizmo/functions-experimental

A decorator to designate class methods (and properties) as experimental: It takes an optional message (or function) and returns the original method, where an [EXPERIMENTAL] Class.method: message text is printed at most once upon invoking the experimental method (using console.warn).

Usage

Installation

npm install @dizmo/functions-experimental --save

Require

import { experimental } from '@dizmo/functions-experimental';
import { original } from '@dizmo/functions-experimental';

Example(s)

class MyClass {
    @experimental
    method1() { ... }

    @experimental('message')
    method2() { ... }

    @experimental((self, key) => 'message')
    method3() { ... }
}

..where self instanceof MyClass and key === 'method3'.

const instance = new MyClass();
original(instance.method).bind(instance)();

..where bind(instance) is required!

class MyClass {
    @experimental
    static method1() { ... }

    @experimental('message')
    static method2() { ... }

    @experimental((self, key) => 'message')
    static method3() { ... }
}

..where self === MyClass and key === 'method3'.

original(MyClass.method).bind(MyClass)();

..where bind(MyClass) is required!

Development

Clean

npm run clean

Build

npm run build

without linting and cleaning:

npm run -- build --no-lint --no-clean

with UMD bundling (incl. minimization):

npm run -- build --prepack

with UMD bundling (excl. minimization):

npm run -- build --prepack --no-minify

Lint

npm run lint

with auto-fixing:

npm run -- lint --fix

Test

npm run test

without linting, cleaning and (re-)building:

npm run -- test --no-lint --no-clean --no-build

Cover

npm run cover

without linting, cleaning and (re-)building:

npm run -- cover --no-lint --no-clean --no-build

Documentation

npm run docs

Publication

npm publish

initially (if public):

npm publish --access=public

Copyright

© 2021 dizmo AG, Switzerland