UNPKG

kentico-cloud-delivery

Version:

Official Kentico Cloud Delivery SDK

1,159 lines (1,091 loc) 698 kB
(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