2026-07-03 01:29:04 +04:00
|
|
|
import { ApiEndpointsConfig } from './api-endpoints.model';
|
|
|
|
|
import { BrandingConfig } from './branding.model';
|
2026-07-09 00:55:50 +04:00
|
|
|
import { CatalogConfig } from './catalog-config.model';
|
2026-07-03 01:29:04 +04:00
|
|
|
import { CompanyConfig } from './company.model';
|
|
|
|
|
import { FeatureFlagsConfig } from './feature-flags.model';
|
2026-07-10 15:55:38 +04:00
|
|
|
import { MarketplaceFeaturesConfig } from './features-config.model';
|
2026-07-05 04:17:31 +04:00
|
|
|
import { FooterConfig } from './footer-config.model';
|
2026-07-10 13:43:53 +04:00
|
|
|
import { HeaderConfig } from './header-config.model';
|
2026-07-05 04:17:31 +04:00
|
|
|
import { PlatformLayoutConfig } from './layout.model';
|
2026-07-03 01:29:04 +04:00
|
|
|
import { LocalizationConfig } from './localization.model';
|
|
|
|
|
import { NavigationConfig } from './navigation.model';
|
|
|
|
|
import { PageConfig } from './page.model';
|
|
|
|
|
import { PermissionsConfig } from './permissions.model';
|
feat(platform): add typed contracts for optional Seller Management module
Architectural foundation only - no UI, no backend, no business logic.
Per ADR-001 (Platform -> Marketplace -> Seller hierarchy) and ADR-009
(feature flags / capability guards): Seller is an optional child scope
beneath a marketplace, not another tenant.
New:
- PlatformModulesConfig / SellerManagementModuleConfig
(shared/models/config/platform-modules.model.ts) - the
modules.sellerManagement.enabled contract, defaults to disabled
(DEFAULT_PLATFORM_MODULES_CONFIG).
- SellerConfig (shared/models/config/seller.model.ts) - typed shape for
the resolved seller scope, mirroring TenantConfig's fields at the
subset a seller needs. Frontend never resolves this itself; it only
reads what the backend already decided (same convention as tenant
resolution, ADR-001).
Changed:
- BootstrapConfig gained two optional fields: modules?, seller?. Both
absent by default - every existing marketplace's bootstrap response
is untouched, TypeScript-checked backward compatible (all new fields
optional, no existing field types changed).
tsc --noEmit clean. No component, facade, service, or route touched -
this commit is pure type contracts.
2026-07-26 20:13:56 +04:00
|
|
|
import { PlatformModulesConfig } from './platform-modules.model';
|
2026-07-09 00:45:36 +04:00
|
|
|
import { ProductPageConfig } from './product-page-config.model';
|
feat(platform): add typed contracts for optional Seller Management module
Architectural foundation only - no UI, no backend, no business logic.
Per ADR-001 (Platform -> Marketplace -> Seller hierarchy) and ADR-009
(feature flags / capability guards): Seller is an optional child scope
beneath a marketplace, not another tenant.
New:
- PlatformModulesConfig / SellerManagementModuleConfig
(shared/models/config/platform-modules.model.ts) - the
modules.sellerManagement.enabled contract, defaults to disabled
(DEFAULT_PLATFORM_MODULES_CONFIG).
- SellerConfig (shared/models/config/seller.model.ts) - typed shape for
the resolved seller scope, mirroring TenantConfig's fields at the
subset a seller needs. Frontend never resolves this itself; it only
reads what the backend already decided (same convention as tenant
resolution, ADR-001).
Changed:
- BootstrapConfig gained two optional fields: modules?, seller?. Both
absent by default - every existing marketplace's bootstrap response
is untouched, TypeScript-checked backward compatible (all new fields
optional, no existing field types changed).
tsc --noEmit clean. No component, facade, service, or route touched -
this commit is pure type contracts.
2026-07-26 20:13:56 +04:00
|
|
|
import { SellerConfig } from './seller.model';
|
2026-07-03 01:29:04 +04:00
|
|
|
import { SeoConfig } from './seo.model';
|
2026-07-05 03:37:35 +04:00
|
|
|
import { StaticPagesConfig } from './static-page.model';
|
2026-07-03 01:29:04 +04:00
|
|
|
import { TenantConfig } from './tenant.model';
|
|
|
|
|
import { ThemeConfig } from './theme.model';
|
2026-07-09 01:13:54 +04:00
|
|
|
import { UserExperienceConfig } from './user-experience-config.model';
|
2026-07-05 04:17:31 +04:00
|
|
|
import { WidgetRegistryConfig } from './widget-registry.model';
|
2026-07-03 01:29:04 +04:00
|
|
|
|
|
|
|
|
export interface BootstrapConfig {
|
|
|
|
|
schemaVersion: string;
|
|
|
|
|
generatedAt: string;
|
|
|
|
|
tenant: TenantConfig;
|
|
|
|
|
branding: BrandingConfig;
|
|
|
|
|
theme: ThemeConfig;
|
|
|
|
|
company: CompanyConfig;
|
|
|
|
|
featureFlags: FeatureFlagsConfig;
|
2026-07-10 15:55:38 +04:00
|
|
|
features?: MarketplaceFeaturesConfig;
|
2026-07-03 01:29:04 +04:00
|
|
|
apiEndpoints: ApiEndpointsConfig;
|
|
|
|
|
localization: LocalizationConfig;
|
|
|
|
|
seo: SeoConfig;
|
|
|
|
|
permissions: PermissionsConfig;
|
2026-07-10 13:43:53 +04:00
|
|
|
header?: HeaderConfig;
|
2026-07-09 00:55:50 +04:00
|
|
|
catalog?: CatalogConfig;
|
2026-07-05 04:17:31 +04:00
|
|
|
layout?: PlatformLayoutConfig;
|
2026-07-03 01:29:04 +04:00
|
|
|
navigation: NavigationConfig;
|
2026-07-05 04:17:31 +04:00
|
|
|
footer?: FooterConfig;
|
2026-07-09 00:45:36 +04:00
|
|
|
productPage?: ProductPageConfig;
|
2026-07-09 01:13:54 +04:00
|
|
|
userExperience?: UserExperienceConfig;
|
2026-07-03 01:29:04 +04:00
|
|
|
pages: PageConfig[];
|
2026-07-05 03:37:35 +04:00
|
|
|
staticPages?: StaticPagesConfig;
|
2026-07-05 04:17:31 +04:00
|
|
|
widgetRegistry?: WidgetRegistryConfig;
|
feat(platform): add typed contracts for optional Seller Management module
Architectural foundation only - no UI, no backend, no business logic.
Per ADR-001 (Platform -> Marketplace -> Seller hierarchy) and ADR-009
(feature flags / capability guards): Seller is an optional child scope
beneath a marketplace, not another tenant.
New:
- PlatformModulesConfig / SellerManagementModuleConfig
(shared/models/config/platform-modules.model.ts) - the
modules.sellerManagement.enabled contract, defaults to disabled
(DEFAULT_PLATFORM_MODULES_CONFIG).
- SellerConfig (shared/models/config/seller.model.ts) - typed shape for
the resolved seller scope, mirroring TenantConfig's fields at the
subset a seller needs. Frontend never resolves this itself; it only
reads what the backend already decided (same convention as tenant
resolution, ADR-001).
Changed:
- BootstrapConfig gained two optional fields: modules?, seller?. Both
absent by default - every existing marketplace's bootstrap response
is untouched, TypeScript-checked backward compatible (all new fields
optional, no existing field types changed).
tsc --noEmit clean. No component, facade, service, or route touched -
this commit is pure type contracts.
2026-07-26 20:13:56 +04:00
|
|
|
/**
|
|
|
|
|
* Optional platform capability modules (e.g. Seller Management). Absent or
|
|
|
|
|
* `undefined` means every module is disabled - existing marketplaces that
|
|
|
|
|
* never send this field continue to behave exactly as today. See ADR-011.
|
|
|
|
|
*/
|
|
|
|
|
modules?: PlatformModulesConfig;
|
|
|
|
|
/**
|
|
|
|
|
* Present only when `modules.sellerManagement.enabled` is true and the
|
|
|
|
|
* resolved request scope is beneath a specific seller. Absent for every
|
|
|
|
|
* marketplace-level request, including all existing marketplaces. The
|
|
|
|
|
* frontend never resolves this itself (ADR-001, ADR-011) - it only reads
|
|
|
|
|
* whatever the backend already decided.
|
|
|
|
|
*/
|
|
|
|
|
seller?: SellerConfig;
|
2026-07-03 01:29:04 +04:00
|
|
|
}
|