Files
core/src/modules/modules.actions.js
T
hykocx 81172bda94 chore: rename package from @hykocx/zen to @zen/core
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.
2026-04-12 15:09:26 -04:00

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;