@fluid-experimental/property-properties 0.58.1001 → 0.58.2000-58133

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 (223) hide show
  1. package/dist/containerSerializer.d.ts.map +1 -1
  2. package/dist/containerSerializer.js +4 -10
  3. package/dist/containerSerializer.js.map +1 -1
  4. package/dist/enableValidations.d.ts.map +1 -1
  5. package/dist/enableValidations.js +1 -1
  6. package/dist/enableValidations.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
  11. package/dist/properties/abstractStaticCollectionProperty.js +1 -28
  12. package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
  13. package/dist/properties/arrayProperty.d.ts.map +1 -1
  14. package/dist/properties/arrayProperty.js +26 -85
  15. package/dist/properties/arrayProperty.js.map +1 -1
  16. package/dist/properties/baseProperty.d.ts.map +1 -1
  17. package/dist/properties/baseProperty.js +9 -71
  18. package/dist/properties/baseProperty.js.map +1 -1
  19. package/dist/properties/boolProperty.d.ts.map +1 -1
  20. package/dist/properties/boolProperty.js +0 -1
  21. package/dist/properties/boolProperty.js.map +1 -1
  22. package/dist/properties/containerProperty.d.ts.map +1 -1
  23. package/dist/properties/containerProperty.js +4 -22
  24. package/dist/properties/containerProperty.js.map +1 -1
  25. package/dist/properties/enumArrayProperty.d.ts.map +1 -1
  26. package/dist/properties/enumArrayProperty.js +2 -14
  27. package/dist/properties/enumArrayProperty.js.map +1 -1
  28. package/dist/properties/enumProperty.d.ts.map +1 -1
  29. package/dist/properties/enumProperty.js +3 -10
  30. package/dist/properties/enumProperty.js.map +1 -1
  31. package/dist/properties/floatProperties.js +0 -2
  32. package/dist/properties/floatProperties.js.map +1 -1
  33. package/dist/properties/index.d.ts +7 -38
  34. package/dist/properties/index.d.ts.map +1 -1
  35. package/dist/properties/index.js +37 -68
  36. package/dist/properties/index.js.map +1 -1
  37. package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
  38. package/dist/properties/indexedCollectionBaseProperty.js +6 -18
  39. package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
  40. package/dist/properties/intProperties.d.ts.map +1 -1
  41. package/dist/properties/intProperties.js +3 -20
  42. package/dist/properties/intProperties.js.map +1 -1
  43. package/dist/properties/lazyLoadedProperties.js.map +1 -1
  44. package/dist/properties/mapProperty.d.ts.map +1 -1
  45. package/dist/properties/mapProperty.js +4 -23
  46. package/dist/properties/mapProperty.js.map +1 -1
  47. package/dist/properties/namedNodeProperty.d.ts.map +1 -1
  48. package/dist/properties/namedNodeProperty.js.map +1 -1
  49. package/dist/properties/namedProperty.d.ts.map +1 -1
  50. package/dist/properties/namedProperty.js +0 -3
  51. package/dist/properties/namedProperty.js.map +1 -1
  52. package/dist/properties/nodeProperty.d.ts.map +1 -1
  53. package/dist/properties/nodeProperty.js +0 -3
  54. package/dist/properties/nodeProperty.js.map +1 -1
  55. package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
  56. package/dist/properties/primitiveTypeCasts.js +2 -2
  57. package/dist/properties/primitiveTypeCasts.js.map +1 -1
  58. package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
  59. package/dist/properties/referenceArrayProperty.js +3 -16
  60. package/dist/properties/referenceArrayProperty.js.map +1 -1
  61. package/dist/properties/referenceMapProperty.d.ts.map +1 -1
  62. package/dist/properties/referenceMapProperty.js +3 -13
  63. package/dist/properties/referenceMapProperty.js.map +1 -1
  64. package/dist/properties/referenceProperty.d.ts.map +1 -1
  65. package/dist/properties/referenceProperty.js +4 -12
  66. package/dist/properties/referenceProperty.js.map +1 -1
  67. package/dist/properties/setProperty.d.ts.map +1 -1
  68. package/dist/properties/setProperty.js +3 -22
  69. package/dist/properties/setProperty.js.map +1 -1
  70. package/dist/properties/stringProperty.d.ts.map +1 -1
  71. package/dist/properties/stringProperty.js +12 -48
  72. package/dist/properties/stringProperty.js.map +1 -1
  73. package/dist/properties/uintProperties.js +0 -3
  74. package/dist/properties/uintProperties.js.map +1 -1
  75. package/dist/properties/valueArrayProperty.d.ts.map +1 -1
  76. package/dist/properties/valueArrayProperty.js +3 -45
  77. package/dist/properties/valueArrayProperty.js.map +1 -1
  78. package/dist/properties/valueMapProperty.d.ts.map +1 -1
  79. package/dist/properties/valueMapProperty.js +4 -29
  80. package/dist/properties/valueMapProperty.js.map +1 -1
  81. package/dist/properties/valueProperty.d.ts.map +1 -1
  82. package/dist/properties/valueProperty.js +2 -14
  83. package/dist/properties/valueProperty.js.map +1 -1
  84. package/dist/propertyFactory.d.ts.map +1 -1
  85. package/dist/propertyFactory.js +35 -72
  86. package/dist/propertyFactory.js.map +1 -1
  87. package/dist/propertyTemplate.d.ts.map +1 -1
  88. package/dist/propertyTemplate.js +0 -14
  89. package/dist/propertyTemplate.js.map +1 -1
  90. package/dist/propertyTemplateWrapper.d.ts.map +1 -1
  91. package/dist/propertyTemplateWrapper.js +4 -12
  92. package/dist/propertyTemplateWrapper.js.map +1 -1
  93. package/dist/propertyUtils.d.ts.map +1 -1
  94. package/dist/propertyUtils.js.map +1 -1
  95. package/dist/test/properties/arrayProperty.spec.js +82 -82
  96. package/dist/test/properties/arrayProperty.spec.js.map +1 -1
  97. package/dist/test/properties/baseProperty.spec.js +53 -53
  98. package/dist/test/properties/baseProperty.spec.js.map +1 -1
  99. package/dist/test/properties/containerProperty.spec.js +25 -25
  100. package/dist/test/properties/containerProperty.spec.js.map +1 -1
  101. package/dist/test/properties/customArrayProperty.spec.js +35 -35
  102. package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
  103. package/dist/test/properties/enumArrayProperty.spec.js +6 -6
  104. package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
  105. package/dist/test/properties/enumProperty.spec.js +26 -26
  106. package/dist/test/properties/enumProperty.spec.js.map +1 -1
  107. package/dist/test/properties/float32.spec.js.map +1 -1
  108. package/dist/test/properties/int64ArrayProperty.spec.js +22 -22
  109. package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
  110. package/dist/test/properties/int64MapProperty.spec.js +28 -28
  111. package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
  112. package/dist/test/properties/int64Property.spec.js +11 -11
  113. package/dist/test/properties/int64Property.spec.js.map +1 -1
  114. package/dist/test/properties/isLeafNode.spec.js +25 -25
  115. package/dist/test/properties/isLeafNode.spec.js.map +1 -1
  116. package/dist/test/properties/mapProperty.spec.js +110 -110
  117. package/dist/test/properties/mapProperty.spec.js.map +1 -1
  118. package/dist/test/properties/namedNodeProperty.spec.js +5 -5
  119. package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
  120. package/dist/test/properties/nodeProperty.spec.js +160 -160
  121. package/dist/test/properties/nodeProperty.spec.js.map +1 -1
  122. package/dist/test/properties/referenceProperty.spec.js +21 -21
  123. package/dist/test/properties/referenceProperty.spec.js.map +1 -1
  124. package/dist/test/properties/relationshipProperty.spec.js +4 -4
  125. package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
  126. package/dist/test/properties/setProperty.spec.js +32 -32
  127. package/dist/test/properties/setProperty.spec.js.map +1 -1
  128. package/dist/test/properties/stringProperty.spec.js +38 -38
  129. package/dist/test/properties/stringProperty.spec.js.map +1 -1
  130. package/dist/test/properties/uint64Property.spec.js +3 -3
  131. package/dist/test/properties/uint64Property.spec.js.map +1 -1
  132. package/dist/test/properties/valueMapProperty.spec.js +28 -28
  133. package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
  134. package/dist/test/properties/valueProperty.spec.js +7 -7
  135. package/dist/test/properties/valueProperty.spec.js.map +1 -1
  136. package/dist/test/propertyFactory.spec.js +559 -560
  137. package/dist/test/propertyFactory.spec.js.map +1 -1
  138. package/dist/test/propertyTemplateWrapper.spec.js +38 -38
  139. package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
  140. package/dist/test/propertyUtils.spec.js +5 -5
  141. package/dist/test/propertyUtils.spec.js.map +1 -1
  142. package/dist/test/reversibleChangeset.spec.js +266 -266
  143. package/dist/test/reversibleChangeset.spec.js.map +1 -1
  144. package/dist/test/setup.js.map +1 -1
  145. package/dist/test/tsconfig.tsbuildinfo +145 -145
  146. package/dist/test/utils.spec.js +508 -517
  147. package/dist/test/utils.spec.js.map +1 -1
  148. package/dist/test/validation/badMissingSemverInTypeid.js +9 -9
  149. package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
  150. package/dist/test/validation/badPrimitiveTypeid.js +5 -5
  151. package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
  152. package/dist/test/validation/goodColorId.js +42 -42
  153. package/dist/test/validation/goodColorId.js.map +1 -1
  154. package/dist/test/validation/goodColorPalette.js +2 -2
  155. package/dist/test/validation/goodColorPalette.js.map +1 -1
  156. package/dist/test/validation/goodPointId.js +9 -9
  157. package/dist/test/validation/goodPointId.js.map +1 -1
  158. package/dist/test/validation/reversibleChangeSetTestData.js +1 -1
  159. package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
  160. package/lib/containerSerializer.js +4 -10
  161. package/lib/containerSerializer.js.map +1 -1
  162. package/lib/enableValidations.js +1 -1
  163. package/lib/enableValidations.js.map +1 -1
  164. package/lib/index.js +1 -1
  165. package/lib/index.js.map +1 -1
  166. package/lib/properties/abstractStaticCollectionProperty.js +1 -28
  167. package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
  168. package/lib/properties/arrayProperty.js +26 -85
  169. package/lib/properties/arrayProperty.js.map +1 -1
  170. package/lib/properties/baseProperty.js +7 -69
  171. package/lib/properties/baseProperty.js.map +1 -1
  172. package/lib/properties/boolProperty.js +0 -1
  173. package/lib/properties/boolProperty.js.map +1 -1
  174. package/lib/properties/containerProperty.js +4 -22
  175. package/lib/properties/containerProperty.js.map +1 -1
  176. package/lib/properties/enumArrayProperty.js +2 -14
  177. package/lib/properties/enumArrayProperty.js.map +1 -1
  178. package/lib/properties/enumProperty.js +3 -10
  179. package/lib/properties/enumProperty.js.map +1 -1
  180. package/lib/properties/floatProperties.js +0 -2
  181. package/lib/properties/floatProperties.js.map +1 -1
  182. package/lib/properties/index.js +7 -38
  183. package/lib/properties/index.js.map +1 -1
  184. package/lib/properties/indexedCollectionBaseProperty.js +6 -18
  185. package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
  186. package/lib/properties/intProperties.js +3 -20
  187. package/lib/properties/intProperties.js.map +1 -1
  188. package/lib/properties/lazyLoadedProperties.js.map +1 -1
  189. package/lib/properties/mapProperty.js +4 -23
  190. package/lib/properties/mapProperty.js.map +1 -1
  191. package/lib/properties/namedNodeProperty.js.map +1 -1
  192. package/lib/properties/namedProperty.js +0 -3
  193. package/lib/properties/namedProperty.js.map +1 -1
  194. package/lib/properties/nodeProperty.js +0 -3
  195. package/lib/properties/nodeProperty.js.map +1 -1
  196. package/lib/properties/primitiveTypeCasts.js +2 -2
  197. package/lib/properties/primitiveTypeCasts.js.map +1 -1
  198. package/lib/properties/referenceArrayProperty.js +3 -16
  199. package/lib/properties/referenceArrayProperty.js.map +1 -1
  200. package/lib/properties/referenceMapProperty.js +3 -13
  201. package/lib/properties/referenceMapProperty.js.map +1 -1
  202. package/lib/properties/referenceProperty.js +4 -12
  203. package/lib/properties/referenceProperty.js.map +1 -1
  204. package/lib/properties/setProperty.js +3 -22
  205. package/lib/properties/setProperty.js.map +1 -1
  206. package/lib/properties/stringProperty.js +12 -48
  207. package/lib/properties/stringProperty.js.map +1 -1
  208. package/lib/properties/uintProperties.js +0 -3
  209. package/lib/properties/uintProperties.js.map +1 -1
  210. package/lib/properties/valueArrayProperty.js +3 -45
  211. package/lib/properties/valueArrayProperty.js.map +1 -1
  212. package/lib/properties/valueMapProperty.js +4 -29
  213. package/lib/properties/valueMapProperty.js.map +1 -1
  214. package/lib/properties/valueProperty.js +2 -14
  215. package/lib/properties/valueProperty.js.map +1 -1
  216. package/lib/propertyFactory.js +35 -72
  217. package/lib/propertyFactory.js.map +1 -1
  218. package/lib/propertyTemplate.js +0 -14
  219. package/lib/propertyTemplate.js.map +1 -1
  220. package/lib/propertyTemplateWrapper.js +4 -12
  221. package/lib/propertyTemplateWrapper.js.map +1 -1
  222. package/lib/propertyUtils.js.map +1 -1
  223. package/package.json +13 -6
