File size: 1,471 Bytes
96e86e5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import { z } from "zod";
import {
ISSUE_TREE_CONTROL_MODES,
ISSUE_TREE_HOLD_RELEASE_POLICY_STRATEGIES,
} from "../constants.js";
export const issueTreeControlModeSchema = z.enum(ISSUE_TREE_CONTROL_MODES);
export const issueTreeHoldReleasePolicySchema = z
.object({
strategy: z.enum(ISSUE_TREE_HOLD_RELEASE_POLICY_STRATEGIES).default("manual"),
note: z.string().trim().min(1).max(500).optional().nullable(),
})
.strict();
export const previewIssueTreeControlSchema = z
.object({
mode: issueTreeControlModeSchema,
releasePolicy: issueTreeHoldReleasePolicySchema.optional().nullable(),
})
.strict();
export type PreviewIssueTreeControl = z.infer<typeof previewIssueTreeControlSchema>;
export const createIssueTreeHoldSchema = z
.object({
mode: issueTreeControlModeSchema,
reason: z.string().trim().min(1).max(1000).optional().nullable(),
releasePolicy: issueTreeHoldReleasePolicySchema.optional().nullable(),
metadata: z.record(z.unknown()).optional().nullable(),
})
.strict();
export type CreateIssueTreeHold = z.infer<typeof createIssueTreeHoldSchema>;
export const releaseIssueTreeHoldSchema = z
.object({
reason: z.string().trim().min(1).max(1000).optional().nullable(),
releasePolicy: issueTreeHoldReleasePolicySchema.optional().nullable(),
metadata: z.record(z.unknown()).optional().nullable(),
})
.strict();
export type ReleaseIssueTreeHold = z.infer<typeof releaseIssueTreeHoldSchema>;
|