@automattic/rtjson-to-wpblocks
Version:
Javascript code to convert Day One RTJson to WordPress Gutenberg Blocks
36 lines (31 loc) • 926 B
JavaScript
const Ajv = require("ajv").default;
const ajv = new Ajv();
// @ts-ignore
const schema = require("./RTJDoc.schema.json");
/**
* @typedef {Object} Result
* @property {RTJDoc?} data - The RTJDoc object.
* @property {Array.<import('ajv').ErrorObject>?} errors - Array of Ajv error objects.
*/
/**
* Parses and validates RTJson.
*
* @param {string} rtjson - The RTJson string to be parsed and validated.
* @returns {Result} - Either a Success object with the RTJDoc or an Error object with validation errors.
*/
const parseAndValidateRTJson = (rtjson) => {
if (!rtjson) {
throw new Error("No string to check provided");
}
const validate = ajv.compile(schema);
const rtjdoc = JSON.parse(rtjson);
const valid = validate(rtjdoc);
if (!valid) {
return { errors: validate.errors, data: null };
} else {
return { data: rtjdoc, errors: null };
}
};
module.exports = {
parseAndValidateRTJson,
};