omdConfigManager
A module for managing the configuration of the OMD library. It handles loading settings from a JSON file, providing default values, and allowing runtime modifications.
Overview
The configuration is managed as a single JSON object. The system can be initialized with a path to a omdConfig.json file, or it will fall back to a default configuration. The manager supports both asynchronous and synchronous access to configuration values.
Default Configuration
If no omdConfig.json is found, the following default structure is used:
{
"multiplication": {
"symbol": "·",
"forceImplicit": false,
"implicitCombinations": {
"constantVariable": true,
"variableConstant": false,
"parenthesisAfterVariable": true,
"parenthesisAfterConstant": true,
"variableParenthesis": true,
"parenthesisParenthesis": true,
"parenthesisVariable": true,
"parenthesisConstant": true,
"variableVariable": true
}
},
"stepVisualizer": {
"dotSizes": {
"level0": 8,
"level1": 6,
"level2": 4
},
"fontWeights": {
"level0": 400,
"level1": 400,
"level2": 400
}
}
}
Core Functions
async initializeConfig(configSource)
Loads the configuration from a file or object. It automatically detects the environment (browser or Node.js) to use the appropriate file loading mechanism (fetch or fs). This should be called once when your application starts.
configSource(string|object, optional): A path to a JSON configuration file or a configuration object to use directly.- Returns:
Promise<void>
async getConfig()
Asynchronously gets the entire configuration object. If it hasn't been loaded yet, it will trigger the loading process with default settings.
- Returns:
Promise<object>- A promise that resolves to the configuration object.
getConfigSync()
Synchronously gets the configuration object.
Warning: If called before initializeConfig has completed, this will return the default configuration, not the loaded one.
- Returns:
object- The configuration object.
setConfig(config)
Sets the entire configuration directly, merging it with the default values.
config(object): The configuration object to set.
getConfigValue(path)
Gets a specific configuration value using a dot-separated path (e.g., 'multiplication.symbol').
- Returns: The value at the specified path.
setConfigValue(path, value)
Sets a specific configuration value using a dot-separated path.
Utility Functions
getMultiplicationSymbol(): Returns the configured symbol for multiplication.useImplicitMultiplication(combination): Checks if implicit multiplication should be used, either globally or for a specific combination of operand types.getDotRadius(level): Gets the dot radius for a given step level in theomdStepVisualizer.getFontWeight(level): Gets the font weight for a given step level.getDefaultConfig(): Returns a copy of the default configuration object.isEnabled(category, setting): Checks if a specific boolean setting is enabled.updateConfig(category, setting, value): Updates a top-level configuration setting.resetConfig(): Throws an error. Direct file editing is required to reset the configuration.async reloadConfig(): Forces a reload of the configuration from the original file path.async getConfigAsync(): An alias forgetConfig().
Example
import { initializeConfig, getConfigValue, setConfigValue } from '@teachinglab/omd';
// Initialize at the start of your application
(async () => {
await initializeConfig();
// Get a specific value
const multSymbol = getConfigValue('multiplication.symbol'); // -> '·'
// Change a value at runtime
setConfigValue('multiplication.symbol', '*');
const newSymbol = getConfigValue('multiplication.symbol'); // -> '*'
})();