Skip to main content

Quik Framework :: Bootstrap

Implements boot hooks and initialization helpers. The module exposes lifecycle hook functions used to start and stop the framework during application boot.

Hook Ordering & Failure Behavior

Lifecycle hooks run in the following order:

  • BEFORE_INIT -> INIT -> AFTER_INIT
  • BEFORE_BOOT -> BOOT -> AFTER_BOOT
  • BEFORE_RESET -> RESET -> AFTER_RESET

Callbacks for each step execute sequentially in registration order. Errors are logged and do not stop the remaining hooks from running.

For long-running applications, AFTER_BOOT is the teardown phase. A bootstrap restart runs teardown, executes reset hooks, reloads bootstrap setup, and then boots again from the saved setup options.

Timing Instrumentation

Bootstrap logs timing information for each hook callback and module setup when debug logging is enabled. This helps identify slow boot steps without changing application behavior.

Installation

npm install @quik/bootstrap

Usage

Register lifecycle hooks:

import { onBeforeBoot, onBoot, onAfterBoot } from '@quik/bootstrap';

onBeforeBoot(async () => {
// prepare resources
});

onBoot(async () => {
// start services
});

onAfterBoot(async () => {
// post-boot checks
});

Trigger lifecycle execution:

import { Module } from '@quik/bootstrap';

await Module.setup({
core: { logging, i18n },
modules: [],
flags: {
isCli: false,
startHttpServer: true,
startWebSocketServer: false,
startScheduler: false,
isTest: false
}
});

await Module.init();
await Module.boot();

Restart or stop the runtime in process:

import { BootstrapEvent, BootstrapEvents, restart, shutdown } from '@quik/bootstrap';

await restart();
await shutdown();

BootstrapEvents.emit(BootstrapEvent.RESTART);

API Highlights

  • onBeforeBoot, onBoot, onAfterBoot register boot lifecycle callbacks.
  • onBeforeInit, onInit, onAfterInit register init lifecycle callbacks.
  • onBeforeReset, onReset, onAfterReset register full-reload callbacks.
  • onAction(action, callback) registers by explicit lifecycle enum.
  • Module.setup(options) loads modules and registers hooks.
  • Module.init() runs the INIT procedure.
  • Module.boot() runs the BOOT procedure.
  • restart() performs a full in-process reload from the saved bootstrap setup.
  • shutdown() executes registered teardown hooks once.
  • BootstrapEvents.emit(BootstrapEvent.RESTART) triggers a fire-and-forget restart event.

Testing & Coverage

See the root instructions for details on running pnpm run test:coverage and accessing coverage artifacts.

API Reference

Generated API documentation is available in the bootstrap API section.