@erkoware/init-core
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

Init Core Package

This is the core package for the Init project. It contains the core functionality used by other packages. It's general purpose is to provide a managed initialization process for applications.

Installation

npm install @erkoware/init-core

Usage

Configuration

The core package is configured using a Config array. This array is passed to the init class.

const config: Config = [
    {
        fn: () => {
        },
        stage: 0,
        fnType: FnType.DISPATCH
    },
    {
        fn: () => {
        },
        stage: 1,
        fnType: FnType.SYNC
    },
    {
        fn: async () => {
        },
        stage: 1,
        fnType: FnType.SYNC
    },
    {
        fn: () => {
        },
        stage: 2,
        fnType: FnType.SYNC
    },
];

In stage 0 we may want to dispatch a function call we don't care about awaiting. Stage 1 maybe has some tasks we want to run in parallel. And stage 2 should be run sequentially after stage 1.

Alternative Configuration

Alternatively you can use the InitConfigElement class to create a configuration. This also works mixed together with the Object initialization.

import { InitConfigElement } from './init';

const config: Config = [
    new InitConfigElement(
        () => {},
        0,
        FnType.DISPATCH
    ),
    new InitConfigElement(
        () => {},
        1,
        FnType.SYNC
    ),
    new InitConfigElement(
        async () => {},
        1,
        FnType.SYNC
    ),
    new InitConfigElement(
        () => {},
        2,
        FnType.SYNC
    ),
];

Configuration Properties

fn: () => void | Promise<void>;  // The function to be called.
stage: number;                   // The stage to run the function in.
fnType: FnType;                  // The type of function to run.
finished?: boolean;              // Optional, whether the function has finished running.

Initialization

Passing the configuration array to the init class and starting the initialization process.

const init = new Init(config);
await init.startInit();

or

const init = new Init();
init.setConfig(config);
await init.startInit();

Function Types

enum FnType {
    SYNC = 'sync',
    DISPATCH = 'dispatch',
}

SYNC is used to execute and await all functions of a stage in parallel. Execution order is not guaranteed. If you want to execute functions in a specific order, split them into different stages.

DISPATCH is used to execute and all functions of a stage but not await them at all.

Readme

Keywords

Package Sidebar

Install

npm i @erkoware/init-core

Weekly Downloads

1

Version

0.2.0

License

MIT

Unpacked Size

88.6 kB

Total Files

14

Last publish

Collaborators

  • l0tze
  • simonguethler
  • erkoware-admin