MCPcopy Index your code
hub / github.com/coder/coder / useValidationSchemaForRichParameters

Function useValidationSchemaForRichParameters

site/src/utils/richParameters.ts:57–175  ·  view source on GitHub ↗
(
	templateParameters?: TemplateVersionParameter[],
	lastBuildParameters?: WorkspaceBuildParameter[],
)

Source from the content-addressed store, hash-verified

55};
56
57export const useValidationSchemaForRichParameters = (
58 templateParameters?: TemplateVersionParameter[],
59 lastBuildParameters?: WorkspaceBuildParameter[],
60): Yup.AnySchema => {
61 if (!templateParameters) {
62 return Yup.object();
63 }
64
65 return Yup.array()
66 .of(
67 Yup.object().shape({
68 name: Yup.string().required(),
69 value: Yup.string()
70 .test("verify with template", (val, ctx) => {
71 const name = ctx.parent.name;
72 const templateParameter = templateParameters.find(
73 (parameter) => parameter.name === name,
74 );
75 if (templateParameter) {
76 switch (templateParameter.type) {
77 case "number":
78 if (
79 templateParameter.validation_min &&
80 !templateParameter.validation_max
81 ) {
82 if (Number(val) < templateParameter.validation_min) {
83 return ctx.createError({
84 path: ctx.path,
85 message:
86 parameterError(templateParameter, val) ??
87 `Value must be greater than ${templateParameter.validation_min}.`,
88 });
89 }
90 } else if (
91 !templateParameter.validation_min &&
92 templateParameter.validation_max
93 ) {
94 if (templateParameter.validation_max < Number(val)) {
95 return ctx.createError({
96 path: ctx.path,
97 message:
98 parameterError(templateParameter, val) ??
99 `Value must be less than ${templateParameter.validation_max}.`,
100 });
101 }
102 } else if (
103 templateParameter.validation_min &&
104 templateParameter.validation_max
105 ) {
106 if (
107 Number(val) < templateParameter.validation_min ||
108 templateParameter.validation_max < Number(val)
109 ) {
110 return ctx.createError({
111 path: ctx.path,
112 message:
113 parameterError(templateParameter, val) ??
114 `Value must be between ${templateParameter.validation_min} and ${templateParameter.validation_max}.`,

Callers 2

WorkspaceParametersFormFunction · 0.90

Calls 4

NumberFunction · 0.85
stringMethod · 0.80
findMethod · 0.80
parameterErrorFunction · 0.70

Tested by

no test coverage detected