@fluid-experimental/property-properties 2.70.0-360753 → 2.70.0-361092

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/properties/arrayProperty.d.ts +2 -2
  2. package/dist/properties/arrayProperty.js +2 -2
  3. package/dist/properties/arrayProperty.js.map +1 -1
  4. package/dist/properties/containerProperty.d.ts +2 -2
  5. package/dist/properties/containerProperty.js +2 -2
  6. package/dist/properties/containerProperty.js.map +1 -1
  7. package/dist/properties/indexedCollectionBaseProperty.d.ts +2 -2
  8. package/dist/properties/indexedCollectionBaseProperty.js +2 -2
  9. package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
  10. package/dist/properties/intProperties.d.ts.map +1 -1
  11. package/dist/properties/intProperties.js +5 -6
  12. package/dist/properties/intProperties.js.map +1 -1
  13. package/dist/properties/mapProperty.d.ts +2 -2
  14. package/dist/properties/mapProperty.js +2 -2
  15. package/dist/properties/mapProperty.js.map +1 -1
  16. package/dist/properties/valueProperty.d.ts +2 -2
  17. package/dist/properties/valueProperty.js +2 -2
  18. package/dist/properties/valueProperty.js.map +1 -1
  19. package/dist/propertyFactory.js +6 -6
  20. package/dist/propertyFactory.js.map +1 -1
  21. package/dist/test/tsconfig.tsbuildinfo +1 -1
  22. package/lib/properties/arrayProperty.d.ts +2 -2
  23. package/lib/properties/arrayProperty.js +2 -2
  24. package/lib/properties/arrayProperty.js.map +1 -1
  25. package/lib/properties/containerProperty.d.ts +2 -2
  26. package/lib/properties/containerProperty.js +2 -2
  27. package/lib/properties/containerProperty.js.map +1 -1
  28. package/lib/properties/indexedCollectionBaseProperty.d.ts +2 -2
  29. package/lib/properties/indexedCollectionBaseProperty.js +2 -2
  30. package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
  31. package/lib/properties/intProperties.d.ts.map +1 -1
  32. package/lib/properties/intProperties.js +5 -6
  33. package/lib/properties/intProperties.js.map +1 -1
  34. package/lib/properties/mapProperty.d.ts +2 -2
  35. package/lib/properties/mapProperty.js +2 -2
  36. package/lib/properties/mapProperty.js.map +1 -1
  37. package/lib/properties/valueProperty.d.ts +2 -2
  38. package/lib/properties/valueProperty.js +2 -2
  39. package/lib/properties/valueProperty.js.map +1 -1
  40. package/lib/propertyFactory.js +6 -6
  41. package/lib/propertyFactory.js.map +1 -1
  42. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"containerProperty.js","sourceRoot":"","sources":["../../src/properties/containerProperty.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview This file contains the implementation of the ContainerProperty class\n */\nconst { MSG } = require(\"@fluid-experimental/property-common\").constants;\nconst { ConsoleUtils } = require(\"@fluid-experimental/property-common\");\nconst _ = require(\"underscore\");\n\nconst { validationsEnabled } = require(\"../enableValidations\");\n\nconst { AbstractStaticCollectionProperty } = require(\"./abstractStaticCollectionProperty\");\nconst { BaseProperty } = require(\"./baseProperty\");\nconst { IndexedCollectionBaseProperty } = require(\"./indexedCollectionBaseProperty\");\n\n/**\n * A property object that allows to add child properties dynamically.\n * @internal\n */\nexport class ContainerProperty extends IndexedCollectionBaseProperty {\n\t/**\n\t * @param {Object} in_params - Input parameters for property creation\n\t * @protected\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\n\t\tif (in_params.optionalChildren) {\n\t\t\tthis._optionalChildren = {};\n\t\t\tthis._dynamicChildren = {};\n\t\t}\n\t}\n\n\t/**\n\t * Returns the name of all the sub-properties of this property.\n\t * @return {Array.<string>} An array of all the property ids\n\t */\n\t_getIds() {\n\t\treturn AbstractStaticCollectionProperty.prototype._getIds\n\t\t\t.call(this)\n\t\t\t.concat(Object.keys(this._dynamicChildren));\n\t}\n\n\t/**\n\t * Returns the sub-property having the given name in this property.\n\t *\n\t * @param {string|number} in_id - The id of the prop you wish to retrieve.\n\t *\n\t * @return {property-properties.BaseProperty | undefined} The property you seek or undefined if none is found.\n\t */\n\t_get(in_id) {\n\t\treturn (\n\t\t\tAbstractStaticCollectionProperty.prototype._get.call(this, in_id) ||\n\t\t\tthis._dynamicChildren[in_id]\n\t\t);\n\t}\n\n\t/**\n\t * Adds an optional child to list of possible optional children.\n\t * @param {string} in_id - Id of the optional child\n\t * @param {string} in_typeid - typeid which determines what type the child should be\n\t * @private\n\t */\n\t_addOptionalChild(in_id, in_typeid) {\n\t\tif (this._optionalChildren === ContainerProperty.prototype._optionalChildren) {\n\t\t\tthis._optionalChildren = {};\n\t\t\tthis._dynamicChildren = {};\n\t\t}\n\t\tthis._optionalChildren[in_id] = in_typeid;\n\t}\n\n\t/**\n\t * Appends a property\n\t *\n\t * @param {String | property-properties.BaseProperty } in_id - The id under which the property is added.\n\t * This parameter is optional. For NamedProperties it can be omitted. In that case the GUID of the named\n\t * property will be used.\n\t *\n\t * @param {property-properties.BaseProperty} [in_property] - The property to add\n\t * @throws if in_id is not a string or a number\n\t * @throws if there is already an entry for in_id\n\t * @throws if in_property is not a property\n\t * @throws if in_property does not have an id\n\t * @throws if in_property has a parent\n\t * @throws if in_property is a root property\n\t */\n\tinsert(in_id, in_property) {\n\t\tif (in_property === undefined) {\n\t\t\t// If no id is passed, the property is passed as first parameter\n\t\t\tin_property = in_id;\n\t\t\tConsoleUtils.assert(\n\t\t\t\tin_property instanceof BaseProperty,\n\t\t\t\t\"insert error: \" + MSG.NOT_A_PROPERTY,\n\t\t\t);\n\t\t} else {\n\t\t\tConsoleUtils.assert(_.isString(in_id) || _.isNumber(in_id), MSG.ID_STRING_OR_NUMBER);\n\t\t\tConsoleUtils.assert(\n\t\t\t\t!_.isString(in_id) || !_.isEmpty(in_id),\n\t\t\t\tMSG.ID_SHOULD_NOT_BE_EMPTY_STRING,\n\t\t\t);\n\t\t\tConsoleUtils.assert(\n\t\t\t\tin_property instanceof BaseProperty,\n\t\t\t\t\"insert error: \" + MSG.NOT_A_PROPERTY,\n\t\t\t);\n\t\t\tif (this._dynamicChildren[in_id] !== undefined) {\n\t\t\t\tthrow new Error(MSG.PROPERTY_ALREADY_EXISTS + in_id);\n\t\t\t}\n\t\t\tif (validationsEnabled.enabled) {\n\t\t\t\tin_property._validateInsertIn(this);\n\t\t\t}\n\t\t\t// If an id is passed, it is stored in the child property object\n\t\t\tin_property._setId(in_id);\n\t\t}\n\n\t\tif (validationsEnabled.enabled) {\n\t\t\tthis._validateInsert(in_property.getId(), in_property);\n\t\t}\n\n\t\t// Add the child property to the dynamic properties\n\t\tthis._insert(in_property.getId(), in_property, true);\n\t}\n\n\t/**\n\t * Validates if inserting the property is valid.\n\t *\n\t * @param {string} in_id - id to be validated.\n\t * @param {string} in_property - property to be validated.\n\t * @throws if id is not on optional list.\n\t * @throws if the typeid of the property doesn't match the schema.\n\t * @protected\n\t */\n\t_validateInsert(in_id, in_property) {\n\t\tif (!(this._optionalChildren && this._optionalChildren[in_id])) {\n\t\t\tthrow new Error(MSG.CANNOT_INSERT_UNKNOWN_PROPERTY + in_id);\n\t\t}\n\n\t\tif (\n\t\t\tthis._optionalChildren[in_id].toUpperCase() !== in_property.getTypeid().toUpperCase()\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\tMSG.MISMATCHING_PROPERTY_TYPEID +\n\t\t\t\t\tthis._optionalChildren[in_id] +\n\t\t\t\t\t\" instead it's: \" +\n\t\t\t\t\tin_property.getTypeid(),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @override\n\t * @inheritdoc\n\t */\n\t_getScope() {\n\t\tif (this._parent) {\n\t\t\treturn this.getRoot()._getScope();\n\t\t} else {\n\t\t\treturn this._checkedOutRepositoryInfo\n\t\t\t\t? this._checkedOutRepositoryInfo.getScope()\n\t\t\t\t: undefined;\n\t\t}\n\t}\n\n\t/**\n\t * Removes the given property\n\t *\n\t * @param {string|property-properties.BaseProperty} in_property - The property to remove (either its id or the\n\t * whole property).\n\t * @throws if trying to remove an entry that does not exist\n\t * @return {property-properties.BaseProperty} the property removed.\n\t */\n\tremove(in_property) {\n\t\tvar id = in_property;\n\t\tvar returnValue;\n\t\tif (id instanceof BaseProperty) {\n\t\t\treturnValue = id;\n\t\t\tid = id.getId();\n\t\t} else {\n\t\t\treturnValue = this.get(id);\n\t\t}\n\n\t\tthis._validateRemove(id);\n\n\t\tthis._removeByKey(id);\n\t\treturn returnValue;\n\t}\n\n\t/**\n\t * Validates if removing a property with specified id is valid.\n\t *\n\t * @param {string} in_id - id to be validated.\n\t * @throws if the id doesn't exist.\n\t * @throws if the id is not marked as optional.\n\t * @protected\n\t */\n\t_validateRemove(in_id) {\n\t\tif (!this._dynamicChildren[in_id]) {\n\t\t\tconst error =\n\t\t\t\tthis._staticChildren[in_id] !== undefined\n\t\t\t\t\t? new Error(MSG.CANNOT_REMOVE_NON_OPTIONAL_PROP + in_id)\n\t\t\t\t\t: new Error(MSG.REMOVING_NON_EXISTING_KEY + in_id);\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Removes all dynamic children\n\t * @throws if node property is read-only\n\t */\n\tclear() {\n\t\tthis._checkIsNotReadOnly(true);\n\t\t_.each(this._dynamicChildren, this.remove.bind(this));\n\t}\n\n\t/**\n\t * Inserts a property into the collection\n\t *\n\t * @param {string} in_key - Key of the entry in the collection\n\t * @param {property-properties.NamedProperty} in_property - The property to insert\n\t * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n\t * trigger a modified event there. When batching updates, this can be prevented via this flag.\n\t */\n\t_insert(in_key, in_property, in_reportToView) {\n\t\tif (validationsEnabled.enabled) {\n\t\t\tthis._checkIsNotReadOnly(true);\n\t\t}\n\n\t\t// Add the child property to the dynamic properties\n\t\tIndexedCollectionBaseProperty.prototype._insert.call(this, in_key, in_property, false);\n\n\t\t// We postponed the report above, to make sure the child property has actually been appended to this\n\t\t// node, before the report is forwarded to the view\n\t\tif (in_reportToView) {\n\t\t\tthis._reportDirtinessToView();\n\t\t}\n\t}\n\n\t/**\n\t * Removes an entry with the given key\n\t *\n\t * @param {string} in_key - key of the entry\n\t * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n\t * trigger a modified event there. When batching updates, this can be prevented via this flag.\n\t */\n\t_removeByKey(in_key, in_reportToView) {\n\t\tthis._checkIsNotReadOnly(true);\n\n\t\tif (this._dynamicChildren[in_key]) {\n\t\t\t// Remove from the indexed collection\n\t\t\tIndexedCollectionBaseProperty.prototype._removeByKey.call(this, in_key, in_reportToView);\n\t\t} else {\n\t\t\tconsole.error(MSG.REMOVING_NON_EXISTING_KEY + in_key);\n\t\t}\n\t}\n\n\t/**\n\t * Stores the information to which CheckedOutRepositoryInfo object this root property belongs.\n\t * Note: these functions should only be used internally (within the PropertySets library)\n\t *\n\t * @param {property-properties.CheckoutView~CheckedOutRepositoryInfo} in_checkedOutRepositoryInfo -\n\t * The checked out repository info this root property belongs to.\n\t * @protected\n\t */\n\t_setCheckedOutRepositoryInfo(in_checkedOutRepositoryInfo) {\n\t\tthis._checkedOutRepositoryInfo = in_checkedOutRepositoryInfo;\n\t}\n\n\t/**\n\t * Gets the information to which CheckedOutRepositoryInfo object this root property belongs.\n\t * Note: these functions should only be used internally (within the PropertySets library)\n\t *\n\t * @return {property-properties.CheckoutView~CheckedOutRepositoryInfo|undefined} If this is the root of the\n\t * checked out hierarchy, this will return the checkout.\n\t * @protected\n\t */\n\t_getCheckedOutRepositoryInfo() {\n\t\treturn this._checkedOutRepositoryInfo;\n\t}\n\n\t/**\n\t * Returns the name of all the static sub-properties of this property.\n\t *\n\t * @return {Array.<string>} An array of all the static property ids\n\t */\n\tgetStaticIds() {\n\t\treturn Object.keys(this._staticChildren);\n\t}\n\n\t/**\n\t * Returns the name of all the dynamic sub-properties of this property.\n\t *\n\t * @return {Array.<string>} An array of all the dynamic property ids\n\t */\n\tgetDynamicIds() {\n\t\treturn Object.keys(this._dynamicChildren);\n\t}\n\n\t/**\n\t * Returns an Object with all the dynamic children of this node property.\n\t *\n\t * WARNING: This is a direct access to the internal data-structure and the collection MUST NOT be modified. It is\n\t * read only for fast access and iteration. Insertion and deletion MUST be done via the insert and remove functions\n\t * of this class.\n\t *\n\t * @return {Object<String, property-properties.MapProperty~MapValueType>} The map with all entries in the map.\n\t */\n\t_getDynamicChildrenReadOnly() {\n\t\treturn this._dynamicChildren;\n\t}\n\n\t/**\n\t * Given an object that mirrors a PSet Template, assign the properties.\n\t *\n\t * E.g.\n\t *\n\t * ```\n\t * <pre>\n\t * Templates = {\n\t * properties: [\n\t * { id: 'foo', typeid: 'String' },\n\t * { id: 'bar', properties: [{id: 'baz', typeid: 'Uint32'}] }\n\t * ]\n\t * }\n\t * </pre>\n\t * ```\n\t *\n\t * You would update the values like: `baseProperty.setValues({foo: 'hello', bar: {baz: 1}});`\n\t *\n\t * WARNING: not completely implemented for all types.\n\t *\n\t * @param {object} in_properties - The properties you would like to assign\n\t * @private\n\t */\n\tsetValues(in_properties) {\n\t\tvar checkoutView = this._getCheckoutView();\n\t\tif (checkoutView !== undefined) {\n\t\t\tcheckoutView.pushNotificationDelayScope();\n\t\t\tContainerProperty.prototype._setValues.call(this, in_properties, false, false);\n\t\t\tcheckoutView.popNotificationDelayScope();\n\t\t} else {\n\t\t\tContainerProperty.prototype._setValues.call(this, in_properties, false, false);\n\t\t}\n\t}\n}\n\nContainerProperty.prototype._typeid = \"ContainerProperty\";\nContainerProperty.prototype._dynamicChildren = {};\nContainerProperty.prototype._optionalChildren = {};\n"]}
