libflitter/Unit.js

/**
 * @module libflitter/Unit
 */

/**
 * Base class for all Flitter Units.
 * A Unit provides one piece of functionality in Flitter.
 * @class
 */
class Unit {

    /**
     * Loads the unit.
     * This should attach the unit's functionality to the Flitter app. It is provided a context where its variables
     * and methods that need to be made available to the rest of the app should reside.
     * @param {module:libflitter/app/FlitterApp~FlitterApp} app - the Flitter app
     * @param {module:libflitter/Context~Context} context - the unit's context. This is where variables and methods provided by the unit should be bound.
     * @returns {Promise<void>}
     */
    async go(app, context){
        
    }

    /**
     * Get the name of the unit. Should be a lowercase, alphanum/dash/underscore string.
     * @returns {String}
     */
    name(){
        return null
    }

    /**
     * Get the directories provided by the unit. 
     * Should be an object such that key => value is the name of the directory => fully qualified path to the directory.
     * @returns {Object}
     */
    directories(){
        return {}
    }

    /**
     * Cleans up the unit's resources before Flitter closes.
     * @param {module:libflitter/app/FlitterApp~FlitterApp} app - the Flitter app
     * @returns {Promise<void>}
     */
    async cleanup(app){
        
    }
}

module.exports = exports = Unit