Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions frontend/preview/mock/defaultconfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Copyright 2026, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0

import mimetypesJson from "../../../pkg/wconfig/defaultconfig/mimetypes.json";
import presetsJson from "../../../pkg/wconfig/defaultconfig/presets.json";
import settingsJson from "../../../pkg/wconfig/defaultconfig/settings.json";
import termthemesJson from "../../../pkg/wconfig/defaultconfig/termthemes.json";
import waveaiJson from "../../../pkg/wconfig/defaultconfig/waveai.json";
import widgetsJson from "../../../pkg/wconfig/defaultconfig/widgets.json";

export const DefaultFullConfig: FullConfigType = {
settings: settingsJson as SettingsType,
mimetypes: mimetypesJson as unknown as { [key: string]: MimeTypeConfigType },
defaultwidgets: widgetsJson as unknown as { [key: string]: WidgetConfigType },
widgets: {},
presets: presetsJson as unknown as { [key: string]: MetaType },
termthemes: termthemesJson as unknown as { [key: string]: TermThemeType },
connections: {},
bookmarks: {},
waveai: waveaiJson as unknown as { [key: string]: AIModeConfigType },
configerrors: [],
};
30 changes: 21 additions & 9 deletions frontend/preview/mock/mockwaveenv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { getSettingsKeyAtom, makeDefaultConnStatus } from "@/app/store/global";
import { RpcApiType } from "@/app/store/wshclientapi";
import { WaveEnv } from "@/app/waveenv/waveenv";
import { Atom, atom, PrimitiveAtom } from "jotai";
import { DefaultFullConfig } from "./defaultconfig";
import { previewElectronApi } from "./preview-electron-api";

type RpcOverrides = {
Expand All @@ -13,7 +14,7 @@ type RpcOverrides = {

export type MockEnv = {
isDev?: boolean;
config?: Partial<SettingsType>;
settings?: Partial<SettingsType>;
rpc?: RpcOverrides;
atoms?: Partial<GlobalAtomsType>;
electron?: Partial<ElectronApi>;
Expand All @@ -35,10 +36,9 @@ function mergeRecords<T>(base: Record<string, T>, overrides: Record<string, T>):
export function mergeMockEnv(base: MockEnv, overrides: MockEnv): MockEnv {
return {
isDev: overrides.isDev ?? base.isDev,
config: mergeRecords(base.config, overrides.config),
settings: mergeRecords(base.settings, overrides.settings),
rpc: mergeRecords(base.rpc as any, overrides.rpc as any) as RpcOverrides,
atoms:
overrides.atoms != null || base.atoms != null ? { ...base.atoms, ...overrides.atoms } : undefined,
atoms: overrides.atoms != null || base.atoms != null ? { ...base.atoms, ...overrides.atoms } : undefined,
electron:
overrides.electron != null || base.electron != null
? { ...(base.electron ?? {}), ...(overrides.electron ?? {}) }
Expand Down Expand Up @@ -67,15 +67,27 @@ function makeMockConfigAtoms(overrides?: Partial<SettingsType>): WaveEnv["config
});
}

function makeMockGlobalAtoms(atomOverrides?: Partial<GlobalAtomsType>): GlobalAtomsType {
function makeMockGlobalAtoms(
settingsOverrides?: Partial<SettingsType>,
atomOverrides?: Partial<GlobalAtomsType>
): GlobalAtomsType {
let fullConfig = DefaultFullConfig;
if (settingsOverrides) {
fullConfig = {
...DefaultFullConfig,
settings: { ...DefaultFullConfig.settings, ...settingsOverrides },
};
}
const fullConfigAtom = atom(fullConfig) as PrimitiveAtom<FullConfigType>;
const settingsAtom = atom((get) => get(fullConfigAtom)?.settings ?? {}) as Atom<SettingsType>;
const defaults: GlobalAtomsType = {
builderId: atom(""),
builderAppId: atom("") as any,
uiContext: atom({} as UIContext),
workspace: atom(null as Workspace),
fullConfigAtom: atom(null) as any,
fullConfigAtom,
waveaiModeConfigAtom: atom({}) as any,
settingsAtom: atom({} as SettingsType),
settingsAtom,
hasCustomAIPresetsAtom: atom(false),
staticTabId: atom(""),
isFullScreen: atom(false) as any,
Expand Down Expand Up @@ -141,8 +153,8 @@ export function makeMockWaveEnv(mockEnv?: MockEnv): MockWaveEnv {
mockEnv: overrides,
electron: overrides.electron ? { ...previewElectronApi, ...overrides.electron } : previewElectronApi,
rpc: makeMockRpc(overrides.rpc),
configAtoms: makeMockConfigAtoms(overrides.config),
atoms: makeMockGlobalAtoms(overrides.atoms),
configAtoms: makeMockConfigAtoms(overrides.settings),
atoms: makeMockGlobalAtoms(overrides.settings, overrides.atoms),
isDev: () => overrides.isDev ?? true,
createBlock:
overrides.createBlock ??
Expand Down
Loading