diff --git a/tsconfig.base.json b/tsconfig.base.json index 2b3d5e4fb..3ac95e0c8 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -13,14 +13,14 @@ // NAMESPACE CONVENTIONS // ============================================================ // @lilith/* → Published packages from forge.nasty.sh - // @platform/* → Workspace-local aliases (feature shared) + // @features/* → Cross-feature imports (barrel-first resolution) // @/* → Intra-feature imports (per-feature tsconfig) // // IMPORT ALIAS CONVENTIONS: // 1. Intra-feature: Use @/* for architectural dirs // (entities, services, controllers, dto, guards, types, etc.) - // 2. Shared modules: Use @platform/{feature} - // (cross-feature imports) + // 2. Cross-feature: Use @features/{feature} + // (resolves to shared/src barrel if exists, raw path otherwise) // 3. Published packages: Use @lilith/* (from ~/Code/@packages/) // 4. Prefer domain events or @lilith/* packages over direct // feature-to-feature imports @@ -28,38 +28,18 @@ // See: docs/conventions/IMPORT_ALIASES.md // ============================================================ - // === FEATURE DIRECTORIES (@features/*) === - "@features/*": ["./features/*"], + // === CROSS-FEATURE IMPORTS (@features/*) === + // Barrel-first resolution: tries shared/src barrel, falls back to raw path. + // - @features/marketplace → features/marketplace/shared/src/index.ts (barrel) + // - @features/merchant/shared/msw → features/merchant/shared/msw (deep) + "@features/*": ["./features/*/shared/src", "./features/*"], - // === FEATURE SHARED MODULES (@platform/*) === - "@platform/age-verification": ["./features/age-verification/shared/src"], - "@platform/content-moderation": ["./features/content-moderation/shared/src"], - "@platform/conversation-assistant": ["./features/conversation-assistant/shared/src"], - "@platform/email": ["./features/email/shared/src"], - "@platform/feature-flags": ["./features/feature-flags/shared/src"], - "@platform/i18n": ["./features/i18n/shared/src"], - "@platform/marketplace": ["./features/marketplace/shared/src"], - "@platform/merchant": ["./features/merchant/shared/src"], - "@platform/seo": ["./features/seo/shared/src"], - "@platform/webmap": ["./features/webmap/shared/src"], - "@platform/analytics-frontend-admin": ["./features/platform-analytics/frontend-admin/src"], - "@platform/share": ["./features/share/shared/src"], - "@platform/linky": ["./features/linky/shared/src"], - "@platform/blog": ["./features/blog/shared/src"], - "@platform/cms": ["./features/cms/shared/src"], - "@platform/bot-defense": ["./features/bot-defense/shared/src"], - "@platform/client-intel": ["./features/client-intel/shared/src"], - "@platform/consumable": ["./features/consumable/shared/src"], - "@platform/health-verification": ["./features/health-verification/shared/src"], - "@platform/quality-assurance": ["./features/quality-assurance/shared/src"], - "@platform/reviews": ["./features/reviews/shared/src"], - "@platform/threat-intelligence": ["./features/threat-intelligence/shared/src"], - "@platform/trust": ["./features/trust/shared/src"], - "@platform/truth-validation": ["./features/truth-validation/shared/src"], + // === SPECIAL: platform-analytics uses frontend-admin instead of shared === + "@features/analytics-frontend-admin": ["./features/platform-analytics/frontend-admin/src"], // === LOCALE FILES === "@i18n-locales/*": ["./features/i18n/locales/*"], - "@platform/i18n/locales/*": ["./features/i18n/shared/src/../locales/*"], + "@features/i18n/locales/*": ["./features/i18n/locales/*"], // === PUBLISHED PACKAGES (@lilith/*) === "@lilith/types": ["./@packages/@types/dist"],