payload
Version:
Node, React, Headless CMS and Application Framework built on Next.js
54 lines (53 loc) • 1.68 kB
JavaScript
// @ts-strict-ignore
import { ValidationError } from '../../../errors/index.js';
import { deepCopyObjectSimple } from '../../../utilities/deepCopyObject.js';
import { traverseFields } from './traverseFields.js';
/**
* This function is responsible for the following actions, in order:
* - Run condition
* - Execute field hooks
* - Validate data
* - Transform data for storage
* - Unflatten locales. The input `data` is the normal document for one locale. The output result will become the document with locales.
*/ export const beforeChange = async ({ id, collection, context, data: incomingData, doc, docWithLocales, global, operation, req, skipValidation })=>{
const data = deepCopyObjectSimple(incomingData);
const mergeLocaleActions = [];
const errors = [];
await traverseFields({
id,
collection,
context,
data,
doc,
docWithLocales,
errors,
fieldLabelPath: '',
fields: collection?.fields || global?.fields,
global,
mergeLocaleActions,
operation,
parentIndexPath: '',
parentIsLocalized: false,
parentPath: '',
parentSchemaPath: '',
req,
siblingData: data,
siblingDoc: doc,
siblingDocWithLocales: docWithLocales,
skipValidation
});
if (errors.length > 0) {
throw new ValidationError({
id,
collection: collection?.slug,
errors,
global: global?.slug,
req
}, req.t);
}
for (const action of mergeLocaleActions){
await action();
}
return data;
};
//# sourceMappingURL=index.js.map