type NormalizePollOptions = {
maxOptions?: number;
};
export function resolvePollMaxSelections(
optionCount: number,
allowMultiselect: boolean | undefined,
): number { return allowMultiselect ? Math.max(2, optionCount) : 1;
}
export function normalizePollInput(
input: PollInput,
options: NormalizePollOptions = {},
): NormalizedPollInput { const question = input.question.trim(); if (!question) { thrownew Error("Poll question is required");
} const pollOptions = (input.options ?? []).map((option) => option.trim()); const cleaned = pollOptions.filter(Boolean); if (cleaned.length < 2) { thrownew Error("Poll requires at least 2 options");
} if (options.maxOptions !== undefined && cleaned.length > options.maxOptions) { thrownew Error(`Poll supports at most ${options.maxOptions} options`);
} const maxSelectionsRaw = input.maxSelections; const maxSelections = typeof maxSelectionsRaw === "number" && Number.isFinite(maxSelectionsRaw)
? Math.floor(maxSelectionsRaw)
: 1; if (maxSelections < 1) { thrownew Error("maxSelections must be at least 1");
} if (maxSelections > cleaned.length) { thrownew Error("maxSelections cannot exceed option count");
}
const durationSecondsRaw = input.durationSeconds; const durationSeconds = typeof durationSecondsRaw === "number" && Number.isFinite(durationSecondsRaw)
? Math.floor(durationSecondsRaw)
: undefined; if (durationSeconds !== undefined && durationSeconds < 1) { thrownew Error("durationSeconds must be at least 1");
}
const durationRaw = input.durationHours; const durationHours = typeof durationRaw === "number" && Number.isFinite(durationRaw)
? Math.floor(durationRaw)
: undefined; if (durationHours !== undefined && durationHours < 1) { thrownew Error("durationHours must be at least 1");
} if (durationSeconds !== undefined && durationHours !== undefined) { thrownew Error("durationSeconds and durationHours are mutually exclusive");
} return {
question,
options: cleaned,
maxSelections,
durationSeconds,
durationHours,
};
}
export function normalizePollDurationHours(
value: number | undefined,
options: { defaultHours: number; maxHours: number },
): number { const base = typeof value === "number" && Number.isFinite(value) ? Math.floor(value) : options.defaultHours; return Math.min(Math.max(base, 1), options.maxHours);
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-06-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.