UNPKG

@vue-storefront/storyblok

Version:

Storyblok CMS integration with Vue Storefront

102 lines (92 loc) 4.34 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var core = require('@vue-storefront/core'); var StoryblokClient = require('storyblok-js-client'); var tslib = require('tslib'); var nanoid = require('nanoid'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var StoryblokClient__default = /*#__PURE__*/_interopDefaultLegacy(StoryblokClient); var errorMessage = { GENERAL: "Can't get data from Storyblok.", EMPTY_ID: 'Define story id, url or custom query object.', WRONG_CUSTOM: 'Custom query wrong format. Define proper object.', }; var extractNestedComponents = function (data, stories) { if (stories === void 0) { stories = false; } if (data.content) { extractNestedComponents(data.content); if (Array.isArray(data.content)) { data.content = data.content.map(function (component) { extractNestedComponents(component); if (component.content) { return { component: component.component, content: component.content, _meta: component, }; } return component; }); } } return tslib.__assign(tslib.__assign({}, data.content), { _meta: !stories ? data : null }); }; var getContent = function (_a, _b) { var Client = _a.client, config = _a.config; var id = _b.id, url = _b.url, custom = _b.custom, _c = _b.cache, cache = _c === void 0 ? true : _c, locale = _b.locale, relations = _b.relations, _d = _b.version, version = _d === void 0 ? 'published' : _d; return tslib.__awaiter(void 0, void 0, void 0, function () { var token, cacheProvider, Storyblok, resolveCustomSearch, data, error_1; return tslib.__generator(this, function (_e) { switch (_e.label) { case 0: if (!url && !id && !custom) { return [2 /*return*/, core.Logger.warn("".concat(errorMessage.GENERAL, " ").concat(errorMessage.EMPTY_ID))]; } token = config.token, cacheProvider = config.cacheProvider; Storyblok = new Client({ accessToken: token, cache: { clear: 'auto', type: cacheProvider, }, }); resolveCustomSearch = id ? { by_uuids_ordered: id } : custom || {}; if (!id && custom && typeof custom !== 'object') { return [2 /*return*/, core.Logger.warn("".concat(errorMessage.GENERAL, " ").concat(errorMessage.WRONG_CUSTOM))]; } _e.label = 1; case 1: _e.trys.push([1, 3, , 4]); return [4 /*yield*/, Storyblok.get("cdn/stories/".concat(id || custom ? '' : url), tslib.__assign(tslib.__assign(tslib.__assign({}, (!cache ? { cv: nanoid.nanoid() } : {})), resolveCustomSearch), { resolve_relations: relations, language: locale, version: version }))]; case 2: data = (_e.sent()).data; return [2 /*return*/, data.story ? extractNestedComponents(data.story) : extractNestedComponents({ content: data.stories }, true) || []]; case 3: error_1 = _e.sent(); core.Logger.warn("".concat(errorMessage.GENERAL), error_1); return [2 /*return*/, []]; case 4: return [2 /*return*/]; } }); }); }; var setup = function (_a) { var token = _a.token, cacheProvider = _a.cacheProvider; return { client: StoryblokClient__default["default"], config: { token: token, cacheProvider: cacheProvider, }, }; }; var createApiClient = core.apiClientFactory({ onCreate: setup, api: { getContent: getContent, }, }).createApiClient; exports.createApiClient = createApiClient; //# sourceMappingURL=index.js.map