'use strict';
/**
* @typedef {import('../lib/application').Application} Application
*/
/**
* Interface for classes that LifeCycle
*
* @interface LifeCycle
*/
/**
* lifeCycle Before Startup
*
* @function
* @name LifeCycle#beforeStartup
* @param {Application} app
* @param {Function} cb
*/
/**
* lifeCycle After Startup
*
* @function
* @name LifeCycle#afterStartup
* @param {Application} app
* @param {Function} cb
*/
/**
* lifeCycle Before Shutdown
*
* @function
* @name LifeCycle#beforeShutdown
* @param {Application} app
* @param {Function} cb
*/
/**
* lifeCycle After Start All
*
* @function
* @name LifeCycle#afterStartAll
* @param {Application} app
* @param {Function} cb
*/
/**
* BaseLifecycle is a base class that can be extended.
* @class
* @implements {LifeCycle}
*/
class BaseLifecycle {
/** lifeCycle Before Startup
* @param {Application} app
* @param {Function} cb
*/
static beforeStartup (app, cb) {
// do some operations after application start up
cb();
}
/** lifeCycle After Startup
* @param {Application} app
* @param {Function} cb
*/
static afterStartup (app, cb) {
// do some operations after application start up
cb();
}
/** lifeCycle Before Shutdown
* @param {Application} app
* @param {Function} cb
*/
static beforeShutdown(app, cb) {
// do some operations after application start up
cb();
}
/** lifeCycle After Shutdown
* @param {Application} app
* @param {Function} cb
*/
static afterStartAll(app) {
// do some operations after all applications start up
}
}
module.exports = { BaseLifecycle };