81172bda94
Update all references across source files, documentation, and configuration to reflect the new package scope and name. This includes updating `.npmrc` registry config, install instructions, module examples, and all import path comments throughout the codebase.
70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
/**
|
|
* Module Actions Registry (Server-Side)
|
|
*
|
|
* Static registry for internal module server actions.
|
|
* External modules registered via zen.config.js are resolved through the runtime registry.
|
|
*
|
|
* Usage:
|
|
* import { getModuleActions } from '@zen/core/modules/actions';
|
|
* const { getInvoiceByToken } = getModuleActions('invoice');
|
|
*/
|
|
|
|
import { getModule } from '../core/modules/registry.js';
|
|
|
|
// Static actions for internal modules (add entries here for new internal modules)
|
|
export const MODULE_ACTIONS = {
|
|
posts: {},
|
|
};
|
|
|
|
// Static dashboard stats actions for internal modules
|
|
export const MODULE_DASHBOARD_ACTIONS = {};
|
|
|
|
/**
|
|
* Get actions for a specific module.
|
|
* Checks the static registry first, then the runtime registry for external modules.
|
|
*
|
|
* @param {string} moduleName - Module name
|
|
* @returns {Object} Module actions object or empty object
|
|
*/
|
|
export function getModuleActions(moduleName) {
|
|
if (MODULE_ACTIONS[moduleName]) return MODULE_ACTIONS[moduleName];
|
|
|
|
// External modules declare their actions in their defineModule() config
|
|
return getModule(moduleName)?.actions ?? {};
|
|
}
|
|
|
|
/**
|
|
* Get dashboard stats action for a specific module
|
|
* @param {string} moduleName - Module name
|
|
* @returns {Function|null} Dashboard stats function or null
|
|
*/
|
|
export function getModuleDashboardAction(moduleName) {
|
|
return MODULE_DASHBOARD_ACTIONS[moduleName] || null;
|
|
}
|
|
|
|
/**
|
|
* Get all dashboard stats from all modules
|
|
* @returns {Promise<Object>} Object with module names as keys and stats as values
|
|
*/
|
|
export async function getAllModuleDashboardStats() {
|
|
const stats = {};
|
|
|
|
for (const [moduleName, getStats] of Object.entries(MODULE_DASHBOARD_ACTIONS)) {
|
|
const envKey = `ZEN_MODULE_${moduleName.toUpperCase()}`;
|
|
if (process.env[envKey] !== 'true') continue;
|
|
|
|
try {
|
|
const result = await getStats();
|
|
if (result.success) {
|
|
stats[moduleName] = result.stats;
|
|
}
|
|
} catch (error) {
|
|
console.error(`Error getting dashboard stats for ${moduleName}:`, error);
|
|
}
|
|
}
|
|
|
|
return stats;
|
|
}
|
|
|
|
export default MODULE_ACTIONS;
|