UNPKG

@botonic/plugin-contentful

Version:

## What Does This Plugin Do?

107 lines 4.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReferenceDelivery = exports.DeliveryWithReference = void 0; const tslib_1 = require("tslib"); const cms = tslib_1.__importStar(require("../../cms")); const cms_1 = require("../../cms"); const content_delivery_1 = require("../content-delivery"); const delivery_utils_1 = require("../delivery-utils"); class DeliveryWithReference extends content_delivery_1.TopContentDelivery { // cannot be set in constructor because there's a circular dependency Model <-> Reference setReference(reference) { this.reference = reference; } getReference() { console.assert(this.reference, 'you need to call setReference from Contentful constructor'); return this.reference; } } exports.DeliveryWithReference = DeliveryWithReference; class ReferenceDelivery { constructor(delivery, carousel, text, image, startUp, video, document, url, handoff, queue, schedule, input, payload, dateRange) { this.delivery = delivery; this.carousel = carousel; this.text = text; this.image = image; this.startUp = startUp; this.video = video; this.document = document; this.url = url; this.handoff = handoff; this.queue = queue; this.schedule = schedule; this.input = input; this.payload = payload; this.dateRange = dateRange; } fromEntry(reference, context) { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (!reference) { return Promise.resolve(undefined); } try { return this.fromEntryCore(reference, context); } catch (e) { throw new cms.CmsException(`Error loading reference with id '${reference.sys.id}'`, e); } }); } commonFields(entry, context) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const reference = yield this.getReference(entry, context); return delivery_utils_1.ContentfulEntryUtils.commonFieldsFromEntry(entry, reference); }); } fromEntryCore(reference, context) { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (!reference.sys.contentType) { reference = yield this.delivery.getEntry(reference.sys.id, context); } switch (delivery_utils_1.ContentfulEntryUtils.getContentModel(reference)) { case cms_1.ContentType.CAROUSEL: // here followUp already has its fields set, but not yet its element fields return this.carousel.carousel(reference.sys.id, context); case cms.ContentType.TEXT: return this.text.fromEntry(reference, context); case cms.ContentType.IMAGE: return this.image.fromEntry(reference, context); case cms.ContentType.STARTUP: return this.startUp.fromEntry(reference, context); case cms.ContentType.VIDEO: return this.video.fromEntry(reference, context); case cms.ContentType.DOCUMENT: return this.document.fromEntry(reference, context); case cms.ContentType.URL: return this.url.fromEntry(reference, context); case cms.ContentType.HANDOFF: return this.handoff.fromEntry(reference, context); case cms.ContentType.QUEUE: return this.queue.fromEntry(reference, context); case cms.ContentType.SCHEDULE: return this.schedule.fromEntry(reference, context); case cms.ContentType.INPUT: return this.input.fromEntry(reference, context); case cms.ContentType.PAYLOAD: return this.payload.fromEntry(reference, context); case cms.ContentType.DATE_RANGE: return this.dateRange.fromEntry(reference, context); default: throw new Error(`Unexpected reference type ${reference.sys.type}`); } }); } getReference(entry, context) { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (entry.fields.followup) { const followUp = entry.fields.followup.sys.contentType ? entry.fields.followup : yield this.delivery.getEntry(entry.fields.followup.sys.id, context); return (yield this.fromEntry(followUp, context)); } return undefined; }); } } exports.ReferenceDelivery = ReferenceDelivery; //# sourceMappingURL=reference.js.map