import { PlainObject, ObjectPropertyNames } from './common.js'; import { StoreData } from './sdk/index.js'; export interface RsdoctorManifest { client: RsdoctorManifestClient; /** * manifest url in tos, used by inner-rsdoctor. */ cloudManifestUrl?: string; /** * manifest data shareding file urls in tos, used by inner-rsdoctor. */ cloudData?: Record; data: RsdoctorManifestData; /** current build name */ name?: string; /** * multiple build info */ series?: RsdoctorManifestSeriesData[]; } export interface RsdoctorManifestSeriesData { name: string; path: string; stage: number; origin?: string; } export interface RsdoctorManifestWithShardingFiles extends Omit { data: Record; /** * manifest data shareding file urls in tos, used by inner-rsdoctor. */ cloudData?: Record; /** * local server will proxy the manifest content and inject `__LOCAL__SERVER__: true` */ __LOCAL__SERVER__?: boolean; __SOCKET__PORT__?: string; __SOCKET__URL__?: string; } export interface RsdoctorManifestClient { enableRoutes: RsdoctorManifestClientRoutes[]; } export interface RsdoctorManifestData extends StoreData { } export declare enum RsdoctorManifestClientRoutes { Overall = "Overall", WebpackLoaders = "Compile.WebpackLoaders", ModuleResolve = "Compile.ModuleResolve", WebpackPlugins = "Compile.WebpackPlugins", BundleSize = "Bundle.BundleSize", ModuleGraph = "Bundle.ModuleGraph", TreeShaking = "Bundle.TreeShaking" } export declare enum RsdoctorManifestClientConstant { WindowPropertyForManifestUrl = "__DEVTOOLS_MANIFEST_URL__" } export type RsdoctorManifestObjectKeys = NonNullable>; export type RsdoctorManifestRootKeys = keyof RsdoctorManifestData; export type RsdoctorManifestMappingKeys = { [K in RsdoctorManifestObjectKeys]: RsdoctorManifestData[K] extends PlainObject ? RsdoctorManifestData[K] extends Array ? never : string extends keyof RsdoctorManifestData[K] ? never : keyof RsdoctorManifestData[K] extends string ? `${K}.${keyof RsdoctorManifestData[K]}` : never : never; }[RsdoctorManifestObjectKeys] | RsdoctorManifestRootKeys; export type InferManifestDataValue = T extends `${infer Scope}.${infer Child}` ? Scope extends RsdoctorManifestObjectKeys ? Child extends keyof RsdoctorManifestData[Scope] ? RsdoctorManifestData[Scope][Child] : never : never : T extends RsdoctorManifestRootKeys ? RsdoctorManifestData[T] : never; export interface ManifestDataLoader { loadManifest(): Promise; loadData: { (key: T): Promise>; }; }