Profiles

May 15, 2020 · View on GitHub

version Maintenance MIT size dep known vulnerabilities Build Status

Addon profiles manager.

Requirements

Getting Started

This package is available in the Node Package Repository and can be easily installed with npm or yarn.

$ npm i @slimio/profiles
# or
$ yarn add @slimio/profiles

Usage example

import profilesLoader from "@slimio/profiles";
import Addon from "@slimio/addon";

const CPU = new Addon("cpu");
let profiles;

CPU.on("start", async() => {
    profiles = await profilesLoader("./config.json");
    profiles.events.on("walk", (name, payload) => {
        console.log(`profile name => ${name}`);
        console.log(payload);
    });

    await CPU.ready();
});

CPU.on("stop", () => {
    profiles.free(); // use free() to cleanup everything
});

export default CPU;

API

interface Event<T> {
    walk: (name: string, payload: T) => any;
}

declare function profiles<T>(configPath: string, predicate?: Function) : {
    events: SafeEmitter<Event<T>>;
    get: (profileName: string) => object | null;
    free: () => any;
}

Predicate can be used to filter profiles before calling walk event.

Dependencies

NameRefactoringSecurity RiskUsage
@slimio/configMinorHighTBC
@slimio/isMinorLowType checker
@slimio/safe-emitterMinorMediumNode.js Safe Emitter
@slimio/schedulerMinorLowTBC
@slimio/timerMinorLowDriftless interval
ms⚠️MajorLowTBC

License

MIT