import { HttpHeaders } from '@angular/common/http'; import { Injectable, inject } from '@angular/core'; import { MARKETPLACES_AUTH_CONFIG } from './config'; export const MARKETPLACE_DOMAIN_HEADER = 'X-Marketplace-Domain'; export function normalizeMarketplaceDomain(domain: string): string { return domain.trim().toLowerCase().replace(/\.$/, ''); } @Injectable({ providedIn: 'root' }) export class AuthMarketplaceContext { private readonly config = inject(MARKETPLACES_AUTH_CONFIG); domain(): string { const configured = this.config.marketplaceDomain; const domain = typeof configured === 'function' ? configured() : configured ?? (typeof location === 'undefined' ? '' : location.hostname); return normalizeMarketplaceDomain(domain); } headers(extra?: Record): HttpHeaders { const domain = this.domain(); if (!domain) throw new Error('Marketplace domain cannot be resolved'); return new HttpHeaders({ [MARKETPLACE_DOMAIN_HEADER]: domain, ...extra }); } }