chore: import codes

This commit is contained in:
2026-04-12 12:50:14 -04:00
parent 4bcb4898e8
commit 65ae3c6788
241 changed files with 48834 additions and 1 deletions
+77
View File
@@ -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(),
};
}