const errors = require('@tryghost/errors'); const {logging} = require('./common'); const config = require('../../shared/config'); let cardFactory; let cards; let mobiledocHtmlRenderer; module.exports = { get blankDocument() { return { version: '0.3.1', markups: [], atoms: [], cards: [], sections: [ [1, 'p', [ [0, [], 0, ''] ]] ] }; }, get cards() { if (!cards) { const CardFactory = require('@tryghost/kg-card-factory'); const defaultCards = require('@tryghost/kg-default-cards'); cardFactory = new CardFactory({ siteUrl: config.get('url') }); cards = defaultCards.map((card) => { return cardFactory.createCard(card); }); } return cards; }, get atoms() { return require('@tryghost/kg-default-atoms'); }, get mobiledocHtmlRenderer() { if (!mobiledocHtmlRenderer) { const MobiledocHtmlRenderer = require('@tryghost/kg-mobiledoc-html-renderer'); mobiledocHtmlRenderer = new MobiledocHtmlRenderer({ cards: this.cards, atoms: this.atoms, unknownCardHandler(args) { logging.error(new errors.InternalServerError({ message: 'Mobiledoc card \'' + args.env.name + '\' not found.' })); } }); } return mobiledocHtmlRenderer; }, get htmlToMobiledocConverter() { try { return require('@tryghost/html-to-mobiledoc').toMobiledoc; } catch (err) { return () => { throw new errors.InternalServerError({ message: 'Unable to convert from source HTML to Mobiledoc', context: 'The html-to-mobiledoc package was not installed', help: 'Please review any errors from the install process by checking the Ghost logs', code: 'HTML_TO_MOBILEDOC_INSTALLATION', err: err }); }; } } };