1
+ {"version":3,"file":"containerProperty.js","sourceRoot":"","sources":["../../src/properties/containerProperty.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview This file contains the implementation of the ContainerProperty class\n */\nconst { MSG } = require(\"@fluid-experimental/property-common\").constants;\nconst { ConsoleUtils } = require(\"@fluid-experimental/property-common\");\nconst _ = require(\"underscore\");\n\nconst { validationsEnabled } = require(\"../enableValidations\");\n\nconst { AbstractStaticCollectionProperty } = require(\"./abstractStaticCollectionProperty\");\nconst { BaseProperty } = require(\"./baseProperty\");\nconst { IndexedCollectionBaseProperty } = require(\"./indexedCollectionBaseProperty\");\n\n/**\n * A property object that allows to add child properties dynamically.\n * @internal\n */\nexport class ContainerProperty extends IndexedCollectionBaseProperty {\n\t/**\n\t * @param {Object} in_params - Input parameters for property creation\n\t * @protected\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\n\t\tif (in_params.optionalChildren) {\n\t\t\tthis._optionalChildren = {};\n\t\t\tthis._dynamicChildren = {};\n\t\t}\n\t}\n\n\t/**\n\t * Returns the name of all the sub-properties of this property.\n\t * @return {Array.<string>} An array of all the property ids\n\t */\n\t_getIds() {\n\t\treturn AbstractStaticCollectionProperty.prototype._getIds\n\t\t\t.call(this)\n\t\t\t.concat(Object.keys(this._dynamicChildren));\n\t}\n\n\t/**\n\t * Returns the sub-property having the given name in this property.\n\t *\n\t * @param {string|number} in_id - The id of the prop you wish to retrieve.\n\t *\n\t * @return {property-properties.BaseProperty | undefined} The property you seek or undefined if none is found.\n\t */\n\t_get(in_id) {\n\t\treturn (\n\t\t\tAbstractStaticCollectionProperty.prototype._get.call(this, in_id) ||\n\t\t\tthis._dynamicChildren[in_id]\n\t\t);\n\t}\n\n\t/**\n\t * Adds an optional child to list of possible optional children.\n\t * @param {string} in_id - Id of the optional child\n\t * @param {string} in_typeid - typeid which determines what type the child should be\n\t * @private\n\t */\n\t_addOptionalChild(in_id, in_typeid) {\n\t\tif (this._optionalChildren === ContainerProperty.prototype._optionalChildren) {\n\t\t\tthis._optionalChildren = {};\n\t\t\tthis._dynamicChildren = {};\n\t\t}\n\t\tthis._optionalChildren[in_id] = in_typeid;\n\t}\n\n\t/**\n\t * Appends a property\n\t *\n\t * @param {String | property-properties.BaseProperty } in_id - The id under which the property is added.\n\t * This parameter is optional. For NamedProperties it can be omitted. In that case the GUID of the named\n\t * property will be used.\n\t *\n\t * @param {property-properties.BaseProperty} [in_property] - The property to add\n\t * @throws if in_id is not a string or a number\n\t * @throws if there is already an entry for in_id\n\t * @throws if in_property is not a property\n\t * @throws if in_property does not have an id\n\t * @throws if in_property has a parent\n\t * @throws if in_property is a root property\n\t */\n\tinsert(in_id, in_property) {\n\t\tif (in_property === undefined) {\n\t\t\t// If no id is passed, the property is passed as first parameter\n\t\t\tin_property = in_id;\n\t\t\tConsoleUtils.assert(\n\t\t\t\tin_property instanceof BaseProperty,\n\t\t\t\t\"insert error: \" + MSG.NOT_A_PROPERTY,\n\t\t\t);\n\t\t} else {\n\t\t\tConsoleUtils.assert(_.isString(in_id) || _.isNumber(in_id), MSG.ID_STRING_OR_NUMBER);\n\t\t\tConsoleUtils.assert(\n\t\t\t\t!_.isString(in_id) || !_.isEmpty(in_id),\n\t\t\t\tMSG.ID_SHOULD_NOT_BE_EMPTY_STRING,\n\t\t\t);\n\t\t\tConsoleUtils.assert(\n\t\t\t\tin_property instanceof BaseProperty,\n\t\t\t\t\"insert error: \" + MSG.NOT_A_PROPERTY,\n\t\t\t);\n\t\t\tif (this._dynamicChildren[in_id] !== undefined) {\n\t\t\t\tthrow new Error(MSG.PROPERTY_ALREADY_EXISTS + in_id);\n\t\t\t}\n\t\t\tif (validationsEnabled.enabled) {\n\t\t\t\tin_property._validateInsertIn(this);\n\t\t\t}\n\t\t\t// If an id is passed, it is stored in the child property object\n\t\t\tin_property._setId(in_id);\n\t\t}\n\n\t\tif (validationsEnabled.enabled) {\n\t\t\tthis._validateInsert(in_property.getId(), in_property);\n\t\t}\n\n\t\t// Add the child property to the dynamic properties\n\t\tthis._insert(in_property.getId(), in_property, true);\n\t}\n\n\t/**\n\t * Validates if inserting the property is valid.\n\t *\n\t * @param {string} in_id - id to be validated.\n\t * @param {string} in_property - property to be validated.\n\t * @throws if id is not on optional list.\n\t * @throws if the typeid of the property doesn't match the schema.\n\t * @protected\n\t */\n\t_validateInsert(in_id, in_property) {\n\t\tif (!(this._optionalChildren && this._optionalChildren[in_id])) {\n\t\t\tthrow new Error(MSG.CANNOT_INSERT_UNKNOWN_PROPERTY + in_id);\n\t\t}\n\n\t\tif (\n\t\t\tthis._optionalChildren[in_id].toUpperCase() !== in_property.getTypeid().toUpperCase()\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\tMSG.MISMATCHING_PROPERTY_TYPEID +\n\t\t\t\t\tthis._optionalChildren[in_id] +\n\t\t\t\t\t\" instead it's: \" +\n\t\t\t\t\tin_property.getTypeid(),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @override\n\t * @inheritdoc\n\t */\n\t_getScope() {\n\t\tif (this._parent) {\n\t\t\treturn this.getRoot()._getScope();\n\t\t} else {\n\t\t\treturn this._checkedOutRepositoryInfo\n\t\t\t\t? this._checkedOutRepositoryInfo.getScope()\n\t\t\t\t: undefined;\n\t\t}\n\t}\n\n\t/**\n\t * Removes the given property\n\t *\n\t * @param {string|property-properties.BaseProperty} in_property - The property to remove (either its id or the\n\t * whole property).\n\t * @throws if trying to remove an entry that does not exist\n\t * @return {property-properties.BaseProperty} the property removed.\n\t */\n\tremove(in_property) {\n\t\tvar id = in_property;\n\t\tvar returnValue;\n\t\tif (id instanceof BaseProperty) {\n\t\t\treturnValue = id;\n\t\t\tid = id.getId();\n\t\t} else {\n\t\t\treturnValue = this.get(id);\n\t\t}\n\n\t\tthis._validateRemove(id);\n\n\t\tthis._removeByKey(id);\n\t\treturn returnValue;\n\t}\n\n\t/**\n\t * Validates if removing a property with specified id is valid.\n\t *\n\t * @param {string} in_id - id to be validated.\n\t * @throws if the id doesn't exist.\n\t * @throws if the id is not marked as optional.\n\t * @protected\n\t */\n\t_validateRemove(in_id) {\n\t\tif (!this._dynamicChildren[in_id]) {\n\t\t\tconst error =\n\t\t\t\tthis._staticChildren[in_id] !== undefined\n\t\t\t\t\t? new Error(MSG.CANNOT_REMOVE_NON_OPTIONAL_PROP + in_id)\n\t\t\t\t\t: new Error(MSG.REMOVING_NON_EXISTING_KEY + in_id);\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Removes all dynamic children\n\t * @throws if node property is read-only\n\t */\n\tclear() {\n\t\tthis._checkIsNotReadOnly(true);\n\t\t_.each(this._dynamicChildren, this.remove.bind(this));\n\t}\n\n\t/**\n\t * Inserts a property into the collection\n\t *\n\t * @param {string} in_key - Key of the entry in the collection\n\t * @param {property-properties.NamedProperty} in_property - The property to insert\n\t * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n\t * trigger a modified event there. When batching updates, this can be prevented via this flag.\n\t */\n\t_insert(in_key, in_property, in_reportToView) {\n\t\tif (validationsEnabled.enabled) {\n\t\t\tthis._checkIsNotReadOnly(true);\n\t\t}\n\n\t\t// Add the child property to the dynamic properties\n\t\tIndexedCollectionBaseProperty.prototype._insert.call(this, in_key, in_property, false);\n\n\t\t// We postponed the report above, to make sure the child property has actually been appended to this\n\t\t// node, before the report is forwarded to the view\n\t\tif (in_reportToView) {\n\t\t\tthis._reportDirtinessToView();\n\t\t}\n\t}\n\n\t/**\n\t * Removes an entry with the given key\n\t *\n\t * @param {string} in_key - key of the entry\n\t * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n\t * trigger a modified event there. When batching updates, this can be prevented via this flag.\n\t */\n\t_removeByKey(in_key, in_reportToView) {\n\t\tthis._checkIsNotReadOnly(true);\n\n\t\tif (this._dynamicChildren[in_key]) {\n\t\t\t// Remove from the indexed collection\n\t\t\tIndexedCollectionBaseProperty.prototype._removeByKey.call(this, in_key, in_reportToView);\n\t\t} else {\n\t\t\tconsole.error(MSG.REMOVING_NON_EXISTING_KEY + in_key);\n\t\t}\n\t}\n\n\t/**\n\t * Stores the information to which CheckedOutRepositoryInfo object this root property belongs.\n\t * Note: these functions should only be used internally (within the PropertySets library)\n\t *\n\t * @param {property-properties.CheckoutView~CheckedOutRepositoryInfo} in_checkedOutRepositoryInfo - The checked out\n\t * repository info this root property belongs to.\n\t * @protected\n\t */\n\t_setCheckedOutRepositoryInfo(in_checkedOutRepositoryInfo) {\n\t\tthis._checkedOutRepositoryInfo = in_checkedOutRepositoryInfo;\n\t}\n\n\t/**\n\t * Gets the information to which CheckedOutRepositoryInfo object this root property belongs.\n\t * Note: these functions should only be used internally (within the PropertySets library)\n\t *\n\t * @return {property-properties.CheckoutView~CheckedOutRepositoryInfo|undefined} If this is the root of the\n\t * checked out hierarchy, this will return the checkout.\n\t * @protected\n\t */\n\t_getCheckedOutRepositoryInfo() {\n\t\treturn this._checkedOutRepositoryInfo;\n\t}\n\n\t/**\n\t * Returns the name of all the static sub-properties of this property.\n\t *\n\t * @return {Array.<string>} An array of all the static property ids\n\t */\n\tgetStaticIds() {\n\t\treturn Object.keys(this._staticChildren);\n\t}\n\n\t/**\n\t * Returns the name of all the dynamic sub-properties of this property.\n\t *\n\t * @return {Array.<string>} An array of all the dynamic property ids\n\t */\n\tgetDynamicIds() {\n\t\treturn Object.keys(this._dynamicChildren);\n\t}\n\n\t/**\n\t * Returns an Object with all the dynamic children of this node property.\n\t *\n\t * WARNING: This is a direct access to the internal data-structure and the collection MUST NOT be modified. It is\n\t * read only for fast access and iteration. Insertion and deletion MUST be done via the insert and remove functions\n\t * of this class.\n\t *\n\t * @return {Object<String, property-properties.MapProperty~MapValueType>} The map with all entries in the map.\n\t */\n\t_getDynamicChildrenReadOnly() {\n\t\treturn this._dynamicChildren;\n\t}\n\n\t/**\n\t * Given an object that mirrors a PSet Template, assign the properties.\n\t *\n\t * E.g.\n\t *\n\t * ```\n\t * <pre>\n\t * Templates = {\n\t * properties: [\n\t * { id: 'foo', typeid: 'String' },\n\t * { id: 'bar', properties: [{id: 'baz', typeid: 'Uint32'}] }\n\t * ]\n\t * }\n\t * </pre>\n\t * ```\n\t *\n\t * You would update the values like: `baseProperty.setValues({foo: 'hello', bar: {baz: 1}});`\n\t *\n\t * WARNING: not completely implemented for all types.\n\t *\n\t * @param {object} in_properties - The properties you would like to assign\n\t * @private\n\t */\n\tsetValues(in_properties) {\n\t\tvar checkoutView = this._getCheckoutView();\n\t\tif (checkoutView !== undefined) {\n\t\t\tcheckoutView.pushNotificationDelayScope();\n\t\t\tContainerProperty.prototype._setValues.call(this, in_properties, false, false);\n\t\t\tcheckoutView.popNotificationDelayScope();\n\t\t} else {\n\t\t\tContainerProperty.prototype._setValues.call(this, in_properties, false, false);\n\t\t}\n\t}\n}\n\nContainerProperty.prototype._typeid = \"ContainerProperty\";\nContainerProperty.prototype._dynamicChildren = {};\nContainerProperty.prototype._optionalChildren = {};\n"]}
@@ -39,8 +39,8 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
39
39
  *
40
40
  * @param {string} in_key - Key of the entry in the collection
41
41
  * @param {property-properties.IndexedCollectionBaseProperty~ValueType} in_value - The value to insert
42
- * @param {boolean} in_reportToView -
43
- * By default, the dirtying will always be reported to the checkout view and trigger a modified event there.
42
+ * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and
43
+ * trigger a modified event there.
44
44
  * When batching updates, this can be prevented via this flag.
45
45
  */
46
46
  _insert(in_key: string, in_value: any, in_reportToView: boolean): void;
@@ -119,8 +119,8 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
119
119
  *
120
120
  * @param {string} in_key - Key of the entry in the collection
121
121
  * @param {property-properties.IndexedCollectionBaseProperty~ValueType} in_value - The value to insert
122
- * @param {boolean} in_reportToView -
123
- * By default, the dirtying will always be reported to the checkout view and trigger a modified event there.
122
+ * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and
123
+ * trigger a modified event there.
124
124
  * When batching updates, this can be prevented via this flag.
125
125
  */
