chore: sync submodule state (parent ref update)
Made-with: Cursor
This commit is contained in:
@@ -9,6 +9,20 @@ import { zeroTrustAuthMiddleware, optionalAuthMiddleware } from './middleware/au
|
||||
import { dynamicRateLimitMiddleware } from './middleware/rate-limit.middleware';
|
||||
import { errorHandler } from './middleware/error.middleware';
|
||||
import { auditLogMiddleware } from './middleware/audit.middleware';
|
||||
import { validateEnvironment } from '@/shared/config/env-validator';
|
||||
import { logger } from '@/infrastructure/monitoring/logger';
|
||||
import { tracingMiddleware } from '@/infrastructure/monitoring/tracing.middleware';
|
||||
|
||||
// Validate environment variables at startup (fail fast)
|
||||
try {
|
||||
validateEnvironment();
|
||||
logger.info('Environment validation passed');
|
||||
} catch (error) {
|
||||
logger.error('Environment validation failed', {
|
||||
error: error instanceof Error ? error.message : 'Unknown error',
|
||||
});
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Import route handlers (will be created)
|
||||
// import paymentRoutes from '@/core/payments/payment.routes';
|
||||
@@ -31,6 +45,7 @@ import ssuRoutes from '@/core/settlement/ssu/ssu.routes';
|
||||
import cbdsRoutes from '@/core/commodities/cbds/cbds.routes';
|
||||
import glpRoutes from '@/core/treasury/glp/glp.routes';
|
||||
import crossChainRoutes from '@/core/settlement/cross-chain/cross-chain.routes';
|
||||
import tezosUsdtzRoutes from '@/core/defi/tezos-usdtz/tezos-usdtz.routes';
|
||||
import sireRoutes from '@/core/settlement/sire/sire.routes';
|
||||
|
||||
// Volume V routes
|
||||
@@ -100,6 +115,7 @@ import rssckRoutes from '@/core/contracts/rssck/rssck.routes';
|
||||
import sbavRoutes from '@/core/valuation/sbav/sbav.routes';
|
||||
import eeiRoutes from '@/core/economics/eei/eei.routes';
|
||||
import uprmfRoutes from '@/core/monetary/uprmf/uprmf.routes';
|
||||
import gatewayRoutes from '@/core/gateway/routes/gateway.routes';
|
||||
|
||||
// Special Sub-Volumes routes
|
||||
import gasRoutes from '@/core/settlement/gas/gas.routes';
|
||||
@@ -113,6 +129,14 @@ import gapAuditRoutes from '@/core/audit/gap-engine/gap-audit.routes';
|
||||
import dbisAdminRoutes from '@/core/admin/dbis-admin/dbis-admin.routes';
|
||||
import scbAdminRoutes from '@/core/admin/scb-admin/scb-admin.routes';
|
||||
|
||||
// IRU Marketplace routes
|
||||
import iruMarketplaceRoutes from '@/integration/api-gateway/routes/iru-marketplace.routes';
|
||||
import iruPortalRoutes from '@/integration/api-gateway/routes/iru-portal.routes';
|
||||
|
||||
// Exchange integrations
|
||||
import cryptoComOtcRoutes from '@/core/exchange/crypto-com-otc/crypto-com-otc.routes';
|
||||
import exchangeRoutes from '@/core/exchange/exchange.routes';
|
||||
|
||||
// Volume X routes
|
||||
import msgfRoutes from '@/core/governance/msgf/msgf.routes';
|
||||
import umapRoutes from '@/core/monetary/umap/umap.routes';
|
||||
@@ -126,6 +150,9 @@ const app: Express = express();
|
||||
// Security middleware
|
||||
app.use(helmet());
|
||||
|
||||
// Distributed tracing middleware (before other middleware)
|
||||
app.use(tracingMiddleware);
|
||||
|
||||
// CORS configuration
|
||||
const allowedOrigins = process.env.ALLOWED_ORIGINS?.split(',').map((o) => o.trim()) || [];
|
||||
if (process.env.NODE_ENV === 'production' && (allowedOrigins.length === 0 || allowedOrigins.includes('*'))) {
|
||||
@@ -233,6 +260,41 @@ app.get('/health', async (req, res) => {
|
||||
res.status(statusCode).json(healthStatus);
|
||||
});
|
||||
|
||||
// IRU Marketplace routes (public endpoints, auth handled per-route)
|
||||
app.use('/api/v1/iru/marketplace', iruMarketplaceRoutes);
|
||||
|
||||
// IRU Portal routes (authenticated)
|
||||
app.use('/api/v1/iru/portal', iruPortalRoutes);
|
||||
|
||||
// IRU Deployment routes (authenticated)
|
||||
import iruDeploymentRoutes from '@/integration/api-gateway/routes/iru-deployment.routes';
|
||||
app.use('/api/v1/iru/deployment', iruDeploymentRoutes);
|
||||
|
||||
// IRU Qualification routes (admin only)
|
||||
import iruQualificationRoutes from '@/integration/api-gateway/routes/iru-qualification.routes';
|
||||
app.use('/api/v1/iru/qualification', iruQualificationRoutes);
|
||||
|
||||
// IRU Agreement routes (authenticated)
|
||||
import iruAgreementRoutes from '@/integration/api-gateway/routes/iru-agreement.routes';
|
||||
app.use('/api/v1/iru/agreement', iruAgreementRoutes);
|
||||
|
||||
// IRU Payment routes (authenticated)
|
||||
import iruPaymentRoutes from '@/integration/api-gateway/routes/iru-payment.routes';
|
||||
app.use('/api/v1/iru/payment', iruPaymentRoutes);
|
||||
|
||||
// IRU Notification routes (authenticated)
|
||||
import iruNotificationRoutes from '@/integration/api-gateway/routes/iru-notification.routes';
|
||||
app.use('/api/v1/iru/notifications', iruNotificationRoutes);
|
||||
|
||||
// IRU Metrics routes (public for Prometheus)
|
||||
import iruMetricsRoutes from '@/integration/api-gateway/routes/iru-metrics.routes';
|
||||
app.use('/api/v1/iru/metrics', iruMetricsRoutes);
|
||||
|
||||
// Admin Central API (service-to-service: audit append, permission check, audit query)
|
||||
// Auth: X-Admin-Central-Key. Must be registered before /api auth so it uses its own middleware.
|
||||
import adminCentralRoutes from '@/integration/api-gateway/routes/admin-central.routes';
|
||||
app.use('/api/admin/central', adminCentralRoutes);
|
||||
|
||||
// API routes (protected)
|
||||
// All API routes require authentication
|
||||
app.use('/api', zeroTrustAuthMiddleware);
|
||||
@@ -244,12 +306,19 @@ import accountRoutes from '@/core/accounts/account.routes';
|
||||
import paymentRoutes from '@/core/payments/payment.routes';
|
||||
import fxRoutes from '@/core/fx/fx.routes';
|
||||
import nostroVostroRoutes from '@/core/nostro-vostro/nostro-vostro.routes';
|
||||
// import chartOfAccountsRoutes from '@/core/accounting/chart-of-accounts.routes';
|
||||
|
||||
app.use('/api/ledger', ledgerRoutes);
|
||||
app.use('/api/accounts', accountRoutes);
|
||||
app.use('/api/payments', paymentRoutes);
|
||||
app.use('/api/fx', fxRoutes);
|
||||
app.use('/api/v1/crypto-com-otc', cryptoComOtcRoutes);
|
||||
app.use('/api/v1/exchange', exchangeRoutes);
|
||||
app.use('/api/v1/nostro-vostro', nostroVostroRoutes);
|
||||
// app.use('/api/accounting/chart-of-accounts', chartOfAccountsRoutes);
|
||||
|
||||
// Gateway Microservices routes
|
||||
app.use('/api/v1/gateway', gatewayRoutes);
|
||||
|
||||
// Volume II routes
|
||||
app.use('/api/constitution', constitutionRoutes);
|
||||
@@ -265,7 +334,17 @@ app.use('/api/v1/ssu', ssuRoutes);
|
||||
app.use('/api/v1/cbds', cbdsRoutes);
|
||||
app.use('/api/v1/glp', glpRoutes);
|
||||
app.use('/api/v1/cross-chain', crossChainRoutes);
|
||||
app.use('/api/v1/sire', sireRoutes);
|
||||
app.use('/api/v1/routes', tezosUsdtzRoutes);
|
||||
|
||||
// AS4 Settlement routes
|
||||
import as4GatewayRoutes from '@/core/settlement/as4/as4.routes';
|
||||
import as4MemberDirectoryRoutes from '@/core/settlement/as4-settlement/member-directory/member-directory.routes';
|
||||
import as4SettlementRoutes from '@/core/settlement/as4-settlement/as4-settlement.routes';
|
||||
import as4MetricsRoutes from '@/core/settlement/as4/as4-metrics.routes';
|
||||
app.use('/api/v1/as4/gateway', as4GatewayRoutes);
|
||||
app.use('/api/v1/as4/directory', as4MemberDirectoryRoutes);
|
||||
app.use('/api/v1/as4/settlement', as4SettlementRoutes);
|
||||
app.use('/api/v1/as4', as4MetricsRoutes); // Metrics endpoint (public for Prometheus)
|
||||
|
||||
// Volume V routes
|
||||
app.use('/api/v1/gbig', gbigRoutes);
|
||||
@@ -355,6 +434,46 @@ app.use('/api/gap-audit', gapAuditRoutes);
|
||||
app.use('/api/admin/dbis', dbisAdminRoutes);
|
||||
app.use('/api/admin/scb', scbAdminRoutes);
|
||||
|
||||
// SolaceNet Capability Platform routes
|
||||
import solacenetCapabilityRoutes from '@/core/solacenet/registry/capability-registry.routes';
|
||||
import solacenetEntitlementRoutes from '@/core/solacenet/entitlements/entitlements.routes';
|
||||
import solacenetPolicyRoutes from '@/core/solacenet/policy/policy-engine.routes';
|
||||
import solacenetAuditRoutes from '@/core/solacenet/audit/audit-log.routes';
|
||||
import solacenetLimitsRoutes from '@/core/solacenet/capabilities/limits/limits.routes';
|
||||
import solacenetFeesRoutes from '@/core/solacenet/capabilities/fees/fees.routes';
|
||||
|
||||
app.use('/api/v1/solacenet/capabilities', solacenetCapabilityRoutes);
|
||||
app.use('/api/v1/solacenet', solacenetEntitlementRoutes);
|
||||
app.use('/api/v1/solacenet/policy', solacenetPolicyRoutes);
|
||||
app.use('/api/v1/solacenet/audit', solacenetAuditRoutes);
|
||||
app.use('/api/v1/solacenet/limits', solacenetLimitsRoutes);
|
||||
app.use('/api/v1/solacenet/fees', solacenetFeesRoutes);
|
||||
|
||||
// SolaceNet Capability Packs
|
||||
import solacenetPaymentRoutes from '@/core/solacenet/capabilities/payments/payment-gateway.routes';
|
||||
import solacenetWalletRoutes from '@/core/solacenet/capabilities/wallets/wallet-accounts.routes';
|
||||
import solacenetCardRoutes from '@/core/solacenet/capabilities/cards/card-issuing.routes';
|
||||
import solacenetMobileMoneyRoutes from '@/core/solacenet/capabilities/mobile-money/mobile-money.routes';
|
||||
import solacenetTokenizationRoutes from '@/core/solacenet/capabilities/tokenization/tokenization.routes';
|
||||
|
||||
app.use('/api/v1/solacenet/payments', solacenetPaymentRoutes);
|
||||
app.use('/api/v1/solacenet/wallets', solacenetWalletRoutes);
|
||||
app.use('/api/v1/solacenet/cards', solacenetCardRoutes);
|
||||
app.use('/api/v1/solacenet/mobile-money', solacenetMobileMoneyRoutes);
|
||||
app.use('/api/v1/solacenet/tokenization', solacenetTokenizationRoutes);
|
||||
|
||||
// Risk Rules Engine
|
||||
import riskRulesRoutes from '@/core/risk/rules-engine.routes';
|
||||
app.use('/api/v1/risk', riskRulesRoutes);
|
||||
|
||||
// Health check routes (public, no auth)
|
||||
import healthRoutes from './routes/health.routes';
|
||||
app.use('/health', healthRoutes);
|
||||
|
||||
// Metrics endpoint (public, for Prometheus)
|
||||
import metricsRoutes from './routes/metrics.routes';
|
||||
app.use('/', metricsRoutes);
|
||||
|
||||
// Error handling middleware (must be last)
|
||||
app.use(errorHandler);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user