diff --git a/frontend/src/lib/components/apps/utils.ts b/frontend/src/lib/components/apps/utils.ts index 76cb92ec01..d2c0f53b38 100644 --- a/frontend/src/lib/components/apps/utils.ts +++ b/frontend/src/lib/components/apps/utils.ts @@ -174,15 +174,29 @@ export function buildExtraLib( .filter(([k, v]) => k != idToExclude && k != 'state') .map(([k, v]) => [k, Object.fromEntries(Object.entries(v).map(([k, v]) => [k, v.peak()]))]) .map( - ([k, v]) => `declare const ${k}: ${JSON.stringify(v)}; + ([k, v]) => `declare const ${k}: Widen<${JSON.stringify(v)}>; ` ) .join('\n') - return `${cs} + return ` + +type Widen = T extends string + ? string + : T extends number + ? number + : T extends boolean + ? boolean + : T extends Array + ? Array> + : T extends object + ? { [K in keyof T]: Widen } + : T; /** The mutable state of the app */ -declare const state: ${JSON.stringify(state)} & {[key: string]: any}; +declare const state: Widen<${JSON.stringify(state)}> & {[key: string]: any}; + +${cs} ${ goto