@fluid-experimental/property-properties 2.0.0-internal.3.0.2 → 2.0.0-internal.3.2.0
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.
- package/README.md +1 -0
- package/dist/containerSerializer.d.ts.map +1 -1
- package/dist/containerSerializer.js +5 -5
- package/dist/containerSerializer.js.map +1 -1
- package/dist/enableValidations.js.map +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.d.ts +10 -10
- package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.js +70 -53
- package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/dist/properties/arrayProperty.d.ts.map +1 -1
- package/dist/properties/arrayProperty.js +152 -103
- package/dist/properties/arrayProperty.js.map +1 -1
- package/dist/properties/baseProperty.d.ts +4 -4
- package/dist/properties/baseProperty.d.ts.map +1 -1
- package/dist/properties/baseProperty.js +69 -47
- package/dist/properties/baseProperty.js.map +1 -1
- package/dist/properties/boolProperty.d.ts.map +1 -1
- package/dist/properties/boolProperty.js +3 -3
- package/dist/properties/boolProperty.js.map +1 -1
- package/dist/properties/containerProperty.d.ts +8 -8
- package/dist/properties/containerProperty.d.ts.map +1 -1
- package/dist/properties/containerProperty.js +33 -26
- package/dist/properties/containerProperty.js.map +1 -1
- package/dist/properties/enumArrayProperty.d.ts.map +1 -1
- package/dist/properties/enumArrayProperty.js +14 -14
- package/dist/properties/enumArrayProperty.js.map +1 -1
- package/dist/properties/enumProperty.d.ts.map +1 -1
- package/dist/properties/enumProperty.js +17 -17
- package/dist/properties/enumProperty.js.map +1 -1
- package/dist/properties/floatProperties.js +4 -4
- package/dist/properties/floatProperties.js.map +1 -1
- package/dist/properties/index.d.ts +23 -23
- package/dist/properties/index.d.ts.map +1 -1
- package/dist/properties/index.js.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.js +47 -37
- package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/dist/properties/intProperties.d.ts.map +1 -1
- package/dist/properties/intProperties.js +10 -10
- package/dist/properties/intProperties.js.map +1 -1
- package/dist/properties/lazyLoadedProperties.js.map +1 -1
- package/dist/properties/mapProperty.d.ts.map +1 -1
- package/dist/properties/mapProperty.js +21 -17
- package/dist/properties/mapProperty.js.map +1 -1
- package/dist/properties/namedNodeProperty.d.ts.map +1 -1
- package/dist/properties/namedNodeProperty.js +3 -3
- package/dist/properties/namedNodeProperty.js.map +1 -1
- package/dist/properties/namedProperty.d.ts.map +1 -1
- package/dist/properties/namedProperty.js +7 -5
- package/dist/properties/namedProperty.js.map +1 -1
- package/dist/properties/nodeProperty.d.ts.map +1 -1
- package/dist/properties/nodeProperty.js +5 -3
- package/dist/properties/nodeProperty.js.map +1 -1
- package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
- package/dist/properties/primitiveTypeCasts.js +9 -9
- package/dist/properties/primitiveTypeCasts.js.map +1 -1
- package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
- package/dist/properties/referenceArrayProperty.js +31 -25
- package/dist/properties/referenceArrayProperty.js.map +1 -1
- package/dist/properties/referenceMapProperty.d.ts.map +1 -1
- package/dist/properties/referenceMapProperty.js +18 -18
- package/dist/properties/referenceMapProperty.js.map +1 -1
- package/dist/properties/referenceProperty.d.ts.map +1 -1
- package/dist/properties/referenceProperty.js +33 -29
- package/dist/properties/referenceProperty.js.map +1 -1
- package/dist/properties/setProperty.d.ts.map +1 -1
- package/dist/properties/setProperty.js +31 -29
- package/dist/properties/setProperty.js.map +1 -1
- package/dist/properties/stringProperty.d.ts.map +1 -1
- package/dist/properties/stringProperty.js +56 -40
- package/dist/properties/stringProperty.js.map +1 -1
- package/dist/properties/uintProperties.js +5 -5
- package/dist/properties/uintProperties.js.map +1 -1
- package/dist/properties/valueArrayProperty.d.ts +1 -1
- package/dist/properties/valueArrayProperty.d.ts.map +1 -1
- package/dist/properties/valueArrayProperty.js +30 -29
- package/dist/properties/valueArrayProperty.js.map +1 -1
- package/dist/properties/valueMapProperty.d.ts.map +1 -1
- package/dist/properties/valueMapProperty.js +31 -29
- package/dist/properties/valueMapProperty.js.map +1 -1
- package/dist/properties/valueProperty.d.ts.map +1 -1
- package/dist/properties/valueProperty.js +11 -9
- package/dist/properties/valueProperty.js.map +1 -1
- package/dist/propertyFactory.d.ts.map +1 -1
- package/dist/propertyFactory.js +309 -252
- package/dist/propertyFactory.js.map +1 -1
- package/dist/propertyTemplate.d.ts +17 -17
- package/dist/propertyTemplate.d.ts.map +1 -1
- package/dist/propertyTemplate.js +64 -45
- package/dist/propertyTemplate.js.map +1 -1
- package/dist/propertyTemplateWrapper.d.ts.map +1 -1
- package/dist/propertyTemplateWrapper.js +40 -25
- package/dist/propertyTemplateWrapper.js.map +1 -1
- package/dist/propertyUtils.d.ts.map +1 -1
- package/dist/propertyUtils.js.map +1 -1
- package/dist/test/properties/arrayProperty.spec.js +566 -490
- package/dist/test/properties/arrayProperty.spec.js.map +1 -1
- package/dist/test/properties/baseProperty.spec.js +293 -280
- package/dist/test/properties/baseProperty.spec.js.map +1 -1
- package/dist/test/properties/containerProperty.spec.js +100 -94
- package/dist/test/properties/containerProperty.spec.js.map +1 -1
- package/dist/test/properties/customArrayProperty.spec.js +174 -147
- package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumArrayProperty.spec.js +67 -63
- package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumProperty.spec.js +115 -97
- package/dist/test/properties/enumProperty.spec.js.map +1 -1
- package/dist/test/properties/float32.spec.js +5 -5
- package/dist/test/properties/float32.spec.js.map +1 -1
- package/dist/test/properties/int64ArrayProperty.spec.js +157 -93
- package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/int64MapProperty.spec.js +185 -166
- package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
- package/dist/test/properties/int64Property.spec.js +109 -109
- package/dist/test/properties/int64Property.spec.js.map +1 -1
- package/dist/test/properties/isLeafNode.spec.js +75 -76
- package/dist/test/properties/isLeafNode.spec.js.map +1 -1
- package/dist/test/properties/mapProperty.spec.js +571 -531
- package/dist/test/properties/mapProperty.spec.js.map +1 -1
- package/dist/test/properties/namedNodeProperty.spec.js +31 -31
- package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
- package/dist/test/properties/nodeProperty.spec.js +805 -795
- package/dist/test/properties/nodeProperty.spec.js.map +1 -1
- package/dist/test/properties/referenceProperty.spec.js +729 -679
- package/dist/test/properties/referenceProperty.spec.js.map +1 -1
- package/dist/test/properties/relationshipProperty.spec.js +16 -16
- package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
- package/dist/test/properties/setProperty.spec.js +288 -227
- package/dist/test/properties/setProperty.spec.js.map +1 -1
- package/dist/test/properties/stringProperty.spec.js +326 -318
- package/dist/test/properties/stringProperty.spec.js.map +1 -1
- package/dist/test/properties/uint64Property.spec.js +46 -36
- package/dist/test/properties/uint64Property.spec.js.map +1 -1
- package/dist/test/properties/valueMapProperty.spec.js +259 -246
- package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
- package/dist/test/properties/valueProperty.spec.js +49 -43
- package/dist/test/properties/valueProperty.spec.js.map +1 -1
- package/dist/test/propertyFactory.spec.js +2038 -1631
- package/dist/test/propertyFactory.spec.js.map +1 -1
- package/dist/test/propertyTemplateWrapper.spec.js +72 -102
- package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
- package/dist/test/propertyUtils.spec.js +22 -21
- package/dist/test/propertyUtils.spec.js.map +1 -1
- package/dist/test/reversibleChangeset.spec.js +857 -703
- package/dist/test/reversibleChangeset.spec.js.map +1 -1
- package/dist/test/setup.js +5 -5
- package/dist/test/setup.js.map +1 -1
- package/dist/test/tsconfig.tsbuildinfo +1 -1
- package/dist/test/utils.spec.js +1334 -1144
- package/dist/test/utils.spec.js.map +1 -1
- package/dist/test/validation/badMissingSemverInTypeid.js +20 -20
- package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
- package/dist/test/validation/badPrimitiveTypeid.js +12 -12
- package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
- package/dist/test/validation/goodColorId.js +91 -91
- package/dist/test/validation/goodColorId.js.map +1 -1
- package/dist/test/validation/goodColorPalette.js +4 -4
- package/dist/test/validation/goodColorPalette.js.map +1 -1
- package/dist/test/validation/goodPointId.js +20 -20
- package/dist/test/validation/goodPointId.js.map +1 -1
- package/dist/test/validation/reversibleChangeSetTestData.js +23841 -2
- package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
- package/lib/containerSerializer.d.ts.map +1 -1
- package/lib/containerSerializer.js +5 -5
- package/lib/containerSerializer.js.map +1 -1
- package/lib/enableValidations.js.map +1 -1
- package/lib/index.d.ts +19 -19
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -19
- package/lib/index.js.map +1 -1
- package/lib/properties/abstractStaticCollectionProperty.d.ts +10 -10
- package/lib/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
- package/lib/properties/abstractStaticCollectionProperty.js +70 -53
- package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/lib/properties/arrayProperty.d.ts.map +1 -1
- package/lib/properties/arrayProperty.js +152 -103
- package/lib/properties/arrayProperty.js.map +1 -1
- package/lib/properties/baseProperty.d.ts +4 -4
- package/lib/properties/baseProperty.d.ts.map +1 -1
- package/lib/properties/baseProperty.js +73 -51
- package/lib/properties/baseProperty.js.map +1 -1
- package/lib/properties/boolProperty.d.ts.map +1 -1
- package/lib/properties/boolProperty.js +3 -3
- package/lib/properties/boolProperty.js.map +1 -1
- package/lib/properties/containerProperty.d.ts +8 -8
- package/lib/properties/containerProperty.d.ts.map +1 -1
- package/lib/properties/containerProperty.js +33 -26
- package/lib/properties/containerProperty.js.map +1 -1
- package/lib/properties/enumArrayProperty.d.ts.map +1 -1
- package/lib/properties/enumArrayProperty.js +14 -14
- package/lib/properties/enumArrayProperty.js.map +1 -1
- package/lib/properties/enumProperty.d.ts.map +1 -1
- package/lib/properties/enumProperty.js +17 -17
- package/lib/properties/enumProperty.js.map +1 -1
- package/lib/properties/floatProperties.js +4 -4
- package/lib/properties/floatProperties.js.map +1 -1
- package/lib/properties/index.d.ts +23 -23
- package/lib/properties/index.d.ts.map +1 -1
- package/lib/properties/index.js +23 -23
- package/lib/properties/index.js.map +1 -1
- package/lib/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
- package/lib/properties/indexedCollectionBaseProperty.js +47 -37
- package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/lib/properties/intProperties.d.ts.map +1 -1
- package/lib/properties/intProperties.js +10 -10
- package/lib/properties/intProperties.js.map +1 -1
- package/lib/properties/lazyLoadedProperties.js.map +1 -1
- package/lib/properties/mapProperty.d.ts.map +1 -1
- package/lib/properties/mapProperty.js +21 -17
- package/lib/properties/mapProperty.js.map +1 -1
- package/lib/properties/namedNodeProperty.d.ts.map +1 -1
- package/lib/properties/namedNodeProperty.js +3 -3
- package/lib/properties/namedNodeProperty.js.map +1 -1
- package/lib/properties/namedProperty.d.ts.map +1 -1
- package/lib/properties/namedProperty.js +7 -5
- package/lib/properties/namedProperty.js.map +1 -1
- package/lib/properties/nodeProperty.d.ts.map +1 -1
- package/lib/properties/nodeProperty.js +5 -3
- package/lib/properties/nodeProperty.js.map +1 -1
- package/lib/properties/primitiveTypeCasts.d.ts.map +1 -1
- package/lib/properties/primitiveTypeCasts.js +9 -9
- package/lib/properties/primitiveTypeCasts.js.map +1 -1
- package/lib/properties/referenceArrayProperty.d.ts.map +1 -1
- package/lib/properties/referenceArrayProperty.js +31 -25
- package/lib/properties/referenceArrayProperty.js.map +1 -1
- package/lib/properties/referenceMapProperty.d.ts.map +1 -1
- package/lib/properties/referenceMapProperty.js +18 -18
- package/lib/properties/referenceMapProperty.js.map +1 -1
- package/lib/properties/referenceProperty.d.ts.map +1 -1
- package/lib/properties/referenceProperty.js +33 -29
- package/lib/properties/referenceProperty.js.map +1 -1
- package/lib/properties/setProperty.d.ts.map +1 -1
- package/lib/properties/setProperty.js +31 -29
- package/lib/properties/setProperty.js.map +1 -1
- package/lib/properties/stringProperty.d.ts.map +1 -1
- package/lib/properties/stringProperty.js +56 -40
- package/lib/properties/stringProperty.js.map +1 -1
- package/lib/properties/uintProperties.js +5 -5
- package/lib/properties/uintProperties.js.map +1 -1
- package/lib/properties/valueArrayProperty.d.ts +1 -1
- package/lib/properties/valueArrayProperty.d.ts.map +1 -1
- package/lib/properties/valueArrayProperty.js +30 -29
- package/lib/properties/valueArrayProperty.js.map +1 -1
- package/lib/properties/valueMapProperty.d.ts.map +1 -1
- package/lib/properties/valueMapProperty.js +31 -29
- package/lib/properties/valueMapProperty.js.map +1 -1
- package/lib/properties/valueProperty.d.ts.map +1 -1
- package/lib/properties/valueProperty.js +11 -9
- package/lib/properties/valueProperty.js.map +1 -1
- package/lib/propertyFactory.d.ts.map +1 -1
- package/lib/propertyFactory.js +309 -252
- package/lib/propertyFactory.js.map +1 -1
- package/lib/propertyTemplate.d.ts +17 -17
- package/lib/propertyTemplate.d.ts.map +1 -1
- package/lib/propertyTemplate.js +64 -45
- package/lib/propertyTemplate.js.map +1 -1
- package/lib/propertyTemplateWrapper.d.ts.map +1 -1
- package/lib/propertyTemplateWrapper.js +40 -25
- package/lib/propertyTemplateWrapper.js.map +1 -1
- package/lib/propertyUtils.d.ts.map +1 -1
- package/lib/propertyUtils.js.map +1 -1
- package/package.json +28 -28
- package/src/index.d.ts +2750 -2681
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @fileoverview Abstract base class for indexed collections (sets and maps)
|
|
7
7
|
*/
|
|
8
|
-
const { ChangeSet } = require(
|
|
9
|
-
const { ConsoleUtils } = require(
|
|
10
|
-
const { MSG } = require(
|
|
11
|
-
const _ = require(
|
|
12
|
-
const { deserialize } = require(
|
|
13
|
-
const { validationsEnabled } = require(
|
|
14
|
-
const { BaseProperty } = require(
|
|
15
|
-
const { AbstractStaticCollectionProperty } = require(
|
|
8
|
+
const { ChangeSet } = require("@fluid-experimental/property-changeset");
|
|
9
|
+
const { ConsoleUtils } = require("@fluid-experimental/property-common");
|
|
10
|
+
const { MSG } = require("@fluid-experimental/property-common").constants;
|
|
11
|
+
const _ = require("lodash");
|
|
12
|
+
const { deserialize } = require("../containerSerializer");
|
|
13
|
+
const { validationsEnabled } = require("../enableValidations");
|
|
14
|
+
const { BaseProperty } = require("./baseProperty");
|
|
15
|
+
const { AbstractStaticCollectionProperty } = require("./abstractStaticCollectionProperty");
|
|
16
16
|
/**
|
|
17
17
|
* typedef {property-properties.BaseProperty|string|number|boolean} property-properties.IndexedCollectionBaseProperty~ValueType
|
|
18
18
|
*
|
|
@@ -61,8 +61,7 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
61
61
|
this._pendingChanges.remove = {};
|
|
62
62
|
this._pendingChanges.modify = {};
|
|
63
63
|
}
|
|
64
|
-
if (in_flags === undefined ||
|
|
65
|
-
(in_flags & BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) !== 0) {
|
|
64
|
+
if (in_flags === undefined || (in_flags & BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) !== 0) {
|
|
66
65
|
// We additionally have to remove the log on the changes to our entries
|
|
67
66
|
this._dirtyChanges.insert = {};
|
|
68
67
|
this._dirtyChanges.remove = {};
|
|
@@ -76,8 +75,11 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
76
75
|
* If none are supplied, all will be removed.
|
|
77
76
|
*/
|
|
78
77
|
cleanDirty(in_flags) {
|
|
79
|
-
in_flags =
|
|
80
|
-
|
|
78
|
+
in_flags =
|
|
79
|
+
in_flags !== undefined
|
|
80
|
+
? in_flags
|
|
81
|
+
: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |
|
|
82
|
+
BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE;
|
|
81
83
|
// Clean all entries inside of the collection
|
|
82
84
|
let cleanDirtiness = (collection) => {
|
|
83
85
|
var entry;
|
|
@@ -145,16 +147,14 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
145
147
|
}
|
|
146
148
|
else {
|
|
147
149
|
// For primitive types we squash remove/insert combinations to modifies
|
|
148
|
-
if (this._pendingChanges.remove[in_key] &&
|
|
149
|
-
!this._pendingChanges.insert[in_key]) {
|
|
150
|
+
if (this._pendingChanges.remove[in_key] && !this._pendingChanges.insert[in_key]) {
|
|
150
151
|
this._pendingChanges.modify[in_key] = true;
|
|
151
152
|
delete this._pendingChanges.remove[in_key];
|
|
152
153
|
}
|
|
153
154
|
else {
|
|
154
155
|
this._pendingChanges.insert[in_key] = true;
|
|
155
156
|
}
|
|
156
|
-
if (this._dirtyChanges.remove[in_key] &&
|
|
157
|
-
!this._dirtyChanges.insert[in_key]) {
|
|
157
|
+
if (this._dirtyChanges.remove[in_key] && !this._dirtyChanges.insert[in_key]) {
|
|
158
158
|
this._dirtyChanges.modify[in_key] = true;
|
|
159
159
|
delete this._dirtyChanges.remove[in_key];
|
|
160
160
|
}
|
|
@@ -238,21 +238,24 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
238
238
|
in_changes[in_typeid][in_key] = in_value;
|
|
239
239
|
}
|
|
240
240
|
};
|
|
241
|
-
var changes = in_dirtinessType === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE
|
|
242
|
-
this._pendingChanges
|
|
241
|
+
var changes = in_dirtinessType === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE
|
|
242
|
+
? this._pendingChanges
|
|
243
|
+
: this._dirtyChanges;
|
|
243
244
|
var insert = {};
|
|
244
245
|
var modify = {};
|
|
245
246
|
// we only remove entries when computing the delta
|
|
246
247
|
var remove = in_dirtyOnly ? _.keys(changes.remove) : [];
|
|
247
248
|
// Iterate over all children (and not properties)
|
|
248
249
|
var typeid;
|
|
249
|
-
var entryKeys = in_dirtyOnly
|
|
250
|
-
_.keys(changes.modify).concat(_.keys(changes.insert))
|
|
251
|
-
_.keys(this._dynamicChildren); // All keys
|
|
250
|
+
var entryKeys = in_dirtyOnly
|
|
251
|
+
? _.keys(changes.modify).concat(_.keys(changes.insert)) // Only dirty keys
|
|
252
|
+
: _.keys(this._dynamicChildren); // All keys
|
|
252
253
|
for (var i = 0; i < entryKeys.length; i++) {
|
|
253
254
|
var key = entryKeys[i];
|
|
254
255
|
var entry = this._dynamicChildren[key];
|
|
255
|
-
typeid = this._containsPrimitiveTypes
|
|
256
|
+
typeid = this._containsPrimitiveTypes
|
|
257
|
+
? this.getFullTypeid(false)
|
|
258
|
+
: entry.getFullTypeid(false);
|
|
256
259
|
if (in_dirtyOnly) {
|
|
257
260
|
if (changes.insert[key]) {
|
|
258
261
|
// If the key was inserted in this ChangeSet include it into the inserted list
|
|
@@ -324,7 +327,7 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
324
327
|
*/
|
|
325
328
|
_serializeValue(in_obj) {
|
|
326
329
|
ConsoleUtils.assert(this._containsPrimitiveTypes, MSG.ASSERTION_FAILED +
|
|
327
|
-
|
|
330
|
+
"Function IndexedCollectionBaseProperty._serializeValue() called on non-primitive collection");
|
|
328
331
|
return in_obj;
|
|
329
332
|
}
|
|
330
333
|
/**
|
|
@@ -336,7 +339,9 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
336
339
|
var appliedChangeset = AbstractStaticCollectionProperty.prototype._deserialize.call(this, in_serializedObj, false, in_filteringOptions, in_createChangeSet);
|
|
337
340
|
// Perform updates to the children
|
|
338
341
|
// We make copies on two levels, since those are modified by the calls below
|
|
339
|
-
var insertedEntries = _.mapValues(in_serializedObj.insert, function (x) {
|
|
342
|
+
var insertedEntries = _.mapValues(in_serializedObj.insert, function (x) {
|
|
343
|
+
return _.clone(x);
|
|
344
|
+
}) || {};
|
|
340
345
|
var removedEntries = {};
|
|
341
346
|
var modifiedEntries = {};
|
|
342
347
|
// Get a list of all keys that will be inserted
|
|
@@ -389,7 +394,8 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
389
394
|
for (i = 0; i < addedKeys.length; i++) {
|
|
390
395
|
if (currentEntries[addedKeys[i]] !== undefined) {
|
|
391
396
|
modifiedEntries[typeid] = modifiedEntries[typeid] || {};
|
|
392
|
-
modifiedEntries[typeid][addedKeys[i]] =
|
|
397
|
+
modifiedEntries[typeid][addedKeys[i]] =
|
|
398
|
+
insertedEntries[typeid][addedKeys[i]];
|
|
393
399
|
delete insertedEntries[typeid][addedKeys[i]];
|
|
394
400
|
}
|
|
395
401
|
}
|
|
@@ -434,11 +440,12 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
434
440
|
if (this._containsPrimitiveTypes) {
|
|
435
441
|
changes = modifiedEntries[modifiedKeys[i]];
|
|
436
442
|
// Determine if value has changed
|
|
437
|
-
valueWasChanged =
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
443
|
+
valueWasChanged =
|
|
444
|
+
this._typeid === "Int64" || this._typeid === "Uint64"
|
|
445
|
+
? // For (u)int64, we will compare (Ui/I)nt64 objects with arrays [low, high]
|
|
446
|
+
this._dynamicChildren[modifiedKeys[i]].getValueLow() !== changes[0] ||
|
|
447
|
+
this._dynamicChildren[modifiedKeys[i]].getValueHigh() !== changes[1]
|
|
448
|
+
: this._dynamicChildren[modifiedKeys[i]] !== changes;
|
|
442
449
|
modifiedEntriesMap = modifiedEntries;
|
|
443
450
|
if (valueWasChanged) {
|
|
444
451
|
this._dynamicChildren[modifiedKeys[i]] = this._deserializeValue(changes);
|
|
@@ -550,18 +557,20 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
550
557
|
// Modify entries
|
|
551
558
|
var mapWasChangedByModify = false;
|
|
552
559
|
if (in_changeSet.modify) {
|
|
553
|
-
var classKeys = this._containsPrimitiveTypes
|
|
560
|
+
var classKeys = this._containsPrimitiveTypes
|
|
561
|
+
? [undefined]
|
|
562
|
+
: _.keys(in_changeSet.modify);
|
|
554
563
|
for (var iClass = 0; iClass < classKeys.length; iClass++) {
|
|
555
|
-
var modifiedEntries = this._containsPrimitiveTypes
|
|
556
|
-
in_changeSet.modify
|
|
557
|
-
in_changeSet.modify[classKeys[iClass]];
|
|
564
|
+
var modifiedEntries = this._containsPrimitiveTypes
|
|
565
|
+
? in_changeSet.modify
|
|
566
|
+
: in_changeSet.modify[classKeys[iClass]];
|
|
558
567
|
var keys = Object.keys(modifiedEntries);
|
|
559
568
|
for (var i = 0; i < keys.length; i++) {
|
|
560
569
|
var key = keys[i];
|
|
561
570
|
if (this._dynamicChildren[key] !== undefined) {
|
|
562
571
|
if (this._containsPrimitiveTypes) {
|
|
563
572
|
var modifiedEntry = modifiedEntries[key];
|
|
564
|
-
if (typeof modifiedEntry ===
|
|
573
|
+
if (typeof modifiedEntry === "object") {
|
|
565
574
|
modifiedEntry = modifiedEntry.value;
|
|
566
575
|
}
|
|
567
576
|
this._dynamicChildren[key] = modifiedEntry;
|
|
@@ -644,8 +653,9 @@ export class IndexedCollectionBaseProperty extends AbstractStaticCollectionPrope
|
|
|
644
653
|
if (in_pendingChangeSet.modify) {
|
|
645
654
|
var classKeys = _.keys(in_pendingChangeSet.modify);
|
|
646
655
|
for (var iClass = 0; iClass < classKeys.length; iClass++) {
|
|
647
|
-
var modifiedPendingEntries = in_pendingChangeSet.modify && in_pendingChangeSet.modify[classKeys[iClass]] ||
|
|
648
|
-
|
|
656
|
+
var modifiedPendingEntries = (in_pendingChangeSet.modify && in_pendingChangeSet.modify[classKeys[iClass]]) ||
|
|
657
|
+
{};
|
|
658
|
+
var modifiedDirtyEntries = (in_dirtyChangeSet.modify && in_dirtyChangeSet.modify[classKeys[iClass]]) || {};
|
|
649
659
|
keys = Object.keys(modifiedPendingEntries).concat(Object.keys(modifiedDirtyEntries));
|
|
650
660
|
for (i = 0; i < keys.length; i++) {
|
|
651
661
|
key = keys[i];
|
|
@@ -1 +1 @@
|
|
|
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');\nconst { deserialize } = require('../containerSerializer');\nconst { validationsEnabled } = require('../enableValidations');\nconst { BaseProperty } = require('./baseProperty');\nconst { AbstractStaticCollectionProperty } = require('./abstractStaticCollectionProperty');\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 /**\n * @param {Object} in_params - Input parameters for property creation\n *\n * @constructor\n */\n constructor(in_params) {\n super(in_params);\n /** Stores the pending changes in the property (those that are part of the current ChangeSet) */\n this._pendingChanges = {\n insert: {},\n remove: {},\n modify: {},\n };\n\n /** Stores the dirty changes in the property (those that have not yet been reported to the application) */\n this._dirtyChanges = {\n insert: {},\n remove: {},\n modify: {},\n };\n }\n\n /**\n * Removes the dirtiness flag from this property\n *\n * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_flags] - The flags to clean\n * If none are supplied, all will be removed.\n * @private\n */\n _cleanDirty(in_flags) {\n // Invoke parent\n BaseProperty.prototype._cleanDirty.call(this, in_flags);\n\n if (in_flags === undefined ||\n (in_flags & BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE) !== 0) {\n // We additionally have to remove the log on the changes to our entries\n this._pendingChanges.insert = {};\n this._pendingChanges.remove = {};\n this._pendingChanges.modify = {};\n }\n\n if (in_flags === undefined ||\n (in_flags & BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) !== 0) {\n // We additionally have to remove the log on the changes to our entries\n this._dirtyChanges.insert = {};\n this._dirtyChanges.remove = {};\n this._dirtyChanges.modify = {};\n }\n }\n\n /**\n * Removes the dirtiness flag from this property and recursively from all of its children\n *\n * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_flags] - The flags to clean.\n * If none are supplied, all will be removed.\n */\n cleanDirty(in_flags) {\n in_flags = in_flags !== undefined ? in_flags : BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE;\n\n // Clean all entries inside of the collection\n let cleanDirtiness = (collection) => {\n var entry;\n\n // eslint-disable-next-line no-restricted-syntax\n for (let key in collection) {\n entry = this._dynamicChildren[key];\n if (entry._isDirty(in_flags)) {\n entry.cleanDirty(in_flags);\n }\n }\n };\n\n if (!this._containsPrimitiveTypes) {\n if (in_flags === BaseProperty.MODIFIED_STATE_FLAGS.DIRTY) {\n // Only use the dirty entries\n cleanDirtiness(this._dirtyChanges.insert);\n cleanDirtiness(this._dirtyChanges.modify);\n } else if (in_flags === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE) {\n // Only use the pending changes\n cleanDirtiness(this._pendingChanges.insert);\n cleanDirtiness(this._pendingChanges.modify);\n } else {\n cleanDirtiness(this._pendingChanges.insert);\n cleanDirtiness(this._pendingChanges.modify);\n cleanDirtiness(this._dirtyChanges.insert);\n cleanDirtiness(this._dirtyChanges.modify);\n }\n }\n\n // Invoke parent\n BaseProperty.prototype.cleanDirty.call(this, in_flags);\n\n // after all entries have been cleaned, we mark this property as clean\n this._cleanDirty(in_flags);\n }\n\n /**\n * Inserts a property into the collection\n *\n * @param {string} in_key - Key of the entry in the collection\n * @param {property-properties.IndexedCollectionBaseProperty~ValueType} in_value - The value to insert\n * @param {boolean} in_reportToView -\n * By default, the dirtying will always be reported to the checkout view and trigger a modified event there.\n * When batching updates, this can be prevented via this flag.\n */\n _insert(in_key, in_value, in_reportToView) {\n if (validationsEnabled.enabled) {\n this._checkIsNotReadOnly(false);\n }\n\n if (!this.has(in_key)) {\n // Make sure, the property we are inserting is not already part of some other collection\n if (validationsEnabled.enabled && !this._containsPrimitiveTypes) {\n in_value._validateInsertIn(this);\n }\n\n this._dynamicChildren[in_key] = in_value;\n\n // We have to make sure, both this node itself and the whole tree of the inserted\n // entry are marked as dirty to make sure, they get serialized\n // We don't yet report the dirtying to the view. This happens below.\n this._setDirty(false);\n\n if (!this._containsPrimitiveTypes) {\n // Dirty the tree (TODO: is this needed?)\n in_value._setDirtyTree(false);\n\n in_value._setParent(this);\n\n // In the case of a template property, we always mark it as inserted\n this._pendingChanges.insert[in_key] = true;\n this._dirtyChanges.insert[in_key] = true;\n } else {\n // For primitive types we squash remove/insert combinations to modifies\n if (this._pendingChanges.remove[in_key] &&\n !this._pendingChanges.insert[in_key]) {\n this._pendingChanges.modify[in_key] = true;\n delete this._pendingChanges.remove[in_key];\n } else {\n this._pendingChanges.insert[in_key] = true;\n }\n\n if (this._dirtyChanges.remove[in_key] &&\n !this._dirtyChanges.insert[in_key]) {\n this._dirtyChanges.modify[in_key] = true;\n delete this._dirtyChanges.remove[in_key];\n } else {\n this._dirtyChanges.insert[in_key] = true;\n }\n }\n\n // Now make one report\n if (in_reportToView) {\n this._reportDirtinessToView();\n }\n } else {\n throw new Error(MSG.PROPERTY_ALREADY_EXISTS + in_key);\n }\n }\n\n /**\n * Removes an entry with the given key\n *\n * @param {string} in_key - key of the entry\n * @param {boolean} in_reportToView - By default, the dirtying will always be reported to the checkout view and\n * trigger a modified event there.\n * When batching updates, this can be prevented via this flag.\n */\n _removeByKey(in_key, in_reportToView) {\n this._checkIsNotReadOnly(false);\n\n if (this._dynamicChildren[in_key] !== undefined) {\n if (this._dynamicChildren[in_key] instanceof BaseProperty) {\n this._dynamicChildren[in_key]._setParent(undefined);\n }\n\n delete this._dynamicChildren[in_key];\n\n // make sure this is not present in the insert list!\n if (this._pendingChanges.insert[in_key]) {\n delete this._pendingChanges.insert[in_key];\n } else {\n this._pendingChanges.remove[in_key] = true;\n\n // Also remove modifies, if any are present\n delete this._pendingChanges.modify[in_key];\n }\n\n // also update the list of dirty changes\n if (this._dirtyChanges.insert[in_key]) {\n delete this._dirtyChanges.insert[in_key];\n } else {\n this._dirtyChanges.remove[in_key] = true;\n\n // Also remove modifies, if any are present\n delete this._dirtyChanges.modify[in_key];\n }\n\n this._setDirty(in_reportToView);\n } else {\n throw new Error(MSG.REMOVED_NON_EXISTING_ENTRY + in_key);\n }\n }\n\n /**\n * Serialize the property\n *\n * @param {boolean} in_dirtyOnly - Only include dirty entries in the serialization\n * @param {boolean} in_includeRootTypeid - Include the typeid of the root of the hierarchy\n * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] - The type of dirtiness to use\n * when reporting dirty changes. By default this is `PENDING_CHANGE`.\n * @param {boolean} [in_includeReferencedRepositories=false] - If this is set to true, the serialize\n * function will descend into referenced repositories.\n * WARNING: if there are loops in the references this can result in an infinite loop.\n *\n * @return {Object} The serialized representation of this property\n * @private\n */\n _serialize(in_dirtyOnly,\n in_includeRootTypeid,\n in_dirtinessType,\n in_includeReferencedRepositories) {\n var serialized = AbstractStaticCollectionProperty.prototype._serialize.call(this, in_dirtyOnly, in_includeRootTypeid,\n in_dirtinessType, in_includeReferencedRepositories);\n\n var that = this;\n\n // Helper function to decide whether to include a typeid or not in the ChangeSet\n var addEntryInChangeSet = function(in_changes, in_typeid, in_key, in_value) {\n // Determine where to insert the key. If necessary, an entry for the type is added.\n if (that._containsPrimitiveTypes) {\n in_changes[in_key] = that._serializeValue(in_value);\n } else {\n in_changes[in_typeid] = in_changes[in_typeid] || {};\n in_changes[in_typeid][in_key] = in_value;\n }\n };\n\n var changes = in_dirtinessType === BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE ?\n this._pendingChanges : this._dirtyChanges;\n var insert = {};\n var modify = {};\n // we only remove entries when computing the delta\n var remove = in_dirtyOnly ? _.keys(changes.remove) : [];\n\n // Iterate over all children (and not properties)\n var typeid;\n var entryKeys = in_dirtyOnly ?\n _.keys(changes.modify).concat(_.keys(changes.insert)) : // Only dirty keys\n _.keys(this._dynamicChildren); // All keys\n for (var i = 0; i < entryKeys.length; i++) {\n var key = entryKeys[i];\n var entry = this._dynamicChildren[key];\n typeid = this._containsPrimitiveTypes ? this.getFullTypeid(false) : entry.getFullTypeid(false);\n if (in_dirtyOnly) {\n if (changes.insert[key]) {\n // If the key was inserted in this ChangeSet include it into the inserted list\n if (this._containsPrimitiveTypes) {\n addEntryInChangeSet(insert, typeid, key, entry);\n } else {\n addEntryInChangeSet(insert, typeid, key, entry._serialize(false, false,\n undefined, in_includeReferencedRepositories));\n }\n } else {\n // Check whether this is a modified entry and serialize changes when needed\n if (this._containsPrimitiveTypes) {\n if (changes.modify[key]) {\n addEntryInChangeSet(modify, typeid, key, entry);\n }\n } else {\n if (entry._isDirty(in_dirtinessType)) {\n var serializedChild = entry._serialize(in_dirtyOnly, false,\n in_dirtinessType, in_includeReferencedRepositories);\n if (!ChangeSet.isEmptyChangeSet(serializedChild)) {\n addEntryInChangeSet(modify, typeid, key, serializedChild);\n }\n }\n }\n }\n } else {\n // If we serialize everything, all entries are inserted\n if (this._containsPrimitiveTypes) {\n insert[key] = this._serializeValue(entry);\n } else {\n insert[typeid] = insert[typeid] || {};\n insert[typeid][key] = entry._serialize(in_dirtyOnly, false, undefined, in_includeReferencedRepositories);\n }\n }\n }\n\n // Serialize the changes\n if (!_.isEmpty(insert)) {\n serialized.insert = insert;\n }\n\n if (!_.isEmpty(remove)) {\n serialized.remove = remove;\n }\n\n if (!_.isEmpty(modify)) {\n serialized.modify = modify;\n }\n\n return serialized;\n }\n\n /**\n * Function to deserialize special primitive types.\n * Some primitive types (e.g. Int64, which is not natively supported by javascript) require\n * special treatment on deserialization. For supported types, we can just return the input here.\n *\n * @param {property-properties.SerializedChangeSet} in_serializedObj - The object to be deserialized\n * @return {*} the deserialized value\n */\n _deserializeValue(in_serializedObj) {\n return in_serializedObj;\n }\n\n /**\n * Function to serialize special primitive types.\n * Some primitive types (e.g. Int64, which is not natively supported by javascript) require\n * special treatment on serialization. For supported types, we can just return the input here.\n *\n * @param {*} in_obj - The object to be serialized\n * @return {property-properties.SerializedChangeSet} the serialized object\n */\n _serializeValue(in_obj) {\n ConsoleUtils.assert(this._containsPrimitiveTypes, MSG.ASSERTION_FAILED +\n 'Function IndexedCollectionBaseProperty._serializeValue() called on non-primitive collection');\n return in_obj;\n }\n\n /**\n * @inheritdoc\n */\n _deserialize(in_serializedObj, in_reportToView, in_filteringOptions, in_createChangeSet) {\n var currentEntries = this._dynamicChildren;\n var allInsertedKeys = {};\n\n var appliedChangeset = AbstractStaticCollectionProperty.prototype._deserialize.call(\n this, in_serializedObj, false, in_filteringOptions, in_createChangeSet);\n\n // Perform updates to the children\n\n // We make copies on two levels, since those are modified by the calls below\n var insertedEntries = _.mapValues(in_serializedObj.insert, function(x) { return _.clone(x); }) || {};\n var removedEntries = {};\n var modifiedEntries = {};\n\n // Get a list of all keys that will be inserted\n if (this._containsPrimitiveTypes) {\n var dataKeys = _.keys(insertedEntries);\n for (var iData = 0; iData < dataKeys.length; iData++) {\n var key = dataKeys[iData];\n allInsertedKeys[key] = true;\n }\n } else {\n var classKeys = _.keys(insertedEntries);\n for (var iClass = 0; iClass < classKeys.length; iClass++) {\n var typeid = classKeys[iClass];\n var dataKeys = _.keys(insertedEntries[typeid]);\n for (var iData = 0; iData < dataKeys.length; iData++) {\n var key = dataKeys[iData];\n allInsertedKeys[key] = true;\n }\n }\n }\n\n // Intersect the list of current keys, with the list of keys that will\n // NOT be inserted. Then insert the difference in the remove list so that\n // no objects are left dangling\n var keys = _.keys(currentEntries);\n for (var i = 0; i < keys.length; i++) {\n if (!allInsertedKeys[keys[i]]) {\n removedEntries[keys[i]] = true;\n }\n }\n\n // Remap adds to modify if the items are already in the document.\n // We want to make sure we reuse the current document state as much as possible\n // and simply change the bits that need to be changed. In many cases the\n // document will already contain the items but they need to be modified to\n // match the state described in_changeSet.\n if (this._containsPrimitiveTypes) {\n var addedKeys = Object.keys(insertedEntries);\n for (i = 0; i < addedKeys.length; i++) {\n if (currentEntries[addedKeys[i]] !== undefined) {\n modifiedEntries[addedKeys[i]] = insertedEntries[addedKeys[i]];\n delete insertedEntries[addedKeys[i]];\n }\n }\n } else {\n classKeys = _.keys(insertedEntries);\n for (iClass = 0; iClass < classKeys.length; iClass++) {\n typeid = classKeys[iClass];\n var addedKeys = Object.keys(insertedEntries[typeid]);\n for (i = 0; i < addedKeys.length; i++) {\n if (currentEntries[addedKeys[i]] !== undefined) {\n modifiedEntries[typeid] = modifiedEntries[typeid] || {};\n modifiedEntries[typeid][addedKeys[i]] = insertedEntries[typeid][addedKeys[i]];\n delete insertedEntries[typeid][addedKeys[i]];\n }\n }\n\n // Remove add entries, when they are empty\n if (_.isEmpty(insertedEntries[typeid])) {\n delete insertedEntries[typeid];\n }\n }\n }\n\n // Begin by removing what needs to be removed.\n keys = Object.keys(removedEntries);\n for (i = 0; i < keys.length; i++) {\n this._removeByKey(keys[i], false);\n }\n\n // Now get the portion of the children that must be added\n // this is a straightforward deserialize.\n if (this._containsPrimitiveTypes) {\n keys = _.keys(insertedEntries);\n for (i = 0; i < keys.length; i++) {\n this._insert(keys[i], this._deserializeValue(insertedEntries[keys[i]]), false);\n }\n } else {\n var scope = this._getScope();\n var newPsets = deserialize(insertedEntries, scope);\n keys = _.keys(newPsets);\n for (i = 0; i < keys.length; i++) {\n this._insert(keys[i], newPsets[keys[i]], false);\n }\n }\n\n // If no typeids are included, we just use a placeholder for the iteration below\n var classKeys = this._containsPrimitiveTypes ? [undefined] : _.keys(modifiedEntries);\n\n // Finally modify the existing properties\n var mapWasChangedByModify = false;\n for (iClass = 0; iClass < classKeys.length; iClass++) {\n typeid = classKeys[iClass];\n var modifiedKeys = Object.keys(this._containsPrimitiveTypes ? modifiedEntries : modifiedEntries[typeid]);\n for (i = 0; i < modifiedKeys.length; i++) {\n var changes;\n var valueWasChanged = false;\n var modifiedEntriesMap;\n if (this._containsPrimitiveTypes) {\n changes = modifiedEntries[modifiedKeys[i]];\n // Determine if value has changed\n valueWasChanged = this._typeid === 'Int64' || this._typeid === 'Uint64'\n // For (u)int64, we will compare (Ui/I)nt64 objects with arrays [low, high]\n ? this._dynamicChildren[modifiedKeys[i]].getValueLow() !== changes[0]\n || this._dynamicChildren[modifiedKeys[i]].getValueHigh() !== changes[1]\n : this._dynamicChildren[modifiedKeys[i]] !== changes;\n modifiedEntriesMap = modifiedEntries;\n if (valueWasChanged) {\n this._dynamicChildren[modifiedKeys[i]] = this._deserializeValue(changes);\n // After modifying an entry, we have to update the flags\n // If there is a pending insert, we don't need to mark this as\n // a modify, as it will just change the insert. Otherwise, this\n // has to be reported as modify\n if (!this._pendingChanges.insert[modifiedKeys[i]]) {\n this._pendingChanges.modify[modifiedKeys[i]] = true;\n mapWasChangedByModify = true;\n }\n if (!this._dirtyChanges.insert[modifiedKeys[i]]) {\n this._dirtyChanges.modify[modifiedKeys[i]] = true;\n mapWasChangedByModify = true;\n }\n }\n } else {\n changes = this._dynamicChildren[modifiedKeys[i]]._deserialize(\n modifiedEntries[typeid][modifiedKeys[i]],\n false, in_filteringOptions, in_createChangeSet);\n valueWasChanged = !ChangeSet.isEmptyChangeSet(changes);\n\n modifiedEntries[typeid] = modifiedEntries[typeid] || {};\n modifiedEntriesMap = modifiedEntries[typeid];\n }\n\n if (valueWasChanged) {\n modifiedEntriesMap[modifiedKeys[i]] = changes;\n } else {\n delete modifiedEntriesMap[modifiedKeys[i]];\n }\n }\n\n if (!this._containsPrimitiveTypes && _.isEmpty(modifiedEntries[typeid])) {\n delete modifiedEntries[typeid];\n }\n }\n\n // Create a ChangeSet with the actually applied changes\n if (!_.isEmpty(insertedEntries)) {\n appliedChangeset.insert = _.clone(insertedEntries);\n }\n\n if (!_.isEmpty(removedEntries)) {\n appliedChangeset.remove = _.keys(removedEntries);\n }\n\n if (!_.isEmpty(modifiedEntries)) {\n appliedChangeset.modify = modifiedEntries;\n }\n\n // If working with primitive types, we have to update the dirty flag, when one of the entries\n // was changed\n if (mapWasChangedByModify) {\n this._setDirty(false);\n }\n\n // Finally report the dirtiness to the view (we postponed this above)\n if (in_reportToView) {\n this._reportDirtinessToView();\n }\n\n return appliedChangeset;\n }\n\n /**\n * @inheritdoc\n */\n _applyChangeset(in_changeSet, in_reportToView) {\n BaseProperty.prototype._applyChangeset.call(this, in_changeSet, false);\n\n // Remove existing entries\n // (we remove before we add, so that a remove+add operation in effect becomes a replace)\n if (in_changeSet.remove) {\n if (_.isArray(in_changeSet.remove)) {\n for (var i = 0; i < in_changeSet.remove.length; i++) {\n var key = in_changeSet.remove[i];\n this._removeByKey(key, false);\n }\n } else {\n // handle remove is an object case:\n if (!this._containsPrimitiveTypes) {\n var types = Object.keys(in_changeSet.remove);\n for (var i = 0; i < types.length; i++) {\n var keys = Object.keys(in_changeSet.remove[types[i]]);\n for (var j = 0; j < keys.length; j++) {\n this._removeByKey(keys[j], false);\n }\n }\n } else {\n var keys = Object.keys(in_changeSet.remove);\n for (var j = 0; j < keys.length; j++) {\n this._removeByKey(keys[j], false);\n }\n }\n }\n }\n\n // Insert entries (we just have to deserialize and insert them)\n if (in_changeSet.insert) {\n var newPsets;\n if (this._containsPrimitiveTypes) {\n newPsets = in_changeSet.insert;\n } else {\n var scope = this._getScope();\n newPsets = deserialize(in_changeSet.insert, scope);\n }\n var keys = Object.keys(newPsets);\n for (var i = 0; i < keys.length; i++) {\n if (!this._dynamicChildren[keys[i]]) {\n this._insert(keys[i], newPsets[keys[i]], false);\n } else {\n throw new Error(MSG.INSERTED_EXISTING_ENTRY + keys[i]);\n }\n }\n }\n\n // Modify entries\n var mapWasChangedByModify = false;\n if (in_changeSet.modify) {\n var classKeys = this._containsPrimitiveTypes ? [undefined] : _.keys(in_changeSet.modify);\n for (var iClass = 0; iClass < classKeys.length; iClass++) {\n var modifiedEntries = this._containsPrimitiveTypes ?\n in_changeSet.modify :\n in_changeSet.modify[classKeys[iClass]];\n var keys = Object.keys(modifiedEntries);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (this._dynamicChildren[key] !== undefined) {\n if (this._containsPrimitiveTypes) {\n var modifiedEntry = modifiedEntries[key];\n if (typeof modifiedEntry === 'object') {\n modifiedEntry = modifiedEntry.value;\n }\n this._dynamicChildren[key] = modifiedEntry;\n\n // After modifying an entry, we have to update the flags\n // If there is a pending insert, we don't need to mark this as\n // a modify, as it will just change the insert. Otherwise, this\n // has to be reported as modify\n if (!this._pendingChanges.insert[key]) {\n this._pendingChanges.modify[key] = true;\n mapWasChangedByModify = true;\n }\n if (!this._dirtyChanges.insert[key]) {\n this._dirtyChanges.modify[key] = true;\n mapWasChangedByModify = true;\n }\n } else {\n this._dynamicChildren[key]._applyChangeset(modifiedEntries[key], false);\n }\n } else {\n throw new Error(MSG.MODIFY_NON_EXISTING_ENTRY + key);\n }\n }\n }\n }\n\n // If working with primitive types, we have to update the dirty flag, when one of the entries\n // was changed\n if (mapWasChangedByModify) {\n this._setDirty(false);\n }\n\n // Finally report the dirtiness to the view (we postponed this above)\n if (in_reportToView) {\n this._reportDirtinessToView();\n }\n }\n\n /**\n * @inheritdoc\n */\n _reapplyDirtyFlags(in_pendingChangeSet, in_dirtyChangeSet) {\n BaseProperty.prototype._reapplyDirtyFlags.call(this, in_pendingChangeSet, in_dirtyChangeSet);\n\n var i, j, types, keys, key;\n\n // Remove existing entries\n // (we remove before we add, so that a remove+add operation in effect becomes a replace)\n if (in_pendingChangeSet.remove) {\n if (_.isArray(in_pendingChangeSet.remove)) {\n for (i = 0; i < in_pendingChangeSet.remove.length; i++) {\n key = in_pendingChangeSet.remove[i];\n this._pendingChanges.remove[key] = true;\n }\n } else {\n // handle remove is an object case:\n types = Object.keys(in_pendingChangeSet.remove);\n for (i = 0; i < types.length; i++) {\n keys = Object.keys(in_pendingChangeSet.remove[types[i]]);\n for (j = 0; j < keys.length; j++) {\n this._pendingChanges.remove[keys[j]] = true;\n }\n }\n }\n }\n\n // Inserted entries\n if (in_pendingChangeSet.insert) {\n types = Object.keys(in_pendingChangeSet.insert);\n for (i = 0; i < types.length; i++) {\n keys = Object.keys(in_pendingChangeSet.insert[types[i]]);\n for (j = 0; j < keys.length; j++) {\n key = keys[j];\n if (this._dynamicChildren[key] !== undefined) {\n this._pendingChanges.insert[key] = true;\n } else {\n throw new Error(`${MSG.CANT_DIRTY_MISSING_PROPERTY}${key}`);\n }\n }\n }\n }\n\n // Modify entries\n if (in_pendingChangeSet.modify) {\n var classKeys = _.keys(in_pendingChangeSet.modify);\n for (var iClass = 0; iClass < classKeys.length; iClass++) {\n var modifiedPendingEntries = in_pendingChangeSet.modify && in_pendingChangeSet.modify[classKeys[iClass]] || {};\n var modifiedDirtyEntries = in_dirtyChangeSet.modify && in_dirtyChangeSet.modify[classKeys[iClass]] || {};\n keys = Object.keys(modifiedPendingEntries).concat(Object.keys(modifiedDirtyEntries));\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n if (this._dynamicChildren[key] !== undefined) {\n this._dynamicChildren[key]._reapplyDirtyFlags(modifiedPendingEntries[key], modifiedDirtyEntries[key]);\n } else {\n throw new Error(MSG.MODIFY_NON_EXISTING_ENTRY + key);\n }\n }\n }\n }\n }\n\n /**\n * @inheritdoc\n */\n _setDirty(in_reportToView, in_callingChild) {\n // Mark the child as modified\n if (in_callingChild && !this._containsPrimitiveTypes) {\n var key = in_callingChild.getId();\n if (this._dynamicChildren[key]) {\n if (!this._pendingChanges.insert[key]) {\n this._pendingChanges.modify[key] = true;\n }\n if (!this._dirtyChanges.insert[key]) {\n this._dirtyChanges.modify[key] = true;\n }\n }\n }\n\n // Forward dirtiness propagation to base class\n BaseProperty.prototype._setDirty.call(this, in_reportToView, in_callingChild);\n }\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\");\nconst { deserialize } = require(\"../containerSerializer\");\nconst { validationsEnabled } = require(\"../enableValidations\");\nconst { BaseProperty } = require(\"./baseProperty\");\nconst { AbstractStaticCollectionProperty } = require(\"./abstractStaticCollectionProperty\");\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 BaseProperty.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(\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tundefined,\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);\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_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]] =\n\t\t\t\t\t\t\tinsertedEntries[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 this._dynamicChildren[modifiedKeys[i]].getValueLow() !== changes[0] ||\n\t\t\t\t\t\t\t this._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\n\t\t\t\t? [undefined]\n\t\t\t\t: _.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\t\t{};\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(\n\t\t\t\t\tObject.keys(modifiedDirtyEntries),\n\t\t\t\t);\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":"AAsBA;IAiBA,kBAAmC;CAFlC;AAID;;GAEG;AACH;IAgBA,kBAAoC;CAFnC;AAID;;GAEG;AACH;IAgBA,kBAAoC;CAFnC;AAID;;GAEG;AACH;
|
|
1
|
+
{"version":3,"file":"intProperties.d.ts","sourceRoot":"","sources":["../../src/properties/intProperties.js"],"names":[],"mappings":"AAsBA;IAiBA,kBAAmC;CAFlC;AAID;;GAEG;AACH;IAgBA,kBAAoC;CAFnC;AAID;;GAEG;AACH;IAgBA,kBAAoC;CAFnC;AAID;;GAEG;AACH;IACC;;;;;;;;OAQG;IACH,wBAKC;IAHA,qBAAsC;IAgCvC;;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;IAkED;;;;;;OAMG;IACH,oBAJW,MAAM,GAEL,MAAM,CAIjB;IAED;;;;;;;;;;OAUG;IACH,sBARW,MAAM,aACN,MAAM,QAahB;CACD;AAED;;GAEG;AACH;IACC;;;;;;;OAOG;IACH,wBAEC;IAGF,8DAAoC;CAFnC;AAID;;GAEG;AACH;IACC;;;;;;;OAOG;IACH,wBAEC;IAGF,8DAAqC;CAFpC"}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @fileoverview Definition of the Int*Property classes
|
|
7
7
|
*/
|
|
8
|
-
const _ = require(
|
|
9
|
-
const { ChangeSet } = require(
|
|
10
|
-
const { ConsoleUtils, constants: { MSG }, Uint64, Int64, } = require(
|
|
11
|
-
const { ValueProperty } = require(
|
|
12
|
-
const { _castFunctors } = require(
|
|
8
|
+
const _ = require("lodash");
|
|
9
|
+
const { ChangeSet } = require("@fluid-experimental/property-changeset");
|
|
10
|
+
const { ConsoleUtils, constants: { MSG }, Uint64, Int64, } = require("@fluid-experimental/property-common");
|
|
11
|
+
const { ValueProperty } = require("./valueProperty");
|
|
12
|
+
const { _castFunctors } = require("./primitiveTypeCasts");
|
|
13
13
|
const BIT32 = 4294967296;
|
|
14
14
|
export class Int8Property extends ValueProperty {
|
|
15
15
|
/**
|
|
@@ -27,7 +27,7 @@ export class Int8Property extends ValueProperty {
|
|
|
27
27
|
this._data = 0;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
Int8Property.prototype._typeid =
|
|
30
|
+
Int8Property.prototype._typeid = "Int8";
|
|
31
31
|
Int8Property.prototype._castFunctor = _castFunctors.Int8;
|
|
32
32
|
/**
|
|
33
33
|
* A primitive property for an signed 16 bit integer value.
|
|
@@ -47,7 +47,7 @@ export class Int16Property extends ValueProperty {
|
|
|
47
47
|
this._data = 0;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
Int16Property.prototype._typeid =
|
|
50
|
+
Int16Property.prototype._typeid = "Int16";
|
|
51
51
|
Int16Property.prototype._castFunctor = _castFunctors.Int16;
|
|
52
52
|
/**
|
|
53
53
|
* A primitive property for an signed 32 bit integer value.
|
|
@@ -67,7 +67,7 @@ export class Int32Property extends ValueProperty {
|
|
|
67
67
|
this._data = 0;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
Int32Property.prototype._typeid =
|
|
70
|
+
Int32Property.prototype._typeid = "Int32";
|
|
71
71
|
Int32Property.prototype._castFunctor = _castFunctors.Int32;
|
|
72
72
|
/**
|
|
73
73
|
* A primitive property base class for big integer values.
|
|
@@ -248,7 +248,7 @@ export class Int64Property extends Integer64Property {
|
|
|
248
248
|
super(in_params, Int64);
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
-
Int64Property.prototype._typeid =
|
|
251
|
+
Int64Property.prototype._typeid = "Int64";
|
|
252
252
|
Int64Property.prototype._castFunctor = _castFunctors.Int64;
|
|
253
253
|
/**
|
|
254
254
|
* A primitive property class for big unsingned integer values.
|
|
@@ -266,6 +266,6 @@ export class Uint64Property extends Integer64Property {
|
|
|
266
266
|
super(in_params, Uint64);
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
|
-
Uint64Property.prototype._typeid =
|
|
269
|
+
Uint64Property.prototype._typeid = "Uint64";
|
|
270
270
|
Uint64Property.prototype._castFunctor = _castFunctors.Uint64;
|
|
271
271
|
//# sourceMappingURL=intProperties.js.map
|
|
@@ -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 _ = require('lodash');\nconst { ChangeSet } = require('@fluid-experimental/property-changeset');\nconst {\n ConsoleUtils,\n constants: { MSG },\n Uint64,\n Int64,\n} = require('@fluid-experimental/property-common');\nconst { ValueProperty } = require('./valueProperty');\nconst { _castFunctors } = require('./primitiveTypeCasts');\n\nconst BIT32 = 4294967296;\n\nexport class Int8Property extends ValueProperty {\n /**\n * A primitive property for an signed 8 bit integer value.\n * @param {Object=} in_params - the parameters\n * @constructor\n * @protected\n * @extends property-properties.ValueProperty\n * @alias property-properties.Int8Property\n * @category Value Properties\n */\n constructor(in_params) {\n super(in_params);\n // default for this property type is '0'\n this._data = 0;\n }\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 /**\n * @param {Object=} in_params - the parameters\n * @constructor\n * @protected\n * @extends property-properties.ValueProperty\n * @alias property-properties.Int16Property\n * @category Value Properties\n */\n constructor(in_params) {\n super(in_params);\n // default for this property type is '0'\n this._data = 0;\n }\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 /**\n * @param {Object=} in_params - the parameters\n * @constructor\n * @protected\n * @extends property-properties.ValueProperty\n * @alias property-properties.Int32Property\n * @category Value Properties\n */\n constructor(in_params) {\n super(in_params);\n // default for this property type is '0'\n this._data = 0;\n }\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 /**\n * @param {Object=} in_params - the parameters\n * @constructor\n * @protected\n * @extends property-properties.ValueProperty\n * @alias property-properties.Integer64Property\n * @abstract\n * @category Value Properties\n */\n constructor(in_params, dataConstructor) {\n super(in_params);\n this.DataConstructor = dataConstructor;\n // default for this property type is '0, 0'\n this._data = new this.DataConstructor();\n }\n\n /**\n * Internal function to update the value of the Integer64Property\n *\n * @param {Int64|String|Number} in_value - The new value\n * @param {boolean} [in_reportToView = true] - By default, the dirtying will always be reported to the checkout view\n * and trigger a modified event there. When batching updates, this can be prevented via this flag.\n * @return {boolean} true if the value was actually changed\n * @throws If in_value is a string that contains characters other than numbers\n */\n _setValue(in_value, in_reportToView) {\n var oldLowValue = this._data.getValueLow();\n var oldHighValue = this._data.getValueHigh();\n\n in_value = this._castFunctor(in_value);\n\n var newHighValue = in_value.getValueHigh();\n var newLowValue = in_value.getValueLow();\n\n var changed = oldHighValue !== newHighValue || oldLowValue !== newLowValue;\n\n if (changed) {\n this._data = in_value.clone();\n this._setDirty(in_reportToView);\n }\n return changed;\n }\n\n /**\n * @return {number} the higher 32 bit integer part\n */\n getValueHigh() {\n return this._data.getValueHigh();\n }\n\n /**\n * @return {number} the lower 32 bit integer part\n */\n getValueLow() {\n return this._data.getValueLow();\n }\n\n /**\n * @param {number} in_high - Set the higher 32 bit integer part\n * @throws If in_high is not a number\n * @return {boolean} true if the value was actually changed\n */\n setValueHigh(in_high) {\n ConsoleUtils.assert(_.isNumber(in_high), MSG.IN_HIGH_MUST_BE_NUMBER + in_high);\n var changed = this._data.getValueHigh() !== in_high;\n\n if (changed) {\n var newData = new this.DataConstructor(this.getValueLow(), in_high);\n this._data = newData;\n this._setDirty();\n }\n return changed;\n }\n\n /**\n * @param {number} in_low - Set the lower 32 bit integer part\n * @throws If in_low is not a number\n * @return {boolean} true if the value was actually changed\n */\n setValueLow(in_low) {\n ConsoleUtils.assert(_.isNumber(in_low), MSG.IN_LOW_MUST_BE_NUMBER + in_low);\n var changed = this._data.getValueLow() !== in_low;\n\n if (changed) {\n var newData = new this.DataConstructor(in_low, this.getValueHigh());\n this._data = newData;\n this._setDirty();\n }\n return changed;\n }\n\n /**\n * @inheritdoc\n */\n _deserialize(in_serializedObj, in_reportToView,\n in_filteringOptions, in_createChangeSet) {\n if (ChangeSet.isEmptyChangeSet(in_serializedObj)) {\n return undefined;\n } else {\n ConsoleUtils.assert(_.isArray(in_serializedObj) && in_serializedObj.length === 2, MSG.INVALID_INT64_CHANGESET);\n var readValue = new this.DataConstructor(in_serializedObj[0], in_serializedObj[1]);\n var changed = this._setValue(readValue, in_reportToView);\n return changed ? this.serialize() : undefined;\n }\n }\n\n /**\n * @inheritdoc\n */\n _applyChangeset(in_changeSet, in_reportToView, in_filteringOptions) {\n if (!ChangeSet.isEmptyChangeSet(in_changeSet)) {\n if (!_.isArray(in_changeSet)) {\n in_changeSet = in_changeSet.value;\n }\n ConsoleUtils.assert(_.isArray(in_changeSet) && in_changeSet.length === 2, MSG.INVALID_INT64_CHANGESET);\n var newVal = new this.DataConstructor(in_changeSet[0], in_changeSet[1]);\n this._setValue(newVal, in_reportToView);\n }\n }\n\n /**\n * Serialize the property\n *\n * @param {boolean} in_dirtyOnly -\n * Only include dirty entries in the serialization\n * @param {boolean} in_includeRootTypeid -\n * Include the typeid of the root of the hierarchy - has no effect for value properties\n * @param {property-properties.BaseProperty.MODIFIED_STATE_FLAGS} [in_dirtinessType] -\n * The type of dirtiness to use when reporting dirty changes. By default this is `PENDING_CHANGE`.\n * @param {boolean} [in_includeReferencedRepositories=false] - If this is set to true, the serialize\n * function will descend into referenced repositories. WARNING: if there are loops in the references\n * this can result in an infinite loop\n * @return {*} The serialized representation of this property\n * @private\n */\n _serialize(in_dirtyOnly, in_includeRootTypeid,\n in_dirtinessType, in_includeReferencedRepositories) {\n if (in_dirtyOnly) {\n return this._isDirty(in_dirtinessType)\n ? [this._data.getValueLow(), this._data.getValueHigh()]\n : {};\n } else {\n return [this._data.getValueLow(), this._data.getValueHigh()];\n }\n }\n\n /**\n * The toString() method returns a string representing the specified Integer64 object.\n *\n * @param {number} [in_radix = 10] - An integer between 2 and 36 specifying\n * the base to use for representing numeric values.\n * @return {string} A string representing the specified Integer64 object.\n */\n toString(in_radix) {\n return this._data.toString(in_radix);\n }\n\n /**\n * The Integer64.fromString() method parses a string argument updates object's lower and higher 32 bit integer parts.\n *\n * @param {string} in_string - The value to parse. Leading whitespace in the string argument is ignored.\n * @param {number} [in_radix = 10] - An integer between 2 and 36 that represents the\n * radix (the base in mathematical numeral systems) of the above mentioned string.\n * @throws if in_string is not a string\n * @throws if in_radix is entered but is not a number between 2 and 36\n * @throws if the property is a Uint64 property and in_string is a negative number\n * @throws if in_string contains characters other than numbers\n */\n fromString(in_string, in_radix) {\n ConsoleUtils.assert(_.isString(in_string), MSG.IN_STRING_MUST_BE_STRING + in_string);\n var int = this._castFunctor(in_string, in_radix);\n\n this.setValueHigh(int.getValueHigh());\n this.setValueLow(int.getValueLow());\n }\n}\n\n/**\n * A primitive property class for big signed integer values.\n */\nexport class Int64Property extends Integer64Property {\n /**\n * @param {Object=} in_params - the parameters\n * @constructor\n * @protected\n * @extends property-properties.Integer64Property\n * @alias property-properties.Int64Property\n * @category Value Properties\n */\n constructor(in_params) {\n super(in_params, Int64);\n }\n}\nInt64Property.prototype._typeid = 'Int64';\nInt64Property.prototype._castFunctor = _castFunctors.Int64;\n\n/**\n * A primitive property class for big unsingned integer values.\n */\nexport class Uint64Property extends Integer64Property {\n /**\n * @param {Object=} in_params - the parameters\n * @constructor\n * @protected\n * @extends property-properties.Integer64Property\n * @alias property-properties.Uint64Property\n * @category Value Properties\n */\n constructor(in_params) {\n super(in_params, Uint64);\n }\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 _ = require(\"lodash\");\nconst { ChangeSet } = require(\"@fluid-experimental/property-changeset\");\nconst {\n\tConsoleUtils,\n\tconstants: { MSG },\n\tUint64,\n\tInt64,\n} = require(\"@fluid-experimental/property-common\");\nconst { ValueProperty } = require(\"./valueProperty\");\nconst { _castFunctors } = require(\"./primitiveTypeCasts\");\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 */\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 */\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazyLoadedProperties.js","sourceRoot":"","sources":["../../src/properties/lazyLoadedProperties.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;
|
|
1
|
+
{"version":3,"file":"lazyLoadedProperties.js","sourceRoot":"","sources":["../../src/properties/lazyLoadedProperties.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,eAAe,EAAE,SAAS;IAC1B,gCAAgC,EAAE,SAAS;IAC3C,aAAa,EAAE,SAAS;IACxB,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,cAAc,EAAE,SAAS;IACzB,aAAa,EAAE,SAAS;IACxB,gBAAgB,EAAE,SAAS;IAC3B,oBAAoB,EAAE,SAAS;IAC/B,YAAY,EAAE,SAAS;IACvB,6BAA6B,EAAE,SAAS;CACxC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @fileoverview This namespace is used to resolve cycles between the PropertyFactory and the property objects.\n * It will return an empty namespace, which then once the PropertyFactory has been created will be initialized with the\n * PropertyFactory and the property classes, so that the PropertyObjects themselves can access the PropertyFactory at\n * runtime.\n */\n\nexport const LazyLoadedProperties = {\n\tPropertyFactory: undefined,\n\tAbstractStaticCollectionProperty: undefined,\n\tArrayProperty: undefined,\n\tEnumArrayProperty: undefined,\n\tReferenceProperty: undefined,\n\tStringProperty: undefined,\n\tValueProperty: undefined,\n\tValueMapProperty: undefined,\n\tReferenceMapProperty: undefined,\n\tNodeProperty: undefined,\n\tIndexedCollectionBaseProperty: undefined,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapProperty.d.ts","sourceRoot":"","sources":["../../src/properties/mapProperty.js"],"names":[],"mappings":"AAmBA;;;;;GAKG;AAEH;;GAEG;AACH;
|
|
1
|
+
{"version":3,"file":"mapProperty.d.ts","sourceRoot":"","sources":["../../src/properties/mapProperty.js"],"names":[],"mappings":"AAmBA;;;;;GAKG;AAEH;;GAEG;AACH;IACC;;;;;;;;OAQG;IACH,wBAQC;IALA,eAAsB;IACtB,qBAA2D;IAE3D,6CAA6C;IAC7C,qBAA0B;IAyB3B;;;;;;;;;OASG;IACH,2BAyDC;IAqGD;;;;;;;;;;;;OAYG;IACH,eAPW,MAAM,0BAsBhB;IAED;;;;;;OAMG;IACH,eAJW,MAAM,OAQhB;IAED;;;;;;;;;;OAUG;IACH,YANW,MAAM,0BAwBhB;IAiFD;;;;;;;OAOG;IACH,cAHY,eAAe,CAK1B;IA0BD;;OAEG;IACH,cAKC;CACD"}
|