@colyseus/schema 4.0.14 → 4.0.16

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/build/index.js CHANGED
@@ -5694,12 +5694,29 @@
5694
5694
  }
5695
5695
  else {
5696
5696
  // delete all "tagged" properties.
5697
- metadata?.[$viewFieldIndexes]?.forEach((index) => changes[index] = exports.OPERATION.DELETE);
5697
+ metadata?.[$viewFieldIndexes]?.forEach((index) => {
5698
+ changes[index] = exports.OPERATION.DELETE;
5699
+ // Remove child structures of @view() fields from visible set.
5700
+ // (They were added during view.add() via forEachChild)
5701
+ const value = changeTree.ref[metadata[index].name];
5702
+ if (value?.[$changes]) {
5703
+ this.visible.delete(value[$changes]);
5704
+ this._recursiveDeleteVisibleChangeTree(value[$changes]);
5705
+ }
5706
+ });
5698
5707
  }
5699
5708
  }
5700
5709
  else {
5701
5710
  // delete only tagged properties
5702
- metadata?.[$fieldIndexesByViewTag][tag].forEach((index) => changes[index] = exports.OPERATION.DELETE);
5711
+ metadata?.[$fieldIndexesByViewTag][tag].forEach((index) => {
5712
+ changes[index] = exports.OPERATION.DELETE;
5713
+ // Remove child structures from visible set
5714
+ const value = changeTree.ref[metadata[index].name];
5715
+ if (value?.[$changes]) {
5716
+ this.visible.delete(value[$changes]);
5717
+ this._recursiveDeleteVisibleChangeTree(value[$changes]);
5718
+ }
5719
+ });
5703
5720
  }
5704
5721
  // remove tag
5705
5722
  if (this.tags && this.tags.has(changeTree)) {
package/build/index.mjs CHANGED
@@ -5688,12 +5688,29 @@ class StateView {
5688
5688
  }
5689
5689
  else {
5690
5690
  // delete all "tagged" properties.
5691
- metadata?.[$viewFieldIndexes]?.forEach((index) => changes[index] = OPERATION.DELETE);
5691
+ metadata?.[$viewFieldIndexes]?.forEach((index) => {
5692
+ changes[index] = OPERATION.DELETE;
5693
+ // Remove child structures of @view() fields from visible set.
5694
+ // (They were added during view.add() via forEachChild)
5695
+ const value = changeTree.ref[metadata[index].name];
5696
+ if (value?.[$changes]) {
5697
+ this.visible.delete(value[$changes]);
5698
+ this._recursiveDeleteVisibleChangeTree(value[$changes]);
5699
+ }
5700
+ });
5692
5701
  }
5693
5702
  }
5694
5703
  else {
5695
5704
  // delete only tagged properties
5696
- metadata?.[$fieldIndexesByViewTag][tag].forEach((index) => changes[index] = OPERATION.DELETE);
5705
+ metadata?.[$fieldIndexesByViewTag][tag].forEach((index) => {
5706
+ changes[index] = OPERATION.DELETE;
5707
+ // Remove child structures from visible set
5708
+ const value = changeTree.ref[metadata[index].name];
5709
+ if (value?.[$changes]) {
5710
+ this.visible.delete(value[$changes]);
5711
+ this._recursiveDeleteVisibleChangeTree(value[$changes]);
5712
+ }
5713
+ });
5697
5714
  }
5698
5715
  // remove tag
5699
5716
  if (this.tags && this.tags.has(changeTree)) {