@colyseus/schema 3.0.33 → 3.0.35

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.
@@ -4610,7 +4610,8 @@ function getDecoderStateCallbacks(decoder) {
4610
4610
  }
4611
4611
  }
4612
4612
  }
4613
- else if ((change.op & exports.OPERATION.ADD) === exports.OPERATION.ADD && change.previousValue === undefined) {
4613
+ else if ((change.op & exports.OPERATION.ADD) === exports.OPERATION.ADD &&
4614
+ change.previousValue !== change.value) {
4614
4615
  // triger onAdd
4615
4616
  const addCallbacks = $callbacks[exports.OPERATION.ADD];
4616
4617
  for (let i = addCallbacks?.length - 1; i >= 0; i--) {
@@ -4979,7 +4980,7 @@ class StateView {
4979
4980
  if (tag === DEFAULT_VIEW_TAG) {
4980
4981
  // parent is collection (Map/Array)
4981
4982
  const parent = changeTree.parent;
4982
- if (!Metadata.isValidInstance(parent)) {
4983
+ if (!Metadata.isValidInstance(parent) && changeTree.isFiltered) {
4983
4984
  const parentChangeTree = parent[$changes];
4984
4985
  let changes = this.changes.get(parentChangeTree.refId);
4985
4986
  if (changes === undefined) {
@@ -4991,7 +4992,7 @@ class StateView {
4991
4992
  }
4992
4993
  else {
4993
4994
  // delete all "tagged" properties.
4994
- metadata?.[$viewFieldIndexes].forEach((index) => changes[index] = exports.OPERATION.DELETE);
4995
+ metadata?.[$viewFieldIndexes]?.forEach((index) => changes[index] = exports.OPERATION.DELETE);
4995
4996
  }
4996
4997
  }
4997
4998
  else {