kentico-cloud-delivery
Version:
Official Kentico Cloud Delivery SDK
1,159 lines (1,091 loc) • 698 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("rxjs"), require("rxjs/operators"));
else if(typeof define === 'function' && define.amd)
define("kenticoCloudDelivery", ["rxjs", "rxjs/operators"], factory);
else if(typeof exports === 'object')
exports["kenticoCloudDelivery"] = factory(require("rxjs"), require("rxjs/operators"));
else
root["kenticoCloudDelivery"] = factory(root["rxjs"], root["rxjs"]["operators"]);
})(window, function(__WEBPACK_EXTERNAL_MODULE_rxjs__, __WEBPACK_EXTERNAL_MODULE_rxjs_operators__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./lib/index.ts");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./lib/client/delivery-client.ts":
/*!***************************************!*\
!*** ./lib/client/delivery-client.ts ***!
\***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var kentico_cloud_core_1 = __webpack_require__(/*! kentico-cloud-core */ "./node_modules/kentico-cloud-core/_commonjs/index.js");
var parser_adapter_1 = __webpack_require__(/*! ../parser/parser-adapter */ "./lib/parser/parser-adapter.ts");
var query_1 = __webpack_require__(/*! ../query */ "./lib/query/index.ts");
var sdk_info_generated_1 = __webpack_require__(/*! ../sdk-info.generated */ "./lib/sdk-info.generated.ts");
var services_1 = __webpack_require__(/*! ../services */ "./lib/services/index.ts");
var DeliveryClient = /** @class */ (function () {
/**
* Delivery client used to fetch data from Kentico Cloud
* @constructor
* @param {IDeliveryClientConfig} config - The client configuration
*/
function DeliveryClient(config) {
this.config = config;
if (!config) {
throw Error("Delivery client configuration is not set");
}
this.mappingService = new services_1.MappingService(config, parser_adapter_1.getParserAdapter());
this.queryService = new services_1.QueryService(config, config.httpService ? config.httpService : new kentico_cloud_core_1.HttpService({
requestInterceptor: config.httpInterceptors && config.httpInterceptors.requestInterceptor ? config.httpInterceptors.requestInterceptor : undefined,
responseInterceptor: config.httpInterceptors && config.httpInterceptors.responseInterceptor ? config.httpInterceptors.responseInterceptor : undefined,
}), {
host: sdk_info_generated_1.sdkInfo.host,
name: sdk_info_generated_1.sdkInfo.name,
version: sdk_info_generated_1.sdkInfo.version
}, this.mappingService);
}
/**
* Gets query for multiple types
*/
DeliveryClient.prototype.types = function () {
return new query_1.MultipleTypeQuery(this.config, this.queryService);
};
/**
* Gets query for single type
* @param {string} typeCodename - Codename of the type to fetch
*/
DeliveryClient.prototype.type = function (typeCodename) {
return new query_1.SingleTypeQuery(this.config, this.queryService, typeCodename);
};
/**
* Gets query for multiple items
*/
DeliveryClient.prototype.items = function () {
return new query_1.MultipleItemQuery(this.config, this.queryService);
};
/**
* Gets query for single item
* @param {string} codename - Codename of item to fetch
*/
DeliveryClient.prototype.item = function (codename) {
return new query_1.SingleItemQuery(this.config, this.queryService, codename);
};
/**
* Gets query for single taxonomy
* @param {string} codename - Codename of taxonomy to fetch
*/
DeliveryClient.prototype.taxonomy = function (codename) {
return new query_1.TaxonomyQuery(this.config, this.queryService, codename);
};
/**
* Gets query for multiple taxonomies
*/
DeliveryClient.prototype.taxonomies = function () {
return new query_1.TaxonomiesQuery(this.config, this.queryService);
};
/**
* Gets query for an element within a type
* @param {string} typeCodename - Codename of the type
* @param {string} elementCodename - Codename of the element
*/
DeliveryClient.prototype.element = function (typeCodename, elementCodename) {
return new query_1.ElementQuery(this.config, this.queryService, typeCodename, elementCodename);
};
return DeliveryClient;
}());
exports.DeliveryClient = DeliveryClient;
/***/ }),
/***/ "./lib/client/index.ts":
/*!*****************************!*\
!*** ./lib/client/index.ts ***!
\*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(__webpack_require__(/*! ./delivery-client */ "./lib/client/delivery-client.ts"));
/***/ }),
/***/ "./lib/config/default-collision-resolver.ts":
/*!**************************************************!*\
!*** ./lib/config/default-collision-resolver.ts ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultCollissionResolver = function (elementName) { return "_" + elementName; };
/***/ }),
/***/ "./lib/config/index.ts":
/*!*****************************!*\
!*** ./lib/config/index.ts ***!
\*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(__webpack_require__(/*! ./default-collision-resolver */ "./lib/config/default-collision-resolver.ts"));
/***/ }),
/***/ "./lib/elements/element-decorators.ts":
/*!********************************************!*\
!*** ./lib/elements/element-decorators.ts ***!
\********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
__webpack_require__(/*! reflect-metadata */ "./node_modules/reflect-metadata/Reflect.js");
var ElementDecorators;
(function (ElementDecorators) {
var codenameMetadataKey = Symbol('codename');
var generateKey = function (name) { return codenameMetadataKey.toString() + ":" + name; };
/**
* Get the metadata entry saved by the decorator
* @param target - object instance
* @param elementName - Element name (code name from Kentico Cloud)
*/
function getPropertyName(target, elementName) {
return Reflect.getMetadata(generateKey(elementName), target);
}
ElementDecorators.getPropertyName = getPropertyName;
/**
* Decorator - creates metadata entry for the @target - Value is the property name.
* This will then be retrieved when resolving the element name
* @param value - Element code name
*/
function codename(value) {
return function (target, propertyKey) {
Reflect.defineMetadata(generateKey(value), propertyKey, target);
};
}
ElementDecorators.codename = codename;
})(ElementDecorators = exports.ElementDecorators || (exports.ElementDecorators = {}));
/***/ }),
/***/ "./lib/elements/element-models.ts":
/*!****************************************!*\
!*** ./lib/elements/element-models.ts ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ElementModels;
(function (ElementModels) {
var AssetModel = /** @class */ (function () {
/**
* Represents Assets element
* @constructor
* @param {ElementContracts.IAssetContract} rawAsset - Raw asset contract
*/
function AssetModel(contract) {
this.contract = contract;
this.name = contract.name;
this.type = contract.type;
this.size = contract.size,
this.description = contract.description,
this.url = contract.url;
this.width = contract.width;
this.height = contract.height;
}
return AssetModel;
}());
ElementModels.AssetModel = AssetModel;
var MultipleChoiceOption = /** @class */ (function () {
/**
* Represents Kentico Cloud's multiple choice option
* @constructor
* @param {string} name - Name of the option
* @param {string} codename - Codename of the option
*/
function MultipleChoiceOption(name, codename) {
this.name = name;
this.codename = codename;
}
return MultipleChoiceOption;
}());
ElementModels.MultipleChoiceOption = MultipleChoiceOption;
var TaxonomyTerm = /** @class */ (function () {
/**
* Represents taxonomy term
* @constructor
* @param {string} name - Name of the taxonomy option
* @param {string} codename - Codename of the option
*/
function TaxonomyTerm(name, codename) {
this.name = name;
this.codename = codename;
}
return TaxonomyTerm;
}());
ElementModels.TaxonomyTerm = TaxonomyTerm;
})(ElementModels = exports.ElementModels || (exports.ElementModels = {}));
/***/ }),
/***/ "./lib/elements/element-type.ts":
/*!**************************************!*\
!*** ./lib/elements/element-type.ts ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Represents codename of Kentico Cloud element types
*/
var ElementType;
(function (ElementType) {
ElementType["Text"] = "text";
ElementType["Number"] = "number";
ElementType["ModularContent"] = "modular_content";
ElementType["Asset"] = "asset";
ElementType["DateTime"] = "date_time";
ElementType["RichText"] = "rich_text";
ElementType["MultipleChoice"] = "multiple_choice";
ElementType["UrlSlug"] = "url_slug";
ElementType["Taxonomy"] = "taxonomy";
ElementType["Custom"] = "custom";
ElementType["Unknown"] = "unknown";
})(ElementType = exports.ElementType || (exports.ElementType = {}));
/***/ }),
/***/ "./lib/elements/elements.ts":
/*!**********************************!*\
!*** ./lib/elements/elements.ts ***!
\**********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var element_models_1 = __webpack_require__(/*! ./element-models */ "./lib/elements/element-models.ts");
var element_type_1 = __webpack_require__(/*! ./element-type */ "./lib/elements/element-type.ts");
var Elements;
(function (Elements) {
var BaseElement = /** @class */ (function () {
function BaseElement(data) {
this.rawData = data.elementWrapper.rawElement;
this.name = data.elementWrapper.rawElement.name;
this.type = data.elementType;
}
return BaseElement;
}());
var TextElement = /** @class */ (function (_super) {
__extends(TextElement, _super);
/**
* Represents text element of Kentico Cloud item
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function TextElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.Text,
elementWrapper: elementWrapper
}) || this;
_this.value = elementWrapper.rawElement.value;
return _this;
}
return TextElement;
}(BaseElement));
Elements.TextElement = TextElement;
var LinkedItemsElement = /** @class */ (function (_super) {
__extends(LinkedItemsElement, _super);
/**
* Represents text element of Kentico Cloud item
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
* @param {IContentItem} mappedLinkedItems - Array of mapped linked items
*/
function LinkedItemsElement(elementWrapper, mappedLinkedItems) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.ModularContent,
elementWrapper: elementWrapper
}) || this;
_this.itemCodenames = elementWrapper.rawElement.value;
_this.value = mappedLinkedItems;
return _this;
}
return LinkedItemsElement;
}(BaseElement));
Elements.LinkedItemsElement = LinkedItemsElement;
var MultipleChoiceElement = /** @class */ (function (_super) {
__extends(MultipleChoiceElement, _super);
/**
* Represents multiple choice element of Kentico Cloud item
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function MultipleChoiceElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.MultipleChoice,
elementWrapper: elementWrapper
}) || this;
/**
* Multiple choice options
*/
_this.value = [];
if (elementWrapper.rawElement.value && Array.isArray(elementWrapper.rawElement.value)) {
for (var _i = 0, _a = elementWrapper.rawElement.value; _i < _a.length; _i++) {
var valueItem = _a[_i];
var rawOption = valueItem;
if (rawOption && rawOption.name && rawOption.codename) {
_this.value.push(new element_models_1.ElementModels.MultipleChoiceOption(rawOption.name, rawOption.codename));
}
}
}
return _this;
}
return MultipleChoiceElement;
}(BaseElement));
Elements.MultipleChoiceElement = MultipleChoiceElement;
var DateTimeElement = /** @class */ (function (_super) {
__extends(DateTimeElement, _super);
/**
* Represents date time element of Kentico Cloud item
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function DateTimeElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.DateTime,
elementWrapper: elementWrapper
}) || this;
/**
* Type of the element
*/
_this.type = element_type_1.ElementType.DateTime;
if (elementWrapper.rawElement.value) {
_this.value = new Date(elementWrapper.rawElement.value);
}
else {
_this.value = null;
}
return _this;
}
return DateTimeElement;
}(BaseElement));
Elements.DateTimeElement = DateTimeElement;
var RichTextElement = /** @class */ (function (_super) {
__extends(RichTextElement, _super);
/**
* Represents rich text element of Kentico Cloud item
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
* @param {string[]} linkedItemCodenames - Array of linked codenames
*/
function RichTextElement(elementWrapper, linkedItemCodenames, data) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.RichText,
elementWrapper: elementWrapper
}) || this;
/**
* Type of the element
*/
_this.type = element_type_1.ElementType.RichText;
_this.linkedItemCodenames = linkedItemCodenames;
_this.resolveRichTextFunc = data.resolveRichTextFunc;
_this.links = data.links;
_this.images = data.images;
_this.value = elementWrapper.rawElement.value;
return _this;
}
RichTextElement.prototype.resolveData = function () {
if (this.resolvedData) {
return this.resolvedData;
}
this.resolvedData = this.resolveRichTextFunc();
return this.resolvedData;
};
RichTextElement.prototype.resolveHtml = function () {
if (this.resolvedData) {
return this.resolvedData.html;
}
this.resolvedData = this.resolveRichTextFunc();
return this.resolvedData.html;
};
return RichTextElement;
}(BaseElement));
Elements.RichTextElement = RichTextElement;
var NumberElement = /** @class */ (function (_super) {
__extends(NumberElement, _super);
/**
* Represents number element of Kentico Cloud item
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function NumberElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.Number,
elementWrapper: elementWrapper
}) || this;
if (elementWrapper.rawElement.value === 0) {
_this.value = 0;
}
else if (elementWrapper.rawElement.value) {
_this.value = +elementWrapper.rawElement.value;
}
else {
_this.value = null;
}
return _this;
}
return NumberElement;
}(BaseElement));
Elements.NumberElement = NumberElement;
var AssetsElement = /** @class */ (function (_super) {
__extends(AssetsElement, _super);
/**
* Represents asset element of Kentico Cloud item
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function AssetsElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.Asset,
elementWrapper: elementWrapper
}) || this;
/**
* List of assets used in this element
*/
_this.value = [];
if (elementWrapper.rawElement.value && Array.isArray(elementWrapper.rawElement.value)) {
var rawAssets = elementWrapper.rawElement.value;
for (var _i = 0, rawAssets_1 = rawAssets; _i < rawAssets_1.length; _i++) {
var rawAsset = rawAssets_1[_i];
_this.value.push(new element_models_1.ElementModels.AssetModel(rawAsset));
}
}
return _this;
}
return AssetsElement;
}(BaseElement));
Elements.AssetsElement = AssetsElement;
var UrlSlugElement = /** @class */ (function (_super) {
__extends(UrlSlugElement, _super);
/**
* Represents URL slug element of Kentico Cloud item
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function UrlSlugElement(elementWrapper, data) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.UrlSlug,
elementWrapper: elementWrapper
}) || this;
_this.value = elementWrapper.rawElement.value;
_this.resolveLinkFunc = data.resolveLinkFunc;
return _this;
}
UrlSlugElement.prototype.resolveUrl = function () {
if (this.resolvedUrl) {
return this.resolvedUrl;
}
this.resolvedUrl = this.resolveLinkFunc();
return this.resolvedUrl;
};
return UrlSlugElement;
}(BaseElement));
Elements.UrlSlugElement = UrlSlugElement;
var TaxonomyElement = /** @class */ (function (_super) {
__extends(TaxonomyElement, _super);
/**
* Represents number element of Kentico Cloud item
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function TaxonomyElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.Taxonomy,
elementWrapper: elementWrapper
}) || this;
/**
* List of assigned taxonomy terms
*/
_this.value = [];
if (elementWrapper.rawElement.taxonomy_group) {
_this.taxonomyGroup = elementWrapper.rawElement.taxonomy_group;
}
else {
console.warn("Taxonomy group for element '" + elementWrapper.rawElement.name + "' is invalid. Assigning empty string");
_this.taxonomyGroup = '';
}
if (elementWrapper.rawElement.value && Array.isArray(elementWrapper.rawElement.value)) {
var rawTerms = elementWrapper.rawElement.value;
for (var _i = 0, rawTerms_1 = rawTerms; _i < rawTerms_1.length; _i++) {
var rawTerm = rawTerms_1[_i];
_this.value.push(new element_models_1.ElementModels.TaxonomyTerm(rawTerm.name, rawTerm.codename));
}
}
return _this;
}
return TaxonomyElement;
}(BaseElement));
Elements.TaxonomyElement = TaxonomyElement;
var UnknownElement = /** @class */ (function (_super) {
__extends(UnknownElement, _super);
function UnknownElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.Unknown,
elementWrapper: elementWrapper
}) || this;
_this.value = elementWrapper.rawElement.value;
return _this;
}
return UnknownElement;
}(BaseElement));
Elements.UnknownElement = UnknownElement;
var CustomElement = /** @class */ (function (_super) {
__extends(CustomElement, _super);
function CustomElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.Custom,
elementWrapper: elementWrapper
}) || this;
_this.value = elementWrapper.rawElement.value;
return _this;
}
return CustomElement;
}(BaseElement));
Elements.CustomElement = CustomElement;
var DefaultCustomElement = /** @class */ (function (_super) {
__extends(DefaultCustomElement, _super);
/**
* Represents base custom element
* @constructor
* @param {ElementModels.IElementWrapper} elementWrapper - Element data
*/
function DefaultCustomElement(elementWrapper) {
var _this = _super.call(this, {
elementType: element_type_1.ElementType.Custom,
elementWrapper: elementWrapper
}) || this;
_this.value = elementWrapper.rawElement.value;
return _this;
}
return DefaultCustomElement;
}(BaseElement));
Elements.DefaultCustomElement = DefaultCustomElement;
})(Elements = exports.Elements || (exports.Elements = {}));
/***/ }),
/***/ "./lib/elements/index.ts":
/*!*******************************!*\
!*** ./lib/elements/index.ts ***!
\*******************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(__webpack_require__(/*! ./element-decorators */ "./lib/elements/element-decorators.ts"));
__export(__webpack_require__(/*! ./element-models */ "./lib/elements/element-models.ts"));
__export(__webpack_require__(/*! ./element-type */ "./lib/elements/element-type.ts"));
__export(__webpack_require__(/*! ./elements */ "./lib/elements/elements.ts"));
/***/ }),
/***/ "./lib/images/image-url-builder.ts":
/*!*****************************************!*\
!*** ./lib/images/image-url-builder.ts ***!
\*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var models_1 = __webpack_require__(/*! ../models */ "./lib/models/index.ts");
var image_models_1 = __webpack_require__(/*! ./image.models */ "./lib/images/image.models.ts");
var ImageUrlBuilder = /** @class */ (function () {
function ImageUrlBuilder(
/** Image url */
imageUrl) {
this.imageUrl = imageUrl;
this.queryParams = [];
}
/**
* Used to add custom parameters to existing query string
* @param param Parameter name
* @param value Value
*/
ImageUrlBuilder.prototype.withCustomParam = function (param, value) {
this.queryParams.push(new models_1.Parameters.CustomParameter(param, value));
return this;
};
/**
* The dpr transformation is used to serve correctly sized images for devices that expose a device pixel ratio.
* @param dpr A required DPR value.
*/
ImageUrlBuilder.prototype.withDpr = function (dpr) {
this.queryParams.push(new models_1.Parameters.QueryParameter('dpr', dpr.toString()));
return this;
};
/**
* Applies the crop transformation that removes pixels from an image outside the specified rectangle.
* @param x Rectangle offset on the X-axis.
* @param y Rectangle offset on the Y-axis.
* @param width Rectangle width.
* @param height Rectangle height.
*/
ImageUrlBuilder.prototype.withRectangleCrop = function (x, y, width, height) {
this.queryParams.push(new models_1.Parameters.QueryParameter('rect', [x, y, width, height].join(',')));
return this;
};
/**
* Applies the crop transformation centered on the specified point.
* @param x Focal point X coordinate.
* @param y Focal point Y coordinate.
* @param z Zoom of the transformation.
*/
ImageUrlBuilder.prototype.withFocalPointCrop = function (x, y, z) {
this.withFitMode(image_models_1.ImageFitModeEnum.Crop);
this.queryParams.push(new models_1.Parameters.QueryParameter('crop', 'focalpoint'));
this.queryParams.push(new models_1.Parameters.QueryParameter('fp-x', x.toString()));
this.queryParams.push(new models_1.Parameters.QueryParameter('fp-y', y.toString()));
this.queryParams.push(new models_1.Parameters.QueryParameter('fp-z', z.toString()));
return this;
};
/**
* Enables WebP image support.
* @param compression Specifies the lossy or lossless compression.
*/
ImageUrlBuilder.prototype.withAutomaticFormat = function (backupFormat) {
this.queryParams.push(new models_1.Parameters.QueryParameter('auto', image_models_1.ImageFormatEnum.Webp));
if (backupFormat) {
this.withFormat(backupFormat);
}
return this;
};
/**
* The fit transformation controls how the output image is fit to its target dimensions after resizing.
* @param fitMode Specifies the mode for the transformation.
*/
ImageUrlBuilder.prototype.withFitMode = function (fitMode) {
this.queryParams.push(new models_1.Parameters.QueryParameter('fit', fitMode));
return this;
};
/**
* Specifies the compression mode for the WebP image transformations.
* @param compression Specifies the lossy or lossless compression.
*/
ImageUrlBuilder.prototype.withCompression = function (compression) {
this.queryParams.push(new models_1.Parameters.QueryParameter('lossless', compression === image_models_1.ImageCompressionEnum.Lossless ? 'true' : 'false'));
return this;
};
/**
* Applies the quality parameter that enables control over the compression level for lossy file-formatted images.
* @param quality The required quality of the image.
*/
ImageUrlBuilder.prototype.withQuality = function (quality) {
this.queryParams.push(new models_1.Parameters.QueryParameter('q', quality.toString()));
return this;
};
/**
* The format transformation enables the source image to be converted (a.k.a., "transcoded") from
* one encoded format to another. This is very useful when the source image has been saved in a sub-optimal
* file format that hinders performance.
* @param format Target image file type.
*/
ImageUrlBuilder.prototype.withFormat = function (format) {
this.queryParams.push(new models_1.Parameters.QueryParameter('fm', format));
return this;
};
/**
* The height transformation enables dynamic height resizing based on pixels and percent values.
* @param height A required image height.
*/
ImageUrlBuilder.prototype.withHeight = function (height) {
this.queryParams.push(new models_1.Parameters.QueryParameter('h', height.toString()));
return this;
};
/**
* The width transformation enables dynamic width resizing based on pixels and percent values.
* @param width A required image width.
*/
ImageUrlBuilder.prototype.withWidth = function (width) {
this.queryParams.push(new models_1.Parameters.QueryParameter('w', width.toString()));
return this;
};
/**
* Gets params applied to image
*/
ImageUrlBuilder.prototype.getParams = function () {
return this.queryParams;
};
/**
* Gets query string part of the image URL
*/
ImageUrlBuilder.prototype.getQueryString = function () {
var query = '';
this.queryParams.forEach(function (filter) {
if (query.indexOf('?') > -1) {
query = query + '&' + filter.getParam() + '=' + filter.getParamValue();
}
else {
query = query + '?' + filter.getParam() + '=' + filter.getParamValue();
}
});
return query;
};
/**
* Gets full transformed url to image with parameters
*/
ImageUrlBuilder.prototype.getUrl = function () {
return this.imageUrl + this.getQueryString();
};
return ImageUrlBuilder;
}());
exports.ImageUrlBuilder = ImageUrlBuilder;
/***/ }),
/***/ "./lib/images/image.models.ts":
/*!************************************!*\
!*** ./lib/images/image.models.ts ***!
\************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ImageFitModeEnum;
(function (ImageFitModeEnum) {
ImageFitModeEnum["Clip"] = "clip";
ImageFitModeEnum["Scale"] = "scale";
ImageFitModeEnum["Crop"] = "crop";
})(ImageFitModeEnum = exports.ImageFitModeEnum || (exports.ImageFitModeEnum = {}));
var ImageFormatEnum;
(function (ImageFormatEnum) {
ImageFormatEnum["Gif"] = "gif";
ImageFormatEnum["Png"] = "png";
ImageFormatEnum["Png8"] = "png8";
ImageFormatEnum["Jpg"] = "jpg";
ImageFormatEnum["Pjpg"] = "pjpg";
ImageFormatEnum["Webp"] = "webp";
})(ImageFormatEnum = exports.ImageFormatEnum || (exports.ImageFormatEnum = {}));
var ImageCompressionEnum;
(function (ImageCompressionEnum) {
/**
* Allows the original data to be perfectly reconstructed from the compressed data.
*/
ImageCompressionEnum[ImageCompressionEnum["Lossless"] = 0] = "Lossless";
/**
* Irreversible compression where partial data are discarded.
*/
ImageCompressionEnum[ImageCompressionEnum["Lossy"] = 1] = "Lossy";
})(ImageCompressionEnum = exports.ImageCompressionEnum || (exports.ImageCompressionEnum = {}));
/***/ }),
/***/ "./lib/images/index.ts":
/*!*****************************!*\
!*** ./lib/images/index.ts ***!
\*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(__webpack_require__(/*! ./image-url-builder */ "./lib/images/image-url-builder.ts"));
__export(__webpack_require__(/*! ./image.models */ "./lib/images/image.models.ts"));
/***/ }),
/***/ "./lib/index.ts":
/*!**********************!*\
!*** ./lib/index.ts ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
// Public API
__export(__webpack_require__(/*! ./client */ "./lib/client/index.ts"));
__export(__webpack_require__(/*! ./sdk-info.generated */ "./lib/sdk-info.generated.ts"));
__export(__webpack_require__(/*! ./config */ "./lib/config/index.ts"));
__export(__webpack_require__(/*! ./elements */ "./lib/elements/index.ts"));
__export(__webpack_require__(/*! ./parser */ "./lib/parser/index.ts"));
__export(__webpack_require__(/*! ./resolvers */ "./lib/resolvers/index.ts"));
__export(__webpack_require__(/*! ./services */ "./lib/services/index.ts"));
__export(__webpack_require__(/*! ./mappers */ "./lib/mappers/index.ts"));
__export(__webpack_require__(/*! ./query */ "./lib/query/index.ts"));
__export(__webpack_require__(/*! ./models */ "./lib/models/index.ts"));
__export(__webpack_require__(/*! ./images */ "./lib/images/index.ts"));
/***/ }),
/***/ "./lib/mappers/element.mapper.ts":
/*!***************************************!*\
!*** ./lib/mappers/element.mapper.ts ***!
\***************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var kentico_cloud_core_1 = __webpack_require__(/*! kentico-cloud-core */ "./node_modules/kentico-cloud-core/_commonjs/index.js");
var config_1 = __webpack_require__(/*! ../config */ "./lib/config/index.ts");
var elements_1 = __webpack_require__(/*! ../elements */ "./lib/elements/index.ts");
var models_1 = __webpack_require__(/*! ../models */ "./lib/models/index.ts");
var resolvers_1 = __webpack_require__(/*! ../resolvers */ "./lib/resolvers/index.ts");
var ElementMapper = /** @class */ (function () {
function ElementMapper(config, richTextHtmlParser) {
this.config = config;
this.richTextHtmlParser = richTextHtmlParser;
this.defaultLinkedItemWrapperTag = 'p';
this.defaultLinkedItemWrapperClasses = ['kc-linked-item-wrapper'];
}
/**
* Maps all element in given content item and returns strongly typed content item based on the resolver specified
* in DeliveryClientConfig
*/
ElementMapper.prototype.mapElements = function (data) {
var _this = this;
// return processed item if possible (to avoid infinite recursion)
var processedItem = this.getProcessedItem(data.item.system.codename, data.processedItems);
if (processedItem) {
// item was already resolved, return it
return {
item: processedItem,
processedItems: data.processedItems,
preparedItems: data.preparedItems,
processingStartedForCodenames: data.processingStartedForCodenames
};
}
var elementCodenames = Object.getOwnPropertyNames(data.item.elements);
var itemInstance = resolvers_1.stronglyTypedResolver.createItemInstance(data.item.system.type, {
item: data.item,
modularContent: data.modularContent
}, this.config.typeResolvers || []);
if (!data.preparedItems) {
data.preparedItems = {};
}
// add to prepared items
data.preparedItems[data.item.system.codename] = itemInstance;
elementCodenames.forEach(function (elementCodename) {
if (!itemInstance) {
throw Error("Item instance was not initiazed correctly.");
}
var elementMap = _this.resolveElementMap(itemInstance, elementCodename);
var elementWrapper = {
contentItemSystem: data.item.system,
rawElement: data.item.elements[elementCodename],
propertyName: elementMap.resolvedName,
};
if (elementMap.shouldMapElement) {
var mappedElement = _this.mapElement({
elementWrapper: elementWrapper,
item: itemInstance,
modularContent: data.modularContent,
preparedItems: data.preparedItems,
processingStartedForCodenames: data.processingStartedForCodenames,
processedItems: data.processedItems,
queryConfig: data.queryConfig
});
// set mapped element to item instance
itemInstance[elementMap.resolvedName] = mappedElement;
}
});
return {
item: itemInstance,
processedItems: data.processedItems,
preparedItems: data.preparedItems,
processingStartedForCodenames: data.processingStartedForCodenames
};
};
ElementMapper.prototype.mapElement = function (data) {
var elementType = kentico_cloud_core_1.enumHelper.getEnumFromValue(elements_1.ElementType, data.elementWrapper.rawElement.type);
if (elementType) {
if (elementType === elements_1.ElementType.ModularContent) {
return this.mapLinkedItemsElement({
elementWrapper: data.elementWrapper,
modularContent: data.modularContent,
preparedItems: data.preparedItems,
processingStartedForCodenames: data.processingStartedForCodenames,
processedItems: data.processedItems,
queryConfig: data.queryConfig
});
}
if (elementType === elements_1.ElementType.Text) {
return this.mapTextElement(data.elementWrapper);
}
if (elementType === elements_1.ElementType.Asset) {
return this.mapAssetsElement(data.elementWrapper);
}
if (elementType === elements_1.ElementType.Number) {
return this.mapNumberElement(data.elementWrapper);
}
if (elementType === elements_1.ElementType.MultipleChoice) {
return this.mapMultipleChoiceElement(data.elementWrapper);
}
if (elementType === elements_1.ElementType.DateTime) {
return this.mapDateTimeElement(data.elementWrapper);
}
if (elementType === elements_1.ElementType.RichText) {
return this.mapRichTextElement(data.item, data.elementWrapper, data.modularContent, data.queryConfig, data.processedItems, data.processingStartedForCodenames, data.preparedItems);
}
if (elementType === elements_1.ElementType.UrlSlug) {
return this.mapUrlSlugElement(data.elementWrapper, data.item, data.queryConfig);
}
if (elementType === elements_1.ElementType.Taxonomy) {
return this.mapTaxonomyElement(data.elementWrapper);
}
if (elementType === elements_1.ElementType.Custom) {
return this.mapCustomElement(data.elementWrapper);
}
}
console.warn("Could not map element '" + data.elementWrapper.rawElement.name + "' of type '" + data.elementWrapper.rawElement.type + "'. Returning unknown element instead.");
return this.mapUnknowElement(data.elementWrapper);
};
ElementMapper.prototype.mapRichTextElement = function (item, elementWrapper, modularContent, queryConfig, processedItems, processingStartedForCodenames, preparedItems) {
var _this = this;
// get all linked items nested in rich text
var richTextLinkedItems = [];
var rawElement = elementWrapper.rawElement;
if (rawElement.modular_content) {
if (Array.isArray(rawElement.modular_content)) {
rawElement.modular_content.forEach(function (codename) {
// get linked item and check if it exists (it might not be included in response due to 'Depth' parameter)
var rawItem = modularContent[codename];
// first try to get existing item
var existingLinkedItem = _this.getOrSaveLinkedItemForElement(codename, rawElement, queryConfig, modularContent, processedItems, processingStartedForCodenames, preparedItems);
if (existingLinkedItem) {
// item was found, add it to linked items
richTextLinkedItems.push(existingLinkedItem);
}
else {
var throwErrorForMissingLinkedItems = false;
// check if errors should be thrown for missing linked items
if (queryConfig.throwErrorForMissingLinkedItems === false || queryConfig.throwErrorForMissingLinkedItems === true) {
// variable is a boolean
throwErrorForMissingLinkedItems = queryConfig.throwErrorForMissingLinkedItems;
}
// throw error if raw item is not available and errors are not skipped
if (!rawItem) {
var msg = "Mapping RichTextElement element '" + rawElement.name + "' failed because referenced linked item with codename '" + codename + "' could not be found in Delivery response.\n Increasing 'depth' parameter may solve this issue as it will include nested items. Alternatively you may disable 'throwErrorForMissingLinkedItems' in your query";
if (throwErrorForMissingLinkedItems) {
throw Error(msg);
}
}
// item was not found or not yet resolved
if (rawItem) {
var mappedLinkedItemResult = _this.mapElements({
item: rawItem,
modularContent: modularContent,
preparedItems: preparedItems,
processingStartedForCodenames: processingStartedForCodenames,
processedItems: processedItems,
queryConfig: queryConfig
});
// add mapped linked item to result
if (mappedLinkedItemResult) {
richTextLinkedItems.push(mappedLinkedItemResult.item);
}
}
}
});
}
}
// extract and map links & images
var links = this.mapRichTextLinks(rawElement.links);
var images = this.mapRichTextImages(rawElement.images);
return new elements_1.Elements.RichTextElement(elementWrapper, rawElement.modular_content, {
links: links,
resolveRichTextFunc: function () { return resolvers_1.richTextResolver.resolveData(item.system.codename, rawElement.value, elementWrapper.propertyName, {
enableAdvancedLogging: _this.config.isDeveloperMode ? _this.config.isDeveloperMode : false,
images: images,
richTextHtmlParser: _this.richTextHtmlParser,
getLinkedItem: function (codename) { return _this.getOrSaveLinkedItemForElement(codename, rawElement, queryConfig, modularContent, processedItems, processingStartedForCodenames, preparedItems); },
links: links,
queryConfig: queryConfig,
linkedItemWrapperTag: _this.config.linkedItemResolver && _this.config.linkedItemResolver.linkedItemWrapperTag
? _this.config.linkedIt