import { getChannelSetupWizardAdapter } from "./channel-setup/registry.js" ;
import type { ChannelSetupWizardAdapter } from "./channel-setup/types.js" ;
import type { ChannelChoice } from "./onboard-types.js" ;
type ChannelSetupWizardAdapterPatch = Partial<
Pick<
ChannelSetupWizardAdapter,
| "afterConfigWritten"
| "configure"
| "configureInteractive"
| "configureWhenConfigured"
| "getStatus"
>
>;
type PatchedSetupAdapterFields = {
afterConfigWritten?: ChannelSetupWizardAdapter["afterConfigWritten" ];
configure?: ChannelSetupWizardAdapter["configure" ];
configureInteractive?: ChannelSetupWizardAdapter["configureInteractive" ];
configureWhenConfigured?: ChannelSetupWizardAdapter["configureWhenConfigured" ];
getStatus?: ChannelSetupWizardAdapter["getStatus" ];
};
export function patchChannelSetupWizardAdapter(
channel: ChannelChoice,
patch: ChannelSetupWizardAdapterPatch,
): () => void {
const adapter = getChannelSetupWizardAdapter(channel);
if (!adapter) {
throw new Error(`missing setup adapter for ${channel}`);
}
const previous: PatchedSetupAdapterFields = {};
if (Object.prototype.hasOwnProperty.call(patch, "getStatus" )) {
previous.getStatus = adapter.getStatus;
adapter.getStatus = patch.getStatus ?? adapter.getStatus;
}
if (Object.prototype.hasOwnProperty.call(patch, "afterConfigWritten" )) {
previous.afterConfigWritten = adapter.afterConfigWritten;
adapter.afterConfigWritten = patch.afterConfigWritten;
}
if (Object.prototype.hasOwnProperty.call(patch, "configure" )) {
previous.configure = adapter.configure;
adapter.configure = patch.configure ?? adapter.configure;
}
if (Object.prototype.hasOwnProperty.call(patch, "configureInteractive" )) {
previous.configureInteractive = adapter.configureInteractive;
adapter.configureInteractive = patch.configureInteractive;
}
if (Object.prototype.hasOwnProperty.call(patch, "configureWhenConfigured" )) {
previous.configureWhenConfigured = adapter.configureWhenConfigured;
adapter.configureWhenConfigured = patch.configureWhenConfigured;
}
return () => {
if (Object.prototype.hasOwnProperty.call(patch, "getStatus" )) {
adapter.getStatus = previous.getStatus!;
}
if (Object.prototype.hasOwnProperty.call(patch, "afterConfigWritten" )) {
adapter.afterConfigWritten = previous.afterConfigWritten;
}
if (Object.prototype.hasOwnProperty.call(patch, "configure" )) {
adapter.configure = previous.configure!;
}
if (Object.prototype.hasOwnProperty.call(patch, "configureInteractive" )) {
adapter.configureInteractive = previous.configureInteractive;
}
if (Object.prototype.hasOwnProperty.call(patch, "configureWhenConfigured" )) {
adapter.configureWhenConfigured = previous.configureWhenConfigured;
}
};
}
export const patchChannelOnboardingAdapter = patchChannelSetupWizardAdapter;
Messung V0.5 in Prozent C=99 H=99 G=98
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland