| 1 | import type { GeneratedDesktopCommands } from "../generated/desktopContract.generated"; |
| 2 | |
| 3 | export type SessionUIBindings = Pick<GeneratedDesktopCommands, |
| 4 | "BeginManualSessionCreation" | "GetManualSessionCreation" | "RetryManualSessionCreation" | "ListManualSessionCreations" | |
| 5 | "GetSessionComposerState" | "SaveSessionComposerState" | "BeginSessionComposerSubmission" | "CompleteSessionComposerSubmission" | "ListSessionComposerConflicts">; |
| 6 | |
| 7 | export function makeLazySessionUIMock(create: (scope: string, root: string, id: string) => Promise<void>): SessionUIBindings { |
| 8 | let loaded: Promise<SessionUIBindings> | undefined; |
| 9 | const names: (keyof SessionUIBindings)[] = ["BeginManualSessionCreation","GetManualSessionCreation","RetryManualSessionCreation","ListManualSessionCreations","GetSessionComposerState","SaveSessionComposerState","BeginSessionComposerSubmission","CompleteSessionComposerSubmission","ListSessionComposerConflicts"]; |
| 10 | return Object.fromEntries(names.map(name=>[name,async (...args:unknown[])=> { |
| 11 | loaded ??= import("./sessionUIMock").then(module=>module.makeSessionUIMock(create)); |
| 12 | const binding=await loaded; |
| 13 | return (binding[name] as (...args:unknown[])=>unknown).apply(binding,args); |
| 14 | }])) as unknown as SessionUIBindings; |
| 15 | } |
| 16 |