chore: fixing breaking changes

\
Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
blam
2024-03-19 14:19:46 +01:00
parent 87d2eb8e4c
commit d6406e5614
2 changed files with 34 additions and 10 deletions
@@ -38,10 +38,11 @@ export const ReviewState = (props: ReviewStateProps) => {
.map(([key, value]) => {
for (const step of props.schemas) {
const parsedSchema = new JSONSchema(step.mergedSchema);
const definitionInSchema = parsedSchema.getSchema(
`#/${key}`,
props.formState,
);
const definitionInSchema = parsedSchema.getSchema({
pointer: `#/${key}`,
data: props.formState,
});
if (definitionInSchema) {
const backstageReviewOptions =
definitionInSchema['ui:backstage']?.review;
@@ -17,7 +17,11 @@
import { FieldValidation } from '@rjsf/utils';
import type { JsonObject, JsonValue } from '@backstage/types';
import { ApiHolder } from '@backstage/core-plugin-api';
import { Draft07 as JSONSchema } from 'json-schema-library';
import {
Draft07 as JSONSchema,
JsonError,
JsonSchema,
} from 'json-schema-library';
import { createFieldValidation, extractSchemaFromStep } from '../../lib';
import {
CustomFieldValidator,
@@ -30,6 +34,11 @@ export type FormValidation = {
[name: string]: FieldValidation | FormValidation;
};
const isJsonError = (
value: JsonError | JsonSchema,
): value is { type: 'error'; message: string } =>
'type' in value && value.type === 'error';
/** @alpha */
export const createAsyncValidators = (
rootSchema: JsonObject,
@@ -74,9 +83,23 @@ export const createAsyncValidators = (
};
for (const [key, value] of Object.entries(current)) {
const path = `${pathPrefix}/${key}`;
const definitionInSchema = parsedSchema.getSchema(path, formData);
const { schema, uiSchema } = extractSchemaFromStep(definitionInSchema);
const pointer = `${pathPrefix}/${key}`;
const definitionInSchema = parsedSchema.getSchema({
pointer,
data: formData,
});
if (!definitionInSchema) {
continue;
}
if (isJsonError(definitionInSchema)) {
throw new Error(definitionInSchema.message);
}
const { schema, uiSchema } = extractSchemaFromStep(
definitionInSchema as JsonObject,
);
const hasItems = definitionInSchema && definitionInSchema.items;
@@ -102,7 +125,7 @@ export const createAsyncValidators = (
}
};
if (definitionInSchema && 'ui:field' in definitionInSchema) {
if ('ui:field' in definitionInSchema) {
await doValidateItem(definitionInSchema, schema, uiSchema);
} else if (hasItems && 'ui:field' in definitionInSchema.items) {
await doValidate(definitionInSchema.items);
@@ -113,7 +136,7 @@ export const createAsyncValidators = (
await doValidate(propValue);
}
} else if (isObject(value)) {
formValidation[key] = await validate(formData, path, value);
formValidation[key] = await validate(formData, pointer, value);
}
}