UNPKG

@automattic/rtjson-to-wpblocks

Version:

Javascript code to convert Day One RTJson to WordPress Gutenberg Blocks

36 lines (31 loc) 926 B
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, };