@@ -71,15 +71,12 @@ export class PropertyTemplate {
71
71
  this._digestNestedInlineEnumProperties(this);
72
72
  this._serializedParams = in_params;
73
73
  }
74
- ;
75
74
  hasNestedProperties() {
76
75
  return (this.properties && this.properties.length > 0);
77
76
  }
78
- ;
79
77
  hasNestedConstants() {
80
78
  return (this.constants && this.constants.length > 0);
81
79
  }
82
- ;
83
80
  /**
84
81
  * internal function to recursivly traverse a property template and create dictionaries for found inline enums
85
82
  * @param {{}} in_currentPropertyLevel the current level in the template hierarchie
@@ -98,7 +95,6 @@ export class PropertyTemplate {
98
95
  }
99
96
  }
100
97
  }
101
- ;
102
98
  /**
103
99
  * read the enum types list of a template and create a dictionary [value->enum] and [enum->value] for it
104
100
  * to efficiently lookup enums/values when setting/getting them from the property
@@ -128,7 +124,6 @@ export class PropertyTemplate {
128
124
  }
129
125
  return enumDictionary;
130
126
  }
131
- ;
132
127
  /**
133
128
  * Clones the PropertyTemplate
134
129
  *
@@ -137,7 +132,6 @@ export class PropertyTemplate {
137
132
  clone() {
138
133
  return new PropertyTemplate(deepCopy(this._serializedParams));
139
134
  }
140
- ;
141
135
  /**
142
136
  * Method used to check whether the template is versioned.
143
137
  * A versioned template is of the form `xxxx-1.0.0`
@@ -151,7 +145,6 @@ export class PropertyTemplate {
151
145
  var version = splitTypeId.version;
152
146
  return /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/.test(version);
153
147
  }
154
- ;
155
148
  /**
156
149
  * Return the version number of the template.
157
150
  * @return {string} The version string is returned.
@@ -167,7 +160,6 @@ export class PropertyTemplate {
167
160
  return undefined;
168
161
  }
169
162
  }
170
- ;
171
163
  /**
172
164
  * Canonical representation of a PropertyTemplate.
173
165
  * This is similar to a deep copy but with adjustments so that the target is in
@@ -267,7 +259,6 @@ export class PropertyTemplate {
267
259
  }
268
260
  return in_target_;
269
261
  }
270
- ;
271
262
  /**
272
263
  * Return the serialized parameters passed in the constructor
273
264
  * @return {object} Serialized parameters
@@ -275,7 +266,6 @@ export class PropertyTemplate {
275
266
  serialize() {
276
267
  return deepCopy(this._serializedParams);
277
268
  }
278
- ;
279
269
  /**
280
270
  * Return the serialized parameters passed in the constructor, in a template canonical form
281
271
  * @return {object} canonical serialized parameters
@@ -283,7 +273,6 @@ export class PropertyTemplate {
283
273
  serializeCanonical() {
284
274
  return PropertyTemplate.prototype._canonicalForm(this._serializedParams);
285
275
  }
286
- ;
287
276
  /**
288
277
  * Return the typeid of the template without the version number
289
278
  * i.e. autodesk.core:color instead of autodesk.core:color-1.0.0
@@ -299,7 +288,6 @@ export class PropertyTemplate {
299
288
  return this.typeid;
300
289
  }
301
290
  }
302
- ;
303
291
  /**
304
292
  * Determines if the argument is a template structure
305
293
  *
@@ -314,7 +302,6 @@ export class PropertyTemplate {
314
302
  }
315
303
  return false;
316
304
  }
317
- ;
318
305
  /**
319
306
  * Extracts typeids directly referred to in a template
320
307
  *
@@ -399,6 +386,5 @@ export class PropertyTemplate {
399
386
  }
400
387
  return Object.keys(dependencies);
401
388
  }
402
- ;
403
389
  }
404
390
  //# sourceMappingURL=propertyTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"propertyTemplate.js","sourceRoot":"","sources":["../src/propertyTemplate.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 * @fileoverview\n * Declaration of the PropertyTemplate module\n * PropertyTemplate is used to describe a static property\n */\nconst _ = require('lodash');\nconst { TypeIdHelper } = require('@fluid-experimental/property-changeset');\nconst fastestJSONCopy = require('fastest-json-copy');\nconst deepCopy = fastestJSONCopy.copy;\nconst { ConsoleUtils } = require('@fluid-experimental/property-common');\nconst { MSG } = require('@fluid-experimental/property-common').constants;\n\nexport class PropertyTemplate {\n /**\n * Constructor for creating a PropertyTemplate based on the given parameters.\n * @param {object} in_params List of parameters\n * @param {string} in_params.id id of the property\n * @param {string} in_params.name Name of the property\n * @param {string} in_params.typeid The type identifier\n * @param {number=} [in_params.length=1] The length of the property. Only valid if\n * the property is an array, otherwise the length defaults to 1\n * @param {string} in_params.context The type of property this template represents\n * i.e. array, hash, etc.\n * @param {Array.<object>} in_params.properties List of property templates that\n * are used to define children properties\n * @param {Array.<object>} in_params.constants List of property templates that\n * are used to define constant properties and their values\n * @param {Array.<string>} in_params.inherits List of property template typeids that this\n * PropertyTemplate inherits from\n *\n * @constructor\n * @protected\n * @category Properties\n */\n constructor(in_params = {}) {\n let params = deepCopy(in_params);\n /** The identifier of the property */\n this.id = params.id;\n /** The type identifier of the property */\n this.typeid = params.typeid;\n\n /** Size of the property (if this is an array) */\n if (params.context === 'array') {\n if (params.length !== undefined) {\n this.length = params.length;\n } else {\n this.length = 0;\n }\n } else {\n this.length = 1;\n }\n ConsoleUtils.assert(_.isNumber(this.length), MSG.LENGTH_MUST_BE_NUMBER + this.length);\n\n /** The context of the property */\n this.context = params.context;\n\n /** Array with sub-properties */\n this.properties = params.properties;\n\n /** The annotation object */\n this.annotation = params.annotation || {};\n\n /** Array with constant properties */\n this.constants = params.constants;\n\n /** Typeids of properties this property inherits from */\n this.inherits = _.isString(params.inherits) ? [params.inherits] : params.inherits;\n\n if (_.includes(this.inherits, 'Enum')) {\n this._enumDictionary = this._parseEnums(this.properties);\n }\n // check for inlined enums and parse them:\n this._digestNestedInlineEnumProperties(this);\n this._serializedParams = in_params;\n };\n\n hasNestedProperties() {\n return (this.properties && this.properties.length > 0);\n };\n\n hasNestedConstants() {\n return (this.constants && this.constants.length > 0);\n };\n\n /**\n * internal function to recursivly traverse a property template and create dictionaries for found inline enums\n * @param {{}} in_currentPropertyLevel the current level in the template hierarchie\n */\n _digestNestedInlineEnumProperties(in_currentPropertyLevel) {\n if (in_currentPropertyLevel.properties) {\n for (var i = 0; i < in_currentPropertyLevel.properties.length; i++) {\n if (in_currentPropertyLevel.properties[i].typeid === 'Enum') {\n var dictionary = this._parseEnums(in_currentPropertyLevel.properties[i].properties);\n in_currentPropertyLevel.properties[i]._enumDictionary = dictionary;\n } else if (in_currentPropertyLevel.properties[i].properties) {\n // call self\n this._digestNestedInlineEnumProperties(in_currentPropertyLevel.properties[i]);\n }\n }\n }\n };\n\n /**\n * read the enum types list of a template and create a dictionary [value->enum] and [enum->value] for it\n * to efficiently lookup enums/values when setting/getting them from the property\n * @param {Array} in_enumProperties - the list of enums and their values and annotations\n * @return {{}} a dictionary [value->enum] and [enum->value]\n */\n _parseEnums(in_enumProperties) {\n var enumDictionary = { enumEntriesById: {}, enumEntriesByValue: {}, defaultValue: undefined };\n var minValue;\n if (in_enumProperties.length !== 0) {\n minValue = in_enumProperties[0].value;\n }\n for (var i = 0; i < in_enumProperties.length; i++) {\n var enumEntry = in_enumProperties[i];\n var value = enumEntry.value;\n ConsoleUtils.assert(enumEntry.id, MSG.ENUM_TYPEID_MISSING);\n ConsoleUtils.assert(!_.isNaN(enumEntry.value), MSG.ENUM_VALUE_NOT_NUMBER + value);\n enumDictionary.enumEntriesById[enumEntry.id] = { value: value, annotation: enumEntry.annotation };\n enumDictionary.enumEntriesByValue[value] = { id: enumEntry.id, annotation: enumEntry.annotation };\n minValue = value < minValue ? value : minValue;\n }\n\n if (enumDictionary.enumEntriesByValue.hasOwnProperty(0)) {\n enumDictionary.defaultValue = 0;\n } else {\n enumDictionary.defaultValue = minValue;\n }\n\n return enumDictionary;\n };\n\n /**\n * Clones the PropertyTemplate\n *\n * @return {property-properties.PropertyTemplate} The cloned template\n */\n clone() {\n return new PropertyTemplate(deepCopy(this._serializedParams));\n };\n\n /**\n * Method used to check whether the template is versioned.\n * A versioned template is of the form `xxxx-1.0.0`\n * @return {boolean} Returns true if the template is versioned, false otherwise\n */\n _isVersioned() {\n var splitTypeId = TypeIdHelper.extractVersion(this.typeid);\n\n if (!splitTypeId.version) {\n return false;\n }\n\n var version = splitTypeId.version;\n\n return /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)$/.test(version);\n };\n\n /**\n * Return the version number of the template.\n * @return {string} The version string is returned.\n */\n getVersion() {\n if (this._isVersioned()) {\n var splitTypeId = TypeIdHelper.extractVersion(this.typeid);\n var version = splitTypeId.version;\n return version;\n } else {\n console.warn(MSG.TEMPLATE_NOT_VERSIONED, this.typeid);\n return undefined;\n }\n };\n\n /**\n * Canonical representation of a PropertyTemplate.\n * This is similar to a deep copy but with adjustments so that the target is in\n * canonical form for a template property i.e. a) if array length\n * is not specified it is set to 0 in the target, b) string value\n * for 'inherits' property is converted to single-value array\n * Deep copy an object.\n *\n * @param {*} in_obj - the object to create a canonical copy of.\n * @param {Object|Array} [in_target_] - copy into this object.\n * @param {string} [in_key_] - key in in_target_ at which to place\n * the copied object.\n * @param {boolean} [in_preserve_ = false] - do not overwrite structs / arrays in\n * in an existing object\n *\n * @return {*} in_target_ if specified, new object containing canonical copy of @obj\n * otherwise.\n * @return {string} The version string is returned.\n */\n _canonicalForm(in_obj, in_target_, in_key_, in_preserve_) {\n\n in_preserve_ = in_preserve_ === undefined ? false : in_preserve_;\n\n var target, copyMembers;\n var copyDirectlyIntoKey = false;\n if (in_target_ && (in_key_ === undefined ||\n (in_key_ &&\n in_target_.hasOwnProperty(in_key_) &&\n _.isObject(in_target_[in_key_]) &&\n in_preserve_))) {\n // If no key is given, we directly copy into the\n // target object. Additionally, when a key is given, the member already exists\n // in the target object and preserve is set, we also keep the target object.\n // This is only possible if the target is already an\n // object.\n target = in_key_ ? in_target_[in_key_] : in_target_;\n\n if (_.isFunction(in_obj) ||\n _.isDate(in_obj) ||\n _.isRegExp(in_obj) ||\n (_.isObject(in_obj) !== _.isObject(target)) ||\n (_.isArray(in_obj) !== _.isArray(target)) ||\n !_.isObject(target)) {\n throw new Error(\n MSG.INVALID_TARGET_PROPERTY_TEMPLATE + this.typeid\n );\n }\n copyMembers = true;\n copyDirectlyIntoKey = true;\n\n } else {\n // If no existing target object, we create a new object.\n\n // literals are directly assigned to the target\n if (!in_obj || !_.isObject(in_obj) || _.isFunction(in_obj)) {\n target = in_obj;\n // Special case handlers for dates and regexps\n // (https://github.com/jashkenas/underscore/pull/595)\n } else if (_.isDate(in_obj)) {\n target = new Date(in_obj.getTime());\n } else if (_.isRegExp(in_obj)) {\n target = new RegExp(in_obj.source, in_obj.toString().replace(/.*\\//, ''));\n // For objects and arrays we create a new object/array\n } else if (_.isObject(in_obj)) {\n target = _.isArray(in_obj) ? [] : {};\n copyMembers = true;\n } else {\n throw new Error(\n MSG.MISSING_CASE_IN_TEMPLATE_SERIALIZATION + this.typeid\n );\n }\n }\n\n // If this is either an object or an array, we have to do a 'normalized' deep copy\n // and recursively copy all members. Normalized means the target will be a normalized\n // representation of the input property with respect to the canonical representation\n // of a template i.e. : if array length is not specified it is set to 0.\n // Other rules will follow\n if (copyMembers) {\n var keys = _.keys(in_obj);\n var l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n this._canonicalForm(in_obj[key], target, key, in_preserve_);\n }\n\n // If context is array and length is absent set it to 0\n if (_.includes(keys, 'context') && in_obj['context'] === 'array' && !_.includes(keys, 'length')) {\n target['length'] = 0;\n }\n\n // If inherit value is present and is a single string convert it to single element array\n if (_.includes(keys, 'inherits') && in_obj['inherits'] && !_.isObject(in_obj['inherits'])) {\n target['inherits'] = [in_obj['inherits']];\n }\n }\n\n if (!in_key_) {\n // If you don't give a path, then we return the original or copied object\n return target;\n } else if (!copyDirectlyIntoKey) {\n // If you give a path, we use the path as a key.\n in_target_[in_key_] = target;\n }\n\n return in_target_;\n };\n\n /**\n * Return the serialized parameters passed in the constructor\n * @return {object} Serialized parameters\n */\n serialize() {\n return deepCopy(this._serializedParams);\n };\n\n /**\n * Return the serialized parameters passed in the constructor, in a template canonical form\n * @return {object} canonical serialized parameters\n */\n serializeCanonical() {\n return PropertyTemplate.prototype._canonicalForm(this._serializedParams);\n };\n\n /**\n * Return the typeid of the template without the version number\n * i.e. autodesk.core:color instead of autodesk.core:color-1.0.0\n * @return {string} The typeid without the version is returned.\n * If the template is not versioned, the typeid is return.\n */\n getTypeidWithoutVersion() {\n if (this._isVersioned()) {\n var splitTypeId = TypeIdHelper.extractVersion(this.typeid);\n return splitTypeId.typeidWithoutVersion;\n } else {\n return this.typeid;\n }\n };\n\n /**\n * Determines if the argument is a template structure\n *\n * @public\n * @param {object} in_param parameter to assess\n *\n * @return {Boolean} returns true if in_param is a template\n */\n static isTemplate(in_param) {\n if (in_param.typeid && in_param.typeid.indexOf(':') !== -1) {\n return true;\n }\n return false;\n };\n\n /**\n * Extracts typeids directly referred to in a template\n *\n * @public\n * @param {object} template structure from which to extract dependencies\n *\n * @return {Array} list of typeids this template refers directly to\n */\n static extractDependencies(template) {\n var dependencies = {};\n\n if (template.inherits) {\n var inherits = (typeof template.inherits === 'string') ? [template.inherits] : template.inherits;\n for (var i = 0; i < inherits.length; i++) {\n var elem = TypeIdHelper.extractTypeId(inherits[i]);\n dependencies[elem] = true;\n }\n }\n\n if (template.properties) {\n var properties = template.properties;\n for (var i = 0; i < properties.length; i++) {\n var property = properties[i];\n if (PropertyTemplate.isTemplate(property)) {\n var typeid = TypeIdHelper.extractTypeId(property.typeid);\n dependencies[typeid] = true;\n\n if (property.typedValue) {\n for (var t = 0; t < property.typedValue.length; t++) {\n var typedValue = property.typedValue[t];\n dependencies[typedValue.typeid] = true;\n }\n }\n } else if (property.properties) {\n var deps = PropertyTemplate.extractDependencies(property);\n for (var j = 0; j < deps.length; j++) {\n var typeid = TypeIdHelper.extractTypeId(deps[j]);\n dependencies[typeid] = true;\n }\n }\n }\n }\n\n if (template.constants) {\n var constants = template.constants;\n for (var i = 0; i < constants.length; i++) {\n var constant = constants[i];\n if (PropertyTemplate.isTemplate(constant)) {\n var typeid = TypeIdHelper.extractTypeId(constant.typeid);\n dependencies[typeid] = true;\n } else if (constant.context === 'map' && constant.contextKeyType === 'typeid' && constant.value) {\n var keys = Object.keys(constant.value);\n for (var k = 0; k < keys.length; k++) {\n var typeid = TypeIdHelper.extractTypeId(keys[k]);\n dependencies[typeid] = true;\n }\n }\n\n // Search for typeid hidden in typedValue\n // the context could be inherited and therefore missing, so we have to try them all.\n if (constant.typedValue) {\n // for arrays\n if (_.isArray(constant.typedValue)) {\n for (var t = 0; t < constant.typedValue.length; t++) {\n var typedValue = constant.typedValue[t];\n dependencies[typedValue.typeid] = true;\n }\n // for singles\n } else if (constant.typedValue.typeid) {\n dependencies[constant.typedValue.typeid] = true;\n // for maps\n } else {\n var keys = Object.keys(constant.typedValue);\n for (var k = 0; k < keys.length; k++) {\n var typeid = constant.typedValue[keys[k]].typeid;\n if (typeid) {\n dependencies[typeid] = true;\n }\n }\n }\n }\n }\n }\n\n return Object.keys(dependencies);\n };\n\n}\n"]}
1
+ {"version":3,"file":"propertyTemplate.js","sourceRoot":"","sources":["../src/propertyTemplate.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 * @fileoverview\n * Declaration of the PropertyTemplate module\n * PropertyTemplate is used to describe a static property\n */\nconst _ = require('lodash');\nconst { TypeIdHelper } = require('@fluid-experimental/property-changeset');\nconst fastestJSONCopy = require('fastest-json-copy');\nconst deepCopy = fastestJSONCopy.copy;\nconst { ConsoleUtils } = require('@fluid-experimental/property-common');\nconst { MSG } = require('@fluid-experimental/property-common').constants;\n\nexport class PropertyTemplate {\n /**\n * Constructor for creating a PropertyTemplate based on the given parameters.\n * @param {object} in_params List of parameters\n * @param {string} in_params.id id of the property\n * @param {string} in_params.name Name of the property\n * @param {string} in_params.typeid The type identifier\n * @param {number=} [in_params.length=1] The length of the property. Only valid if\n * the property is an array, otherwise the length defaults to 1\n * @param {string} in_params.context The type of property this template represents\n * i.e. array, hash, etc.\n * @param {Array.<object>} in_params.properties List of property templates that\n * are used to define children properties\n * @param {Array.<object>} in_params.constants List of property templates that\n * are used to define constant properties and their values\n * @param {Array.<string>} in_params.inherits List of property template typeids that this\n * PropertyTemplate inherits from\n *\n * @constructor\n * @protected\n * @category Properties\n */\n constructor(in_params = {}) {\n let params = deepCopy(in_params);\n /** The identifier of the property */\n this.id = params.id;\n /** The type identifier of the property */\n this.typeid = params.typeid;\n\n /** Size of the property (if this is an array) */\n if (params.context === 'array') {\n if (params.length !== undefined) {\n this.length = params.length;\n } else {\n this.length = 0;\n }\n } else {\n this.length = 1;\n }\n ConsoleUtils.assert(_.isNumber(this.length), MSG.LENGTH_MUST_BE_NUMBER + this.length);\n\n /** The context of the property */\n this.context = params.context;\n\n /** Array with sub-properties */\n this.properties = params.properties;\n\n /** The annotation object */\n this.annotation = params.annotation || {};\n\n /** Array with constant properties */\n this.constants = params.constants;\n\n /** Typeids of properties this property inherits from */\n this.inherits = _.isString(params.inherits) ? [params.inherits] : params.inherits;\n\n if (_.includes(this.inherits, 'Enum')) {\n this._enumDictionary = this._parseEnums(this.properties);\n }\n // check for inlined enums and parse them:\n this._digestNestedInlineEnumProperties(this);\n this._serializedParams = in_params;\n }\n\n hasNestedProperties() {\n return (this.properties && this.properties.length > 0);\n }\n\n hasNestedConstants() {\n return (this.constants && this.constants.length > 0);\n }\n\n /**\n * internal function to recursivly traverse a property template and create dictionaries for found inline enums\n * @param {{}} in_currentPropertyLevel the current level in the template hierarchie\n */\n _digestNestedInlineEnumProperties(in_currentPropertyLevel) {\n if (in_currentPropertyLevel.properties) {\n for (var i = 0; i < in_currentPropertyLevel.properties.length; i++) {\n if (in_currentPropertyLevel.properties[i].typeid === 'Enum') {\n var dictionary = this._parseEnums(in_currentPropertyLevel.properties[i].properties);\n in_currentPropertyLevel.properties[i]._enumDictionary = dictionary;\n } else if (in_currentPropertyLevel.properties[i].properties) {\n // call self\n this._digestNestedInlineEnumProperties(in_currentPropertyLevel.properties[i]);\n }\n }\n }\n }\n\n /**\n * read the enum types list of a template and create a dictionary [value->enum] and [enum->value] for it\n * to efficiently lookup enums/values when setting/getting them from the property\n * @param {Array} in_enumProperties - the list of enums and their values and annotations\n * @return {{}} a dictionary [value->enum] and [enum->value]\n */\n _parseEnums(in_enumProperties) {\n var enumDictionary = { enumEntriesById: {}, enumEntriesByValue: {}, defaultValue: undefined };\n var minValue;\n if (in_enumProperties.length !== 0) {\n minValue = in_enumProperties[0].value;\n }\n for (var i = 0; i < in_enumProperties.length; i++) {\n var enumEntry = in_enumProperties[i];\n var value = enumEntry.value;\n ConsoleUtils.assert(enumEntry.id, MSG.ENUM_TYPEID_MISSING);\n ConsoleUtils.assert(!_.isNaN(enumEntry.value), MSG.ENUM_VALUE_NOT_NUMBER + value);\n enumDictionary.enumEntriesById[enumEntry.id] = { value: value, annotation: enumEntry.annotation };\n enumDictionary.enumEntriesByValue[value] = { id: enumEntry.id, annotation: enumEntry.annotation };\n minValue = value < minValue ? value : minValue;\n }\n\n if (enumDictionary.enumEntriesByValue.hasOwnProperty(0)) {\n enumDictionary.defaultValue = 0;\n } else {\n enumDictionary.defaultValue = minValue;\n }\n\n return enumDictionary;\n }\n\n /**\n * Clones the PropertyTemplate\n *\n * @return {property-properties.PropertyTemplate} The cloned template\n */\n clone() {\n return new PropertyTemplate(deepCopy(this._serializedParams));\n }\n\n /**\n * Method used to check whether the template is versioned.\n * A versioned template is of the form `xxxx-1.0.0`\n * @return {boolean} Returns true if the template is versioned, false otherwise\n */\n _isVersioned() {\n var splitTypeId = TypeIdHelper.extractVersion(this.typeid);\n\n if (!splitTypeId.version) {\n return false;\n }\n\n var version = splitTypeId.version;\n\n return /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)$/.test(version);\n }\n\n /**\n * Return the version number of the template.\n * @return {string} The version string is returned.\n */\n getVersion() {\n if (this._isVersioned()) {\n var splitTypeId = TypeIdHelper.extractVersion(this.typeid);\n var version = splitTypeId.version;\n return version;\n } else {\n console.warn(MSG.TEMPLATE_NOT_VERSIONED, this.typeid);\n return undefined;\n }\n }\n\n /**\n * Canonical representation of a PropertyTemplate.\n * This is similar to a deep copy but with adjustments so that the target is in\n * canonical form for a template property i.e. a) if array length\n * is not specified it is set to 0 in the target, b) string value\n * for 'inherits' property is converted to single-value array\n * Deep copy an object.\n *\n * @param {*} in_obj - the object to create a canonical copy of.\n * @param {Object|Array} [in_target_] - copy into this object.\n * @param {string} [in_key_] - key in in_target_ at which to place\n * the copied object.\n * @param {boolean} [in_preserve_ = false] - do not overwrite structs / arrays in\n * in an existing object\n *\n * @return {*} in_target_ if specified, new object containing canonical copy of @obj\n * otherwise.\n * @return {string} The version string is returned.\n */\n _canonicalForm(in_obj, in_target_, in_key_, in_preserve_) {\n in_preserve_ = in_preserve_ === undefined ? false : in_preserve_;\n\n var target, copyMembers;\n var copyDirectlyIntoKey = false;\n if (in_target_ && (in_key_ === undefined ||\n (in_key_ &&\n in_target_.hasOwnProperty(in_key_) &&\n _.isObject(in_target_[in_key_]) &&\n in_preserve_))) {\n // If no key is given, we directly copy into the\n // target object. Additionally, when a key is given, the member already exists\n // in the target object and preserve is set, we also keep the target object.\n // This is only possible if the target is already an\n // object.\n target = in_key_ ? in_target_[in_key_] : in_target_;\n\n if (_.isFunction(in_obj) ||\n _.isDate(in_obj) ||\n _.isRegExp(in_obj) ||\n (_.isObject(in_obj) !== _.isObject(target)) ||\n (_.isArray(in_obj) !== _.isArray(target)) ||\n !_.isObject(target)) {\n throw new Error(\n MSG.INVALID_TARGET_PROPERTY_TEMPLATE + this.typeid,\n );\n }\n copyMembers = true;\n copyDirectlyIntoKey = true;\n } else {\n // If no existing target object, we create a new object.\n\n // literals are directly assigned to the target\n if (!in_obj || !_.isObject(in_obj) || _.isFunction(in_obj)) {\n target = in_obj;\n // Special case handlers for dates and regexps\n // (https://github.com/jashkenas/underscore/pull/595)\n } else if (_.isDate(in_obj)) {\n target = new Date(in_obj.getTime());\n } else if (_.isRegExp(in_obj)) {\n target = new RegExp(in_obj.source, in_obj.toString().replace(/.*\\//, ''));\n // For objects and arrays we create a new object/array\n } else if (_.isObject(in_obj)) {\n target = _.isArray(in_obj) ? [] : {};\n copyMembers = true;\n } else {\n throw new Error(\n MSG.MISSING_CASE_IN_TEMPLATE_SERIALIZATION + this.typeid,\n );\n }\n }\n\n // If this is either an object or an array, we have to do a 'normalized' deep copy\n // and recursively copy all members. Normalized means the target will be a normalized\n // representation of the input property with respect to the canonical representation\n // of a template i.e. : if array length is not specified it is set to 0.\n // Other rules will follow\n if (copyMembers) {\n var keys = _.keys(in_obj);\n var l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n this._canonicalForm(in_obj[key], target, key, in_preserve_);\n }\n\n // If context is array and length is absent set it to 0\n if (_.includes(keys, 'context') && in_obj['context'] === 'array' && !_.includes(keys, 'length')) {\n target['length'] = 0;\n }\n\n // If inherit value is present and is a single string convert it to single element array\n if (_.includes(keys, 'inherits') && in_obj['inherits'] && !_.isObject(in_obj['inherits'])) {\n target['inherits'] = [in_obj['inherits']];\n }\n }\n\n if (!in_key_) {\n // If you don't give a path, then we return the original or copied object\n return target;\n } else if (!copyDirectlyIntoKey) {\n // If you give a path, we use the path as a key.\n in_target_[in_key_] = target;\n }\n\n return in_target_;\n }\n\n /**\n * Return the serialized parameters passed in the constructor\n * @return {object} Serialized parameters\n */\n serialize() {\n return deepCopy(this._serializedParams);\n }\n\n /**\n * Return the serialized parameters passed in the constructor, in a template canonical form\n * @return {object} canonical serialized parameters\n */\n serializeCanonical() {\n return PropertyTemplate.prototype._canonicalForm(this._serializedParams);\n }\n\n /**\n * Return the typeid of the template without the version number\n * i.e. autodesk.core:color instead of autodesk.core:color-1.0.0\n * @return {string} The typeid without the version is returned.\n * If the template is not versioned, the typeid is return.\n */\n getTypeidWithoutVersion() {\n if (this._isVersioned()) {\n var splitTypeId = TypeIdHelper.extractVersion(this.typeid);\n return splitTypeId.typeidWithoutVersion;\n } else {\n return this.typeid;\n }\n }\n\n /**\n * Determines if the argument is a template structure\n *\n * @public\n * @param {object} in_param parameter to assess\n *\n * @return {Boolean} returns true if in_param is a template\n */\n static isTemplate(in_param) {\n if (in_param.typeid && in_param.typeid.indexOf(':') !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Extracts typeids directly referred to in a template\n *\n * @public\n * @param {object} template structure from which to extract dependencies\n *\n * @return {Array} list of typeids this template refers directly to\n */\n static extractDependencies(template) {\n var dependencies = {};\n\n if (template.inherits) {\n var inherits = (typeof template.inherits === 'string') ? [template.inherits] : template.inherits;\n for (var i = 0; i < inherits.length; i++) {\n var elem = TypeIdHelper.extractTypeId(inherits[i]);\n dependencies[elem] = true;\n }\n }\n\n if (template.properties) {\n var properties = template.properties;\n for (var i = 0; i < properties.length; i++) {\n var property = properties[i];\n if (PropertyTemplate.isTemplate(property)) {\n var typeid = TypeIdHelper.extractTypeId(property.typeid);\n dependencies[typeid] = true;\n\n if (property.typedValue) {\n for (var t = 0; t < property.typedValue.length; t++) {\n var typedValue = property.typedValue[t];\n dependencies[typedValue.typeid] = true;\n }\n }\n } else if (property.properties) {\n var deps = PropertyTemplate.extractDependencies(property);\n for (var j = 0; j < deps.length; j++) {\n var typeid = TypeIdHelper.extractTypeId(deps[j]);\n dependencies[typeid] = true;\n }\n }\n }\n }\n\n if (template.constants) {\n var constants = template.constants;\n for (var i = 0; i < constants.length; i++) {\n var constant = constants[i];\n if (PropertyTemplate.isTemplate(constant)) {\n var typeid = TypeIdHelper.extractTypeId(constant.typeid);\n dependencies[typeid] = true;\n } else if (constant.context === 'map' && constant.contextKeyType === 'typeid' && constant.value) {\n var keys = Object.keys(constant.value);\n for (var k = 0; k < keys.length; k++) {\n var typeid = TypeIdHelper.extractTypeId(keys[k]);\n dependencies[typeid] = true;\n }\n }\n\n // Search for typeid hidden in typedValue\n // the context could be inherited and therefore missing, so we have to try them all.\n if (constant.typedValue) {\n // for arrays\n if (_.isArray(constant.typedValue)) {\n for (var t = 0; t < constant.typedValue.length; t++) {\n var typedValue = constant.typedValue[t];\n dependencies[typedValue.typeid] = true;\n }\n // for singles\n } else if (constant.typedValue.typeid) {\n dependencies[constant.typedValue.typeid] = true;\n // for maps\n } else {\n var keys = Object.keys(constant.typedValue);\n for (var k = 0; k < keys.length; k++) {\n var typeid = constant.typedValue[keys[k]].typeid;\n if (typeid) {\n dependencies[typeid] = true;\n }\n }\n }\n }\n }\n }\n\n return Object.keys(dependencies);\n }\n}\n"]}
@@ -7,14 +7,14 @@
7
7
  * Declaration of the PropertyTemplateWrapper module
8
8
  * PropertyTemplateWrapper is used to wrap a property template and perform internal optimizations
9
9
  */
10
+ const { MSG } = require('@fluid-experimental/property-common').constants;
10
11
  const _ = require('lodash');
11
12
  const { ContainerProperty } = require('./properties/containerProperty');
12
- const { MSG } = require('@fluid-experimental/property-common').constants;
13
13
  const reservedTypesWithoutTemplates = {
14
14
  'BaseProperty': true,
15
15
  'ContainerProperty': true,
16
16
  'NodeProperty': true,
17
- 'Enum': true
17
+ 'Enum': true,
18
18
  };
19
19
  /**
20
20
  * Utility function that validates if the typeid is a reserved type without a template.
@@ -42,12 +42,11 @@ export class PropertyTemplateWrapper {
42
42
  * from templates this template inherits from.
43
43
  */
44
44
  this._compiledPropertyTemplate = undefined;
45
- /* What type of base object is created for this template*/
45
+ /* What type of base object is created for this template */
46
46
  this._objectCreationType = undefined;
47
- /* The scope of this template*/
47
+ /* The scope of this template */
48
48
  this._scope = in_scope;
49
49
  }
50
- ;
51
50
  /**
52
51
  * To get the property template that this is wrapping.
53
52
  * @return {property-properties.PropertyTemplate} The template this wrapper contains
@@ -56,7 +55,6 @@ export class PropertyTemplateWrapper {
56
55
  getPropertyTemplate() {
57
56
  return this._propertyTemplate;
58
57
  }
59
- ;
60
58
  /**
61
59
  * Gets the compiled template or creates it then returns it.
62
60
  * @param {property-properties.PropertyFactory} in_propertyFactory The assosiated PropertyFactory.
@@ -71,7 +69,6 @@ export class PropertyTemplateWrapper {
71
69
  }
72
70
  return this._compiledPropertyTemplate;
73
71
  }
74
- ;
75
72
  /**
76
73
  * Returns if the compiled template has been created.
77
74
  * @return {boolean} if the compiled template has been created
@@ -80,7 +77,6 @@ export class PropertyTemplateWrapper {
80
77
  hasCompiledTemplate() {
81
78
  return !!this._compiledPropertyTemplate;
82
79
  }
83
- ;
84
80
  /**
85
81
  * To get the creation type of the template this wraps.
86
82
  * @return {string} A typeid which represents the creation type of this template
@@ -89,7 +85,6 @@ export class PropertyTemplateWrapper {
89
85
  getCreationType() {
90
86
  return this._objectCreationType;
91
87
  }
92
- ;
93
88
  /**
94
89
  * If current creation type is undefined, sets it to in_typeid if in_typeid is a creation type.
95
90
  * If current creation type is defined, throws if in_typeid is a creation type.
@@ -113,7 +108,6 @@ export class PropertyTemplateWrapper {
113
108
  }
114
109
  }
115
110
  }
116
- ;
117
111
  /**
118
112
  * Contructs the compiled template from the template this wraps
119
113
  * @param {property-properties.PropertyFactory} in_propertyFactory The associated PropertyFactory.
@@ -219,7 +213,6 @@ export class PropertyTemplateWrapper {
219
213
  }
220
214
  return template;
221
215
  }
222
- ;
223
216
  /**
224
217
  * A helper function which merges a child and parent property.
225
218
  * The changes are applied directly to the in_childProperty.
@@ -287,6 +280,5 @@ export class PropertyTemplateWrapper {
287
280
  mergeSubProperties(in_childProperty, in_parentProperty, 'properties');
288
281
  mergeSubProperties(in_childProperty, in_parentProperty, 'constants');
289
282
  }
290
- ;
291
283
  }
292
284
  //# sourceMappingURL=propertyTemplateWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"propertyTemplateWrapper.js","sourceRoot":"","sources":["../src/propertyTemplateWrapper.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\n * Declaration of the PropertyTemplateWrapper module\n * PropertyTemplateWrapper is used to wrap a property template and perform internal optimizations\n */\nconst _ = require('lodash');\nconst { ContainerProperty } = require('./properties/containerProperty');\nconst { MSG } = require('@fluid-experimental/property-common').constants;\n\nconst reservedTypesWithoutTemplates = {\n 'BaseProperty': true,\n 'ContainerProperty': true,\n 'NodeProperty': true,\n 'Enum': true\n};\n/**\n * Utility function that validates if the typeid is a reserved type without a template.\n * @param {string} in_typeid The typeid to validate.\n * @return {boolean} True if the typeid is a reserved type without a template, false otherwise.\n */\nconst hasAssociatedTemplate = (in_typeid) => {\n return !reservedTypesWithoutTemplates[in_typeid];\n};\n\nexport class PropertyTemplateWrapper {\n\n /**\n * Constructor for creating a PropertyTemplateWrapper based on the given template.\n * @param {PropertyTemplate} in_remoteTemplate A property template\n * @param {string} in_scope The scope of the template\n *\n * @constructor\n * @package\n * @alias property-properties.PropertyTemplateWrapper\n * @category Properties\n */\n constructor(in_remoteTemplate, in_scope) {\n /** The property template this object is wrapping */\n this._propertyTemplate = in_remoteTemplate;\n\n /** A property template created from this.propertyTemplate with the addition of all information\n * from templates this template inherits from.\n */\n this._compiledPropertyTemplate = undefined;\n\n /* What type of base object is created for this template*/\n this._objectCreationType = undefined;\n\n /* The scope of this template*/\n this._scope = in_scope;\n };\n\n\n /**\n * To get the property template that this is wrapping.\n * @return {property-properties.PropertyTemplate} The template this wrapper contains\n * @package\n */\n getPropertyTemplate() {\n return this._propertyTemplate;\n };\n\n /**\n * Gets the compiled template or creates it then returns it.\n * @param {property-properties.PropertyFactory} in_propertyFactory The assosiated PropertyFactory.\n * @return {property-properties.PropertyTemplate} The compiled template\n * A compiled template is the template which is actually used for creating objects.\n * It has all information from parent Templates, and other changes.\n * @package\n */\n getCompiledTemplate(in_propertyFactory) {\n if (this._compiledPropertyTemplate === undefined) {\n this._compiledPropertyTemplate = this._contructCompiledTemplate(in_propertyFactory);\n }\n return this._compiledPropertyTemplate;\n };\n\n /**\n * Returns if the compiled template has been created.\n * @return {boolean} if the compiled template has been created\n * @package\n */\n hasCompiledTemplate() {\n return !!this._compiledPropertyTemplate;\n };\n\n /**\n * To get the creation type of the template this wraps.\n * @return {string} A typeid which represents the creation type of this template\n * @package\n */\n getCreationType() {\n return this._objectCreationType;\n };\n\n /**\n * If current creation type is undefined, sets it to in_typeid if in_typeid is a creation type.\n * If current creation type is defined, throws if in_typeid is a creation type.\n *\n * @param {string} in_typeid A typeid\n * @package\n */\n setCreationType(in_typeid) {\n // This function could be moved somewhere else, an enum could be made if this information is widely needed.\n const isCreationType = (typeid) => {\n const creationTypes =\n ['ContainerProperty', 'NodeProperty', 'Enum', 'BinaryProperty', 'Binary', 'RepositoryReferenceProperty'];\n return creationTypes.indexOf(typeid) !== -1;\n };\n\n if (isCreationType(in_typeid)) {\n const currentCreationType = this._objectCreationType;\n if (currentCreationType === undefined) {\n this._objectCreationType = in_typeid;\n } else if (currentCreationType !== in_typeid) {\n throw new Error(MSG.ONLY_ONE_CREATION_TYPE + currentCreationType + ', ' + in_typeid);\n }\n }\n };\n\n /**\n * Contructs the compiled template from the template this wraps\n * @param {property-properties.PropertyFactory} in_propertyFactory The associated PropertyFactory.\n * @return {property-properties.PropertyTemplate} The compiled template\n * A compiled template is the template which is actually used for creating objects.\n * It has all information from parent Templates, and other changes.\n * @package\n */\n _contructCompiledTemplate(in_propertyFactory) {\n const originalTemplate = this.getPropertyTemplate();\n\n this.setCreationType(originalTemplate.typeid);\n\n /* Because we treat templates and contructor functions for base types the same way :( */\n if (_.isFunction(originalTemplate)) {\n return originalTemplate;\n }\n\n let parentTemplateIds = originalTemplate.inherits;\n\n /* template.inherits can be a string, if so convert it to array of strings */\n if (typeof parentTemplateIds === 'string') {\n parentTemplateIds = [parentTemplateIds];\n }\n\n /* Cloning the original template to avoid modifying it */\n const template = originalTemplate.clone();\n\n /* Copy the proccesed list of parents to not modify the original */\n const typeInheritence = parentTemplateIds ? parentTemplateIds.slice() : [];\n\n /* Look ups to efficiently check what properties/constants parents have */\n const parentsPropertiesById = {};\n const parentsConstantsById = {};\n\n if (parentTemplateIds !== undefined) {\n for (let i = 0; i < parentTemplateIds.length; ++i) {\n const parentTemplateId = parentTemplateIds[i];\n this.setCreationType(parentTemplateId);\n\n if (hasAssociatedTemplate(parentTemplateId)) {\n const parentTemplateWrapper = in_propertyFactory._getWrapper(parentTemplateId, undefined, this._scope);\n if (parentTemplateWrapper) {\n const parentTemplate = parentTemplateWrapper.getCompiledTemplate(in_propertyFactory);\n const parentCreationType = parentTemplateWrapper.getCreationType();\n\n if (parentCreationType !== 'ContainerProperty') {\n this.setCreationType(parentCreationType);\n }\n\n if (parentTemplate.inherits) {\n typeInheritence.concat(parentTemplateId);\n }\n\n /* Fills parentsPropertiesById and makes sure there are no two properties or constants with the same id */\n if (parentTemplate.hasNestedProperties()) {\n const parentProperties = parentTemplate.properties;\n for (let j = 0; j < parentProperties.length; ++j) {\n const parentProperty = parentProperties[j];\n /* Two parents has child property with same id */\n if (parentsPropertiesById[parentProperty.id] || parentsConstantsById[parentProperty.id]) {\n throw new Error(MSG.OVERWRITING_ID + parentProperty.id);\n }\n parentsPropertiesById[parentProperty.id] = parentProperty;\n }\n }\n\n /* Fills parentsConsantsById and makes sure there are no two properties or constants with the same id */\n if (parentTemplate.hasNestedConstants()) {\n const parentConstants = parentTemplate.constants;\n for (let j = 0; j < parentConstants.length; ++j) {\n const parentConstant = parentConstants[j];\n /* Two parents has child property with same id */\n if (parentsConstantsById[parentConstant.id] || parentsPropertiesById[parentConstant.id]) {\n throw new Error(MSG.OVERWRITING_ID + parentConstant.id);\n }\n parentsConstantsById[parentConstant.id] = parentConstant;\n }\n }\n }\n }\n }\n }\n\n if (this._objectCreationType === undefined) {\n this.setCreationType('ContainerProperty');\n }\n\n /* Merges properties from parents into the properties of the child */\n const constructSubProperties = (in_template, in_parentsPropertiesById, fieldName) => {\n const propertyKeys = Object.keys(in_parentsPropertiesById);\n\n if (in_template[fieldName] === undefined && propertyKeys.length !== 0) {\n in_template[fieldName] = [];\n }\n\n const properties = in_template[fieldName] || [];\n\n for (let i = 0; i < properties.length; ++i) {\n const property = properties[i];\n const id = property.id;\n if (in_parentsPropertiesById[id]) {\n this._mergeProperty(property, in_parentsPropertiesById[id]);\n delete in_parentsPropertiesById[id];\n }\n }\n\n for (let i = 0; i < propertyKeys.length; ++i) {\n const insertProperty = in_parentsPropertiesById[propertyKeys[i]];\n if (insertProperty) {\n properties.push(insertProperty);\n }\n }\n\n if (properties.length > 0) {\n template[fieldName] = properties;\n }\n };\n\n constructSubProperties(template, parentsPropertiesById, 'properties');\n constructSubProperties(template, parentsConstantsById, 'constants');\n\n if (typeInheritence.length > 0) {\n template.inherits = typeInheritence;\n }\n\n return template;\n };\n\n /**\n * A helper function which merges a child and parent property.\n * The changes are applied directly to the in_childProperty.\n * @param {object} in_childProperty The child's property defition.\n * @param {object} in_parentProperty The parent's property defition.\n * @package\n */\n _mergeProperty(in_childProperty, in_parentProperty) {\n const mergeField = (child, parent, fieldName, defaultValue) => {\n if (child[fieldName] === undefined) {\n if (parent[fieldName] !== undefined) {\n child[fieldName] = parent[fieldName];\n }\n } else if (child[fieldName] !== parent[fieldName] &&\n (child[fieldName] !== defaultValue || parent[fieldName] !== undefined)) {\n throw new Error(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE + fieldName +\n ' as the base type: ' + child.id + ': ' + child[fieldName] + ' != ' + parent[fieldName]);\n }\n };\n\n mergeField(in_childProperty, in_parentProperty, 'context', 'single');\n mergeField(in_childProperty, in_parentProperty, 'contextKeyType', 'string');\n mergeField(in_childProperty, in_parentProperty, 'length', 0);\n mergeField(in_childProperty, in_parentProperty, 'optional', false);\n mergeField(in_childProperty, in_parentProperty, 'typeid', undefined);\n\n if (in_parentProperty.typedValue !== undefined) {\n if (in_childProperty.typedValue === undefined) {\n in_childProperty.typedValue = in_parentProperty.typedValue;\n }\n }\n\n if (in_parentProperty.value !== undefined) {\n if (in_childProperty.value === undefined) {\n in_childProperty.value = in_parentProperty.value;\n }\n }\n\n const mergeSubProperties = (child, parent, fieldName) => {\n const parentPropertiesById = {};\n let parentProperties = parent[fieldName];\n let properties = child[fieldName] || [];\n if (parentProperties) {\n for (let j = 0; j < parentProperties.length; ++j) {\n const parentProperty = parentProperties[j];\n parentPropertiesById[parentProperty.id] = parentProperty;\n }\n\n for (let i = 0; i < properties.length; ++i) {\n const property = properties[i];\n const id = property.id;\n if (parentPropertiesById[id]) {\n this._mergeProperty(property, parentPropertiesById[id]);\n delete parentPropertiesById[id];\n }\n }\n\n const propertyKeys = Object.keys(parentPropertiesById);\n for (let i = 0; i < propertyKeys.length; ++i) {\n const insertProperty = parentPropertiesById[propertyKeys[i]];\n if (insertProperty) {\n properties.push(insertProperty);\n }\n }\n }\n\n if (properties.length > 0) {\n child[fieldName] = properties;\n }\n };\n\n mergeSubProperties(in_childProperty, in_parentProperty, 'properties');\n mergeSubProperties(in_childProperty, in_parentProperty, 'constants');\n };\n}\n"]}
1
+ {"version":3,"file":"propertyTemplateWrapper.js","sourceRoot":"","sources":["../src/propertyTemplateWrapper.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\n * Declaration of the PropertyTemplateWrapper module\n * PropertyTemplateWrapper is used to wrap a property template and perform internal optimizations\n */\nconst { MSG } = require('@fluid-experimental/property-common').constants;\nconst _ = require('lodash');\nconst { ContainerProperty } = require('./properties/containerProperty');\n\nconst reservedTypesWithoutTemplates = {\n 'BaseProperty': true,\n 'ContainerProperty': true,\n 'NodeProperty': true,\n 'Enum': true,\n};\n/**\n * Utility function that validates if the typeid is a reserved type without a template.\n * @param {string} in_typeid The typeid to validate.\n * @return {boolean} True if the typeid is a reserved type without a template, false otherwise.\n */\nconst hasAssociatedTemplate = (in_typeid) => {\n return !reservedTypesWithoutTemplates[in_typeid];\n};\n\nexport class PropertyTemplateWrapper {\n /**\n * Constructor for creating a PropertyTemplateWrapper based on the given template.\n * @param {PropertyTemplate} in_remoteTemplate A property template\n * @param {string} in_scope The scope of the template\n *\n * @constructor\n * @package\n * @alias property-properties.PropertyTemplateWrapper\n * @category Properties\n */\n constructor(in_remoteTemplate, in_scope) {\n /** The property template this object is wrapping */\n this._propertyTemplate = in_remoteTemplate;\n\n /** A property template created from this.propertyTemplate with the addition of all information\n * from templates this template inherits from.\n */\n this._compiledPropertyTemplate = undefined;\n\n /* What type of base object is created for this template */\n this._objectCreationType = undefined;\n\n /* The scope of this template */\n this._scope = in_scope;\n }\n\n /**\n * To get the property template that this is wrapping.\n * @return {property-properties.PropertyTemplate} The template this wrapper contains\n * @package\n */\n getPropertyTemplate() {\n return this._propertyTemplate;\n }\n\n /**\n * Gets the compiled template or creates it then returns it.\n * @param {property-properties.PropertyFactory} in_propertyFactory The assosiated PropertyFactory.\n * @return {property-properties.PropertyTemplate} The compiled template\n * A compiled template is the template which is actually used for creating objects.\n * It has all information from parent Templates, and other changes.\n * @package\n */\n getCompiledTemplate(in_propertyFactory) {\n if (this._compiledPropertyTemplate === undefined) {\n this._compiledPropertyTemplate = this._contructCompiledTemplate(in_propertyFactory);\n }\n return this._compiledPropertyTemplate;\n }\n\n /**\n * Returns if the compiled template has been created.\n * @return {boolean} if the compiled template has been created\n * @package\n */\n hasCompiledTemplate() {\n return !!this._compiledPropertyTemplate;\n }\n\n /**\n * To get the creation type of the template this wraps.\n * @return {string} A typeid which represents the creation type of this template\n * @package\n */\n getCreationType() {\n return this._objectCreationType;\n }\n\n /**\n * If current creation type is undefined, sets it to in_typeid if in_typeid is a creation type.\n * If current creation type is defined, throws if in_typeid is a creation type.\n *\n * @param {string} in_typeid A typeid\n * @package\n */\n setCreationType(in_typeid) {\n // This function could be moved somewhere else, an enum could be made if this information is widely needed.\n const isCreationType = (typeid) => {\n const creationTypes =\n ['ContainerProperty', 'NodeProperty', 'Enum', 'BinaryProperty', 'Binary', 'RepositoryReferenceProperty'];\n return creationTypes.indexOf(typeid) !== -1;\n };\n\n if (isCreationType(in_typeid)) {\n const currentCreationType = this._objectCreationType;\n if (currentCreationType === undefined) {\n this._objectCreationType = in_typeid;\n } else if (currentCreationType !== in_typeid) {\n throw new Error(MSG.ONLY_ONE_CREATION_TYPE + currentCreationType + ', ' + in_typeid);\n }\n }\n }\n\n /**\n * Contructs the compiled template from the template this wraps\n * @param {property-properties.PropertyFactory} in_propertyFactory The associated PropertyFactory.\n * @return {property-properties.PropertyTemplate} The compiled template\n * A compiled template is the template which is actually used for creating objects.\n * It has all information from parent Templates, and other changes.\n * @package\n */\n _contructCompiledTemplate(in_propertyFactory) {\n const originalTemplate = this.getPropertyTemplate();\n\n this.setCreationType(originalTemplate.typeid);\n\n /* Because we treat templates and contructor functions for base types the same way :( */\n if (_.isFunction(originalTemplate)) {\n return originalTemplate;\n }\n\n let parentTemplateIds = originalTemplate.inherits;\n\n /* template.inherits can be a string, if so convert it to array of strings */\n if (typeof parentTemplateIds === 'string') {\n parentTemplateIds = [parentTemplateIds];\n }\n\n /* Cloning the original template to avoid modifying it */\n const template = originalTemplate.clone();\n\n /* Copy the proccesed list of parents to not modify the original */\n const typeInheritence = parentTemplateIds ? parentTemplateIds.slice() : [];\n\n /* Look ups to efficiently check what properties/constants parents have */\n const parentsPropertiesById = {};\n const parentsConstantsById = {};\n\n if (parentTemplateIds !== undefined) {\n for (let i = 0; i < parentTemplateIds.length; ++i) {\n const parentTemplateId = parentTemplateIds[i];\n this.setCreationType(parentTemplateId);\n\n if (hasAssociatedTemplate(parentTemplateId)) {\n const parentTemplateWrapper = in_propertyFactory._getWrapper(parentTemplateId, undefined, this._scope);\n if (parentTemplateWrapper) {\n const parentTemplate = parentTemplateWrapper.getCompiledTemplate(in_propertyFactory);\n const parentCreationType = parentTemplateWrapper.getCreationType();\n\n if (parentCreationType !== 'ContainerProperty') {\n this.setCreationType(parentCreationType);\n }\n\n if (parentTemplate.inherits) {\n typeInheritence.concat(parentTemplateId);\n }\n\n /* Fills parentsPropertiesById and makes sure there are no two properties or constants with the same id */\n if (parentTemplate.hasNestedProperties()) {\n const parentProperties = parentTemplate.properties;\n for (let j = 0; j < parentProperties.length; ++j) {\n const parentProperty = parentProperties[j];\n /* Two parents has child property with same id */\n if (parentsPropertiesById[parentProperty.id] || parentsConstantsById[parentProperty.id]) {\n throw new Error(MSG.OVERWRITING_ID + parentProperty.id);\n }\n parentsPropertiesById[parentProperty.id] = parentProperty;\n }\n }\n\n /* Fills parentsConsantsById and makes sure there are no two properties or constants with the same id */\n if (parentTemplate.hasNestedConstants()) {\n const parentConstants = parentTemplate.constants;\n for (let j = 0; j < parentConstants.length; ++j) {\n const parentConstant = parentConstants[j];\n /* Two parents has child property with same id */\n if (parentsConstantsById[parentConstant.id] || parentsPropertiesById[parentConstant.id]) {\n throw new Error(MSG.OVERWRITING_ID + parentConstant.id);\n }\n parentsConstantsById[parentConstant.id] = parentConstant;\n }\n }\n }\n }\n }\n }\n\n if (this._objectCreationType === undefined) {\n this.setCreationType('ContainerProperty');\n }\n\n /* Merges properties from parents into the properties of the child */\n const constructSubProperties = (in_template, in_parentsPropertiesById, fieldName) => {\n const propertyKeys = Object.keys(in_parentsPropertiesById);\n\n if (in_template[fieldName] === undefined && propertyKeys.length !== 0) {\n in_template[fieldName] = [];\n }\n\n const properties = in_template[fieldName] || [];\n\n for (let i = 0; i < properties.length; ++i) {\n const property = properties[i];\n const id = property.id;\n if (in_parentsPropertiesById[id]) {\n this._mergeProperty(property, in_parentsPropertiesById[id]);\n delete in_parentsPropertiesById[id];\n }\n }\n\n for (let i = 0; i < propertyKeys.length; ++i) {\n const insertProperty = in_parentsPropertiesById[propertyKeys[i]];\n if (insertProperty) {\n properties.push(insertProperty);\n }\n }\n\n if (properties.length > 0) {\n template[fieldName] = properties;\n }\n };\n\n constructSubProperties(template, parentsPropertiesById, 'properties');\n constructSubProperties(template, parentsConstantsById, 'constants');\n\n if (typeInheritence.length > 0) {\n template.inherits = typeInheritence;\n }\n\n return template;\n }\n\n /**\n * A helper function which merges a child and parent property.\n * The changes are applied directly to the in_childProperty.\n * @param {object} in_childProperty The child's property defition.\n * @param {object} in_parentProperty The parent's property defition.\n * @package\n */\n _mergeProperty(in_childProperty, in_parentProperty) {\n const mergeField = (child, parent, fieldName, defaultValue) => {\n if (child[fieldName] === undefined) {\n if (parent[fieldName] !== undefined) {\n child[fieldName] = parent[fieldName];\n }\n } else if (child[fieldName] !== parent[fieldName] &&\n (child[fieldName] !== defaultValue || parent[fieldName] !== undefined)) {\n throw new Error(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE + fieldName +\n ' as the base type: ' + child.id + ': ' + child[fieldName] + ' != ' + parent[fieldName]);\n }\n };\n\n mergeField(in_childProperty, in_parentProperty, 'context', 'single');\n mergeField(in_childProperty, in_parentProperty, 'contextKeyType', 'string');\n mergeField(in_childProperty, in_parentProperty, 'length', 0);\n mergeField(in_childProperty, in_parentProperty, 'optional', false);\n mergeField(in_childProperty, in_parentProperty, 'typeid', undefined);\n\n if (in_parentProperty.typedValue !== undefined) {\n if (in_childProperty.typedValue === undefined) {\n in_childProperty.typedValue = in_parentProperty.typedValue;\n }\n }\n\n if (in_parentProperty.value !== undefined) {\n if (in_childProperty.value === undefined) {\n in_childProperty.value = in_parentProperty.value;\n }\n }\n\n const mergeSubProperties = (child, parent, fieldName) => {\n const parentPropertiesById = {};\n let parentProperties = parent[fieldName];\n let properties = child[fieldName] || [];\n if (parentProperties) {\n for (let j = 0; j < parentProperties.length; ++j) {\n const parentProperty = parentProperties[j];\n parentPropertiesById[parentProperty.id] = parentProperty;\n }\n\n for (let i = 0; i < properties.length; ++i) {\n const property = properties[i];\n const id = property.id;\n if (parentPropertiesById[id]) {\n this._mergeProperty(property, parentPropertiesById[id]);\n delete parentPropertiesById[id];\n }\n }\n\n const propertyKeys = Object.keys(parentPropertiesById);\n for (let i = 0; i < propertyKeys.length; ++i) {\n const insertProperty = parentPropertiesById[propertyKeys[i]];\n if (insertProperty) {\n properties.push(insertProperty);\n }\n }\n }\n\n if (properties.length > 0) {\n child[fieldName] = properties;\n }\n };\n\n mergeSubProperties(in_childProperty, in_parentProperty, 'properties');\n mergeSubProperties(in_childProperty, in_parentProperty, 'constants');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"propertyUtils.js","sourceRoot":"","sources":["../src/propertyUtils.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,aAAa;;AAEtB;;;;;;GAMG;AACI,8BAAgB,GAAG,UAAU,eAAe,EAAE,YAAY;IAC7D,IAAI,kBAAkB,GAAG,EAAE,CAAC;IAC5B,eAAe,CAAC,YAAY,CAAC,UAAU,QAAQ,EAAE,IAAI;QACjD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;YACxB,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC;AAC9B,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport class PropertyUtils {\n\n /**\n * Gather all properties that pass an arbitrary predicate function\n * @param {property-properties.NodeProperty} in_rootProperty The root property to traverse from\n * @param {function} in_predicate The predicate function\n * @return {Array.<property-properties.BasePropertyy>} The list of properties that passed the predicate\n * function\n */\n static gatherProperties = function (in_rootProperty, in_predicate) {\n var gatheredProperties = {};\n in_rootProperty.traverseDown(function (property, path) {\n if (in_predicate(property)) {\n gatheredProperties[path] = property;\n }\n });\n\n return gatheredProperties;\n };\n\n}\n"]}
1
+ {"version":3,"file":"propertyUtils.js","sourceRoot":"","sources":["../src/propertyUtils.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,aAAa;;AACtB;;;;;;GAMG;AACI,8BAAgB,GAAG,UAAS,eAAe,EAAE,YAAY;IAC5D,IAAI,kBAAkB,GAAG,EAAE,CAAC;IAC5B,eAAe,CAAC,YAAY,CAAC,UAAS,QAAQ,EAAE,IAAI;QAChD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;YACxB,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC;AAC9B,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport class PropertyUtils {\n /**\n * Gather all properties that pass an arbitrary predicate function\n * @param {property-properties.NodeProperty} in_rootProperty The root property to traverse from\n * @param {function} in_predicate The predicate function\n * @return {Array.<property-properties.BasePropertyy>} The list of properties that passed the predicate\n * function\n */\n static gatherProperties = function(in_rootProperty, in_predicate) {\n var gatheredProperties = {};\n in_rootProperty.traverseDown(function(property, path) {\n if (in_predicate(property)) {\n gatheredProperties[path] = property;\n }\n });\n\n return gatheredProperties;\n };\n}\n"]}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@fluid-experimental/property-properties",
3
- "version": "0.58.1001",
3
+ "version": "0.58.2000-58133",
4
4
  "description": "definitions of properties",
5
5
  "homepage": "https://fluidframework.com",
6
- "repository": "https://github.com/microsoft/FluidFramework",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/microsoft/FluidFramework.git",
9
+ "directory": "experimental/PropertyDDS/packages/property-properties"
10
+ },
7
11
  "license": "MIT",
8
12
  "author": "Microsoft and contributors",
9
13
  "main": "dist/index.js",
@@ -57,17 +61,20 @@
57
61
  "temp-directory": "nyc/.nyc_output"
58
62
  },
59
63
  "dependencies": {
60
- "@fluid-experimental/property-changeset": "^0.58.1001",
61
- "@fluid-experimental/property-common": "^0.58.1001",
64
+ "@fluid-experimental/property-changeset": "0.58.2000-58133",
65
+ "@fluid-experimental/property-common": "0.58.2000-58133",
62
66
  "ajv": "7.1.1",
63
67
  "async": "^3.2.0",
68
+ "fastest-json-copy": "^1.0.1",
64
69
  "lodash": "^4.17.21",
65
70
  "semver": "^7.3.4",
66
- "traverse": "0.6.6"
71
+ "traverse": "0.6.6",
72
+ "underscore": "^1.12.1"
67
73
  },
68
74
  "devDependencies": {
69
75
  "@fluidframework/build-common": "^0.23.0",
70
- "@fluidframework/mocha-test-setup": "^0.58.1001",
76
+ "@fluidframework/mocha-test-setup": "0.58.2000-58133",
77
+ "@types/mocha": "^8.2.2",
71
78
  "chai": "^4.2.0",
72
79
  "concurrently": "^6.2.0",
73
80
  "cross-env": "^7.0.2",