@haystacks/async
Version:
A framework to build any number or any kind of native application or automation solution.
174 lines (160 loc) • 11.4 kB
JavaScript
/**
* @file commandsLibrary.js
* @module commandsLibrary
* @description Contains all of the system defined commands as a map between function names and function calls.
* @requires module:advanced
* @requires module:auxiliary
* @requires module:configuration
* @requires module:constants
* @requires module:dataDirectorate
* @requires module:integrationTests
* @requires module:performanceMetric
* @requires module:plugins
* @requires module:system
* @requires module:loggers
* @requires module:data
* @requires {@link https://www.npmjs.com/package/@haystacks/constants|@haystacks/constants}
* @requires {@link https://www.npmjs.com/package/path|path}
* @author Seth Hollingsead
* @date 2022/02/04
* @copyright Copyright © 2022-… by Seth Hollingsead. All rights reserved
*/
// Internal imports
import advancedCommands from './commands/advanced.js';
import auxiliaryCommands from './commands/auxiliary.js';
import configurationCommands from './commands/configuration.js';
import constantsCommands from './commands/constant.js';
import dataDirectorate from './commands/dataDirectorate.js';
import integrationTestCommands from './commands/integrationTests.js';
import performanceMetricCommands from './commands/performanceMetric.js';
import pluginCommands from './commands/plugins.js';
import systemCommands from './commands/system.js';
import loggers from '../executrix/loggers.js';
import D from '../structures/data.js';
// External imports
import hayConst from '@haystacks/constants';
import path from 'path';
const {bas, cmd, msg, sys, wrd} = hayConst;
const baseFileName = path.basename(import.meta.url, path.extname(import.meta.url));
// framework.commandsBlob.commandsLibrary.
const namespacePrefix = wrd.cframework + bas.cDot + sys.ccommandsBlob + bas.cDot + baseFileName + bas.cDot;
/**
* @function clearCommandsLibrary
* @description Clears out the commands data structure on D. Useful so that it can be re-initialized.
* @return {void}
* @author Seth Hollingsead
* @date 2023/02/12
*/
async function clearCommandsLibrary() {
// let functionName = clearCommandsLibrary.name;
// console.log(`BEGIN ${namespacePrefix}${functionName} function`);
D[wrd.cCommands] = {};
// console.log(`END ${namespacePrefix}${functionName} function`);
}
/**
* @function initCommandsLibrary
* @description Initializes the commands function data structure on D.
* @return {void}
* @author Seth Hollingsead
* @date 2022/02/04
* @NOTE Please be aware that the Commands and BusinessRules data fields in the
* D-data structure are going to display as empty when printing out the D data structure even when using JSON.stringify().
* This is because the functions cannot really be serialized in any way. It actually kind of makes sense,
* but could be really confusing if you are struggling trying to debug commands or business rules that do not appear to exist.
*/
async function initCommandsLibrary() {
let functionName = initCommandsLibrary.name;
await loggers.consoleLog(namespacePrefix + functionName, msg.cBEGIN_Function);
D[wrd.cCommands] = {};
D[wrd.cCommands] = {
// Commands
// ***********************************************
// Advanced commands in order
// ***********************************************
[cmd.ccommandSequencer]: (inputData, inputMetaData) => advancedCommands.commandSequencer(inputData, inputMetaData),
[wrd.cworkflow]: (inputData, inputMetaData) => advancedCommands.workflow(inputData, inputMetaData),
[cmd.cbusinessRule]: (inputData, inputMetaData) => advancedCommands.businessRule(inputData, inputMetaData),
[cmd.ccommandGenerator]: (inputData, inputMetaData) => advancedCommands.commandGenerator(inputData, inputMetaData),
[cmd.ccommandAliasGenerator]: (inputData, inputMetaData) => advancedCommands.commandAliasGenerator(inputData, inputMetaData),
// ***********************************************
// Auxiliary commands in order
// ***********************************************
[cmd.cconvertColors]: (inputData, inputMetaData) => auxiliaryCommands.convertColors(inputData, inputMetaData),
// ***********************************************
// Configuration commands in order
// ***********************************************
[cmd.csaveConfiguration]: (inputData, inputMetaData) => configurationCommands.saveConfiguration(inputData, inputMetaData),
[cmd.cchangeConfigurationSetting]: (inputData, inputMetaData) => configurationCommands.changeConfigurationSetting(inputData, inputMetaData),
[cmd.clistConfigurationThemes]: (inputData, inputMetaData) => configurationCommands.listConfigurationThemes(inputData, inputMetaData),
[cmd.cchangeDebugConfigurationTheme]: (inputData, inputMetaData) => configurationCommands.changeDebugConfigurationTheme(inputData, inputMetaData),
// ***********************************************
// Constant commands in order
// ***********************************************
[cmd.cconstantsGenerator]: (inputData, inputMetaData) => constantsCommands.constantsGenerator(inputData, inputMetaData),
[cmd.cconstantsGeneratorList]: (inputData, inputMetaData) => constantsCommands.constantsGeneratorList(inputData, inputMetaData),
[cmd.cconstantsPatternRecognizer]: (inputData, inputMetaData) => constantsCommands.constantsPatternRecognizer(inputData, inputMetaData),
[cmd.cevaluateConstant]: (inputData, inputMetaData) => constantsCommands.evaluateConstant(inputData, inputMetaData),
// ***********************************************
// Data Directorate commands in order
// ***********************************************
[cmd.cprintDataHive]: (inputData, inputMetaData) => dataDirectorate.printDataHive(inputData, inputMetaData),
[cmd.cprintDataHiveAttributes]: (inputData, inputMetaData) => dataDirectorate.printDataHiveAttributes(inputData,inputMetaData),
[cmd.cclearDataStorage]: (inputData, inputMetaData) => dataDirectorate.clearDataStorage(inputData, inputMetaData),
[cmd.cchangeSetting]: (inputData, inputMetaData) => dataDirectorate.changeSetting(inputData, inputMetaData),
// ***********************************************
// Integration Test commands in order
// ***********************************************
[cmd.cvalidateConstants]: (inputData, inputMetaData) => integrationTestCommands.validateConstants(inputData, inputMetaData),
[cmd.cvalidateCommandAliases]: (inputData, inputMetaData) => integrationTestCommands.validateCommandAliases(inputData, inputMetaData),
[cmd.cvalidateWorkflows]: (inputData, inputMetaData) => integrationTestCommands.validateWorkflows(inputData, inputMetaData),
[cmd.crunAllValidations]: (inputData, inputMetaData) => integrationTestCommands.runAllValidations(inputData, inputMetaData),
// ***********************************************
// Performance Metrics commands in order
// ***********************************************
[cmd.cbusinessRulesMetrics]: (inputData, inputMetaData) => performanceMetricCommands.businessRulesMetrics(inputData, inputMetaData),
[cmd.ccommandMetrics]: (inputData, inputMetaData) => performanceMetricCommands.commandMetrics(inputData, inputMetaData),
// ***********************************************
// Plugin commands in order
// ***********************************************
[cmd.clistAllLoadedPlugins]: (inputData, inputMetaData) => pluginCommands.listAllLoadedPlugins(inputData, inputMetaData),
[cmd.clistAllPluginsInRegistry]: (inputData, inputMetaData) => pluginCommands.listAllPluginsInRegistry(inputData, inputMetaData),
[cmd.clistAllPluginsInRegistryPath]: (inputData, inputMetaData) => pluginCommands.listAllPluginsInRegistryPath(inputData, inputMetaData),
[cmd.ccountPluginsInRegistry]: (inputData, inputMetaData) => pluginCommands.countPluginsInRegistry(inputData, inputMetaData),
[cmd.ccountPluginsInRegistryPath]: (inputData, inputMetaData) => pluginCommands.countPluginsInRegistryPath(inputData, inputMetaData),
[cmd.cregisterPlugin]: (inputData, inputMetaData) => pluginCommands.registerPlugin(inputData, inputMetaData),
[cmd.cunregisterPlugin]: (inputData, inputMetaData) => pluginCommands.unregisterPlugin(inputData, inputMetaData),
[cmd.cunregisterPlugins]: (inputData, inputMetaData) => pluginCommands.unregisterPlugins(inputData, inputMetaData),
[cmd.csyncPluginRegistryWithPath]: (inputData, inputMetaData) => pluginCommands.syncPluginRegistryWithPath(inputData, inputMetaData),
[cmd.clistPluginsRegistryPath]: (inputData, inputMetaData) => pluginCommands.listPluginsRegistryPath(inputData, inputMetaData),
[cmd.cunregisterAllPlugins]: (inputData, inputMetaData) => pluginCommands.unregisterAllPlugins(inputData, inputMetaData),
[cmd.csavePluginRegistryToDisk]: (inputData, inputMetaData) => pluginCommands.savePluginRegistryToDisk(inputData, inputMetaData),
[cmd.cloadPlugin]: (inputData, inputMetaData) => pluginCommands.loadPlugin(inputData, inputMetaData),
[cmd.cloadPlugins]: (inputData, inputMetaData) => pluginCommands.loadPlugins(inputData, inputMetaData),
[cmd.cloadPluginsFromRegistry]: (inputData, inputMetaData) => pluginCommands.loadPluginsFromRegistry(inputData, inputMetaData),
[cmd.cunloadPlugin]: (inputData, inputMetaData) => pluginCommands.unloadPlugin(inputData, inputMetaData),
[cmd.cunloadPlugins]: (inputData, inputMetaData) => pluginCommands.unloadPlugins(inputData, inputMetaData),
[cmd.cunloadAllPlugins]: (inputData, inputMetaData) => pluginCommands.unloadAllPlugins(inputData, inputMetaData),
// ***********************************************
// System commands in order
// ***********************************************
[cmd.cechoCommand]: (inputData, inputMetaData) => systemCommands.echoCommand(inputData, inputMetaData),
[wrd.cexit]: (inputData, inputMetData) => systemCommands.exit(inputData, inputMetData),
[wrd.cversion]: (inputData, inputMetaData) => systemCommands.version(inputData, inputMetaData),
[wrd.cabout]: (inputData, inputMetaData) => systemCommands.about(inputData, inputMetaData),
[wrd.cname]: (inputData, inputMetaData) => systemCommands.name(inputData, inputMetaData),
[cmd.cclearScreen]: (inputData, inputMetaData) => systemCommands.clearScreen(inputData, inputMetaData),
[wrd.chelp]: (inputData, inputMetaData) => systemCommands.help(inputData, inputMetaData),
[cmd.cworkflowHelp]: (inputData, inputMetaData) => systemCommands.workflowHelp(inputData, inputMetaData),
[cmd.cprintCommands]: (inputData, inputMetaData) => systemCommands.printCommands(inputData, inputMetaData),
[cmd.cprintBusinessRules]: (inputData, inputMetaData) => systemCommands.printBusinessRules(inputData, inputMetaData),
[cmd.cprintUserCommandsLog]: (inputData, inputMetaData) => systemCommands.printUserCommandsLog(inputData, inputMetaData),
[cmd.cprintAllCommandsLog]: (inputData, inputMetaData) => systemCommands.printAllCommandsLog(inputData, inputMetaData),
[cmd.cclearUserCommandsLog]: (inputData, inputMetaData) => systemCommands.clearUserCommandsLog(inputData, inputMetaData),
[cmd.cclearAllCommandsLog]: (inputData, inputMetaData) => systemCommands.clearAllCommandsLog(inputData, inputMetaData)
};
await loggers.consoleLog(namespacePrefix + functionName, msg.cEND_Function);
}
export default {
clearCommandsLibrary,
initCommandsLibrary
};