{"version":3,"file":"channel-e8be2d79.mjs","sources":["../../../node_modules/lodash-es/_baseHas.js","../../../node_modules/lodash-es/isSymbol.js","../../../node_modules/lodash-es/_isKey.js","../../../node_modules/lodash-es/memoize.js","../../../node_modules/lodash-es/_memoizeCapped.js","../../../node_modules/lodash-es/_stringToPath.js","../../../node_modules/lodash-es/_arrayMap.js","../../../node_modules/lodash-es/_baseToString.js","../../../node_modules/lodash-es/toString.js","../../../node_modules/lodash-es/_castPath.js","../../../node_modules/lodash-es/_toKey.js","../../../node_modules/lodash-es/_hasPath.js","../../../node_modules/lodash-es/has.js","../../admin-sdk/es/_internals/utils.js","../../admin-sdk/es/_internals/privileges/missing-privileges-error.js","../../admin-sdk/es/_internals/serializer/function-serializer.js","../../admin-sdk/es/_internals/serializer/criteria-serializer.js","../../admin-sdk/es/_internals/data/Entity.js","../../admin-sdk/es/_internals/serializer/entity-serializer.js","../../admin-sdk/es/_internals/data/EntityCollection.js","../../admin-sdk/es/_internals/serializer/entity-collection-serializer.js","../../admin-sdk/es/_internals/error-handling/HandleError.js","../../admin-sdk/es/_internals/serializer/handle-error-serializer.js","../../../node_modules/lodash-es/cloneDeepWith.js","../../../node_modules/lodash-es/_baseGet.js","../../../node_modules/lodash-es/get.js","../../../node_modules/lodash-es/_baseSet.js","../../../node_modules/lodash-es/set.js","../../admin-sdk/es/_internals/serializer/missing-priviliges-error-serializer.js","../../admin-sdk/es/_internals/serializer/index.js","../../admin-sdk/es/_internals/error-handling/error-factory.js","../../admin-sdk/es/_internals/validator/index.js","../../admin-sdk/es/_internals/data/selectData.js","../../admin-sdk/es/_internals/sdkVersion.js","../../admin-sdk/es/channel.js"],"sourcesContent":["/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n  return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nexport default stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nexport default arrayMap;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n  return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","import has from 'lodash-es/has';\nexport function generateUniqueId() {\n    return String(Date.now().toString(36) + Math.random().toString(36).substr(2));\n}\n/* eslint-disable */\nexport function isObject(value) {\n    return value !== null && typeof value === 'object';\n}\nexport function getLocationId() {\n    const params = new URLSearchParams(window.location.search);\n    return params.get('location-id');\n}\nexport function getWindowSrc() {\n    const location = window.location;\n    const urlObject = new URL(location.pathname, location.origin);\n    return urlObject.toString();\n}\nexport function hasType(type, obj) {\n    return isObject(obj) && obj.__type__ && obj.__type__ === type;\n}\nexport function hasOwnProperty(obj, path) {\n    return has(obj, path);\n}\nexport function traverseObject(traversableObject, processor, previousKey = 'root') {\n    for (let index in traversableObject) {\n        const currentEntry = traversableObject[index];\n        processor.apply(this, [traversableObject, index, currentEntry, previousKey]);\n        if (isObject(currentEntry)) {\n            let pk = previousKey + '.' + index;\n            traverseObject(currentEntry, processor, pk);\n        }\n    }\n}\nexport function isPrimitive(value) {\n    return value !== Object(value) || value === null || value === undefined;\n}\n/**\n * Removes the root prefix from a path\n */\nexport function removeRoot(path) {\n    if (typeof path !== 'string') {\n        return path;\n    }\n    return path.replace(/^root\\./, '');\n}\nexport function findExtensionByBaseUrl(baseUrl) {\n    if (typeof baseUrl !== 'string') {\n        return undefined;\n    }\n    if (baseUrl === '') {\n        return undefined;\n    }\n    const comparedBaseUrl = new URL(baseUrl);\n    /*\n   * Check if baseUrl is the same as the current window location\n   * If so, return the dummy extension with all privileges available\n   */\n    if (comparedBaseUrl.origin === window.location.origin) {\n        return {\n            baseUrl: comparedBaseUrl.hostname,\n            permissions: {\n                additional: ['*'],\n                create: ['*'],\n                read: ['*'],\n                update: ['*'],\n                delete: ['*'],\n            },\n        };\n    }\n    return Object.values(window._swsdk.adminExtensions)\n        .find((ext) => {\n        const extensionBaseUrl = new URL(ext.baseUrl);\n        return extensionBaseUrl.hostname === comparedBaseUrl.hostname;\n    });\n}\n//# sourceMappingURL=utils.js.map","export default class MissingPrivilegesError extends Error {\n    constructor(messageType, missingPrivileges) {\n        super(`Your app is missing the privileges ${missingPrivileges.join(', ')} for action \"${messageType}\".`);\n        Object.defineProperty(this, \"missingPrivileges\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"messageType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.missingPrivileges = missingPrivileges;\n        this.messageType = messageType;\n        // Set prototype explicitly\n        Object.setPrototypeOf(this, MissingPrivilegesError.prototype);\n    }\n    toJSON() {\n        return {\n            __type__: '__MissingPrivilegesError__',\n            __messageType__: this.messageType,\n            __data__: this.missingPrivileges,\n        };\n    }\n}\n//# sourceMappingURL=missing-privileges-error.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport { isObject, generateUniqueId } from '../utils';\n/* eslint-disable */\nconst FunctionSerializerFactory = ({ send, handle }) => {\n    // only available on sender side\n    const methodRegistry = {};\n    let isMethodHandlerStarted = false;\n    function startMethodHandler() {\n        if (isMethodHandlerStarted)\n            return;\n        isMethodHandlerStarted = true;\n        handle('__function__', ({ args, id }) => __awaiter(this, void 0, void 0, function* () {\n            return yield Promise.resolve(methodRegistry[id](...args));\n        }));\n    }\n    return {\n        name: 'function',\n        serialize: ({ value }) => {\n            if (typeof value === 'function') {\n                const id = generateUniqueId();\n                // add the method reference to the methodRegistry\n                methodRegistry[id] = value;\n                // start a general function listener which calls the method when the handler calls the method\n                startMethodHandler();\n                // replace function with a object containing the type and id\n                return {\n                    __type__: '__function__',\n                    id: id,\n                    origin: window.origin,\n                };\n            }\n        },\n        deserialize: ({ value, event }) => {\n            var _a;\n            // @ts-expect-error\n            const targetWindow = (_a = event === null || event === void 0 ? void 0 : event.source) !== null && _a !== void 0 ? _a : window;\n            // when object is containing a method wrapper\n            if (isObject(value)\n                && value['__type__']\n                && value['__type__'] === '__function__'\n                && typeof value['id'] === 'string') {\n                const id = value['id'];\n                const origin = value['origin'];\n                // convert wrapper to a callable method\n                return (...args) => {\n                    return send('__function__', {\n                        args: args,\n                        id: id,\n                    }, targetWindow, origin);\n                };\n            }\n        }\n    };\n};\nexport default FunctionSerializerFactory;\n//# sourceMappingURL=function-serializer.js.map","import { hasType } from '../utils';\nimport Criteria from '../../data/Criteria';\n/* eslint-disable */\nconst CriteriaSerializer = () => ({\n    name: 'criteria',\n    serialize: ({ value, customizerMethod, seen, path }) => {\n        if (value instanceof Criteria) {\n            return {\n                __type__: '__Criteria__',\n                data: customizerMethod(value.getCriteriaData(), seen, path),\n            };\n        }\n    },\n    deserialize: ({ value, customizerMethod }) => {\n        // When object is containing a criteria wrapper\n        if (hasType('__Criteria__', value) && typeof value['data'] === 'object') {\n            // The original values\n            const serializedData = value.data;\n            // Create new criteria object\n            const deserializedCriteria = new Criteria();\n            // Hydrate the criteria with the orignal values\n            deserializedCriteria.setPage(serializedData.page);\n            deserializedCriteria.setLimit(serializedData.limit);\n            deserializedCriteria.setTerm(serializedData.term);\n            if (serializedData.title !== null) {\n                deserializedCriteria.setTitle(serializedData.title);\n            }\n            // @ts-expect-error\n            serializedData.filters.forEach((filter) => {\n                deserializedCriteria.addFilter(filter);\n            });\n            deserializedCriteria.setIds(serializedData.ids);\n            // @ts-expect-error\n            serializedData.queries.forEach(({ query, score }) => {\n                deserializedCriteria.addQuery(query, score);\n            });\n            // @ts-expect-error\n            serializedData.associations.forEach((association) => {\n                // Associations need also to be deserialized\n                deserializedCriteria.associations.push(customizerMethod(association));\n            });\n            // @ts-expect-error\n            serializedData.postFilter.forEach((filter) => {\n                deserializedCriteria.addPostFilter(filter);\n            });\n            // @ts-expect-error\n            serializedData.sortings.forEach((sorting) => {\n                deserializedCriteria.addSorting(sorting);\n            });\n            // @ts-expect-error\n            serializedData.aggregations.forEach((aggregation) => {\n                deserializedCriteria.addAggregation(aggregation);\n            });\n            // @ts-expect-error\n            serializedData.grouping.forEach((group) => {\n                deserializedCriteria.addGrouping(group);\n            });\n            // @ts-expect-error\n            serializedData.fields.forEach((field) => {\n                deserializedCriteria.addFields(field);\n            });\n            // @ts-expect-error\n            serializedData.groupFields.forEach((groupField) => {\n                deserializedCriteria.addGroupField(groupField);\n            });\n            if (serializedData.includes) {\n                deserializedCriteria.addIncludes(serializedData.includes);\n            }\n            deserializedCriteria.setTotalCountMode(serializedData.totalCountMode);\n            // Return new Criteria object\n            return deserializedCriteria;\n        }\n    }\n});\nexport default CriteriaSerializer;\n//# sourceMappingURL=criteria-serializer.js.map","import cloneDeep from 'lodash-es/cloneDeep';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet setterMethod = (draft, property, value) => {\n    draft[property] = value;\n};\n/**\n * @internal\n */\nexport function assignSetterMethod(newSetterMethod) {\n    setterMethod = newSetterMethod;\n}\nclass EntityClass {\n    constructor(id, entityName, data, options = {}) {\n        var _a, _b;\n        Object.defineProperty(this, \"id\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_origin\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_entityName\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_draft\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_isDirty\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"_isNew\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.id = id;\n        this._origin = options.originData ? cloneDeep(options.originData) : cloneDeep(data);\n        this._entityName = entityName;\n        this._draft = data;\n        this._isDirty = (_a = options.isDirty) !== null && _a !== void 0 ? _a : false;\n        this._isNew = (_b = options.isNew) !== null && _b !== void 0 ? _b : false;\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const that = this;\n        // @ts-expect-error - the proxy contains the draft and the entity class\n        return new Proxy(this._draft, {\n            get(_, property) {\n                if (property in that._draft) {\n                    // @ts-expect-error - the proxy contains the draft and the entity class\n                    return that._draft[property];\n                }\n                // @ts-expect-error Its unsure if the property exists on the this alias\n                return that[property];\n            },\n            set(_, property, value) {\n                setterMethod(that._draft, property, value);\n                that._isDirty = true;\n                return true;\n            },\n        });\n    }\n    /**\n     * Identifier method for the entity class. Needed when some reactive data layer (Vue) converts the EntityClass to a\n     * plain object. With this identifier method we can (de)serialie it back to the correct entity class.\n     */\n    __identifier__() {\n        return 'Entity';\n    }\n    /**\n     * Marks the entity as new. New entities will be provided as create request to the server\n     */\n    markAsNew() {\n        this._isNew = true;\n    }\n    /**\n     * Allows to check if the entity is a new entity and should be provided as create request to the server\n     */\n    isNew() {\n        return this._isNew;\n    }\n    /**\n     * Allows to check if the entity changed\n     */\n    getIsDirty() {\n        return this._isDirty;\n    }\n    /**\n     * Allows access the origin entity value. The origin value contains the server values\n     */\n    getOrigin() {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return this._origin;\n    }\n    /**\n     * Allows to access the draft value. The draft value contains all local changes of the entity\n     */\n    getDraft() {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return this._draft;\n    }\n    /**\n     * Allows to access the entity name. The entity name is used as unique identifier `product`, `media`, ...\n     */\n    getEntityName() {\n        return this._entityName;\n    }\n}\nconst Entity = function Entity(id, entityName, data, options) {\n    return new EntityClass(id, entityName, data, options);\n};\nexport default Entity;\n//# sourceMappingURL=Entity.js.map","import { isObject, hasType } from '../utils';\nimport EntityClass from '../data/Entity';\n/* eslint-disable */\nconst EntitySerializerFactory = () => ({\n    name: 'entity',\n    serialize: ({ value, customizerMethod, seen, path }) => {\n        if (!isObject(value) || typeof value.__identifier__ !== 'function' || value.__identifier__() !== 'Entity') {\n            return;\n        }\n        return {\n            __type__: '__Entity__',\n            __id__: value.id,\n            __entityName__: value._entityName,\n            __isDirty__: value._isDirty,\n            __isNew__: value._isNew,\n            __origin__: customizerMethod(value._origin, seen, path),\n            __draft__: customizerMethod(value._draft, seen, path),\n        };\n    },\n    deserialize: ({ value, customizerMethod }) => {\n        if (hasType('__Entity__', value) && typeof value.__origin__ === 'object') {\n            return new EntityClass(value.__id__, value.__entityName__, customizerMethod(value.__draft__), {\n                originData: customizerMethod(value.__origin__),\n                isDirty: value.__isDirty__,\n                isNew: value.__isNew__,\n            });\n        }\n    },\n});\nexport default EntitySerializerFactory;\n//# sourceMappingURL=entity-serializer.js.map","import Criteria from '../../data/Criteria';\nexport default class EntityCollection extends Array {\n    constructor(source, entityName, context, criteria = null, entities = [], total = null, aggregations = null) {\n        super();\n        Object.defineProperty(this, \"entity\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"source\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"context\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"criteria\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"aggregations\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"total\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"first\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"last\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"remove\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"has\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"get\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"getAt\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"getIds\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"add\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"addAt\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"moveItem\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"__identifier__\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.entity = entityName;\n        this.source = source;\n        this.context = context;\n        this.criteria = criteria;\n        this.aggregations = aggregations;\n        this.total = total;\n        this.push(...entities);\n        /**\n         * Identifier method for the EntityCollection class. Needed when some reactive data layer (Vue) converts the EntityCollection to a\n         * plain array. With this identifier method we can (de)serialie it back to the correct EntityCollection.\n         */\n        this.__identifier__ = () => {\n            return 'EntityCollection';\n        };\n        /**\n         * Returns the first item of the collection.\n         * Returns null if the collection is empty\n         */\n        this.first = function firstEntityOfCollection() {\n            if (this.length <= 0) {\n                return null;\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return this[0];\n        };\n        /**\n         * Returns the last item of the collection.\n         * Returns null if the collection is empty.\n         */\n        this.last = function lastEntityOfCollection() {\n            if (this.length <= 0) {\n                return null;\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return this[this.length - 1];\n        };\n        /**\n         * Removes an entity from the collection. The entity is identified by the provided id\n         * Returns true if the entity removed, false if the entity wasn't found\n         */\n        this.remove = function removeEntityFromCollection(id) {\n            const itemIndex = this.findIndex(i => i.id === id);\n            if (itemIndex < 0) {\n                return false;\n            }\n            this.splice(itemIndex, 1);\n            return true;\n        };\n        /**\n         * Checks if the provided id is inside the collection\n         */\n        this.has = function hasEntityInCollection(id) {\n            return this.some(i => i.id === id);\n        };\n        /**\n         * Returns the entity for the provided id, null if the entity is not inside the collection\n         */\n        this.get = function getEntityByIdOfCollection(id) {\n            const item = this.find(i => i.id === id);\n            if (typeof item !== 'undefined') {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                return item;\n            }\n            return null;\n        };\n        /**\n         * Returns the entity at the given index position.\n         */\n        this.getAt = function getEntityAtIndexOfCollection(index) {\n            const item = this[index];\n            if (typeof item !== 'undefined') {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                return item;\n            }\n            return null;\n        };\n        /**\n         * Returns all ids of the internal entities\n         */\n        this.getIds = function getEntityIdsOfCollection() {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return this.map(i => i.id);\n        };\n        /**\n         * Adds a new item to the collection\n         */\n        this.add = function addEntityToCollection(e) {\n            this.push(e);\n        };\n        /**\n         * Adds an entity to the collection at the given position.\n         */\n        this.addAt = function addEntityAtIndexOfCollection(e, insertIndex) {\n            if (typeof insertIndex === 'undefined') {\n                this.add(e);\n                return;\n            }\n            this.splice(insertIndex, 0, e);\n        };\n        /**\n         * Move an item of the collection from an old index to a new index position.\n         */\n        this.moveItem = function moveEntityToNewIndexInCollection(oldIndex, newIndex = null) {\n            if (newIndex === null) {\n                newIndex = this.length;\n            }\n            if (oldIndex < 0 || oldIndex >= this.length) {\n                return null;\n            }\n            if (newIndex === oldIndex) {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                return this.getAt(oldIndex);\n            }\n            const movedItem = this.find((_, index) => index === oldIndex);\n            if (typeof movedItem === 'undefined') {\n                return null;\n            }\n            const remainingItems = this.filter((_, index) => index !== oldIndex);\n            const orderedItems = [\n                ...remainingItems.slice(0, newIndex),\n                movedItem,\n                ...remainingItems.slice(newIndex),\n            ];\n            this.splice(0, this.length, ...orderedItems);\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return movedItem;\n        };\n        /**\n         * Filters an EntityCollection and preserves its type. Resets criteria and total since it would mismatch.\n         */\n        // @ts-expect-error Overloads Array function therefore types mismatch\n        this.filter = function filterEntityCollection(callback, scope) {\n            const filtered = Object.getPrototypeOf(this)\n                .filter.call(this, callback, scope);\n            return new EntityCollection(this.source, this.entity, this.context, this.criteria, filtered, this.total, this.aggregations);\n        };\n    }\n    /**\n     * Returns a new collection from given one with\n     */\n    static fromCollection(collection) {\n        return new EntityCollection(collection.source, collection.entity, collection.context, collection.criteria === null ? collection.criteria : Criteria.fromCriteria(collection.criteria), collection, collection.total, collection.aggregations);\n    }\n}\n//# sourceMappingURL=EntityCollection.js.map","import { hasType } from '../utils';\nimport EntityCollection from '../data/EntityCollection';\n/* eslint-disable */\nconst EntityCollectionSerializerFactory = () => ({\n    name: 'entity-collection',\n    serialize: ({ value, customizerMethod, seen, path }) => {\n        if (value instanceof EntityCollection || ((value === null || value === void 0 ? void 0 : value.__identifier__) && value.__identifier__() === 'EntityCollection')) {\n            return customizerMethod({\n                __type__: '__EntityCollection__',\n                __source__: value.source,\n                __entityName__: value.entity,\n                __context__: value.context,\n                __criteria__: value.criteria,\n                __entities__: Array.from(value),\n                __total__: value.total,\n                __aggregations__: value.aggregations,\n            }, seen, path);\n        }\n    },\n    deserialize: ({ value, customizerMethod }) => {\n        if (hasType('__EntityCollection__', value)) {\n            return new EntityCollection(value.__source__, value.__entityName__, value.__context__, customizerMethod(value.__criteria__), customizerMethod(value.__entities__), value.__total__, value.__aggregations__);\n        }\n    },\n});\nexport default EntityCollectionSerializerFactory;\n//# sourceMappingURL=entity-collection-serializer.js.map","export default class HandleError extends Error {\n    constructor(msg, code) {\n        super(msg);\n        Object.defineProperty(this, \"code\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 500\n        });\n        if (!code) {\n            return;\n        }\n        this.code = code;\n    }\n    toJSON() {\n        return {\n            __type__: '__HandleError__',\n            __code__: this.code,\n            __message__: this.message,\n        };\n    }\n}\n//# sourceMappingURL=HandleError.js.map","import { hasType } from '../utils';\nimport HandleError from '../error-handling/HandleError';\n/* eslint-disable */\nconst HandleErrorSerializerFactory = () => ({\n    name: 'handle-error',\n    // serialize is empty because the error contains a toJSON function\n    serialize: () => { },\n    deserialize: ({ value }) => {\n        if (hasType('__HandleError__', value)) {\n            return new HandleError(value.__message__, value.__code__);\n        }\n    },\n});\nexport default HandleErrorSerializerFactory;\n//# sourceMappingURL=handle-error-serializer.js.map","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n *   if (_.isElement(value)) {\n *     return value.cloneNode(true);\n *   }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n  customizer = typeof customizer == 'function' ? customizer : undefined;\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n  if (!isObject(object)) {\n    return object;\n  }\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      lastIndex = length - 1,\n      nested = object;\n\n  while (nested != null && ++index < length) {\n    var key = toKey(path[index]),\n        newValue = value;\n\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return object;\n    }\n\n    if (index != lastIndex) {\n      var objValue = nested[key];\n      newValue = customizer ? customizer(objValue, key, nested) : undefined;\n      if (newValue === undefined) {\n        newValue = isObject(objValue)\n          ? objValue\n          : (isIndex(path[index + 1]) ? [] : {});\n      }\n    }\n    assignValue(nested, key, newValue);\n    nested = nested[key];\n  }\n  return object;\n}\n\nexport default baseSet;\n","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n  return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","import { hasType } from '../utils';\nimport MissingPrivilegesError from '../privileges/missing-privileges-error';\n/* eslint-disable */\nconst MissingPrivilegesErrorSerializer = () => ({\n    name: 'handle-error',\n    // serialize is empty because the error contains a toJSON function\n    serialize: () => { },\n    deserialize: ({ value }) => {\n        if (hasType('__MissingPrivilegesError__', value)) {\n            return new MissingPrivilegesError(value.__messageType__, value.__data__);\n        }\n    },\n});\nexport default MissingPrivilegesErrorSerializer;\n//# sourceMappingURL=missing-priviliges-error-serializer.js.map","import FunctionSerializer from './function-serializer';\nimport CriteriaSerializer from './criteria-serializer';\nimport EntitySerializer from './entity-serializer';\nimport EntityCollectionSerializer from './entity-collection-serializer';\nimport HandleErrorSerializer from './handle-error-serializer';\nimport cloneDeepWith from 'lodash-es/cloneDeepWith';\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\nimport MissingPrivilegesErrorSerializer from './missing-priviliges-error-serializer';\nimport { isPrimitive, traverseObject, removeRoot } from '../utils';\n/**\n * Collect all single serializer/deserializer. The first matching result\n * will be used as the customizer in cloneDeepWith\n */\nconst serializerFactories = [\n    CriteriaSerializer,\n    EntityCollectionSerializer,\n    EntitySerializer,\n    FunctionSerializer,\n    HandleErrorSerializer,\n    MissingPrivilegesErrorSerializer,\n];\n/**\n * The main serializer factory. It returns a general serializer/deserializer which combines\n * all single serializer\n */\nexport default function mainSerializerFactory(dependencies) {\n    const serializers = serializerFactories.map(serializerFactory => serializerFactory(dependencies));\n    function getSerializers() {\n        return serializers;\n    }\n    function getSerializerByName(name) {\n        var _a;\n        return (_a = serializers.find(serializer => serializer.name === name)) !== null && _a !== void 0 ? _a : null;\n    }\n    /* eslint-disable */\n    function serialize(messageData, seen = new Map(), path = 'root') {\n        return cloneDeepWith(messageData, (value, key, object, stack) => {\n            // track the path to the current value\n            let p = path + '.' + key;\n            // early return for primitives to save some computation\n            if (isPrimitive(value)) {\n                return value;\n            }\n            // encountered this value before === circular reference\n            if (seen.has(value)) {\n                // replace the circular reference with a reference object containing its origin\n                return {\n                    __$CR__: seen.get(value),\n                };\n            }\n            // save the path to the current value\n            seen.set(value, p);\n            // return first matching serializer result\n            for (const serializer of serializers) {\n                const result = serializer.serialize({\n                    value,\n                    key,\n                    object,\n                    stack,\n                    customizerMethod: serialize,\n                    seen,\n                    path: p,\n                });\n                if (result) {\n                    return result;\n                }\n                ;\n            }\n        });\n    }\n    function deserialize(messageData, event) {\n        // restore all entities, collections and other serialized objects\n        const desirialized = _deserialize(messageData, event);\n        // restore circular references\n        traverseObject(desirialized, (_, key, value, previousKey) => {\n            // check if the current key is a circular reference identifier\n            if (key !== '__$CR__') {\n                return;\n            }\n            // the path to the value going to be restored as a circular reference\n            const path = removeRoot(value);\n            // the path where the circular reference should be restored\n            const reference = removeRoot(previousKey);\n            // restore the circular reference\n            set(desirialized, reference, get(desirialized, path));\n        });\n        return desirialized;\n    }\n    function _deserialize(messageData, event) {\n        return cloneDeepWith(messageData, (value, key, object, stack) => {\n            // return first matching serializer result\n            for (const serializer of serializers) {\n                const result = serializer.deserialize({\n                    value,\n                    key,\n                    object,\n                    stack,\n                    event,\n                    customizerMethod: _deserialize,\n                });\n                if (result) {\n                    return result;\n                }\n                ;\n            }\n        });\n    }\n    /* eslint-enable */\n    return {\n        getSerializers,\n        getSerializerByName,\n        serialize,\n        deserialize,\n    };\n}\n//# sourceMappingURL=index.js.map","import HandleError from './HandleError';\nimport { hasOwnProperty } from '../utils';\nimport MissingPrivilegesError from '../privileges/missing-privileges-error';\nexport default function createError(type, e) {\n    if (typeof e === 'string') {\n        return new HandleError(e);\n    }\n    if (!(e instanceof Error)) {\n        return new HandleError('An unknown error occurred.');\n    }\n    /* eslint-disable */\n    if (hasOwnProperty(e, 'response.data.errors.0.code') && e.response.data.errors.length) {\n        const missingPrivilegeErrors = e.response.data.errors\n            .filter((error) => error.code === 'FRAMEWORK__MISSING_PRIVILEGE_ERROR');\n        const missingPrivileges = [];\n        missingPrivilegeErrors.forEach((mpe) => {\n            const data = JSON.parse(mpe.detail);\n            missingPrivileges.push(...data.missingPrivileges);\n        });\n        if (missingPrivileges.length) {\n            return new MissingPrivilegesError(type, missingPrivileges);\n        }\n        return new HandleError(e.response.data.errors[0].code, e.response.data.errors[0].status);\n    }\n    return new HandleError(e.message);\n}\n//# sourceMappingURL=error-factory.js.map","import { findExtensionByBaseUrl, traverseObject } from '../utils';\nimport MissingPrivilegesError from '../privileges/missing-privileges-error';\nexport default function validate({ serializedData, origin, type, privilegesToCheck = [], }) {\n    if (origin === undefined) {\n        return null;\n    }\n    const extension = findExtensionByBaseUrl(origin);\n    if (!extension) {\n        console.warn(`No extension found for origin \"${origin}\"`);\n        return null;\n    }\n    // Check privileges for entity\n    const privilegeErrors = [];\n    traverseObject(serializedData, (parentEntry, key, value) => {\n        if (key === '__type__' && ['__EntityCollection__', '__Entity__'].includes(value)) {\n            const entityName = parentEntry.__entityName__;\n            if (!entityName) {\n                return;\n            }\n            [...privilegesToCheck].sort().forEach(privilege => {\n                const permissionsForPrivilege = extension.permissions[privilege];\n                if ((!permissionsForPrivilege ||\n                    !permissionsForPrivilege.includes(entityName))\n                    &&\n                        !privilegeErrors.includes(`${privilege}:${entityName}`)\n                    &&\n                        !(permissionsForPrivilege === null || permissionsForPrivilege === void 0 ? void 0 : permissionsForPrivilege.includes('*'))) {\n                    privilegeErrors.push(`${privilege}:${entityName}`);\n                }\n            });\n        }\n    });\n    if (privilegeErrors.length > 0) {\n        return new MissingPrivilegesError(type, privilegeErrors);\n    }\n    return null;\n}\n//# sourceMappingURL=index.js.map","import { findExtensionByBaseUrl } from '../utils';\nimport MissingPrivilegesError from '../privileges/missing-privileges-error';\n/**\n * Selects data from a source object using a list of selectors.\n */\nexport function selectData(sourceData, selectors, messageType = 'datasetSubscribe', origin = '') {\n    if (!selectors) {\n        return sourceData;\n    }\n    const result = {};\n    const extension = findExtensionByBaseUrl(origin !== null && origin !== void 0 ? origin : '');\n    const permissionErrors = [];\n    // Iterate through all selectors, e.g. ['a.b.c', 'd.e.f']\n    selectors.forEach((selector) => {\n        selectValue(sourceData, selector, extension, permissionErrors, origin, messageType, result);\n    });\n    if (!extension) {\n        console.warn(`No extension found for origin \"${origin}\"`);\n        return result;\n    }\n    if (permissionErrors.length) {\n        return new MissingPrivilegesError(messageType, permissionErrors);\n    }\n    return result;\n}\n/**\n * Adds the structure and value of the selector to the result object.\n * Also checks if the extension has the required permissions for the given data.\n */\nfunction selectValue(data, selector, extension, permissionErrors, origin, messageType, result = {}) {\n    var _a, _b, _c;\n    const parts = selector.split('.');\n    let tmpResult = result;\n    let tmpData = data;\n    // Iterate through all parts of the selector, e.g. ['products', '*', 'name']\n    for (let i = 0; i < parts.length; i++) {\n        const specificArrayMatcher = /\\[\\d*\\]/;\n        const currentPart = parts[i];\n        const nextPart = parts[i + 1];\n        // Next part is wildcard or specific array selector\n        if (nextPart && (nextPart === '*' || nextPart.match(specificArrayMatcher))) {\n            // No part after the wildcard? Add the whole array to the result\n            if (!parts[i + 2]) {\n                // Check parent object permissions\n                checkPermission(tmpData, extension, permissionErrors);\n                // Check requested value permissions\n                checkPermission(tmpData === null || tmpData === void 0 ? void 0 : tmpData[currentPart], extension, permissionErrors);\n                tmpResult[currentPart] = tmpData === null || tmpData === void 0 ? void 0 : tmpData[currentPart];\n                break;\n            }\n            // Set next value as existing array or create a new one\n            tmpResult[currentPart] = (_a = tmpResult[currentPart]) !== null && _a !== void 0 ? _a : [];\n            tmpData = tmpData === null || tmpData === void 0 ? void 0 : tmpData[currentPart];\n            tmpResult = tmpResult[currentPart];\n            continue;\n        }\n        // Setting data into an array with a following selector\n        if (Array.isArray(tmpData) && nextPart) {\n            const selectorAfterCurrent = parts.slice(i + 1).join('.');\n            // Current part was a wildcard? Add the value for all array entries\n            if (currentPart === '*') {\n                for (let j = 0; j < tmpData.length; j++) {\n                    selectValue(tmpData[j], selectorAfterCurrent, extension, permissionErrors, origin, messageType, \n                    // Result is either the root array or the existing array entry\n                    ((_b = tmpResult[j]) !== null && _b !== void 0 ? _b : tmpResult));\n                }\n                break;\n            }\n            // Current part was a specific array index? Add the value for the specific array entry\n            if (currentPart.match(specificArrayMatcher)) {\n                const index = parseArrayIndex(currentPart);\n                selectValue(tmpData[index], selectorAfterCurrent, extension, permissionErrors, origin, messageType, \n                // Result is either the root array or the existing array entry\n                ((_c = tmpResult[index]) !== null && _c !== void 0 ? _c : tmpResult));\n                break;\n            }\n        }\n        // Is the current part the last of the selector?\n        if (i === parts.length - 1) {\n            // Check parent object permissions\n            checkPermission(tmpData, extension, permissionErrors);\n            // Check requested value permissions\n            checkPermission(tmpData === null || tmpData === void 0 ? void 0 : tmpData[currentPart], extension, permissionErrors);\n            // Add value to array\n            if (Array.isArray(tmpResult)) {\n                tmpResult.push({ [currentPart]: tmpData === null || tmpData === void 0 ? void 0 : tmpData[currentPart] });\n                break;\n            }\n            // Adds the value to object structures\n            tmpResult[currentPart] = tmpData === null || tmpData === void 0 ? void 0 : tmpData[currentPart];\n            break;\n        }\n        // Move to next level\n        tmpResult[currentPart] = {};\n        tmpData = tmpData === null || tmpData === void 0 ? void 0 : tmpData[currentPart];\n        tmpResult = tmpResult[currentPart];\n    }\n    return result;\n}\n/**\n * Checks if the extension has the required permissions for the given data.\n */\nfunction checkPermission(data, extension, permissionErrors) {\n    if (!data) {\n        return;\n    }\n    const permissionsToCheck = ['read'];\n    let entityName = '';\n    // @ts-expect-error - we just check if the value is an entity\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n    if (data.__identifier__ && data.__identifier__() === 'Entity') {\n        // @ts-expect-error - we know that the value is an entity\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n        entityName = data.getEntityName();\n    }\n    // @ts-expect-error - we just check if the value is an entityCollection\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n    if (data.__identifier__ && data.__identifier__() === 'EntityCollection') {\n        // @ts-expect-error - we know that the value is an entityCollection\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n        entityName = data.entity;\n    }\n    if (!entityName) {\n        return;\n    }\n    permissionsToCheck.forEach((privilege) => {\n        var _a;\n        const permissionsForPrivilege = (_a = extension === null || extension === void 0 ? void 0 : extension.permissions) === null || _a === void 0 ? void 0 : _a[privilege];\n        if ((!permissionsForPrivilege ||\n            !permissionsForPrivilege.includes(entityName))\n            &&\n                !permissionErrors.includes(`${privilege}:${entityName}`)\n            &&\n                !(permissionsForPrivilege === null || permissionsForPrivilege === void 0 ? void 0 : permissionsForPrivilege.includes('*'))) {\n            permissionErrors.push(`${privilege}:${entityName}`);\n        }\n    });\n}\n/**\n * Parses the array index from a string.\n */\nfunction parseArrayIndex(index) {\n    return Number.parseInt(index.replace('[', '').replace(']', ''));\n}\n//# sourceMappingURL=selectData.js.map","/**\n * JS file is needed because TypeScript can't use JSON imports\n * for UMD builds.\n */\nimport packageJson from '../../package.json';\nexport default packageJson.version;\n//# sourceMappingURL=sdkVersion.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport { generateUniqueId } from './_internals/utils';\nimport MissingPrivilegesError from './_internals/privileges/missing-privileges-error';\nimport SerializerFactory from './_internals/serializer';\nimport createError from './_internals/error-handling/error-factory';\nimport validate from './_internals/validator';\nimport { selectData } from './_internals/data/selectData';\nimport sdkVersion from './_internals/sdkVersion';\nconst packageVersion = sdkVersion;\nconst { serialize, deserialize } = SerializerFactory({\n    handle,\n    send,\n});\n// This can't be exported and used in other files as it leads to circular dependencies. Use window._swsdk.adminExtensions instead\nconst adminExtensions = {};\nexport function setExtensions(extensions) {\n    Object.entries(extensions).forEach(([key, value]) => {\n        // @ts-expect-error = we fill up the values later\n        adminExtensions[key] = {};\n        Object.entries(value).forEach(([valueKey, valueContent]) => {\n            // @ts-expect-error = we defined the key beforehand\n            adminExtensions[key][valueKey] = valueContent;\n        });\n    });\n}\n/**\n * ----------------\n * DATA STORES FOR REGISTRIES\n * ----------------\n */\nconst sourceRegistry = new Set();\nconst subscriberRegistry = new Set();\n/**\n * ----------------\n * MAIN FUNCTIONS FOR EXPORT\n * ----------------\n */\n/**\n * With this method you can send actions or you can request data:\n *\n * @param type Choose a type of action from the send-types\n * @param data The matching data for the type\n * @returns A promise with the response data in the given responseType\n */\nexport function send(type, data, _targetWindow, _origin) {\n    // Generate a unique callback ID used to match the response for this request\n    const callbackId = generateUniqueId();\n    // Set fallback data when no data is defined\n    const sendData = data !== null && data !== void 0 ? data : {};\n    // Generate the message with the callbackId\n    const messageData = {\n        _type: type,\n        _data: sendData,\n        _callbackId: callbackId,\n    };\n    // Serialize the message data to transform Entity, EntityCollection, Criteria etc. to a JSON serializable format\n    let serializedData = serialize(messageData);\n    // Validate if send value contains entity data where the app has no privileges for\n    if (_origin) {\n        const validationErrors = validate({\n            serializedData: serializedData,\n            origin: _origin,\n            privilegesToCheck: ['read'],\n            type: type,\n        });\n        if (validationErrors) {\n            // Datasets need the id for matching the response\n            if ([\n                'datasetSubscribe',\n                'datasetUpdate',\n                'datasetRegistration',\n                'datasetGet',\n            ].includes(serializedData._type)) {\n                serializedData = serialize({\n                    _type: serializedData._type,\n                    _callbackId: serializedData._callbackId,\n                    _data: {\n                        // @ts-expect-error - We know with the includes that it has an ID\n                        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                        id: serializedData._data.id,\n                        data: validationErrors,\n                    },\n                });\n            }\n            // Everything else can overwrite the response\n            else {\n                serializedData = serialize({\n                    _type: serializedData._type,\n                    _callbackId: serializedData._callbackId,\n                    _data: validationErrors,\n                });\n            }\n        }\n    }\n    // Convert message data to string for message sending\n    const message = JSON.stringify(serializedData);\n    // Set value if send was resolved\n    let isResolved = false;\n    const timeoutMs = 7000;\n    // Return a promise which resolves when the response is received\n    return new Promise((resolve, reject) => {\n        const callbackHandler = function (event) {\n            if (typeof event.data !== 'string') {\n                return;\n            }\n            // Only execute when callbackId matches\n            if (event.data.indexOf(`\"_callbackId\":\"${callbackId}\"`) === -1) {\n                return;\n            }\n            let shopwareResponseData;\n            // Try to parse the json response\n            try {\n                shopwareResponseData = JSON.parse(event.data);\n            }\n            catch (_a) {\n                // Fail silently when message is not a valid json file\n                return;\n            }\n            // Check if messageData is valid\n            if (!isMessageResponseData(shopwareResponseData)) {\n                return;\n            }\n            // Only execute if response value exists\n            if (!shopwareResponseData.hasOwnProperty('_response')) {\n                return;\n            }\n            // Deserialize methods etc. so that they are callable in JS\n            const deserializedResponseData = deserialize(shopwareResponseData, event);\n            // Remove event so that in only execute once\n            window.removeEventListener('message', callbackHandler);\n            // Only return the data if the request is not timed out\n            if (!isResolved) {\n                isResolved = true;\n                const response = deserializedResponseData._response;\n                // @ts-expect-error To not specify a possible error on every message type ignore it here.\n                if (response instanceof Error) {\n                    reject(response);\n                    return;\n                }\n                // Return the data\n                resolve(response);\n            }\n        };\n        window.addEventListener('message', callbackHandler);\n        let corsRestriction = true;\n        try {\n            corsRestriction = !window.parent.origin;\n        }\n        catch (_a) {\n            // Silent catch to prevent cross origin frame exception\n        }\n        let targetOrigin = corsRestriction ? document.referrer : window.parent.origin;\n        // If _origin was provided then update the targetOrigin\n        if (_origin) {\n            targetOrigin = _origin;\n        }\n        // Send the data to the target window\n        _targetWindow ? _targetWindow.postMessage(message, targetOrigin) : window.parent.postMessage(message, targetOrigin);\n        // Send timeout when no one sends data back or handler freezes\n        setTimeout(() => {\n            // Only runs when is not resolved\n            if (isResolved) {\n                return;\n            }\n            reject('Send timeout expired. It could be possible that no handler for the postMessage request exists or that the handler freezed.');\n        }, timeoutMs);\n    });\n}\n/**\n * @param type Choose a type of action from the {@link send-types}\n * @param method This method should return the response value\n * @returns The return value is a cancel function to stop listening to the events\n */\nexport function handle(type, method) {\n    const handleListener = function (event) {\n        var _a;\n        return __awaiter(this, void 0, void 0, function* () {\n            if (typeof event.data !== 'string') {\n                return;\n            }\n            // Check if messageData type matches the type argument\n            if (event.data.indexOf(`\"_type\":\"${type}\"`) === -1) {\n                return;\n            }\n            let shopwareMessageData;\n            // Try to parse the json file\n            try {\n                shopwareMessageData = JSON.parse(event.data);\n            }\n            catch (_b) {\n                // Fail silently when message is not a valid json file\n                return;\n            }\n            // Check if messageData is valid\n            if (!isMessageData(shopwareMessageData)) {\n                return;\n            }\n            // Deserialize methods etc. so that they are callable in JS\n            const deserializedMessageData = deserialize(shopwareMessageData, event);\n            // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n            const responseValue = yield Promise.resolve((() => {\n                const responseValidationTypes = [\n                    'datasetSubscribe',\n                    'datasetGet',\n                    'datasetUpdate',\n                    // Test value\n                    '_collectionTest',\n                ];\n                // Message type is not dataset related so just execute the method\n                if (!responseValidationTypes.includes(type)) {\n                    // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                    return method(deserializedMessageData._data, { _event_: event });\n                }\n                /*\n                 * Validate incoming handle messages for privileges\n                 * in Entity and Entity Collection\n                 */\n                const validationErrors = validate({\n                    serializedData: shopwareMessageData,\n                    origin: event.origin,\n                    type: type,\n                    privilegesToCheck: ['create', 'delete', 'update', 'read'],\n                });\n                // If validation errors exists then return them as the response value\n                if (validationErrors) {\n                    return validationErrors;\n                }\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                return method(deserializedMessageData._data, { _event_: event });\n            })()).catch(e => createError(type, e));\n            const responseMessage = {\n                _callbackId: deserializedMessageData._callbackId,\n                _type: deserializedMessageData._type,\n                _response: responseValue !== null && responseValue !== void 0 ? responseValue : null,\n            };\n            // Replace methods etc. so that they are working in JSON format\n            const serializedResponseMessage = (() => {\n                let serializedMessage = serialize(responseMessage);\n                const messageValidationTypes = [\n                    'datasetSubscribe',\n                    'datasetGet',\n                    // Test value\n                    '_collectionTest',\n                ];\n                if (!messageValidationTypes.includes(type)) {\n                    return serializedMessage;\n                }\n                // Validate if response value contains entity data where the app has no privileges for\n                const validationErrors = validate({\n                    serializedData: serializedMessage,\n                    origin: event.origin,\n                    privilegesToCheck: ['read'],\n                    type: type,\n                });\n                if (validationErrors) {\n                    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                    serializedMessage._response = validationErrors;\n                    serializedMessage = serialize(serializedMessage);\n                }\n                return serializedMessage;\n            })();\n            const stringifiedResponseMessage = JSON.stringify(serializedResponseMessage);\n            if (event.source) {\n                // If event source exists then send it back to original source\n                event.source.postMessage(stringifiedResponseMessage, {\n                    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                    targetOrigin: (_a = event.origin) !== null && _a !== void 0 ? _a : '*',\n                });\n            }\n            else {\n                // If no event source exists then it should send to same window\n                window.postMessage(stringifiedResponseMessage, window.origin);\n            }\n        });\n    };\n    // Start listening directly\n    window.addEventListener('message', handleListener);\n    // Return a cancel method\n    return () => window.removeEventListener('message', handleListener);\n}\nexport function publish(type, data, sources = [...sourceRegistry].map(({ source, origin, sdkVersion }) => ({\n    source,\n    origin,\n    sdkVersion,\n}))) {\n    sources.forEach(({ source, origin }) => {\n        // Disable error handling because not every window need to react to the data\n        // eslint-disable-next-line @typescript-eslint/no-empty-function\n        return send(type, data, source, origin).catch(() => { });\n    });\n}\nexport function subscribe(type, method) {\n    return handle(type, method);\n}\n// MAIN FUNCTION WHICH INCLUDES ALL POSSIBILITES\nexport function createSender(messageType, baseMessageOptions) {\n    // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n    return (messageOptions) => {\n        return send(messageType, Object.assign(Object.assign({}, baseMessageOptions), messageOptions));\n    };\n}\n/**\n * Factory method which creates a handler so that the type don't need to be\n * defined and can be hidden.\n */\nexport function createHandler(messageType) {\n    // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n    return (method) => {\n        return handle(messageType, method);\n    };\n}\n/**\n * Factory method which creates a handler so that the type doesn't need to be\n * defined and can be hidden.\n */\nexport function createSubscriber(messageType) {\n    // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n    return (method, id) => {\n        if (!id) {\n            return subscribe(messageType, method);\n        }\n        const wrapper = (data) => {\n            if (data.id === id) {\n                void method(data);\n            }\n        };\n        return subscribe(messageType, wrapper);\n    };\n}\nconst datasets = new Map();\n/**\n * ----------------\n * IIFE for default handler\n * ----------------\n */\n(() => __awaiter(void 0, void 0, void 0, function* () {\n    // Handle registrations at current window\n    handle('__registerWindow__', ({ sdkVersion }, additionalOptions) => {\n        let source;\n        let origin;\n        if (additionalOptions._event_.source) {\n            source = additionalOptions._event_.source;\n            origin = additionalOptions._event_.origin;\n        }\n        else {\n            source = window;\n            origin = window.origin;\n        }\n        sourceRegistry.add({\n            source,\n            origin,\n            sdkVersion,\n        });\n    });\n    handle('datasetSubscribeRegistration', (data, { _event_ }) => {\n        let source;\n        let origin;\n        if (_event_.source) {\n            source = _event_.source;\n            origin = _event_.origin;\n        }\n        else {\n            source = window;\n            origin = window.origin;\n        }\n        subscriberRegistry.add({\n            id: data.id,\n            source: source,\n            origin: origin,\n            selectors: data.selectors,\n        });\n        // When initial data exists directly send it to the subscriber\n        const dataset = datasets.get(data.id);\n        if (dataset) {\n            const selectedData = selectData(dataset, data.selectors, 'datasetSubscribe', origin);\n            if (selectedData instanceof MissingPrivilegesError) {\n                console.error(selectedData);\n                return;\n            }\n            void send('datasetSubscribe', {\n                id: data.id,\n                data: selectedData,\n                selectors: data.selectors,\n            }, source, origin);\n        }\n    });\n    // Register at parent window\n    yield send('__registerWindow__', {\n        sdkVersion: packageVersion,\n    });\n}))().catch((e) => console.error(e));\n// New dataset registered\nexport function processDataRegistration(data) {\n    return __awaiter(this, void 0, void 0, function* () {\n        datasets.set(data.id, data.data);\n        // Publish selected data to sources that are inside the subscriberRegistry\n        subscriberRegistry.forEach(({ id, selectors, source, origin }) => {\n            if (id !== data.id) {\n                return;\n            }\n            const selectedData = selectData(data.data, selectors, 'datasetSubscribe', origin);\n            if (selectedData instanceof MissingPrivilegesError) {\n                console.error(selectedData);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-empty-function\n            send('datasetSubscribe', { id, data: selectedData, selectors }, source, origin).catch(() => { });\n        });\n        return Promise.resolve();\n    });\n}\nwindow._swsdk = {\n    sourceRegistry,\n    subscriberRegistry,\n    datasets,\n    adminExtensions,\n};\n/**\n * ----------------\n * INTERNAL HELPER FUNCTIONS\n * ----------------\n */\n/**\n * Check if the data is valid message data\n */\nfunction isMessageData(eventData) {\n    const shopwareMessageData = eventData;\n    return !!shopwareMessageData._type\n        && !!shopwareMessageData._data\n        && !!shopwareMessageData._callbackId;\n}\n// ShopwareMessageTypes[MESSAGE_TYPE]['responseType']\nfunction isMessageResponseData(eventData) {\n    const shopwareMessageData = eventData;\n    return !!shopwareMessageData._type\n        && !!shopwareMessageData.hasOwnProperty('_response')\n        && !!shopwareMessageData._callbackId;\n}\n//# sourceMappingURL=channel.js.map"],"names":["hasOwnProperty","INFINITY","Symbol","stringToPath","__awaiter","this","send","handle","Entity","EntityClass","isObject","EntityCollectionSerializer","EntitySerializer","FunctionSerializer","HandleErrorSerializer","dependencies","name","serialize","deserialize","SerializerFactory","sdkVersion"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,23,24,25,26,27]}