@erkoware/init-core
v0.2.0
Published
This is the core package for the Init project. It's general purpose is to provide a managed initialization process for applications.
Readme
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-coreUsage
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.
