chore: import codes
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* Application Configuration
|
||||
* Centralized configuration management for the entire package
|
||||
*/
|
||||
|
||||
import { getAvailableModules } from '../../modules/modules.registry.js';
|
||||
|
||||
/**
|
||||
* Get application name from environment variables
|
||||
* @returns {string} Application name
|
||||
*/
|
||||
export function getAppName() {
|
||||
return process.env.ZEN_NAME || 'ZEN';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get session cookie name from environment variables
|
||||
* @returns {string} Session cookie name
|
||||
*/
|
||||
export function getSessionCookieName() {
|
||||
return process.env.ZEN_AUTH_SESSION_COOKIE_NAME || 'zen_session';
|
||||
}
|
||||
|
||||
/**
|
||||
* Public site origin for server-side absolute URLs (emails, redirects, PDF assets).
|
||||
* When NODE_ENV is development, NEXT_PUBLIC_URL_DEV is preferred, then NEXT_PUBLIC_URL.
|
||||
* Otherwise NEXT_PUBLIC_URL is used. Trailing slashes are stripped.
|
||||
* @returns {string}
|
||||
*/
|
||||
export function getPublicBaseUrl() {
|
||||
const fallback = 'http://localhost:3000';
|
||||
const isDev = process.env.NODE_ENV === 'development';
|
||||
const raw = isDev
|
||||
? (process.env.NEXT_PUBLIC_URL_DEV || process.env.NEXT_PUBLIC_URL || fallback)
|
||||
: (process.env.NEXT_PUBLIC_URL || fallback);
|
||||
return String(raw).replace(/\/$/, '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get enabled modules configuration (server-side only)
|
||||
* This function dynamically reads from modules.registry.js and checks environment variables
|
||||
* Use this on the server and pass the result to client components as props
|
||||
*
|
||||
* To enable a module, set the environment variable: ZEN_MODULE_{NAME}=true
|
||||
* Example: ZEN_MODULE_INVOICE=true
|
||||
*
|
||||
* @returns {Object} Object with module names as keys and boolean values
|
||||
*/
|
||||
export function getModulesConfig() {
|
||||
const modules = {};
|
||||
const availableModules = getAvailableModules();
|
||||
|
||||
for (const moduleName of availableModules) {
|
||||
const envVar = `ZEN_MODULE_${moduleName.toUpperCase()}`;
|
||||
modules[moduleName] = process.env[envVar] === 'true';
|
||||
}
|
||||
|
||||
return modules;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get application configuration
|
||||
* @returns {Object} Application configuration object
|
||||
*/
|
||||
export function getAppConfig() {
|
||||
return {
|
||||
name: getAppName(),
|
||||
sessionCookieName: getSessionCookieName(),
|
||||
timezone: process.env.ZEN_TIMEZONE || 'America/Toronto',
|
||||
dateFormat: process.env.ZEN_DATE_FORMAT || 'YYYY-MM-DD',
|
||||
// Currency configuration (for currency module)
|
||||
defaultCurrency: process.env.ZEN_CURRENCY || 'CAD',
|
||||
currencySymbol: process.env.ZEN_CURRENCY_SYMBOL || '$',
|
||||
// Enabled modules
|
||||
modules: getModulesConfig(),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user