@vue-storefront/storyblok
Version:
Storyblok CMS integration with Vue Storefront
102 lines (92 loc) • 4.34 kB
JavaScript
;
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