@itwin/imodel-transformer 2.0.0-dev.58 → 2.0.0-dev.59

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.
@@ -93,10 +93,12 @@ export declare abstract class IModelExportHandler {
93
93
  onDeleteModel(_modelId: Id64String): Promise<void>;
94
94
  /** If `true` is returned, then the element will be exported.
95
95
  * @note This method can optionally be overridden to exclude an individual Element (and its children and ElementAspects) from the export. The base implementation always returns `true`.
96
+ * @note During [IModelExporter.exportChanges]($transformer), this method is also called once for each unchanged ancestor of a changed element, so that a rejected ancestor excludes its changed descendants.
96
97
  */
97
98
  shouldExportElement(_element: Element): Promise<boolean>;
98
99
  /** Called when element is skipped instead of exported.
99
100
  * @note When an element is skipped, exporter will not export any of its child elements. Because of this, [[onSkipElement]] will not be invoked for any children of a "skipped" element.
101
+ * @note During [IModelExporter.exportChanges]($transformer), an unchanged ancestor is filtered only when a changed descendant is reached. An element excluded by ID below it may therefore receive [[onSkipElement]] before the ancestor is rejected.
100
102
  */
101
103
  onSkipElement(_elementId: Id64String): Promise<void>;
102
104
  /** Called when an element should be exported.
@@ -204,6 +206,8 @@ export declare class IModelExporter {
204
206
  private _sourceDbChanges?;
205
207
  /** State shared by nested calls in one change-processing element traversal. */
206
208
  private _changedElementTraversal?;
209
+ /** Unchanged elements on the current change-processing path. Each is filtered only when a changed descendant is reached. */
210
+ private readonly _unchangedAncestors;
207
211
  /** Bounds the additional hierarchy retained by the sparse changed-element path. */
208
212
  private readonly _changedElementForestElementLimit;
209
213
  /**
@@ -366,8 +370,16 @@ export declare class IModelExporter {
366
370
  */
367
371
  exportElement(elementId: Id64String): Promise<void>;
368
372
  private exportElementImpl;
373
+ /** Returns the filter result for an unchanged ancestor on the current change-processing path, or `undefined` if it has not been filtered.
374
+ * @internal
375
+ */
376
+ getUnchangedAncestorFilterResult(elementId: Id64String): boolean | undefined;
377
+ /** Filters the unchanged ancestors of a changed element, top-down, once each.
378
+ * @returns `false` if an ancestor is rejected.
379
+ */
380
+ private acceptUnchangedAncestors;
369
381
  /** Runs the export callbacks for a single element without visiting its children.
370
- * @returns `true` if the element's children should be visited afterwards.
382
+ * @returns how to continue with the element's children: skip them, visit them, or pass through an unchanged element to reach changed descendants.
371
383
  */
372
384
  private exportElementShallow;
373
385
  /** Export the child elements of the specified element from the source iModel.
@@ -1 +1 @@
1
- {"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"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"}
@@ -55,12 +55,14 @@ class IModelExportHandler {
55
55
  async onDeleteModel(_modelId) { }
56
56
  /** If `true` is returned, then the element will be exported.
57
57
  * @note This method can optionally be overridden to exclude an individual Element (and its children and ElementAspects) from the export. The base implementation always returns `true`.
58
+ * @note During [IModelExporter.exportChanges]($transformer), this method is also called once for each unchanged ancestor of a changed element, so that a rejected ancestor excludes its changed descendants.
58
59
  */
59
60
  async shouldExportElement(_element) {
60
61
  return true;
61
62
  }
62
63
  /** Called when element is skipped instead of exported.
63
64
  * @note When an element is skipped, exporter will not export any of its child elements. Because of this, [[onSkipElement]] will not be invoked for any children of a "skipped" element.
65
+ * @note During [IModelExporter.exportChanges]($transformer), an unchanged ancestor is filtered only when a changed descendant is reached. An element excluded by ID below it may therefore receive [[onSkipElement]] before the ancestor is rejected.
64
66
  */
65
67
  async onSkipElement(_elementId) { }
66
68
  /** Called when an element should be exported.
@@ -175,6 +177,8 @@ class IModelExporter {
175
177
  _sourceDbChanges;
176
178
  /** State shared by nested calls in one change-processing element traversal. */
177
179
  _changedElementTraversal;
180
+ /** Unchanged elements on the current change-processing path. Each is filtered only when a changed descendant is reached. */
181
+ _unchangedAncestors = [];
178
182
  /** Bounds the additional hierarchy retained by the sparse changed-element path. */
179
183
  _changedElementForestElementLimit = 100_000;
180
184
  /**
@@ -697,8 +701,7 @@ class IModelExporter {
697
701
  const isPruned = pruneDepth !== undefined && depth > pruneDepth;
698
702
  if (!isPruned) {
699
703
  pruneDepth = undefined;
700
- const visitChildren = await this.exportElementShallow(elementId);
701
- if (!visitChildren)
704
+ if ((await this.exportElementShallow(elementId)) === "skip")
702
705
  pruneDepth = depth;
703
706
  }
704
707
  // Keep the streamed loop responsive, including while consuming a rejected subtree.
@@ -780,20 +783,58 @@ class IModelExporter {
780
783
  core_bentley_1.Logger.logTrace(loggerCategory, `visitElements=false, skipping exportElement(${elementId})`);
781
784
  return;
782
785
  }
783
- const visitChildren = await this.exportElementShallow(elementId);
784
- if (visitChildren) {
786
+ const childVisit = await this.exportElementShallow(elementId);
787
+ if (childVisit === "visit")
785
788
  return this.exportChildElements(elementId);
789
+ if (childVisit === "passThrough") {
790
+ // The element's own filter result is decided later, if a changed descendant is reached.
791
+ this._unchangedAncestors.push({ elementId });
792
+ try {
793
+ await this.exportChildElements(elementId);
794
+ }
795
+ finally {
796
+ this._unchangedAncestors.pop();
797
+ }
786
798
  }
787
799
  }
800
+ /** Returns the filter result for an unchanged ancestor on the current change-processing path, or `undefined` if it has not been filtered.
801
+ * @internal
802
+ */
803
+ getUnchangedAncestorFilterResult(elementId) {
804
+ return this._unchangedAncestors.find((ancestor) => ancestor.elementId === elementId)?.accepted;
805
+ }
806
+ /** Filters the unchanged ancestors of a changed element, top-down, once each.
807
+ * @returns `false` if an ancestor is rejected.
808
+ */
809
+ async acceptUnchangedAncestors() {
810
+ for (const ancestor of this._unchangedAncestors) {
811
+ if (ancestor.accepted === undefined) {
812
+ const element = this.sourceDb.elements.getElement({
813
+ id: ancestor.elementId,
814
+ wantGeometry: this.wantGeometry,
815
+ wantBRepData: this.wantGeometry,
816
+ });
817
+ ancestor.accepted = await this.shouldExportElement(element);
818
+ if (!ancestor.accepted)
819
+ await this.handler.onSkipElement(ancestor.elementId);
820
+ }
821
+ if (!ancestor.accepted)
822
+ return false;
823
+ }
824
+ return true;
825
+ }
788
826
  /** Runs the export callbacks for a single element without visiting its children.
789
- * @returns `true` if the element's children should be visited afterwards.
827
+ * @returns how to continue with the element's children: skip them, visit them, or pass through an unchanged element to reach changed descendants.
790
828
  */
791
829
  async exportElementShallow(elementId) {
830
+ // Descendants of a rejected unchanged ancestor are skipped, as in a full export.
831
+ if (this._unchangedAncestors.some((ancestor) => ancestor.accepted === false))
832
+ return "skip";
792
833
  // Return early if the elementId is already excluded so it does not need to be loaded.
793
834
  if (this._excludedElementIds.has(elementId)) {
794
835
  core_bentley_1.Logger.logInfo(loggerCategory, `Excluded element ${elementId} by Id`);
795
836
  await this.handler.onSkipElement(elementId);
796
- return false;
837
+ return "skip";
797
838
  }
798
839
  const isUpdate = this._sourceDbChanges?.element.insertIds.has(elementId)
799
840
  ? false
@@ -801,9 +842,10 @@ class IModelExporter {
801
842
  ? true
802
843
  : undefined;
803
844
  // An unchanged element may still connect a changed descendant to its model root.
804
- if (this._sourceDbChanges !== undefined && isUpdate === undefined) {
805
- return true;
806
- }
845
+ if (this._sourceDbChanges !== undefined && isUpdate === undefined)
846
+ return "passThrough";
847
+ if (!(await this.acceptUnchangedAncestors()))
848
+ return "skip";
807
849
  const element = this.sourceDb.elements.getElement({
808
850
  id: elementId,
809
851
  wantGeometry: this.wantGeometry,
@@ -816,10 +858,10 @@ class IModelExporter {
816
858
  await this.handler.onExportElement(element, isUpdate);
817
859
  await this.trackProgress();
818
860
  await this._elementAspectExportCoordinator.addAcceptedOwner(elementId);
819
- return true;
861
+ return "visit";
820
862
  }
821
863
  await this.handler.onSkipElement(element.id);
822
- return false;
864
+ return "skip";
823
865
  }
824
866
  /** Export the child elements of the specified element from the source iModel.
825
867
  * @note This method is called from [[exportChanges]] and [[exportAll]], so it only needs to be called directly when exporting a subset of an iModel.