Fix diff validation and apply (#18048)

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
This commit is contained in:
Azri Kahar
2023-04-10 23:53:51 +08:00
committed by GitHub
parent 98335f248f
commit dd3202ce38
7 changed files with 448 additions and 6 deletions

View File

@@ -6,12 +6,16 @@ const deepDiffSchema = Joi.object({
kind: Joi.string()
.valid(...Object.values(DiffKind))
.required(),
path: Joi.array().items(Joi.string()),
lhs: Joi.object().when('kind', { is: [DiffKind.DELETE, DiffKind.EDIT], then: Joi.required() }),
rhs: Joi.object().when('kind', { is: [DiffKind.NEW, DiffKind.EDIT], then: Joi.required() }),
path: Joi.array().items(Joi.alternatives().try(Joi.string(), Joi.number())),
lhs: Joi.any().when('kind', { is: [DiffKind.NEW, DiffKind.ARRAY], then: Joi.optional(), otherwise: Joi.required() }),
rhs: Joi.any().when('kind', {
is: [DiffKind.DELETE, DiffKind.ARRAY],
then: Joi.optional(),
otherwise: Joi.required(),
}),
index: Joi.number().when('kind', { is: DiffKind.ARRAY, then: Joi.required() }),
item: Joi.link('/').when('kind', { is: DiffKind.ARRAY, then: Joi.required() }),
});
item: Joi.link('#deepdiff').when('kind', { is: DiffKind.ARRAY, then: Joi.required() }),
}).id('deepdiff');
const applyJoiSchema = Joi.object({
hash: Joi.string().required(),