|
|
export function validateReport(r) { |
|
|
if (!r) throw new Error("report_view missing"); |
|
|
|
|
|
if (!r.marketTitle) { |
|
|
throw new Error("report_view.marketTitle missing"); |
|
|
} |
|
|
|
|
|
if (!r.marketOverview) { |
|
|
throw new Error("report_view.marketOverview missing"); |
|
|
} |
|
|
|
|
|
const mo = r.marketOverview; |
|
|
if (typeof mo.pastYear_2023 !== 'number') throw new Error("pastYear_2023 must be number"); |
|
|
if (typeof mo.currentYear_2025 !== 'number') throw new Error("currentYear_2025 must be number"); |
|
|
|
|
|
|
|
|
if (!Array.isArray(r.marketSegments)) { |
|
|
throw new Error("report_view.marketSegments must be array"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|