fix(startup): prefix all bare src/ subdirectory requires with ./ in app.js and provider-dns.js
DC-005 refactored everything into src/ subdirs but left bare require() paths in app.js (managers/, security/, monitoring/, docker/, recipes/, utilities/, context/, dns/) which resolve fine in tests (jest mocks) but fail in the container where NODE_PATH=/app/src is not set. Fixed ~25 requires with relative paths.
This commit is contained in:
+40
-40
@@ -17,41 +17,41 @@ const { errorResponse, ok } = require('./utils/responses');
|
||||
const { asyncHandler } = require('./utils/async-handler');
|
||||
|
||||
// Managers and utilities
|
||||
const StateManager = require('managers/state-manager');
|
||||
const StateManager = require('.//state-manager');
|
||||
const platformPaths = require('../platform-paths');
|
||||
const { LicenseManager } = require('managers/license-manager');
|
||||
const credentialManager = require('managers/credential-manager');
|
||||
const authManager = require('managers/auth-manager');
|
||||
const dockerSecurity = require('security/docker-security');
|
||||
const auditLogger = require('security/audit-logger');
|
||||
const portLockManager = require('managers/port-lock-manager');
|
||||
const resourceMonitor = require('managers/resource-monitor');
|
||||
const backupManager = require('utilities/backup-manager');
|
||||
const healthChecker = require('monitoring/health-checker');
|
||||
const updateManager = require('managers/update-manager');
|
||||
const selfUpdater = require('docker/self-updater');
|
||||
const configureMiddleware = require('utilities/middleware');
|
||||
const { validateStartupConfig: _validateStartupConfig, syncHealthCheckerServices } = require('utilities/startup-validator');
|
||||
const { CSRF_HEADER_NAME } = require('security/csrf-protection');
|
||||
const { resolveServiceUrl } = require('utilities/url-resolver');
|
||||
const metrics = require('monitoring/metrics');
|
||||
const { validateURL } = require('security/input-validator');
|
||||
const { LicenseManager } = require('.//license-manager');
|
||||
const credentialManager = require('.//credential-manager');
|
||||
const authManager = require('.//auth-manager');
|
||||
const dockerSecurity = require('.//docker-security');
|
||||
const auditLogger = require('.//audit-logger');
|
||||
const portLockManager = require('.//port-lock-manager');
|
||||
const resourceMonitor = require('.//resource-monitor');
|
||||
const backupManager = require('.//backup-manager');
|
||||
const healthChecker = require('.//health-checker');
|
||||
const updateManager = require('.//update-manager');
|
||||
const selfUpdater = require('.//self-updater');
|
||||
const configureMiddleware = require('.//middleware');
|
||||
const { validateStartupConfig: _validateStartupConfig, syncHealthCheckerServices } = require('.//startup-validator');
|
||||
const { CSRF_HEADER_NAME } = require('.//csrf-protection');
|
||||
const { resolveServiceUrl } = require('.//url-resolver');
|
||||
const metrics = require('.//metrics');
|
||||
const { validateURL } = require('.//input-validator');
|
||||
|
||||
// Optional modules
|
||||
let dockerMaintenance, logDigest;
|
||||
try { dockerMaintenance = require('docker/docker-maintenance'); } catch (_) { /* optional module */ }
|
||||
try { logDigest = require('security/log-digest'); } catch (_) { /* optional module */ }
|
||||
try { dockerMaintenance = require('.//docker-maintenance'); } catch (_) { /* optional module */ }
|
||||
try { logDigest = require('.//log-digest'); } catch (_) { /* optional module */ }
|
||||
|
||||
// Workflow engine (bundled workflows)
|
||||
let bundledWorkflowsModule;
|
||||
let workflowEngine = null;
|
||||
try {
|
||||
bundledWorkflowsModule = require('recipes/bundled-workflows');
|
||||
bundledWorkflowsModule = require('.//bundled-workflows');
|
||||
} catch (_) { /* optional module */ }
|
||||
|
||||
// Templates
|
||||
const { APP_TEMPLATES, TEMPLATE_CATEGORIES, DIFFICULTY_LEVELS } = require('docker/app-templates');
|
||||
const { RECIPE_TEMPLATES, RECIPE_CATEGORIES } = require('recipes/recipe-templates');
|
||||
const { APP_TEMPLATES, TEMPLATE_CATEGORIES, DIFFICULTY_LEVELS } = require('.//app-templates');
|
||||
const { RECIPE_TEMPLATES, RECIPE_CATEGORIES } = require('.//recipe-templates');
|
||||
|
||||
// Route modules
|
||||
const healthRoutes = require('../routes/health');
|
||||
@@ -81,17 +81,17 @@ const dockerResourcesRoutes = require('../routes/docker-resources');
|
||||
const eventsRoutes = require('../routes/events');
|
||||
const workflowsRoutes = require('../routes/workflows');
|
||||
const dependenciesRoutes = require('../routes/dependencies');
|
||||
const DependencyManager = require('managers/dependency-manager');
|
||||
const DependencyManager = require('.//dependency-manager');
|
||||
const autoRestartRoutes = require('../routes/auto-restart');
|
||||
const configDriftRoutes = require('../routes/config-drift');
|
||||
const sslMonitorRoutes = require('../routes/ssl-monitor');
|
||||
const { AutoRestartManager } = require('managers/auto-restart-manager');
|
||||
const { ConfigDriftDetector } = require('managers/config-drift-detector');
|
||||
const SSLMonitor = require('monitoring/ssl-monitor');
|
||||
const DNSPropagationChecker = require('dns/dns-propagation');
|
||||
const { AutoRestartManager } = require('.//auto-restart-manager');
|
||||
const { ConfigDriftDetector } = require('.//config-drift-detector');
|
||||
const SSLMonitor = require('.//ssl-monitor');
|
||||
const DNSPropagationChecker = require('./dns/dns-propagation');
|
||||
|
||||
// Constants
|
||||
const { APP } = require('utilities/constants');
|
||||
const { APP } = require('.//constants');
|
||||
|
||||
/**
|
||||
* Create and configure the Express application
|
||||
@@ -233,15 +233,15 @@ async function createApp() {
|
||||
auditLogger,
|
||||
authManager,
|
||||
log,
|
||||
cryptoUtils: require('security/crypto-utils'),
|
||||
cryptoUtils: require('.//crypto-utils'),
|
||||
isValidContainerId,
|
||||
isTailscaleIP,
|
||||
getTailscaleStatus,
|
||||
RATE_LIMITS: require('utilities/constants').RATE_LIMITS,
|
||||
LIMITS: require('utilities/constants').LIMITS,
|
||||
APP: require('utilities/constants').APP,
|
||||
CACHE_CONFIGS: require('utilities/cache-config').CACHE_CONFIGS,
|
||||
createCache: require('utilities/cache-config').createCache,
|
||||
RATE_LIMITS: require('.//constants').RATE_LIMITS,
|
||||
LIMITS: require('.//constants').LIMITS,
|
||||
APP: require('.//constants').APP,
|
||||
CACHE_CONFIGS: require('.//cache-config').CACHE_CONFIGS,
|
||||
createCache: require('.//cache-config').createCache,
|
||||
});
|
||||
|
||||
const { strictLimiter } = middlewareResult;
|
||||
@@ -254,7 +254,7 @@ async function createApp() {
|
||||
|
||||
// eslint-disable-next-line require-await -- may grow awaits as config loading evolves
|
||||
async function readConfig() {
|
||||
const { readJsonFile } = require('utilities/fs-helpers');
|
||||
const { readJsonFile } = require('.//fs-helpers');
|
||||
return readJsonFile(config.CONFIG_FILE, {});
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ async function createApp() {
|
||||
|
||||
async function saveTotpConfig() {
|
||||
try {
|
||||
const { writeJsonFile } = require('utilities/fs-helpers');
|
||||
const { writeJsonFile } = require('.//fs-helpers');
|
||||
await writeJsonFile(config.TOTP_CONFIG_FILE, totpConfig);
|
||||
} catch (e) {
|
||||
log.error('config', 'Could not save TOTP config', { error: e.message });
|
||||
@@ -776,7 +776,7 @@ async function createApp() {
|
||||
// Lightweight probe endpoint
|
||||
app.get('/probe/:id', boundAsyncHandler(async (req, res) => {
|
||||
const id = req.params.id;
|
||||
const { exists } = require('utilities/fs-helpers');
|
||||
const { exists } = require('.//fs-helpers');
|
||||
|
||||
let service = null;
|
||||
if (id !== 'internet' && await exists(config.SERVICES_FILE)) {
|
||||
@@ -939,7 +939,7 @@ async function createApp() {
|
||||
|
||||
app.get('/api/v1/docs/spec', boundAsyncHandler(async (req, res) => {
|
||||
const path = require('path');
|
||||
const { exists } = require('utilities/fs-helpers');
|
||||
const { exists } = require('.//fs-helpers');
|
||||
const fsp = require('fs').promises;
|
||||
|
||||
const specPath = path.join(__dirname, '../openapi.yaml');
|
||||
@@ -952,7 +952,7 @@ async function createApp() {
|
||||
}, 'api-docs-spec'));
|
||||
|
||||
// Error handlers (MUST be last)
|
||||
const { notFoundHandler, errorMiddleware } = require('utilities/error-handler');
|
||||
const { notFoundHandler, errorMiddleware } = require('.//error-handler');
|
||||
app.use('/api', notFoundHandler);
|
||||
app.use(errorMiddleware);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user