- lib/code.ts: rename VALID_CODE_RE naar geexporteerde CODE_REGEX, verwijder ongebruikte deriveTaskCode - lib/code-server.ts: generateNextTaskCode(productId) — flat per-product T-N teller, hergebruikt nextSequential helper. Export isCodeUniqueConflict zodat callers P2002 op code-veld kunnen detecteren - Zod schemas (pbi/story/task): codeField met trim + max-length + regex, optional input (server vult bij ontbreken). Task krijgt voor het eerst een codeField Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
16 lines
551 B
TypeScript
16 lines
551 B
TypeScript
// Pure helpers — safe to import from client components.
|
|
// DB-backed helpers (generateNextStoryCode/PbiCode) live in lib/code-server.ts.
|
|
|
|
export const CODE_REGEX = /^[A-Za-z0-9._-]+$/
|
|
|
|
export const MAX_CODE_LENGTH = 30
|
|
|
|
export function isValidCode(code: string): boolean {
|
|
return code.length > 0 && code.length <= MAX_CODE_LENGTH && CODE_REGEX.test(code)
|
|
}
|
|
|
|
export function normalizeCode(input: string | null | undefined): string | null {
|
|
if (input == null) return null
|
|
const trimmed = input.trim()
|
|
return trimmed === '' ? null : trimmed
|
|
}
|