import Foundation

/// `warmup-manifest.json` 数据模型（三端结构一致）。由前端构建产出，SDK 只读消费。
///
/// `Decodable` 忽略未知字段（`renderType` / `csrEntry` / `locales` 等），仅取所需。
struct WarmupBizType: Decodable {
    let warmupUrl: String
    let assets: [String]
}

/// manifest 顶层结构。
struct WarmupManifest: Decodable {
    let version: String
    let hosts: [String]
    let bizTypes: [String: WarmupBizType]
    let menuBizTypes: [String]?

    /// 从 JSON 数据解析；失败返回 `nil`（best-effort）。
    static func parse(_ data: Data) -> WarmupManifest? {
        return try? JSONDecoder().decode(WarmupManifest.self, from: data)
    }
}