126
126
  _insert(in_key, in_value, in_reportToView) {
@@ -1 +1 @@
1
- {"version":3,"file":"indexedCollectionBaseProperty.js","sourceRoot":"","sources":["../../src/properties/indexedCollectionBaseProperty.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC;AACxE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC;AACxE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC,SAAS,CAAC;AACzE,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC1D,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAE/D,MAAM,EAAE,gCAAgC,EAAE,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAAC;AAC3F,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEnD;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,OAAO,6BAA8B,SAAQ,gCAAgC;IAClF;;;;OAIG;IACH,YAAY,SAAS;QACpB,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,gGAAgG;QAChG,IAAI,CAAC,eAAe,GAAG;YACtB,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACV,CAAC;QAEF,0GAA0G;QAC1G,IAAI,CAAC,aAAa,GAAG;YACpB,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACV,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ;QACnB,gBAAgB;QAChB,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAExD,IACC,QAAQ,KAAK,SAAS;YACtB,CAAC,QAAQ,GAAG,YAAY,CAAC,oBAAoB,CAAC,cAAc,CAAC,KAAK,CAAC,EAClE,CAAC;YACF,uEAAuE;YACvE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1F,uEAAuE;YACvE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;QAChC,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,QAAQ;QAClB,QAAQ;YACP,QAAQ,KAAK,SAAS;gBACrB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK;oBACxC,YAAY,CAAC,oBAAoB,CAAC,cAAc,CAAC;QAEpD,6CAA6C;QAC7C,IAAI,cAAc,GAAG,CAAC,UAAU,EAAE,EAAE;YACnC,IAAI,KAAK,CAAC;YAEV,gDAAgD;YAChD,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC5B,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACnC,IAAI,QAAQ,KAAK,YAAY,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;gBAC1D,6BAA6B;gBAC7B,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC1C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,QAAQ,KAAK,YAAY,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC;gBAC1E,+BAA+B;gBAC/B,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACP,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC1C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;QAED,gBAAgB;QAChB,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEvD,sEAAsE;QACtE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe;QACxC,IAAI,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,wFAAwF;YACxF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACjE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YAEzC,iFAAiF;YACjF,8DAA8D;YAC9D,oEAAoE;YACpE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACnC,yCAAyC;gBACzC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAE9B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAE1B,oEAAoE;gBACpE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACP,uEAAuE;gBACvE,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;oBAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBAC5C,CAAC;gBAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;oBACzC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBAC1C,CAAC;YACF,CAAC;YAED,sBAAsB;YACtB,IAAI,eAAe,EAAE,CAAC;gBACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC/B,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,MAAM,EAAE,eAAe;QACnC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,YAAY,EAAE,CAAC;gBAC3D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAErC,oDAAoD;YACpD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBAE3C,2CAA2C;gBAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;YAED,wCAAwC;YACxC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBAEzC,2CAA2C;gBAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,0BAA0B,GAAG,MAAM,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,UAAU,CACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,gCAAgC;QAEhC,IAAI,UAAU,GAAG,gCAAgC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAC1E,IAAI,EACJ,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,gCAAgC,CAChC,CAAC;QAEF,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,gFAAgF;QAChF,IAAI,mBAAmB,GAAG,UAAU,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;YAC1E,mFAAmF;YACnF,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAClC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACP,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACpD,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YAC1C,CAAC;QACF,CAAC,CAAC;QAEF,IAAI,OAAO,GACV,gBAAgB,KAAK,YAAY,CAAC,oBAAoB,CAAC,cAAc;YACpE,CAAC,CAAC,IAAI,CAAC,eAAe;YACtB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,kDAAkD;QAClD,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExD,iDAAiD;QACjD,IAAI,MAAM,CAAC;QACX,IAAI,SAAS,GAAG,YAAY;YAC3B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB;YAC1E,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,GAAG,IAAI,CAAC,uBAAuB;gBACpC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAC3B,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,YAAY,EAAE,CAAC;gBAClB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,8EAA8E;oBAC9E,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAClC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;oBACjD,CAAC;yBAAM,CAAC;wBACP,mBAAmB,CAClB,MAAM,EACN,MAAM,EACN,GAAG,EACH,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAC3E,CAAC;oBACH,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,2EAA2E;oBAC3E,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAClC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;4BACzB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;wBACjD,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;4BACtC,IAAI,eAAe,GAAG,KAAK,CAAC,UAAU,CACrC,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,gCAAgC,CAChC,CAAC;4BACF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;gCAClD,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;4BAC3D,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,uDAAuD;gBACvD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAClC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CACrC,YAAY,EACZ,KAAK,EACL,SAAS,EACT,gCAAgC,CAChC,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5B,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,gBAAgB;QACjC,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,MAAM;QACrB,YAAY,CAAC,MAAM,CAClB,IAAI,CAAC,uBAAuB,EAC5B,GAAG,CAAC,gBAAgB;YACnB,6FAA6F,CAC9F,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB;QACtF,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,eAAe,GAAG,EAAE,CAAC;QAEzB,IAAI,gBAAgB,GAAG,gCAAgC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAClF,IAAI,EACJ,gBAAgB,EAChB,KAAK,EACL,mBAAmB,EACnB,kBAAkB,CAClB,CAAC;QAEF,kCAAkC;QAElC,4EAA4E;QAC5E,IAAI,eAAe,GAClB,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;YAC/C,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,eAAe,GAAG,EAAE,CAAC;QAEzB,+CAA+C;QAC/C,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBACtD,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC7B,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBAC1D,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;oBACtD,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC1B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAC7B,CAAC;YACF,CAAC;QACF,CAAC;QAED,sEAAsE;QACtE,yEAAyE;QACzE,+BAA+B;QAC/B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAChC,CAAC;QACF,CAAC;QAED,iEAAiE;QACjE,+EAA+E;QAC/E,wEAAwE;QACxE,0EAA0E;QAC1E,0CAA0C;QAC1C,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;oBAChD,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9D,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,CAAC;YACF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBACtD,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;wBAChD,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACxD,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC9E,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9C,CAAC;gBACF,CAAC;gBAED,0CAA0C;gBAC1C,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBACxC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC;QAED,8CAA8C;QAC9C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,yDAAyD;QACzD,yCAAyC;QACzC,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAChF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,IAAI,QAAQ,GAAG,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;QAED,gFAAgF;QAChF,IAAI,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAErF,yCAAyC;QACzC,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,KAAK,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;YACtD,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI,CAC7B,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CACxE,CAAC;YACF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAI,OAAO,CAAC;gBACZ,IAAI,eAAe,GAAG,KAAK,CAAC;gBAC5B,IAAI,kBAAkB,CAAC;gBACvB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAClC,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,iCAAiC;oBACjC,eAAe;wBACd,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ;4BACpD,CAAC,CAAC,2EAA2E;gCAC5E,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;oCACnE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;4BACrE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;oBACvD,kBAAkB,GAAG,eAAe,CAAC;oBACrC,IAAI,eAAe,EAAE,CAAC;wBACrB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBACzE,wDAAwD;wBACxD,8DAA8D;wBAC9D,+DAA+D;wBAC/D,+BAA+B;wBAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BACnD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;4BACpD,qBAAqB,GAAG,IAAI,CAAC;wBAC9B,CAAC;wBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;4BAClD,qBAAqB,GAAG,IAAI,CAAC;wBAC9B,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAC5D,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACxC,KAAK,EACL,mBAAmB,EACnB,kBAAkB,CAClB,CAAC;oBACF,eAAe,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAEvD,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACxD,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC9C,CAAC;gBAED,IAAI,eAAe,EAAE,CAAC;oBACrB,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACP,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACF,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACzE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC;QAC3C,CAAC;QAED,6FAA6F;QAC7F,cAAc;QACd,IAAI,qBAAqB,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,qEAAqE;QACrE,IAAI,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/B,CAAC;QAED,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,eAAe;QAC5C,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAEvE,0BAA0B;QAC1B,wFAAwF;QACxF,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC/B,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,mCAAmC;gBACnC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACnC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBACnC,CAAC;oBACF,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnC,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,+DAA+D;QAC/D,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,QAAQ,CAAC;YACb,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAClC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACP,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7B,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC;YACF,CAAC;QACF,CAAC;QAED,iBAAiB;QACjB,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACzF,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBAC1D,IAAI,eAAe,GAAG,IAAI,CAAC,uBAAuB;oBACjD,CAAC,CAAC,YAAY,CAAC,MAAM;oBACrB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1C,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC9C,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;4BAClC,IAAI,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;4BACzC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;gCACvC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;4BACrC,CAAC;4BACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;4BAE3C,wDAAwD;4BACxD,8DAA8D;4BAC9D,+DAA+D;4BAC/D,+BAA+B;4BAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gCACvC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gCACxC,qBAAqB,GAAG,IAAI,CAAC;4BAC9B,CAAC;4BACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gCACrC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gCACtC,qBAAqB,GAAG,IAAI,CAAC;4BAC9B,CAAC;wBACF,CAAC;6BAAM,CAAC;4BACP,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;wBACzE,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC;oBACtD,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,6FAA6F;QAC7F,cAAc;QACd,IAAI,qBAAqB,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,qEAAqE;QACrE,IAAI,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/B,CAAC;IACF,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,mBAAmB,EAAE,iBAAiB;QACxD,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAC7C,IAAI,EACJ,mBAAmB,EACnB,iBAAiB,CACjB,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC;QAE3B,0BAA0B;QAC1B,wFAAwF;QACxF,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxD,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACzC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,mCAAmC;gBACnC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBAC7C,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,mBAAmB;QACnB,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC9C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBACzC,CAAC;yBAAM,CAAC;wBACP,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,2BAA2B,GAAG,GAAG,EAAE,CAAC,CAAC;oBAC7D,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,iBAAiB;QACjB,IAAI,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACnD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBAC1D,IAAI,sBAAsB,GACzB,CAAC,mBAAmB,CAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrF,IAAI,oBAAoB,GACvB,CAAC,iBAAiB,CAAC,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjF,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACrF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAC5C,sBAAsB,CAAC,GAAG,CAAC,EAC3B,oBAAoB,CAAC,GAAG,CAAC,CACzB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACP,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC;oBACtD,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,eAAe,EAAE,eAAe;QACzC,6BAA6B;QAC7B,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACtD,IAAI,GAAG,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACzC,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACvC,CAAC;YACF,CAAC;QACF,CAAC;QAED,8CAA8C;QAC9C,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC/E,CAAC;CACD;AACD,uFAAuF;AACvF,6BAA6B,CAAC,SAAS,CAAC,uBAAuB,GAAG,KAAK,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview Abstract base class for indexed collections (sets and maps)\n */\n\nconst { ChangeSet } = require(\"@fluid-experimental/property-changeset\");\nconst { ConsoleUtils } = require(\"@fluid-experimental/property-common\");\nconst { MSG } = require(\"@fluid-experimental/property-common\").constants;\nconst _ = require(\"lodash\");\n\nconst { deserialize } = require(\"../containerSerializer\");\nconst { validationsEnabled } = require(\"../enableValidations\");\n\nconst { AbstractStaticCollectionProperty } = require(\"./abstractStaticCollectionProperty\");\nconst { BaseProperty } = require(\"./baseProperty\");\n\n/**\n * typedef {property-properties.BaseProperty|string|number|boolean} property-properties.IndexedCollectionBaseProperty~ValueType\n *\n * The type of the values that are set/inserted into the collection. Depending on the type of the collection, these\n * can either be property objects or primitive values\n */\n\n/**\n * A IndexedCollectionBaseProperty is the base class for indexed collections (maps and sets). It should not be used\n * directly.\n */\nexport class IndexedCollectionBaseProperty extends AbstractStaticCollectionProperty {\n\t/**\n\t * @param {Object} in_params - Input parameters for property creation\n\t *\n\t * @constructor\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t/** Stores the pending changes in the property (those that are part of the current ChangeSet) */\n\t\tthis._pendingChanges = {\n\t\t\tinsert: {},\n\t\t\tremove: {},\n\t\t\tmodify: {},\n\t\t};\n\n\t\t/** Stores the dirty changes in the property (those that have not yet been reported to the application) */\n\t\tthis._dirtyChanges = {\n\t\t\tinsert: {},\n\t\t\tremove: {},\n\t\t\tmodify: {},\n\t\t};\n\t}\n\n\t/**\n\t * Removes the dirtiness flag from this property\n\t *\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_flags] - The flags to clean\n\t * If none are supplied, all will be removed.\n\t * @private\n\t */\n\t_cleanDirty(in_flags) {\n\t\t// Invoke parent\n\t\tBaseProperty.prototype._cleanDirty.call(this, in_flags);\n\n\t\tif (\n\t\t\tin_flags === undefined ||\n\t\t\t(in_flags & BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE) !== 0\n\t\t) {\n\t\t\t// We additionally have to remove the log on the changes to our entries\n\t\t\tthis._pendingChanges.insert = {};\n\t\t\tthis._pendingChanges.remove = {};\n\t\t\tthis._pendingChanges.modify = {};\n\t\t}\n\n\t\tif (in_flags === undefined || (in_flags & BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) !== 0) {\n\t\t\t// We additionally have to remove the log on the changes to our entries\n\t\t\tthis._dirtyChanges.insert = {};\n\t\t\tthis._dirtyChanges.remove = {};\n\t\t\tthis._dirtyChanges.modify = {};\n\t\t}\n\t}\n\n\t/**\n\t * Removes the dirtiness flag from this property and recursively from all of its children\n\t *\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_flags] - The flags to clean.\n\t * If none are supplied, all will be removed.\n\t */\n\tcleanDirty(in_flags) {\n\t\tin_flags =\n\t\t\tin_flags !== undefined\n\t\t\t\t? in_flags\n\t\t\t\t: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE;\n\n\t\t// Clean all entries inside of the collection\n\t\tlet cleanDirtiness = (collection) => {\n\t\t\tvar entry;\n\n\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\tfor (let key in collection) {\n\t\t\t\tentry = this._dynamicChildren[key];\n\t\t\t\tif (entry._isDirty(in_flags)) {\n\t\t\t\t\tentry.cleanDirty(in_flags);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (!this._containsPrimitiveTypes) {\n\t\t\tif (in_flags === BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) {\n\t\t\t\t// Only use the dirty entries\n\t\t\t\tcleanDirtiness(this._dirtyChanges.insert);\n\t\t\t\tcleanDirtiness(this._dirtyChanges.modify);\n\t\t\t} else if (in_flags === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE) {\n\t\t\t\t// Only use the pending changes\n\t\t\t\tcleanDirtiness(this._pendingChanges.insert);\n\t\t\t\tcleanDirtiness(this._pendingChanges.modify);\n\t\t\t} else {\n\t\t\t\tcleanDirtiness(this._pendingChanges.insert);\n\t\t\t\tcleanDirtiness(this._pendingChanges.modify);\n\t\t\t\tcleanDirtiness(this._dirtyChanges.insert);\n\t\t\t\tcleanDirtiness(this._dirtyChanges.modify);\n\t\t\t}\n\t\t}\n\n\t\t// Invoke parent\n\t\tBaseProperty.prototype.cleanDirty.call(this, in_flags);\n\n\t\t// after all entries have been cleaned, we mark this property as clean\n\t\tthis._cleanDirty(in_flags);\n\t}\n\n\t/**\n\t * Inserts a property into the collection\n\t *\n\t * @param {string} in_key - Key of the entry in the collection\n\t * @param {property-properties.IndexedCollectionBaseProperty~ValueType} in_value - The value to insert\n\t * @param {boolean} in_reportToView -\n\t * By default, the dirtying will always be reported to the checkout view and trigger a modified event there.\n\t * When batching updates, this can be prevented via this flag.\n\t */\n\t_insert(in_key, in_value, in_reportToView) {\n\t\tif (validationsEnabled.enabled) {\n\t\t\tthis._checkIsNotReadOnly(false);\n\t\t}\n\n\t\tif (!this.has(in_key)) {\n\t\t\t// Make sure, the property we are inserting is not already part of some other collection\n\t\t\tif (validationsEnabled.enabled && !this._containsPrimitiveTypes) {\n\t\t\t\tin_value._validateInsertIn(this);\n\t\t\t}\n\n\t\t\tthis._dynamicChildren[in_key] = in_value;\n\n\t\t\t// We have to make sure, both this node itself and the whole tree of the inserted\n\t\t\t// entry are marked as dirty to make sure, they get serialized\n\t\t\t// We don't yet report the dirtying to the view. This happens below.\n\t\t\tthis._setDirty(false);\n\n\t\t\tif (!this._containsPrimitiveTypes) {\n\t\t\t\t// Dirty the tree (TODO: is this needed?)\n\t\t\t\tin_value._setDirtyTree(false);\n\n\t\t\t\tin_value._setParent(this);\n\n\t\t\t\t// In the case of a template property, we always mark it as inserted\n\t\t\t\tthis._pendingChanges.insert[in_key] = true;\n\t\t\t\tthis._dirtyChanges.insert[in_key] = true;\n\t\t\t} else {\n\t\t\t\t// For primitive types we squash remove/insert combinations to modifies\n\t\t\t\tif (this._pendingChanges.remove[in_key] && !this._pendingChanges.insert[in_key]) {\n\t\t\t\t\tthis._pendingChanges.modify[in_key] = true;\n\t\t\t\t\tdelete this._pendingChanges.remove[in_key];\n\t\t\t\t} else {\n\t\t\t\t\tthis._pendingChanges.insert[in_key] = true;\n\t\t\t\t}\n\n\t\t\t\tif (this._dirtyChanges.remove[in_key] && !this._dirtyChanges.insert[in_key]) {\n\t\t\t\t\tthis._dirtyChanges.modify[in_key] = true;\n\t\t\t\t\tdelete this._dirtyChanges.remove[in_key];\n\t\t\t\t} else {\n\t\t\t\t\tthis._dirtyChanges.insert[in_key] = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Now make one report\n\t\t\tif (in_reportToView) {\n\t\t\t\tthis._reportDirtinessToView();\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(MSG.PROPERTY_ALREADY_EXISTS + in_key);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an entry with the given key\n\t *\n\t * @param {string} in_key - key of the entry\n\t * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n\t * trigger a modified event there.\n\t * When batching updates, this can be prevented via this flag.\n\t */\n\t_removeByKey(in_key, in_reportToView) {\n\t\tthis._checkIsNotReadOnly(false);\n\n\t\tif (this._dynamicChildren[in_key] !== undefined) {\n\t\t\tif (this._dynamicChildren[in_key] instanceof BaseProperty) {\n\t\t\t\tthis._dynamicChildren[in_key]._setParent(undefined);\n\t\t\t}\n\n\t\t\tdelete this._dynamicChildren[in_key];\n\n\t\t\t// make sure this is not present in the insert list!\n\t\t\tif (this._pendingChanges.insert[in_key]) {\n\t\t\t\tdelete this._pendingChanges.insert[in_key];\n\t\t\t} else {\n\t\t\t\tthis._pendingChanges.remove[in_key] = true;\n\n\t\t\t\t// Also remove modifies, if any are present\n\t\t\t\tdelete this._pendingChanges.modify[in_key];\n\t\t\t}\n\n\t\t\t// also update the list of dirty changes\n\t\t\tif (this._dirtyChanges.insert[in_key]) {\n\t\t\t\tdelete this._dirtyChanges.insert[in_key];\n\t\t\t} else {\n\t\t\t\tthis._dirtyChanges.remove[in_key] = true;\n\n\t\t\t\t// Also remove modifies, if any are present\n\t\t\t\tdelete this._dirtyChanges.modify[in_key];\n\t\t\t}\n\n\t\t\tthis._setDirty(in_reportToView);\n\t\t} else {\n\t\t\tthrow new Error(MSG.REMOVED_NON_EXISTING_ENTRY + in_key);\n\t\t}\n\t}\n\n\t/**\n\t * Serialize the property\n\t *\n\t * @param {boolean} in_dirtyOnly - Only include dirty entries in the serialization\n\t * @param {boolean} in_includeRootTypeid - Include the typeid of the root of the hierarchy\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] - The type of dirtiness to use\n\t * when reporting dirty changes. By default this is `PENDING_CHANGE`.\n\t * @param {boolean} [in_includeReferencedRepositories=false] - If this is set to true, the serialize\n\t * function will descend into referenced repositories.\n\t * WARNING: if there are loops in the references this can result in an infinite loop.\n\t *\n\t * @return {Object} The serialized representation of this property\n\t * @private\n\t */\n\t_serialize(\n\t\tin_dirtyOnly,\n\t\tin_includeRootTypeid,\n\t\tin_dirtinessType,\n\t\tin_includeReferencedRepositories,\n\t) {\n\t\tvar serialized = AbstractStaticCollectionProperty.prototype._serialize.call(\n\t\t\tthis,\n\t\t\tin_dirtyOnly,\n\t\t\tin_includeRootTypeid,\n\t\t\tin_dirtinessType,\n\t\t\tin_includeReferencedRepositories,\n\t\t);\n\n\t\tvar that = this;\n\n\t\t// Helper function to decide whether to include a typeid or not in the ChangeSet\n\t\tvar addEntryInChangeSet = function (in_changes, in_typeid, in_key, in_value) {\n\t\t\t// Determine where to insert the key. If necessary, an entry for the type is added.\n\t\t\tif (that._containsPrimitiveTypes) {\n\t\t\t\tin_changes[in_key] = that._serializeValue(in_value);\n\t\t\t} else {\n\t\t\t\tin_changes[in_typeid] = in_changes[in_typeid] || {};\n\t\t\t\tin_changes[in_typeid][in_key] = in_value;\n\t\t\t}\n\t\t};\n\n\t\tvar changes =\n\t\t\tin_dirtinessType === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE\n\t\t\t\t? this._pendingChanges\n\t\t\t\t: this._dirtyChanges;\n\t\tvar insert = {};\n\t\tvar modify = {};\n\t\t// we only remove entries when computing the delta\n\t\tvar remove = in_dirtyOnly ? _.keys(changes.remove) : [];\n\n\t\t// Iterate over all children (and not properties)\n\t\tvar typeid;\n\t\tvar entryKeys = in_dirtyOnly\n\t\t\t? _.keys(changes.modify).concat(_.keys(changes.insert)) // Only dirty keys\n\t\t\t: _.keys(this._dynamicChildren); // All keys\n\t\tfor (var i = 0; i < entryKeys.length; i++) {\n\t\t\tvar key = entryKeys[i];\n\t\t\tvar entry = this._dynamicChildren[key];\n\t\t\ttypeid = this._containsPrimitiveTypes\n\t\t\t\t? this.getFullTypeid(false)\n\t\t\t\t: entry.getFullTypeid(false);\n\t\t\tif (in_dirtyOnly) {\n\t\t\t\tif (changes.insert[key]) {\n\t\t\t\t\t// If the key was inserted in this ChangeSet include it into the inserted list\n\t\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\t\taddEntryInChangeSet(insert, typeid, key, entry);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddEntryInChangeSet(\n\t\t\t\t\t\t\tinsert,\n\t\t\t\t\t\t\ttypeid,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tentry._serialize(false, false, undefined, in_includeReferencedRepositories),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Check whether this is a modified entry and serialize changes when needed\n\t\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\t\tif (changes.modify[key]) {\n\t\t\t\t\t\t\taddEntryInChangeSet(modify, typeid, key, entry);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (entry._isDirty(in_dirtinessType)) {\n\t\t\t\t\t\t\tvar serializedChild = entry._serialize(\n\t\t\t\t\t\t\t\tin_dirtyOnly,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tin_dirtinessType,\n\t\t\t\t\t\t\t\tin_includeReferencedRepositories,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (!ChangeSet.isEmptyChangeSet(serializedChild)) {\n\t\t\t\t\t\t\t\taddEntryInChangeSet(modify, typeid, key, serializedChild);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If we serialize everything, all entries are inserted\n\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\tinsert[key] = this._serializeValue(entry);\n\t\t\t\t} else {\n\t\t\t\t\tinsert[typeid] = insert[typeid] || {};\n\t\t\t\t\tinsert[typeid][key] = entry._serialize(\n\t\t\t\t\t\tin_dirtyOnly,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tin_includeReferencedRepositories,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Serialize the changes\n\t\tif (!_.isEmpty(insert)) {\n\t\t\tserialized.insert = insert;\n\t\t}\n\n\t\tif (!_.isEmpty(remove)) {\n\t\t\tserialized.remove = remove;\n\t\t}\n\n\t\tif (!_.isEmpty(modify)) {\n\t\t\tserialized.modify = modify;\n\t\t}\n\n\t\treturn serialized;\n\t}\n\n\t/**\n\t * Function to deserialize special primitive types.\n\t * Some primitive types (e.g. Int64, which is not natively supported by javascript) require\n\t * special treatment on deserialization. For supported types, we can just return the input here.\n\t *\n\t * @param {property-properties.SerializedChangeSet} in_serializedObj - The object to be deserialized\n\t * @return {*} the deserialized value\n\t */\n\t_deserializeValue(in_serializedObj) {\n\t\treturn in_serializedObj;\n\t}\n\n\t/**\n\t * Function to serialize special primitive types.\n\t * Some primitive types (e.g. Int64, which is not natively supported by javascript) require\n\t * special treatment on serialization. For supported types, we can just return the input here.\n\t *\n\t * @param {*} in_obj - The object to be serialized\n\t * @return {property-properties.SerializedChangeSet} the serialized object\n\t */\n\t_serializeValue(in_obj) {\n\t\tConsoleUtils.assert(\n\t\t\tthis._containsPrimitiveTypes,\n\t\t\tMSG.ASSERTION_FAILED +\n\t\t\t\t\"Function IndexedCollectionBaseProperty._serializeValue() called on non-primitive collection\",\n\t\t);\n\t\treturn in_obj;\n\t}\n\n\t/**\n\t * @inheritdoc\n\t *\n\t * @param {Object} [in_filteringOptions = {}] - The filtering options to consider while deserializing the property.\n\t * @param {boolean} [in_createChangeSet = true] - Should a changeset be created for this deserialization?\n\t */\n\t_deserialize(in_serializedObj, in_reportToView, in_filteringOptions, in_createChangeSet) {\n\t\tvar currentEntries = this._dynamicChildren;\n\t\tvar allInsertedKeys = {};\n\n\t\tvar appliedChangeset = AbstractStaticCollectionProperty.prototype._deserialize.call(\n\t\t\tthis,\n\t\t\tin_serializedObj,\n\t\t\tfalse,\n\t\t\tin_filteringOptions,\n\t\t\tin_createChangeSet,\n\t\t);\n\n\t\t// Perform updates to the children\n\n\t\t// We make copies on two levels, since those are modified by the calls below\n\t\tvar insertedEntries =\n\t\t\t_.mapValues(in_serializedObj.insert, function (x) {\n\t\t\t\treturn _.clone(x);\n\t\t\t}) || {};\n\t\tvar removedEntries = {};\n\t\tvar modifiedEntries = {};\n\n\t\t// Get a list of all keys that will be inserted\n\t\tif (this._containsPrimitiveTypes) {\n\t\t\tvar dataKeys = _.keys(insertedEntries);\n\t\t\tfor (var iData = 0; iData < dataKeys.length; iData++) {\n\t\t\t\tvar key = dataKeys[iData];\n\t\t\t\tallInsertedKeys[key] = true;\n\t\t\t}\n\t\t} else {\n\t\t\tvar classKeys = _.keys(insertedEntries);\n\t\t\tfor (var iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\tvar typeid = classKeys[iClass];\n\t\t\t\tvar dataKeys = _.keys(insertedEntries[typeid]);\n\t\t\t\tfor (var iData = 0; iData < dataKeys.length; iData++) {\n\t\t\t\t\tvar key = dataKeys[iData];\n\t\t\t\t\tallInsertedKeys[key] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Intersect the list of current keys, with the list of keys that will\n\t\t// NOT be inserted. Then insert the difference in the remove list so that\n\t\t// no objects are left dangling\n\t\tvar keys = _.keys(currentEntries);\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tif (!allInsertedKeys[keys[i]]) {\n\t\t\t\tremovedEntries[keys[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\t// Remap adds to modify if the items are already in the document.\n\t\t// We want to make sure we reuse the current document state as much as possible\n\t\t// and simply change the bits that need to be changed. In many cases the\n\t\t// document will already contain the items but they need to be modified to\n\t\t// match the state described in_changeSet.\n\t\tif (this._containsPrimitiveTypes) {\n\t\t\tvar addedKeys = Object.keys(insertedEntries);\n\t\t\tfor (i = 0; i < addedKeys.length; i++) {\n\t\t\t\tif (currentEntries[addedKeys[i]] !== undefined) {\n\t\t\t\t\tmodifiedEntries[addedKeys[i]] = insertedEntries[addedKeys[i]];\n\t\t\t\t\tdelete insertedEntries[addedKeys[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tclassKeys = _.keys(insertedEntries);\n\t\t\tfor (iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\ttypeid = classKeys[iClass];\n\t\t\t\tvar addedKeys = Object.keys(insertedEntries[typeid]);\n\t\t\t\tfor (i = 0; i < addedKeys.length; i++) {\n\t\t\t\t\tif (currentEntries[addedKeys[i]] !== undefined) {\n\t\t\t\t\t\tmodifiedEntries[typeid] = modifiedEntries[typeid] || {};\n\t\t\t\t\t\tmodifiedEntries[typeid][addedKeys[i]] = insertedEntries[typeid][addedKeys[i]];\n\t\t\t\t\t\tdelete insertedEntries[typeid][addedKeys[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Remove add entries, when they are empty\n\t\t\t\tif (_.isEmpty(insertedEntries[typeid])) {\n\t\t\t\t\tdelete insertedEntries[typeid];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Begin by removing what needs to be removed.\n\t\tkeys = Object.keys(removedEntries);\n\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\tthis._removeByKey(keys[i], false);\n\t\t}\n\n\t\t// Now get the portion of the children that must be added\n\t\t// this is a straightforward deserialize.\n\t\tif (this._containsPrimitiveTypes) {\n\t\t\tkeys = _.keys(insertedEntries);\n\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\tthis._insert(keys[i], this._deserializeValue(insertedEntries[keys[i]]), false);\n\t\t\t}\n\t\t} else {\n\t\t\tvar scope = this._getScope();\n\t\t\tvar newPsets = deserialize(insertedEntries, scope);\n\t\t\tkeys = _.keys(newPsets);\n\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\tthis._insert(keys[i], newPsets[keys[i]], false);\n\t\t\t}\n\t\t}\n\n\t\t// If no typeids are included, we just use a placeholder for the iteration below\n\t\tvar classKeys = this._containsPrimitiveTypes ? [undefined] : _.keys(modifiedEntries);\n\n\t\t// Finally modify the existing properties\n\t\tvar mapWasChangedByModify = false;\n\t\tfor (iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\ttypeid = classKeys[iClass];\n\t\t\tvar modifiedKeys = Object.keys(\n\t\t\t\tthis._containsPrimitiveTypes ? modifiedEntries : modifiedEntries[typeid],\n\t\t\t);\n\t\t\tfor (i = 0; i < modifiedKeys.length; i++) {\n\t\t\t\tvar changes;\n\t\t\t\tvar valueWasChanged = false;\n\t\t\t\tvar modifiedEntriesMap;\n\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\tchanges = modifiedEntries[modifiedKeys[i]];\n\t\t\t\t\t// Determine if value has changed\n\t\t\t\t\tvalueWasChanged =\n\t\t\t\t\t\tthis._typeid === \"Int64\" || this._typeid === \"Uint64\"\n\t\t\t\t\t\t\t? // For (u)int64, we will compare (Ui/I)nt64 objects with arrays [low, high]\n\t\t\t\t\t\t\t\tthis._dynamicChildren[modifiedKeys[i]].getValueLow() !== changes[0] ||\n\t\t\t\t\t\t\t\tthis._dynamicChildren[modifiedKeys[i]].getValueHigh() !== changes[1]\n\t\t\t\t\t\t\t: this._dynamicChildren[modifiedKeys[i]] !== changes;\n\t\t\t\t\tmodifiedEntriesMap = modifiedEntries;\n\t\t\t\t\tif (valueWasChanged) {\n\t\t\t\t\t\tthis._dynamicChildren[modifiedKeys[i]] = this._deserializeValue(changes);\n\t\t\t\t\t\t// After modifying an entry, we have to update the flags\n\t\t\t\t\t\t// If there is a pending insert, we don't need to mark this as\n\t\t\t\t\t\t// a modify, as it will just change the insert. Otherwise, this\n\t\t\t\t\t\t// has to be reported as modify\n\t\t\t\t\t\tif (!this._pendingChanges.insert[modifiedKeys[i]]) {\n\t\t\t\t\t\t\tthis._pendingChanges.modify[modifiedKeys[i]] = true;\n\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._dirtyChanges.insert[modifiedKeys[i]]) {\n\t\t\t\t\t\t\tthis._dirtyChanges.modify[modifiedKeys[i]] = true;\n\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tchanges = this._dynamicChildren[modifiedKeys[i]]._deserialize(\n\t\t\t\t\t\tmodifiedEntries[typeid][modifiedKeys[i]],\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tin_filteringOptions,\n\t\t\t\t\t\tin_createChangeSet,\n\t\t\t\t\t);\n\t\t\t\t\tvalueWasChanged = !ChangeSet.isEmptyChangeSet(changes);\n\n\t\t\t\t\tmodifiedEntries[typeid] = modifiedEntries[typeid] || {};\n\t\t\t\t\tmodifiedEntriesMap = modifiedEntries[typeid];\n\t\t\t\t}\n\n\t\t\t\tif (valueWasChanged) {\n\t\t\t\t\tmodifiedEntriesMap[modifiedKeys[i]] = changes;\n\t\t\t\t} else {\n\t\t\t\t\tdelete modifiedEntriesMap[modifiedKeys[i]];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this._containsPrimitiveTypes && _.isEmpty(modifiedEntries[typeid])) {\n\t\t\t\tdelete modifiedEntries[typeid];\n\t\t\t}\n\t\t}\n\n\t\t// Create a ChangeSet with the actually applied changes\n\t\tif (!_.isEmpty(insertedEntries)) {\n\t\t\tappliedChangeset.insert = _.clone(insertedEntries);\n\t\t}\n\n\t\tif (!_.isEmpty(removedEntries)) {\n\t\t\tappliedChangeset.remove = _.keys(removedEntries);\n\t\t}\n\n\t\tif (!_.isEmpty(modifiedEntries)) {\n\t\t\tappliedChangeset.modify = modifiedEntries;\n\t\t}\n\n\t\t// If working with primitive types, we have to update the dirty flag, when one of the entries\n\t\t// was changed\n\t\tif (mapWasChangedByModify) {\n\t\t\tthis._setDirty(false);\n\t\t}\n\n\t\t// Finally report the dirtiness to the view (we postponed this above)\n\t\tif (in_reportToView) {\n\t\t\tthis._reportDirtinessToView();\n\t\t}\n\n\t\treturn appliedChangeset;\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_applyChangeset(in_changeSet, in_reportToView) {\n\t\tBaseProperty.prototype._applyChangeset.call(this, in_changeSet, false);\n\n\t\t// Remove existing entries\n\t\t// (we remove before we add, so that a remove+add operation in effect becomes a replace)\n\t\tif (in_changeSet.remove) {\n\t\t\tif (_.isArray(in_changeSet.remove)) {\n\t\t\t\tfor (var i = 0; i < in_changeSet.remove.length; i++) {\n\t\t\t\t\tvar key = in_changeSet.remove[i];\n\t\t\t\t\tthis._removeByKey(key, false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// handle remove is an object case:\n\t\t\t\tif (!this._containsPrimitiveTypes) {\n\t\t\t\t\tvar types = Object.keys(in_changeSet.remove);\n\t\t\t\t\tfor (var i = 0; i < types.length; i++) {\n\t\t\t\t\t\tvar keys = Object.keys(in_changeSet.remove[types[i]]);\n\t\t\t\t\t\tfor (var j = 0; j < keys.length; j++) {\n\t\t\t\t\t\t\tthis._removeByKey(keys[j], false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar keys = Object.keys(in_changeSet.remove);\n\t\t\t\t\tfor (var j = 0; j < keys.length; j++) {\n\t\t\t\t\t\tthis._removeByKey(keys[j], false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Insert entries (we just have to deserialize and insert them)\n\t\tif (in_changeSet.insert) {\n\t\t\tvar newPsets;\n\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\tnewPsets = in_changeSet.insert;\n\t\t\t} else {\n\t\t\t\tvar scope = this._getScope();\n\t\t\t\tnewPsets = deserialize(in_changeSet.insert, scope);\n\t\t\t}\n\t\t\tvar keys = Object.keys(newPsets);\n\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\tif (!this._dynamicChildren[keys[i]]) {\n\t\t\t\t\tthis._insert(keys[i], newPsets[keys[i]], false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(MSG.INSERTED_EXISTING_ENTRY + keys[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Modify entries\n\t\tvar mapWasChangedByModify = false;\n\t\tif (in_changeSet.modify) {\n\t\t\tvar classKeys = this._containsPrimitiveTypes ? [undefined] : _.keys(in_changeSet.modify);\n\t\t\tfor (var iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\tvar modifiedEntries = this._containsPrimitiveTypes\n\t\t\t\t\t? in_changeSet.modify\n\t\t\t\t\t: in_changeSet.modify[classKeys[iClass]];\n\t\t\t\tvar keys = Object.keys(modifiedEntries);\n\t\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\t\tvar key = keys[i];\n\t\t\t\t\tif (this._dynamicChildren[key] !== undefined) {\n\t\t\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\t\t\tvar modifiedEntry = modifiedEntries[key];\n\t\t\t\t\t\t\tif (typeof modifiedEntry === \"object\") {\n\t\t\t\t\t\t\t\tmodifiedEntry = modifiedEntry.value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._dynamicChildren[key] = modifiedEntry;\n\n\t\t\t\t\t\t\t// After modifying an entry, we have to update the flags\n\t\t\t\t\t\t\t// If there is a pending insert, we don't need to mark this as\n\t\t\t\t\t\t\t// a modify, as it will just change the insert. Otherwise, this\n\t\t\t\t\t\t\t// has to be reported as modify\n\t\t\t\t\t\t\tif (!this._pendingChanges.insert[key]) {\n\t\t\t\t\t\t\t\tthis._pendingChanges.modify[key] = true;\n\t\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!this._dirtyChanges.insert[key]) {\n\t\t\t\t\t\t\t\tthis._dirtyChanges.modify[key] = true;\n\t\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._dynamicChildren[key]._applyChangeset(modifiedEntries[key], false);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error(MSG.MODIFY_NON_EXISTING_ENTRY + key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If working with primitive types, we have to update the dirty flag, when one of the entries\n\t\t// was changed\n\t\tif (mapWasChangedByModify) {\n\t\t\tthis._setDirty(false);\n\t\t}\n\n\t\t// Finally report the dirtiness to the view (we postponed this above)\n\t\tif (in_reportToView) {\n\t\t\tthis._reportDirtinessToView();\n\t\t}\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_reapplyDirtyFlags(in_pendingChangeSet, in_dirtyChangeSet) {\n\t\tBaseProperty.prototype._reapplyDirtyFlags.call(\n\t\t\tthis,\n\t\t\tin_pendingChangeSet,\n\t\t\tin_dirtyChangeSet,\n\t\t);\n\n\t\tvar i, j, types, keys, key;\n\n\t\t// Remove existing entries\n\t\t// (we remove before we add, so that a remove+add operation in effect becomes a replace)\n\t\tif (in_pendingChangeSet.remove) {\n\t\t\tif (_.isArray(in_pendingChangeSet.remove)) {\n\t\t\t\tfor (i = 0; i < in_pendingChangeSet.remove.length; i++) {\n\t\t\t\t\tkey = in_pendingChangeSet.remove[i];\n\t\t\t\t\tthis._pendingChanges.remove[key] = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// handle remove is an object case:\n\t\t\t\ttypes = Object.keys(in_pendingChangeSet.remove);\n\t\t\t\tfor (i = 0; i < types.length; i++) {\n\t\t\t\t\tkeys = Object.keys(in_pendingChangeSet.remove[types[i]]);\n\t\t\t\t\tfor (j = 0; j < keys.length; j++) {\n\t\t\t\t\t\tthis._pendingChanges.remove[keys[j]] = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Inserted entries\n\t\tif (in_pendingChangeSet.insert) {\n\t\t\ttypes = Object.keys(in_pendingChangeSet.insert);\n\t\t\tfor (i = 0; i < types.length; i++) {\n\t\t\t\tkeys = Object.keys(in_pendingChangeSet.insert[types[i]]);\n\t\t\t\tfor (j = 0; j < keys.length; j++) {\n\t\t\t\t\tkey = keys[j];\n\t\t\t\t\tif (this._dynamicChildren[key] !== undefined) {\n\t\t\t\t\t\tthis._pendingChanges.insert[key] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error(`${MSG.CANT_DIRTY_MISSING_PROPERTY}${key}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Modify entries\n\t\tif (in_pendingChangeSet.modify) {\n\t\t\tvar classKeys = _.keys(in_pendingChangeSet.modify);\n\t\t\tfor (var iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\tvar modifiedPendingEntries =\n\t\t\t\t\t(in_pendingChangeSet.modify && in_pendingChangeSet.modify[classKeys[iClass]]) || {};\n\t\t\t\tvar modifiedDirtyEntries =\n\t\t\t\t\t(in_dirtyChangeSet.modify && in_dirtyChangeSet.modify[classKeys[iClass]]) || {};\n\t\t\t\tkeys = Object.keys(modifiedPendingEntries).concat(Object.keys(modifiedDirtyEntries));\n\t\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\t\tkey = keys[i];\n\t\t\t\t\tif (this._dynamicChildren[key] !== undefined) {\n\t\t\t\t\t\tthis._dynamicChildren[key]._reapplyDirtyFlags(\n\t\t\t\t\t\t\tmodifiedPendingEntries[key],\n\t\t\t\t\t\t\tmodifiedDirtyEntries[key],\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error(MSG.MODIFY_NON_EXISTING_ENTRY + key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_setDirty(in_reportToView, in_callingChild) {\n\t\t// Mark the child as modified\n\t\tif (in_callingChild && !this._containsPrimitiveTypes) {\n\t\t\tvar key = in_callingChild.getId();\n\t\t\tif (this._dynamicChildren[key]) {\n\t\t\t\tif (!this._pendingChanges.insert[key]) {\n\t\t\t\t\tthis._pendingChanges.modify[key] = true;\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyChanges.insert[key]) {\n\t\t\t\t\tthis._dirtyChanges.modify[key] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Forward dirtiness propagation to base class\n\t\tBaseProperty.prototype._setDirty.call(this, in_reportToView, in_callingChild);\n\t}\n}\n/** Specifies, whether this is a collection of base types or of registered templates */\nIndexedCollectionBaseProperty.prototype._containsPrimitiveTypes = false;\n"]}
1
+ {"version":3,"file":"indexedCollectionBaseProperty.js","sourceRoot":"","sources":["../../src/properties/indexedCollectionBaseProperty.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview Abstract base class for indexed collections (sets and maps)\n */\n\nconst { ChangeSet } = require(\"@fluid-experimental/property-changeset\");\nconst { ConsoleUtils } = require(\"@fluid-experimental/property-common\");\nconst { MSG } = require(\"@fluid-experimental/property-common\").constants;\nconst _ = require(\"lodash\");\n\nconst { deserialize } = require(\"../containerSerializer\");\nconst { validationsEnabled } = require(\"../enableValidations\");\n\nconst { AbstractStaticCollectionProperty } = require(\"./abstractStaticCollectionProperty\");\nconst { BaseProperty } = require(\"./baseProperty\");\n\n/**\n * typedef {property-properties.BaseProperty|string|number|boolean} property-properties.IndexedCollectionBaseProperty~ValueType\n *\n * The type of the values that are set/inserted into the collection. Depending on the type of the collection, these\n * can either be property objects or primitive values\n */\n\n/**\n * A IndexedCollectionBaseProperty is the base class for indexed collections (maps and sets). It should not be used\n * directly.\n */\nexport class IndexedCollectionBaseProperty extends AbstractStaticCollectionProperty {\n\t/**\n\t * @param {Object} in_params - Input parameters for property creation\n\t *\n\t * @constructor\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t/** Stores the pending changes in the property (those that are part of the current ChangeSet) */\n\t\tthis._pendingChanges = {\n\t\t\tinsert: {},\n\t\t\tremove: {},\n\t\t\tmodify: {},\n\t\t};\n\n\t\t/** Stores the dirty changes in the property (those that have not yet been reported to the application) */\n\t\tthis._dirtyChanges = {\n\t\t\tinsert: {},\n\t\t\tremove: {},\n\t\t\tmodify: {},\n\t\t};\n\t}\n\n\t/**\n\t * Removes the dirtiness flag from this property\n\t *\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_flags] - The flags to clean\n\t * If none are supplied, all will be removed.\n\t * @private\n\t */\n\t_cleanDirty(in_flags) {\n\t\t// Invoke parent\n\t\tBaseProperty.prototype._cleanDirty.call(this, in_flags);\n\n\t\tif (\n\t\t\tin_flags === undefined ||\n\t\t\t(in_flags & BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE) !== 0\n\t\t) {\n\t\t\t// We additionally have to remove the log on the changes to our entries\n\t\t\tthis._pendingChanges.insert = {};\n\t\t\tthis._pendingChanges.remove = {};\n\t\t\tthis._pendingChanges.modify = {};\n\t\t}\n\n\t\tif (in_flags === undefined || (in_flags & BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) !== 0) {\n\t\t\t// We additionally have to remove the log on the changes to our entries\n\t\t\tthis._dirtyChanges.insert = {};\n\t\t\tthis._dirtyChanges.remove = {};\n\t\t\tthis._dirtyChanges.modify = {};\n\t\t}\n\t}\n\n\t/**\n\t * Removes the dirtiness flag from this property and recursively from all of its children\n\t *\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_flags] - The flags to clean.\n\t * If none are supplied, all will be removed.\n\t */\n\tcleanDirty(in_flags) {\n\t\tin_flags =\n\t\t\tin_flags !== undefined\n\t\t\t\t? in_flags\n\t\t\t\t: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE;\n\n\t\t// Clean all entries inside of the collection\n\t\tlet cleanDirtiness = (collection) => {\n\t\t\tvar entry;\n\n\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\tfor (let key in collection) {\n\t\t\t\tentry = this._dynamicChildren[key];\n\t\t\t\tif (entry._isDirty(in_flags)) {\n\t\t\t\t\tentry.cleanDirty(in_flags);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (!this._containsPrimitiveTypes) {\n\t\t\tif (in_flags === BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) {\n\t\t\t\t// Only use the dirty entries\n\t\t\t\tcleanDirtiness(this._dirtyChanges.insert);\n\t\t\t\tcleanDirtiness(this._dirtyChanges.modify);\n\t\t\t} else if (in_flags === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE) {\n\t\t\t\t// Only use the pending changes\n\t\t\t\tcleanDirtiness(this._pendingChanges.insert);\n\t\t\t\tcleanDirtiness(this._pendingChanges.modify);\n\t\t\t} else {\n\t\t\t\tcleanDirtiness(this._pendingChanges.insert);\n\t\t\t\tcleanDirtiness(this._pendingChanges.modify);\n\t\t\t\tcleanDirtiness(this._dirtyChanges.insert);\n\t\t\t\tcleanDirtiness(this._dirtyChanges.modify);\n\t\t\t}\n\t\t}\n\n\t\t// Invoke parent\n\t\tBaseProperty.prototype.cleanDirty.call(this, in_flags);\n\n\t\t// after all entries have been cleaned, we mark this property as clean\n\t\tthis._cleanDirty(in_flags);\n\t}\n\n\t/**\n\t * Inserts a property into the collection\n\t *\n\t * @param {string} in_key - Key of the entry in the collection\n\t * @param {property-properties.IndexedCollectionBaseProperty~ValueType} in_value - The value to insert\n\t * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n\t * trigger a modified event there.\n\t * When batching updates, this can be prevented via this flag.\n\t */\n\t_insert(in_key, in_value, in_reportToView) {\n\t\tif (validationsEnabled.enabled) {\n\t\t\tthis._checkIsNotReadOnly(false);\n\t\t}\n\n\t\tif (!this.has(in_key)) {\n\t\t\t// Make sure, the property we are inserting is not already part of some other collection\n\t\t\tif (validationsEnabled.enabled && !this._containsPrimitiveTypes) {\n\t\t\t\tin_value._validateInsertIn(this);\n\t\t\t}\n\n\t\t\tthis._dynamicChildren[in_key] = in_value;\n\n\t\t\t// We have to make sure, both this node itself and the whole tree of the inserted\n\t\t\t// entry are marked as dirty to make sure, they get serialized\n\t\t\t// We don't yet report the dirtying to the view. This happens below.\n\t\t\tthis._setDirty(false);\n\n\t\t\tif (!this._containsPrimitiveTypes) {\n\t\t\t\t// Dirty the tree (TODO: is this needed?)\n\t\t\t\tin_value._setDirtyTree(false);\n\n\t\t\t\tin_value._setParent(this);\n\n\t\t\t\t// In the case of a template property, we always mark it as inserted\n\t\t\t\tthis._pendingChanges.insert[in_key] = true;\n\t\t\t\tthis._dirtyChanges.insert[in_key] = true;\n\t\t\t} else {\n\t\t\t\t// For primitive types we squash remove/insert combinations to modifies\n\t\t\t\tif (this._pendingChanges.remove[in_key] && !this._pendingChanges.insert[in_key]) {\n\t\t\t\t\tthis._pendingChanges.modify[in_key] = true;\n\t\t\t\t\tdelete this._pendingChanges.remove[in_key];\n\t\t\t\t} else {\n\t\t\t\t\tthis._pendingChanges.insert[in_key] = true;\n\t\t\t\t}\n\n\t\t\t\tif (this._dirtyChanges.remove[in_key] && !this._dirtyChanges.insert[in_key]) {\n\t\t\t\t\tthis._dirtyChanges.modify[in_key] = true;\n\t\t\t\t\tdelete this._dirtyChanges.remove[in_key];\n\t\t\t\t} else {\n\t\t\t\t\tthis._dirtyChanges.insert[in_key] = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Now make one report\n\t\t\tif (in_reportToView) {\n\t\t\t\tthis._reportDirtinessToView();\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(MSG.PROPERTY_ALREADY_EXISTS + in_key);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an entry with the given key\n\t *\n\t * @param {string} in_key - key of the entry\n\t * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n\t * trigger a modified event there.\n\t * When batching updates, this can be prevented via this flag.\n\t */\n\t_removeByKey(in_key, in_reportToView) {\n\t\tthis._checkIsNotReadOnly(false);\n\n\t\tif (this._dynamicChildren[in_key] !== undefined) {\n\t\t\tif (this._dynamicChildren[in_key] instanceof BaseProperty) {\n\t\t\t\tthis._dynamicChildren[in_key]._setParent(undefined);\n\t\t\t}\n\n\t\t\tdelete this._dynamicChildren[in_key];\n\n\t\t\t// make sure this is not present in the insert list!\n\t\t\tif (this._pendingChanges.insert[in_key]) {\n\t\t\t\tdelete this._pendingChanges.insert[in_key];\n\t\t\t} else {\n\t\t\t\tthis._pendingChanges.remove[in_key] = true;\n\n\t\t\t\t// Also remove modifies, if any are present\n\t\t\t\tdelete this._pendingChanges.modify[in_key];\n\t\t\t}\n\n\t\t\t// also update the list of dirty changes\n\t\t\tif (this._dirtyChanges.insert[in_key]) {\n\t\t\t\tdelete this._dirtyChanges.insert[in_key];\n\t\t\t} else {\n\t\t\t\tthis._dirtyChanges.remove[in_key] = true;\n\n\t\t\t\t// Also remove modifies, if any are present\n\t\t\t\tdelete this._dirtyChanges.modify[in_key];\n\t\t\t}\n\n\t\t\tthis._setDirty(in_reportToView);\n\t\t} else {\n\t\t\tthrow new Error(MSG.REMOVED_NON_EXISTING_ENTRY + in_key);\n\t\t}\n\t}\n\n\t/**\n\t * Serialize the property\n\t *\n\t * @param {boolean} in_dirtyOnly - Only include dirty entries in the serialization\n\t * @param {boolean} in_includeRootTypeid - Include the typeid of the root of the hierarchy\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] - The type of dirtiness to use\n\t * when reporting dirty changes. By default this is `PENDING_CHANGE`.\n\t * @param {boolean} [in_includeReferencedRepositories=false] - If this is set to true, the serialize\n\t * function will descend into referenced repositories.\n\t * WARNING: if there are loops in the references this can result in an infinite loop.\n\t *\n\t * @return {Object} The serialized representation of this property\n\t * @private\n\t */\n\t_serialize(\n\t\tin_dirtyOnly,\n\t\tin_includeRootTypeid,\n\t\tin_dirtinessType,\n\t\tin_includeReferencedRepositories,\n\t) {\n\t\tvar serialized = AbstractStaticCollectionProperty.prototype._serialize.call(\n\t\t\tthis,\n\t\t\tin_dirtyOnly,\n\t\t\tin_includeRootTypeid,\n\t\t\tin_dirtinessType,\n\t\t\tin_includeReferencedRepositories,\n\t\t);\n\n\t\tvar that = this;\n\n\t\t// Helper function to decide whether to include a typeid or not in the ChangeSet\n\t\tvar addEntryInChangeSet = function (in_changes, in_typeid, in_key, in_value) {\n\t\t\t// Determine where to insert the key. If necessary, an entry for the type is added.\n\t\t\tif (that._containsPrimitiveTypes) {\n\t\t\t\tin_changes[in_key] = that._serializeValue(in_value);\n\t\t\t} else {\n\t\t\t\tin_changes[in_typeid] = in_changes[in_typeid] || {};\n\t\t\t\tin_changes[in_typeid][in_key] = in_value;\n\t\t\t}\n\t\t};\n\n\t\tvar changes =\n\t\t\tin_dirtinessType === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE\n\t\t\t\t? this._pendingChanges\n\t\t\t\t: this._dirtyChanges;\n\t\tvar insert = {};\n\t\tvar modify = {};\n\t\t// we only remove entries when computing the delta\n\t\tvar remove = in_dirtyOnly ? _.keys(changes.remove) : [];\n\n\t\t// Iterate over all children (and not properties)\n\t\tvar typeid;\n\t\tvar entryKeys = in_dirtyOnly\n\t\t\t? _.keys(changes.modify).concat(_.keys(changes.insert)) // Only dirty keys\n\t\t\t: _.keys(this._dynamicChildren); // All keys\n\t\tfor (var i = 0; i < entryKeys.length; i++) {\n\t\t\tvar key = entryKeys[i];\n\t\t\tvar entry = this._dynamicChildren[key];\n\t\t\ttypeid = this._containsPrimitiveTypes\n\t\t\t\t? this.getFullTypeid(false)\n\t\t\t\t: entry.getFullTypeid(false);\n\t\t\tif (in_dirtyOnly) {\n\t\t\t\tif (changes.insert[key]) {\n\t\t\t\t\t// If the key was inserted in this ChangeSet include it into the inserted list\n\t\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\t\taddEntryInChangeSet(insert, typeid, key, entry);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddEntryInChangeSet(\n\t\t\t\t\t\t\tinsert,\n\t\t\t\t\t\t\ttypeid,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tentry._serialize(false, false, undefined, in_includeReferencedRepositories),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Check whether this is a modified entry and serialize changes when needed\n\t\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\t\tif (changes.modify[key]) {\n\t\t\t\t\t\t\taddEntryInChangeSet(modify, typeid, key, entry);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (entry._isDirty(in_dirtinessType)) {\n\t\t\t\t\t\t\tvar serializedChild = entry._serialize(\n\t\t\t\t\t\t\t\tin_dirtyOnly,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tin_dirtinessType,\n\t\t\t\t\t\t\t\tin_includeReferencedRepositories,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (!ChangeSet.isEmptyChangeSet(serializedChild)) {\n\t\t\t\t\t\t\t\taddEntryInChangeSet(modify, typeid, key, serializedChild);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If we serialize everything, all entries are inserted\n\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\tinsert[key] = this._serializeValue(entry);\n\t\t\t\t} else {\n\t\t\t\t\tinsert[typeid] = insert[typeid] || {};\n\t\t\t\t\tinsert[typeid][key] = entry._serialize(\n\t\t\t\t\t\tin_dirtyOnly,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tin_includeReferencedRepositories,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Serialize the changes\n\t\tif (!_.isEmpty(insert)) {\n\t\t\tserialized.insert = insert;\n\t\t}\n\n\t\tif (!_.isEmpty(remove)) {\n\t\t\tserialized.remove = remove;\n\t\t}\n\n\t\tif (!_.isEmpty(modify)) {\n\t\t\tserialized.modify = modify;\n\t\t}\n\n\t\treturn serialized;\n\t}\n\n\t/**\n\t * Function to deserialize special primitive types.\n\t * Some primitive types (e.g. Int64, which is not natively supported by javascript) require\n\t * special treatment on deserialization. For supported types, we can just return the input here.\n\t *\n\t * @param {property-properties.SerializedChangeSet} in_serializedObj - The object to be deserialized\n\t * @return {*} the deserialized value\n\t */\n\t_deserializeValue(in_serializedObj) {\n\t\treturn in_serializedObj;\n\t}\n\n\t/**\n\t * Function to serialize special primitive types.\n\t * Some primitive types (e.g. Int64, which is not natively supported by javascript) require\n\t * special treatment on serialization. For supported types, we can just return the input here.\n\t *\n\t * @param {*} in_obj - The object to be serialized\n\t * @return {property-properties.SerializedChangeSet} the serialized object\n\t */\n\t_serializeValue(in_obj) {\n\t\tConsoleUtils.assert(\n\t\t\tthis._containsPrimitiveTypes,\n\t\t\tMSG.ASSERTION_FAILED +\n\t\t\t\t\"Function IndexedCollectionBaseProperty._serializeValue() called on non-primitive collection\",\n\t\t);\n\t\treturn in_obj;\n\t}\n\n\t/**\n\t * @inheritdoc\n\t *\n\t * @param {Object} [in_filteringOptions = {}] - The filtering options to consider while deserializing the property.\n\t * @param {boolean} [in_createChangeSet = true] - Should a changeset be created for this deserialization?\n\t */\n\t_deserialize(in_serializedObj, in_reportToView, in_filteringOptions, in_createChangeSet) {\n\t\tvar currentEntries = this._dynamicChildren;\n\t\tvar allInsertedKeys = {};\n\n\t\tvar appliedChangeset = AbstractStaticCollectionProperty.prototype._deserialize.call(\n\t\t\tthis,\n\t\t\tin_serializedObj,\n\t\t\tfalse,\n\t\t\tin_filteringOptions,\n\t\t\tin_createChangeSet,\n\t\t);\n\n\t\t// Perform updates to the children\n\n\t\t// We make copies on two levels, since those are modified by the calls below\n\t\tvar insertedEntries =\n\t\t\t_.mapValues(in_serializedObj.insert, function (x) {\n\t\t\t\treturn _.clone(x);\n\t\t\t}) || {};\n\t\tvar removedEntries = {};\n\t\tvar modifiedEntries = {};\n\n\t\t// Get a list of all keys that will be inserted\n\t\tif (this._containsPrimitiveTypes) {\n\t\t\tvar dataKeys = _.keys(insertedEntries);\n\t\t\tfor (var iData = 0; iData < dataKeys.length; iData++) {\n\t\t\t\tvar key = dataKeys[iData];\n\t\t\t\tallInsertedKeys[key] = true;\n\t\t\t}\n\t\t} else {\n\t\t\tvar classKeys = _.keys(insertedEntries);\n\t\t\tfor (var iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\tvar typeid = classKeys[iClass];\n\t\t\t\tvar dataKeys = _.keys(insertedEntries[typeid]);\n\t\t\t\tfor (var iData = 0; iData < dataKeys.length; iData++) {\n\t\t\t\t\tvar key = dataKeys[iData];\n\t\t\t\t\tallInsertedKeys[key] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Intersect the list of current keys, with the list of keys that will\n\t\t// NOT be inserted. Then insert the difference in the remove list so that\n\t\t// no objects are left dangling\n\t\tvar keys = _.keys(currentEntries);\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tif (!allInsertedKeys[keys[i]]) {\n\t\t\t\tremovedEntries[keys[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\t// Remap adds to modify if the items are already in the document.\n\t\t// We want to make sure we reuse the current document state as much as possible\n\t\t// and simply change the bits that need to be changed. In many cases the\n\t\t// document will already contain the items but they need to be modified to\n\t\t// match the state described in_changeSet.\n\t\tif (this._containsPrimitiveTypes) {\n\t\t\tvar addedKeys = Object.keys(insertedEntries);\n\t\t\tfor (i = 0; i < addedKeys.length; i++) {\n\t\t\t\tif (currentEntries[addedKeys[i]] !== undefined) {\n\t\t\t\t\tmodifiedEntries[addedKeys[i]] = insertedEntries[addedKeys[i]];\n\t\t\t\t\tdelete insertedEntries[addedKeys[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tclassKeys = _.keys(insertedEntries);\n\t\t\tfor (iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\ttypeid = classKeys[iClass];\n\t\t\t\tvar addedKeys = Object.keys(insertedEntries[typeid]);\n\t\t\t\tfor (i = 0; i < addedKeys.length; i++) {\n\t\t\t\t\tif (currentEntries[addedKeys[i]] !== undefined) {\n\t\t\t\t\t\tmodifiedEntries[typeid] = modifiedEntries[typeid] || {};\n\t\t\t\t\t\tmodifiedEntries[typeid][addedKeys[i]] = insertedEntries[typeid][addedKeys[i]];\n\t\t\t\t\t\tdelete insertedEntries[typeid][addedKeys[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Remove add entries, when they are empty\n\t\t\t\tif (_.isEmpty(insertedEntries[typeid])) {\n\t\t\t\t\tdelete insertedEntries[typeid];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Begin by removing what needs to be removed.\n\t\tkeys = Object.keys(removedEntries);\n\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\tthis._removeByKey(keys[i], false);\n\t\t}\n\n\t\t// Now get the portion of the children that must be added\n\t\t// this is a straightforward deserialize.\n\t\tif (this._containsPrimitiveTypes) {\n\t\t\tkeys = _.keys(insertedEntries);\n\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\tthis._insert(keys[i], this._deserializeValue(insertedEntries[keys[i]]), false);\n\t\t\t}\n\t\t} else {\n\t\t\tvar scope = this._getScope();\n\t\t\tvar newPsets = deserialize(insertedEntries, scope);\n\t\t\tkeys = _.keys(newPsets);\n\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\tthis._insert(keys[i], newPsets[keys[i]], false);\n\t\t\t}\n\t\t}\n\n\t\t// If no typeids are included, we just use a placeholder for the iteration below\n\t\tvar classKeys = this._containsPrimitiveTypes ? [undefined] : _.keys(modifiedEntries);\n\n\t\t// Finally modify the existing properties\n\t\tvar mapWasChangedByModify = false;\n\t\tfor (iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\ttypeid = classKeys[iClass];\n\t\t\tvar modifiedKeys = Object.keys(\n\t\t\t\tthis._containsPrimitiveTypes ? modifiedEntries : modifiedEntries[typeid],\n\t\t\t);\n\t\t\tfor (i = 0; i < modifiedKeys.length; i++) {\n\t\t\t\tvar changes;\n\t\t\t\tvar valueWasChanged = false;\n\t\t\t\tvar modifiedEntriesMap;\n\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\tchanges = modifiedEntries[modifiedKeys[i]];\n\t\t\t\t\t// Determine if value has changed\n\t\t\t\t\tvalueWasChanged =\n\t\t\t\t\t\tthis._typeid === \"Int64\" || this._typeid === \"Uint64\"\n\t\t\t\t\t\t\t? // For (u)int64, we will compare (Ui/I)nt64 objects with arrays [low, high]\n\t\t\t\t\t\t\t\tthis._dynamicChildren[modifiedKeys[i]].getValueLow() !== changes[0] ||\n\t\t\t\t\t\t\t\tthis._dynamicChildren[modifiedKeys[i]].getValueHigh() !== changes[1]\n\t\t\t\t\t\t\t: this._dynamicChildren[modifiedKeys[i]] !== changes;\n\t\t\t\t\tmodifiedEntriesMap = modifiedEntries;\n\t\t\t\t\tif (valueWasChanged) {\n\t\t\t\t\t\tthis._dynamicChildren[modifiedKeys[i]] = this._deserializeValue(changes);\n\t\t\t\t\t\t// After modifying an entry, we have to update the flags\n\t\t\t\t\t\t// If there is a pending insert, we don't need to mark this as\n\t\t\t\t\t\t// a modify, as it will just change the insert. Otherwise, this\n\t\t\t\t\t\t// has to be reported as modify\n\t\t\t\t\t\tif (!this._pendingChanges.insert[modifiedKeys[i]]) {\n\t\t\t\t\t\t\tthis._pendingChanges.modify[modifiedKeys[i]] = true;\n\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._dirtyChanges.insert[modifiedKeys[i]]) {\n\t\t\t\t\t\t\tthis._dirtyChanges.modify[modifiedKeys[i]] = true;\n\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tchanges = this._dynamicChildren[modifiedKeys[i]]._deserialize(\n\t\t\t\t\t\tmodifiedEntries[typeid][modifiedKeys[i]],\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tin_filteringOptions,\n\t\t\t\t\t\tin_createChangeSet,\n\t\t\t\t\t);\n\t\t\t\t\tvalueWasChanged = !ChangeSet.isEmptyChangeSet(changes);\n\n\t\t\t\t\tmodifiedEntries[typeid] = modifiedEntries[typeid] || {};\n\t\t\t\t\tmodifiedEntriesMap = modifiedEntries[typeid];\n\t\t\t\t}\n\n\t\t\t\tif (valueWasChanged) {\n\t\t\t\t\tmodifiedEntriesMap[modifiedKeys[i]] = changes;\n\t\t\t\t} else {\n\t\t\t\t\tdelete modifiedEntriesMap[modifiedKeys[i]];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this._containsPrimitiveTypes && _.isEmpty(modifiedEntries[typeid])) {\n\t\t\t\tdelete modifiedEntries[typeid];\n\t\t\t}\n\t\t}\n\n\t\t// Create a ChangeSet with the actually applied changes\n\t\tif (!_.isEmpty(insertedEntries)) {\n\t\t\tappliedChangeset.insert = _.clone(insertedEntries);\n\t\t}\n\n\t\tif (!_.isEmpty(removedEntries)) {\n\t\t\tappliedChangeset.remove = _.keys(removedEntries);\n\t\t}\n\n\t\tif (!_.isEmpty(modifiedEntries)) {\n\t\t\tappliedChangeset.modify = modifiedEntries;\n\t\t}\n\n\t\t// If working with primitive types, we have to update the dirty flag, when one of the entries\n\t\t// was changed\n\t\tif (mapWasChangedByModify) {\n\t\t\tthis._setDirty(false);\n\t\t}\n\n\t\t// Finally report the dirtiness to the view (we postponed this above)\n\t\tif (in_reportToView) {\n\t\t\tthis._reportDirtinessToView();\n\t\t}\n\n\t\treturn appliedChangeset;\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_applyChangeset(in_changeSet, in_reportToView) {\n\t\tBaseProperty.prototype._applyChangeset.call(this, in_changeSet, false);\n\n\t\t// Remove existing entries\n\t\t// (we remove before we add, so that a remove+add operation in effect becomes a replace)\n\t\tif (in_changeSet.remove) {\n\t\t\tif (_.isArray(in_changeSet.remove)) {\n\t\t\t\tfor (var i = 0; i < in_changeSet.remove.length; i++) {\n\t\t\t\t\tvar key = in_changeSet.remove[i];\n\t\t\t\t\tthis._removeByKey(key, false);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// handle remove is an object case:\n\t\t\t\tif (!this._containsPrimitiveTypes) {\n\t\t\t\t\tvar types = Object.keys(in_changeSet.remove);\n\t\t\t\t\tfor (var i = 0; i < types.length; i++) {\n\t\t\t\t\t\tvar keys = Object.keys(in_changeSet.remove[types[i]]);\n\t\t\t\t\t\tfor (var j = 0; j < keys.length; j++) {\n\t\t\t\t\t\t\tthis._removeByKey(keys[j], false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar keys = Object.keys(in_changeSet.remove);\n\t\t\t\t\tfor (var j = 0; j < keys.length; j++) {\n\t\t\t\t\t\tthis._removeByKey(keys[j], false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Insert entries (we just have to deserialize and insert them)\n\t\tif (in_changeSet.insert) {\n\t\t\tvar newPsets;\n\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\tnewPsets = in_changeSet.insert;\n\t\t\t} else {\n\t\t\t\tvar scope = this._getScope();\n\t\t\t\tnewPsets = deserialize(in_changeSet.insert, scope);\n\t\t\t}\n\t\t\tvar keys = Object.keys(newPsets);\n\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\tif (!this._dynamicChildren[keys[i]]) {\n\t\t\t\t\tthis._insert(keys[i], newPsets[keys[i]], false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(MSG.INSERTED_EXISTING_ENTRY + keys[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Modify entries\n\t\tvar mapWasChangedByModify = false;\n\t\tif (in_changeSet.modify) {\n\t\t\tvar classKeys = this._containsPrimitiveTypes ? [undefined] : _.keys(in_changeSet.modify);\n\t\t\tfor (var iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\tvar modifiedEntries = this._containsPrimitiveTypes\n\t\t\t\t\t? in_changeSet.modify\n\t\t\t\t\t: in_changeSet.modify[classKeys[iClass]];\n\t\t\t\tvar keys = Object.keys(modifiedEntries);\n\t\t\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\t\t\tvar key = keys[i];\n\t\t\t\t\tif (this._dynamicChildren[key] !== undefined) {\n\t\t\t\t\t\tif (this._containsPrimitiveTypes) {\n\t\t\t\t\t\t\tvar modifiedEntry = modifiedEntries[key];\n\t\t\t\t\t\t\tif (typeof modifiedEntry === \"object\") {\n\t\t\t\t\t\t\t\tmodifiedEntry = modifiedEntry.value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._dynamicChildren[key] = modifiedEntry;\n\n\t\t\t\t\t\t\t// After modifying an entry, we have to update the flags\n\t\t\t\t\t\t\t// If there is a pending insert, we don't need to mark this as\n\t\t\t\t\t\t\t// a modify, as it will just change the insert. Otherwise, this\n\t\t\t\t\t\t\t// has to be reported as modify\n\t\t\t\t\t\t\tif (!this._pendingChanges.insert[key]) {\n\t\t\t\t\t\t\t\tthis._pendingChanges.modify[key] = true;\n\t\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!this._dirtyChanges.insert[key]) {\n\t\t\t\t\t\t\t\tthis._dirtyChanges.modify[key] = true;\n\t\t\t\t\t\t\t\tmapWasChangedByModify = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._dynamicChildren[key]._applyChangeset(modifiedEntries[key], false);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error(MSG.MODIFY_NON_EXISTING_ENTRY + key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If working with primitive types, we have to update the dirty flag, when one of the entries\n\t\t// was changed\n\t\tif (mapWasChangedByModify) {\n\t\t\tthis._setDirty(false);\n\t\t}\n\n\t\t// Finally report the dirtiness to the view (we postponed this above)\n\t\tif (in_reportToView) {\n\t\t\tthis._reportDirtinessToView();\n\t\t}\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_reapplyDirtyFlags(in_pendingChangeSet, in_dirtyChangeSet) {\n\t\tBaseProperty.prototype._reapplyDirtyFlags.call(\n\t\t\tthis,\n\t\t\tin_pendingChangeSet,\n\t\t\tin_dirtyChangeSet,\n\t\t);\n\n\t\tvar i, j, types, keys, key;\n\n\t\t// Remove existing entries\n\t\t// (we remove before we add, so that a remove+add operation in effect becomes a replace)\n\t\tif (in_pendingChangeSet.remove) {\n\t\t\tif (_.isArray(in_pendingChangeSet.remove)) {\n\t\t\t\tfor (i = 0; i < in_pendingChangeSet.remove.length; i++) {\n\t\t\t\t\tkey = in_pendingChangeSet.remove[i];\n\t\t\t\t\tthis._pendingChanges.remove[key] = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// handle remove is an object case:\n\t\t\t\ttypes = Object.keys(in_pendingChangeSet.remove);\n\t\t\t\tfor (i = 0; i < types.length; i++) {\n\t\t\t\t\tkeys = Object.keys(in_pendingChangeSet.remove[types[i]]);\n\t\t\t\t\tfor (j = 0; j < keys.length; j++) {\n\t\t\t\t\t\tthis._pendingChanges.remove[keys[j]] = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Inserted entries\n\t\tif (in_pendingChangeSet.insert) {\n\t\t\ttypes = Object.keys(in_pendingChangeSet.insert);\n\t\t\tfor (i = 0; i < types.length; i++) {\n\t\t\t\tkeys = Object.keys(in_pendingChangeSet.insert[types[i]]);\n\t\t\t\tfor (j = 0; j < keys.length; j++) {\n\t\t\t\t\tkey = keys[j];\n\t\t\t\t\tif (this._dynamicChildren[key] !== undefined) {\n\t\t\t\t\t\tthis._pendingChanges.insert[key] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error(`${MSG.CANT_DIRTY_MISSING_PROPERTY}${key}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Modify entries\n\t\tif (in_pendingChangeSet.modify) {\n\t\t\tvar classKeys = _.keys(in_pendingChangeSet.modify);\n\t\t\tfor (var iClass = 0; iClass < classKeys.length; iClass++) {\n\t\t\t\tvar modifiedPendingEntries =\n\t\t\t\t\t(in_pendingChangeSet.modify && in_pendingChangeSet.modify[classKeys[iClass]]) || {};\n\t\t\t\tvar modifiedDirtyEntries =\n\t\t\t\t\t(in_dirtyChangeSet.modify && in_dirtyChangeSet.modify[classKeys[iClass]]) || {};\n\t\t\t\tkeys = Object.keys(modifiedPendingEntries).concat(Object.keys(modifiedDirtyEntries));\n\t\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\t\tkey = keys[i];\n\t\t\t\t\tif (this._dynamicChildren[key] !== undefined) {\n\t\t\t\t\t\tthis._dynamicChildren[key]._reapplyDirtyFlags(\n\t\t\t\t\t\t\tmodifiedPendingEntries[key],\n\t\t\t\t\t\t\tmodifiedDirtyEntries[key],\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error(MSG.MODIFY_NON_EXISTING_ENTRY + key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_setDirty(in_reportToView, in_callingChild) {\n\t\t// Mark the child as modified\n\t\tif (in_callingChild && !this._containsPrimitiveTypes) {\n\t\t\tvar key = in_callingChild.getId();\n\t\t\tif (this._dynamicChildren[key]) {\n\t\t\t\tif (!this._pendingChanges.insert[key]) {\n\t\t\t\t\tthis._pendingChanges.modify[key] = true;\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyChanges.insert[key]) {\n\t\t\t\t\tthis._dirtyChanges.modify[key] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Forward dirtiness propagation to base class\n\t\tBaseProperty.prototype._setDirty.call(this, in_reportToView, in_callingChild);\n\t}\n}\n/** Specifies, whether this is a collection of base types or of registered templates */\nIndexedCollectionBaseProperty.prototype._containsPrimitiveTypes = false;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"intProperties.d.ts","sourceRoot":"","sources":["../../src/properties/intProperties.js"],"names":[],"mappings":"AAuBA;IAaE,cAAc;IAIhB,kBAAmC;CAFlC;AAID;;GAEG;AACH;IAYE,cAAc;IAIhB,kBAAoC;CAFnC;AAID;;GAEG;AACH;IAYE,cAAc;IAIhB,kBAAoC;CAFnC;AAID;;GAEG;AACH;IACC;;;;;;;;OAQG;IACH,wBAKC;IAHA,qBAAsC;IAKvC;;;;;;;;OAQG;IACH,oBANW,KAAK,kBAAc,oBACnB,OAAO,GAEN,OAAO,CAmBlB;IAED;;OAEG;IACH,gBAFY,MAAM,CAIjB;IAED;;OAEG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,sBAJW,MAAM,GAEL,OAAO,CAYlB;IAED;;;;OAIG;IACH,oBAJW,MAAM,GAEL,OAAO,CAYlB;IAED;;OAEG;IACH,qHAYC;IAiDD;;;;;;OAMG;IACH,oBAJW,MAAM,GAEL,MAAM,CAIjB;IAED;;;;;;;;;;OAUG;IACH,sBARW,MAAM,aACN,MAAM,QAahB;CACD;AAED;;;GAGG;AACH;IACC;;;;;;;OAOG;IACH,wBAEC;IAGF,8DAAoC;CAFnC;AAID;;;GAGG;AACH;IACC;;;;;;;OAOG;IACH,wBAEC;IAGF,8DAAqC;CAFpC"}
1
+ {"version":3,"file":"intProperties.d.ts","sourceRoot":"","sources":["../../src/properties/intProperties.js"],"names":[],"mappings":"AAuBA;IAaE,cAAc;IAIhB,kBAAmC;CAFlC;AAID;;GAEG;AACH;IAYE,cAAc;IAIhB,kBAAoC;CAFnC;AAID;;GAEG;AACH;IAYE,cAAc;IAIhB,kBAAoC;CAFnC;AAID;;GAEG;AACH;IACC;;;;;;;;OAQG;IACH,wBAKC;IAHA,qBAAsC;IAKvC;;;;;;;;OAQG;IACH,oBANW,KAAK,kBAAc,oBACnB,OAAO,GAEN,OAAO,CAmBlB;IAED;;OAEG;IACH,gBAFY,MAAM,CAIjB;IAED;;OAEG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,sBAJW,MAAM,GAEL,OAAO,CAYlB;IAED;;;;OAIG;IACH,oBAJW,MAAM,GAEL,OAAO,CAYlB;IAED;;OAEG;IACH,qHAYC;IAgDD;;;;;;OAMG;IACH,oBAJW,MAAM,GAEL,MAAM,CAIjB;IAED;;;;;;;;;;OAUG;IACH,sBARW,MAAM,aACN,MAAM,QAahB;CACD;AAED;;;GAGG;AACH;IACC;;;;;;;OAOG;IACH,wBAEC;IAGF,8DAAoC;CAFnC;AAID;;;GAGG;AACH;IACC;;;;;;;OAOG;IACH,wBAEC;IAGF,8DAAqC;CAFpC"}
@@ -182,12 +182,11 @@ export class Integer64Property extends ValueProperty {
182
182
  /**
183
183
  * Serialize the property
184
184
  *
185
- * @param {boolean} in_dirtyOnly -
186
- * Only include dirty entries in the serialization
187
- * @param {boolean} in_includeRootTypeid -
188
- * Include the typeid of the root of the hierarchy - has no effect for value properties
189
- * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] -
190
- * The type of dirtiness to use when reporting dirty changes. By default this is `PENDING_CHANGE`.
185
+ * @param {boolean} in_dirtyOnly - Only include dirty entries in the serialization
186
+ * @param {boolean} in_includeRootTypeid - Include the typeid of the root of the hierarchy.
187
+ * Has no effect for value properties.
188
+ * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] - The type of dirtiness to use
189
+ * when reporting dirty changes. By default this is `PENDING_CHANGE`.
191
190
  * @param {boolean} [in_includeReferencedRepositories=false] - If this is set to true, the serialize
192
191
  * function will descend into referenced repositories. WARNING: if there are loops in the references
193
192
  * this can result in an infinite loop
@@ -1 +1 @@
1
- {"version":3,"file":"intProperties.js","sourceRoot":"","sources":["../../src/properties/intProperties.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview Definition of the Int*Property classes\n */\n\nconst { ChangeSet } = require(\"@fluid-experimental/property-changeset\");\nconst {\n\tConsoleUtils,\n\tconstants: { MSG },\n\tUint64,\n\tInt64,\n} = require(\"@fluid-experimental/property-common\");\nconst _ = require(\"lodash\");\n\nconst { _castFunctors } = require(\"./primitiveTypeCasts\");\nconst { ValueProperty } = require(\"./valueProperty\");\n\nconst BIT32 = 4294967296;\n\nexport class Int8Property extends ValueProperty {\n\t/**\n\t * A primitive property for an signed 8 bit integer value.\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Int8Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t// default for this property type is '0'\n\t\tthis._data = 0;\n\t}\n}\nInt8Property.prototype._typeid = \"Int8\";\nInt8Property.prototype._castFunctor = _castFunctors.Int8;\n\n/**\n * A primitive property for an signed 16 bit integer value.\n */\nexport class Int16Property extends ValueProperty {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Int16Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t// default for this property type is '0'\n\t\tthis._data = 0;\n\t}\n}\nInt16Property.prototype._typeid = \"Int16\";\nInt16Property.prototype._castFunctor = _castFunctors.Int16;\n\n/**\n * A primitive property for an signed 32 bit integer value.\n */\nexport class Int32Property extends ValueProperty {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Int32Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t// default for this property type is '0'\n\t\tthis._data = 0;\n\t}\n}\nInt32Property.prototype._typeid = \"Int32\";\nInt32Property.prototype._castFunctor = _castFunctors.Int32;\n\n/**\n * A primitive property base class for big integer values.\n */\nexport class Integer64Property extends ValueProperty {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Integer64Property\n\t * @abstract\n\t * @category Value Properties\n\t */\n\tconstructor(in_params, dataConstructor) {\n\t\tsuper(in_params);\n\t\tthis.DataConstructor = dataConstructor;\n\t\t// default for this property type is '0, 0'\n\t\tthis._data = new this.DataConstructor();\n\t}\n\n\t/**\n\t * Internal function to update the value of the Integer64Property\n\t *\n\t * @param {Int64|String|Number} in_value - The new value\n\t * @param {boolean} [in_reportToView = true] - By default, the dirtying will always be reported to the checkout view\n\t * and trigger a modified event there. When batching updates, this can be prevented via this flag.\n\t * @return {boolean} true if the value was actually changed\n\t * @throws If in_value is a string that contains characters other than numbers\n\t */\n\t_setValue(in_value, in_reportToView) {\n\t\tvar oldLowValue = this._data.getValueLow();\n\t\tvar oldHighValue = this._data.getValueHigh();\n\n\t\tin_value = this._castFunctor(in_value);\n\n\t\tvar newHighValue = in_value.getValueHigh();\n\t\tvar newLowValue = in_value.getValueLow();\n\n\t\tvar changed = oldHighValue !== newHighValue || oldLowValue !== newLowValue;\n\n\t\tif (changed) {\n\t\t\tthis._data = in_value.clone();\n\t\t\tthis._setDirty(in_reportToView);\n\t\t}\n\t\treturn changed;\n\t}\n\n\t/**\n\t * @return {number} the higher 32 bit integer part\n\t */\n\tgetValueHigh() {\n\t\treturn this._data.getValueHigh();\n\t}\n\n\t/**\n\t * @return {number} the lower 32 bit integer part\n\t */\n\tgetValueLow() {\n\t\treturn this._data.getValueLow();\n\t}\n\n\t/**\n\t * @param {number} in_high - Set the higher 32 bit integer part\n\t * @throws If in_high is not a number\n\t * @return {boolean} true if the value was actually changed\n\t */\n\tsetValueHigh(in_high) {\n\t\tConsoleUtils.assert(_.isNumber(in_high), MSG.IN_HIGH_MUST_BE_NUMBER + in_high);\n\t\tvar changed = this._data.getValueHigh() !== in_high;\n\n\t\tif (changed) {\n\t\t\tvar newData = new this.DataConstructor(this.getValueLow(), in_high);\n\t\t\tthis._data = newData;\n\t\t\tthis._setDirty();\n\t\t}\n\t\treturn changed;\n\t}\n\n\t/**\n\t * @param {number} in_low - Set the lower 32 bit integer part\n\t * @throws If in_low is not a number\n\t * @return {boolean} true if the value was actually changed\n\t */\n\tsetValueLow(in_low) {\n\t\tConsoleUtils.assert(_.isNumber(in_low), MSG.IN_LOW_MUST_BE_NUMBER + in_low);\n\t\tvar changed = this._data.getValueLow() !== in_low;\n\n\t\tif (changed) {\n\t\t\tvar newData = new this.DataConstructor(in_low, this.getValueHigh());\n\t\t\tthis._data = newData;\n\t\t\tthis._setDirty();\n\t\t}\n\t\treturn changed;\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_deserialize(in_serializedObj, in_reportToView, in_filteringOptions, in_createChangeSet) {\n\t\tif (ChangeSet.isEmptyChangeSet(in_serializedObj)) {\n\t\t\treturn undefined;\n\t\t} else {\n\t\t\tConsoleUtils.assert(\n\t\t\t\t_.isArray(in_serializedObj) && in_serializedObj.length === 2,\n\t\t\t\tMSG.INVALID_INT64_CHANGESET,\n\t\t\t);\n\t\t\tvar readValue = new this.DataConstructor(in_serializedObj[0], in_serializedObj[1]);\n\t\t\tvar changed = this._setValue(readValue, in_reportToView);\n\t\t\treturn changed ? this.serialize() : undefined;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_applyChangeset(in_changeSet, in_reportToView, in_filteringOptions) {\n\t\tif (!ChangeSet.isEmptyChangeSet(in_changeSet)) {\n\t\t\tif (!_.isArray(in_changeSet)) {\n\t\t\t\tin_changeSet = in_changeSet.value;\n\t\t\t}\n\t\t\tConsoleUtils.assert(\n\t\t\t\t_.isArray(in_changeSet) && in_changeSet.length === 2,\n\t\t\t\tMSG.INVALID_INT64_CHANGESET,\n\t\t\t);\n\t\t\tvar newVal = new this.DataConstructor(in_changeSet[0], in_changeSet[1]);\n\t\t\tthis._setValue(newVal, in_reportToView);\n\t\t}\n\t}\n\n\t/**\n\t * Serialize the property\n\t *\n\t * @param {boolean} in_dirtyOnly -\n\t * Only include dirty entries in the serialization\n\t * @param {boolean} in_includeRootTypeid -\n\t * Include the typeid of the root of the hierarchy - has no effect for value properties\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] -\n\t * The type of dirtiness to use when reporting dirty changes. By default this is `PENDING_CHANGE`.\n\t * @param {boolean} [in_includeReferencedRepositories=false] - If this is set to true, the serialize\n\t * function will descend into referenced repositories. WARNING: if there are loops in the references\n\t * this can result in an infinite loop\n\t * @return {*} The serialized representation of this property\n\t * @private\n\t */\n\t_serialize(\n\t\tin_dirtyOnly,\n\t\tin_includeRootTypeid,\n\t\tin_dirtinessType,\n\t\tin_includeReferencedRepositories,\n\t) {\n\t\tif (in_dirtyOnly) {\n\t\t\treturn this._isDirty(in_dirtinessType)\n\t\t\t\t? [this._data.getValueLow(), this._data.getValueHigh()]\n\t\t\t\t: {};\n\t\t} else {\n\t\t\treturn [this._data.getValueLow(), this._data.getValueHigh()];\n\t\t}\n\t}\n\n\t/**\n\t * The toString() method returns a string representing the specified Integer64 object.\n\t *\n\t * @param {number} [in_radix = 10] - An integer between 2 and 36 specifying\n\t * the base to use for representing numeric values.\n\t * @return {string} A string representing the specified Integer64 object.\n\t */\n\ttoString(in_radix) {\n\t\treturn this._data.toString(in_radix);\n\t}\n\n\t/**\n\t * The Integer64.fromString() method parses a string argument updates object's lower and higher 32 bit integer parts.\n\t *\n\t * @param {string} in_string - The value to parse. Leading whitespace in the string argument is ignored.\n\t * @param {number} [in_radix = 10] - An integer between 2 and 36 that represents the\n\t * radix (the base in mathematical numeral systems) of the above mentioned string.\n\t * @throws if in_string is not a string\n\t * @throws if in_radix is entered but is not a number between 2 and 36\n\t * @throws if the property is a Uint64 property and in_string is a negative number\n\t * @throws if in_string contains characters other than numbers\n\t */\n\tfromString(in_string, in_radix) {\n\t\tConsoleUtils.assert(_.isString(in_string), MSG.IN_STRING_MUST_BE_STRING + in_string);\n\t\tvar int = this._castFunctor(in_string, in_radix);\n\n\t\tthis.setValueHigh(int.getValueHigh());\n\t\tthis.setValueLow(int.getValueLow());\n\t}\n}\n\n/**\n * A primitive property class for big signed integer values.\n * @internal\n */\nexport class Int64Property extends Integer64Property {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.Integer64Property\n\t * @alias property-properties.Int64Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params, Int64);\n\t}\n}\nInt64Property.prototype._typeid = \"Int64\";\nInt64Property.prototype._castFunctor = _castFunctors.Int64;\n\n/**\n * A primitive property class for big unsingned integer values.\n * @internal\n */\nexport class Uint64Property extends Integer64Property {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.Integer64Property\n\t * @alias property-properties.Uint64Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params, Uint64);\n\t}\n}\nUint64Property.prototype._typeid = \"Uint64\";\nUint64Property.prototype._castFunctor = _castFunctors.Uint64;\n"]}
1
+ {"version":3,"file":"intProperties.js","sourceRoot":"","sources":["../../src/properties/intProperties.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview Definition of the Int*Property classes\n */\n\nconst { ChangeSet } = require(\"@fluid-experimental/property-changeset\");\nconst {\n\tConsoleUtils,\n\tconstants: { MSG },\n\tUint64,\n\tInt64,\n} = require(\"@fluid-experimental/property-common\");\nconst _ = require(\"lodash\");\n\nconst { _castFunctors } = require(\"./primitiveTypeCasts\");\nconst { ValueProperty } = require(\"./valueProperty\");\n\nconst BIT32 = 4294967296;\n\nexport class Int8Property extends ValueProperty {\n\t/**\n\t * A primitive property for an signed 8 bit integer value.\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Int8Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t// default for this property type is '0'\n\t\tthis._data = 0;\n\t}\n}\nInt8Property.prototype._typeid = \"Int8\";\nInt8Property.prototype._castFunctor = _castFunctors.Int8;\n\n/**\n * A primitive property for an signed 16 bit integer value.\n */\nexport class Int16Property extends ValueProperty {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Int16Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t// default for this property type is '0'\n\t\tthis._data = 0;\n\t}\n}\nInt16Property.prototype._typeid = \"Int16\";\nInt16Property.prototype._castFunctor = _castFunctors.Int16;\n\n/**\n * A primitive property for an signed 32 bit integer value.\n */\nexport class Int32Property extends ValueProperty {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Int32Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params);\n\t\t// default for this property type is '0'\n\t\tthis._data = 0;\n\t}\n}\nInt32Property.prototype._typeid = \"Int32\";\nInt32Property.prototype._castFunctor = _castFunctors.Int32;\n\n/**\n * A primitive property base class for big integer values.\n */\nexport class Integer64Property extends ValueProperty {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.ValueProperty\n\t * @alias property-properties.Integer64Property\n\t * @abstract\n\t * @category Value Properties\n\t */\n\tconstructor(in_params, dataConstructor) {\n\t\tsuper(in_params);\n\t\tthis.DataConstructor = dataConstructor;\n\t\t// default for this property type is '0, 0'\n\t\tthis._data = new this.DataConstructor();\n\t}\n\n\t/**\n\t * Internal function to update the value of the Integer64Property\n\t *\n\t * @param {Int64|String|Number} in_value - The new value\n\t * @param {boolean} [in_reportToView = true] - By default, the dirtying will always be reported to the checkout view\n\t * and trigger a modified event there. When batching updates, this can be prevented via this flag.\n\t * @return {boolean} true if the value was actually changed\n\t * @throws If in_value is a string that contains characters other than numbers\n\t */\n\t_setValue(in_value, in_reportToView) {\n\t\tvar oldLowValue = this._data.getValueLow();\n\t\tvar oldHighValue = this._data.getValueHigh();\n\n\t\tin_value = this._castFunctor(in_value);\n\n\t\tvar newHighValue = in_value.getValueHigh();\n\t\tvar newLowValue = in_value.getValueLow();\n\n\t\tvar changed = oldHighValue !== newHighValue || oldLowValue !== newLowValue;\n\n\t\tif (changed) {\n\t\t\tthis._data = in_value.clone();\n\t\t\tthis._setDirty(in_reportToView);\n\t\t}\n\t\treturn changed;\n\t}\n\n\t/**\n\t * @return {number} the higher 32 bit integer part\n\t */\n\tgetValueHigh() {\n\t\treturn this._data.getValueHigh();\n\t}\n\n\t/**\n\t * @return {number} the lower 32 bit integer part\n\t */\n\tgetValueLow() {\n\t\treturn this._data.getValueLow();\n\t}\n\n\t/**\n\t * @param {number} in_high - Set the higher 32 bit integer part\n\t * @throws If in_high is not a number\n\t * @return {boolean} true if the value was actually changed\n\t */\n\tsetValueHigh(in_high) {\n\t\tConsoleUtils.assert(_.isNumber(in_high), MSG.IN_HIGH_MUST_BE_NUMBER + in_high);\n\t\tvar changed = this._data.getValueHigh() !== in_high;\n\n\t\tif (changed) {\n\t\t\tvar newData = new this.DataConstructor(this.getValueLow(), in_high);\n\t\t\tthis._data = newData;\n\t\t\tthis._setDirty();\n\t\t}\n\t\treturn changed;\n\t}\n\n\t/**\n\t * @param {number} in_low - Set the lower 32 bit integer part\n\t * @throws If in_low is not a number\n\t * @return {boolean} true if the value was actually changed\n\t */\n\tsetValueLow(in_low) {\n\t\tConsoleUtils.assert(_.isNumber(in_low), MSG.IN_LOW_MUST_BE_NUMBER + in_low);\n\t\tvar changed = this._data.getValueLow() !== in_low;\n\n\t\tif (changed) {\n\t\t\tvar newData = new this.DataConstructor(in_low, this.getValueHigh());\n\t\t\tthis._data = newData;\n\t\t\tthis._setDirty();\n\t\t}\n\t\treturn changed;\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_deserialize(in_serializedObj, in_reportToView, in_filteringOptions, in_createChangeSet) {\n\t\tif (ChangeSet.isEmptyChangeSet(in_serializedObj)) {\n\t\t\treturn undefined;\n\t\t} else {\n\t\t\tConsoleUtils.assert(\n\t\t\t\t_.isArray(in_serializedObj) && in_serializedObj.length === 2,\n\t\t\t\tMSG.INVALID_INT64_CHANGESET,\n\t\t\t);\n\t\t\tvar readValue = new this.DataConstructor(in_serializedObj[0], in_serializedObj[1]);\n\t\t\tvar changed = this._setValue(readValue, in_reportToView);\n\t\t\treturn changed ? this.serialize() : undefined;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritdoc\n\t */\n\t_applyChangeset(in_changeSet, in_reportToView, in_filteringOptions) {\n\t\tif (!ChangeSet.isEmptyChangeSet(in_changeSet)) {\n\t\t\tif (!_.isArray(in_changeSet)) {\n\t\t\t\tin_changeSet = in_changeSet.value;\n\t\t\t}\n\t\t\tConsoleUtils.assert(\n\t\t\t\t_.isArray(in_changeSet) && in_changeSet.length === 2,\n\t\t\t\tMSG.INVALID_INT64_CHANGESET,\n\t\t\t);\n\t\t\tvar newVal = new this.DataConstructor(in_changeSet[0], in_changeSet[1]);\n\t\t\tthis._setValue(newVal, in_reportToView);\n\t\t}\n\t}\n\n\t/**\n\t * Serialize the property\n\t *\n\t * @param {boolean} in_dirtyOnly - Only include dirty entries in the serialization\n\t * @param {boolean} in_includeRootTypeid - Include the typeid of the root of the hierarchy.\n\t * Has no effect for value properties.\n\t * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] - The type of dirtiness to use\n\t * when reporting dirty changes. By default this is `PENDING_CHANGE`.\n\t * @param {boolean} [in_includeReferencedRepositories=false] - If this is set to true, the serialize\n\t * function will descend into referenced repositories. WARNING: if there are loops in the references\n\t * this can result in an infinite loop\n\t * @return {*} The serialized representation of this property\n\t * @private\n\t */\n\t_serialize(\n\t\tin_dirtyOnly,\n\t\tin_includeRootTypeid,\n\t\tin_dirtinessType,\n\t\tin_includeReferencedRepositories,\n\t) {\n\t\tif (in_dirtyOnly) {\n\t\t\treturn this._isDirty(in_dirtinessType)\n\t\t\t\t? [this._data.getValueLow(), this._data.getValueHigh()]\n\t\t\t\t: {};\n\t\t} else {\n\t\t\treturn [this._data.getValueLow(), this._data.getValueHigh()];\n\t\t}\n\t}\n\n\t/**\n\t * The toString() method returns a string representing the specified Integer64 object.\n\t *\n\t * @param {number} [in_radix = 10] - An integer between 2 and 36 specifying\n\t * the base to use for representing numeric values.\n\t * @return {string} A string representing the specified Integer64 object.\n\t */\n\ttoString(in_radix) {\n\t\treturn this._data.toString(in_radix);\n\t}\n\n\t/**\n\t * The Integer64.fromString() method parses a string argument updates object's lower and higher 32 bit integer parts.\n\t *\n\t * @param {string} in_string - The value to parse. Leading whitespace in the string argument is ignored.\n\t * @param {number} [in_radix = 10] - An integer between 2 and 36 that represents the\n\t * radix (the base in mathematical numeral systems) of the above mentioned string.\n\t * @throws if in_string is not a string\n\t * @throws if in_radix is entered but is not a number between 2 and 36\n\t * @throws if the property is a Uint64 property and in_string is a negative number\n\t * @throws if in_string contains characters other than numbers\n\t */\n\tfromString(in_string, in_radix) {\n\t\tConsoleUtils.assert(_.isString(in_string), MSG.IN_STRING_MUST_BE_STRING + in_string);\n\t\tvar int = this._castFunctor(in_string, in_radix);\n\n\t\tthis.setValueHigh(int.getValueHigh());\n\t\tthis.setValueLow(int.getValueLow());\n\t}\n}\n\n/**\n * A primitive property class for big signed integer values.\n * @internal\n */\nexport class Int64Property extends Integer64Property {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.Integer64Property\n\t * @alias property-properties.Int64Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params, Int64);\n\t}\n}\nInt64Property.prototype._typeid = \"Int64\";\nInt64Property.prototype._castFunctor = _castFunctors.Int64;\n\n/**\n * A primitive property class for big unsingned integer values.\n * @internal\n */\nexport class Uint64Property extends Integer64Property {\n\t/**\n\t * @param {Object=} in_params - the parameters\n\t * @constructor\n\t * @protected\n\t * @extends property-properties.Integer64Property\n\t * @alias property-properties.Uint64Property\n\t * @category Value Properties\n\t */\n\tconstructor(in_params) {\n\t\tsuper(in_params, Uint64);\n\t}\n}\nUint64Property.prototype._typeid = \"Uint64\";\nUint64Property.prototype._castFunctor = _castFunctors.Uint64;\n"]}
@@ -77,8 +77,8 @@ export class MapProperty extends IndexedCollectionBaseProperty {
77
77
  * If .get resolves to a ReferenceProperty, it will return the property that the ReferenceProperty
78
78
  * refers to.
79
79
  * @param {Object} in_options - parameter object
80
- * @param {property-properties.BaseProperty.REFERENCE_RESOLUTION} [in_options.referenceResolutionMode=ALWAYS]- -
81
- * How should this function behave during reference resolution?
80
+ * @param {property-properties.BaseProperty.REFERENCE_RESOLUTION} [in_options.referenceResolutionMode=ALWAYS] - How
81
+ * should this function behave during reference resolution?
82
82
  *
83
83
  * @return {BaseProperty | undefined} The entry in the collection or undefined
84
84
  * if none could be found
@@ -296,8 +296,8 @@ export class MapProperty extends IndexedCollectionBaseProperty {
296
296
  * If .get resolves to a ReferenceProperty, it will return the property that the ReferenceProperty
297
297
  * refers to.
298
298
  * @param {Object} in_options - parameter object
299
- * @param {property-properties.BaseProperty.REFERENCE_RESOLUTION} [in_options.referenceResolutionMode=ALWAYS]- -
300
- * How should this function behave during reference resolution?
299
+ * @param {property-properties.BaseProperty.REFERENCE_RESOLUTION} [in_options.referenceResolutionMode=ALWAYS] - How
300
+ * should this function behave during reference resolution?
301
301
  *
302
302
  * @return {BaseProperty | undefined} The entry in the collection or undefined
303
303
  * if none could be found