@hakxel/mantine-ui-server
Version:
MCP server for working with Mantine UI components - provides documentation, generation, and theme utilities
110 lines (109 loc) • 2.86 kB
JavaScript
/**
* Configuration management for the Mantine UI MCP server
*/
// Default configuration values
export const defaultConfig = {
mantineVersion: '7.16.2', // Default to latest version at time of writing
defaultMantineImports: {
core: '@mantine/core',
hooks: '@mantine/hooks',
dates: '@mantine/dates',
form: '@mantine/form',
notifications: '@mantine/notifications',
},
projectDefaults: {
componentStructure: 'default',
stylingApproach: 'css-modules',
themeIntegration: 'provider',
typescript: true,
},
caching: {
documentation: {
ttl: 86400000, // 24 hours in milliseconds
storage: 'file',
},
},
extensions: {
paths: [],
enabled: [],
},
};
// Global configuration instance
let config = { ...defaultConfig };
/**
* Initializes the configuration with default values and applies overrides
* @param overrides Optional configuration overrides
* @returns The merged configuration
*/
export function initConfig(overrides) {
config = {
...defaultConfig,
...overrides,
// Deep merge for nested properties
projectDefaults: {
...defaultConfig.projectDefaults,
...overrides?.projectDefaults,
},
caching: {
...defaultConfig.caching,
...overrides?.caching,
},
};
return config;
}
/**
* Gets the current configuration
* @returns The current configuration
*/
export function getConfig() {
return config;
}
/**
* Updates the configuration
* @param updates Configuration updates to apply
* @returns The updated configuration
*/
export function updateConfig(updates) {
config = {
...config,
...updates,
// Deep merge for nested properties
projectDefaults: {
...config.projectDefaults,
...updates.projectDefaults,
},
caching: {
...config.caching,
...updates.caching,
},
};
return config;
}
/**
* Read environment variables for configuration
* @returns A configuration object based on environment variables
*/
export function loadConfigFromEnv() {
const env = process.env;
const config = {};
if (env.MANTINE_VERSION) {
config.mantineVersion = env.MANTINE_VERSION;
}
if (env.CACHE_DOCS === 'false') {
config.caching = {
documentation: {
ttl: 0, // Disable caching
storage: 'memory',
},
};
}
else if (env.CACHE_TTL) {
config.caching = {
documentation: {
ttl: parseInt(env.CACHE_TTL, 10) * 1000, // Convert to milliseconds
storage: env.CACHE_STORAGE || 'file',
},
};
}
return config;
}