@itwin/imodel-transformer 2.0.0-dev.8 → 2.0.0-experimental.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.
Files changed (128) hide show
  1. package/README.md +13 -27
  2. package/lib/cjs/Algo.d.ts +0 -4
  3. package/lib/cjs/Algo.d.ts.map +1 -1
  4. package/lib/cjs/Algo.js +0 -11
  5. package/lib/cjs/Algo.js.map +1 -1
  6. package/lib/cjs/BigMap.d.ts.map +1 -1
  7. package/lib/cjs/BigMap.js.map +1 -1
  8. package/lib/cjs/BranchProvenanceInitializer.d.ts.map +1 -1
  9. package/lib/cjs/BranchProvenanceInitializer.js +26 -26
  10. package/lib/cjs/BranchProvenanceInitializer.js.map +1 -1
  11. package/lib/cjs/ChangedElementForest.d.ts +14 -0
  12. package/lib/cjs/ChangedElementForest.d.ts.map +1 -0
  13. package/lib/cjs/ChangedElementForest.js +86 -0
  14. package/lib/cjs/ChangedElementForest.js.map +1 -0
  15. package/lib/cjs/ChangesetScanner.d.ts +61 -0
  16. package/lib/cjs/ChangesetScanner.d.ts.map +1 -0
  17. package/lib/cjs/ChangesetScanner.js +104 -0
  18. package/lib/cjs/ChangesetScanner.js.map +1 -0
  19. package/lib/cjs/ECReferenceTypesCache.d.ts +0 -4
  20. package/lib/cjs/ECReferenceTypesCache.d.ts.map +1 -1
  21. package/lib/cjs/ECReferenceTypesCache.js +54 -102
  22. package/lib/cjs/ECReferenceTypesCache.js.map +1 -1
  23. package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.d.ts.map +1 -1
  24. package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.js.map +1 -1
  25. package/lib/cjs/ElementAspectCleanup.d.ts +56 -0
  26. package/lib/cjs/ElementAspectCleanup.d.ts.map +1 -0
  27. package/lib/cjs/ElementAspectCleanup.js +175 -0
  28. package/lib/cjs/ElementAspectCleanup.js.map +1 -0
  29. package/lib/cjs/ElementAspectExportCoordinator.d.ts +47 -0
  30. package/lib/cjs/ElementAspectExportCoordinator.d.ts.map +1 -0
  31. package/lib/cjs/ElementAspectExportCoordinator.js +160 -0
  32. package/lib/cjs/ElementAspectExportCoordinator.js.map +1 -0
  33. package/lib/cjs/ElementAspectExportProcessor.d.ts +44 -0
  34. package/lib/cjs/ElementAspectExportProcessor.d.ts.map +1 -0
  35. package/lib/cjs/ElementAspectExportProcessor.js +152 -0
  36. package/lib/cjs/ElementAspectExportProcessor.js.map +1 -0
  37. package/lib/cjs/ElementBulkDelete.d.ts +30 -0
  38. package/lib/cjs/ElementBulkDelete.d.ts.map +1 -0
  39. package/lib/cjs/ElementBulkDelete.js +358 -0
  40. package/lib/cjs/ElementBulkDelete.js.map +1 -0
  41. package/lib/cjs/EntityExistenceCache.d.ts +43 -0
  42. package/lib/cjs/EntityExistenceCache.d.ts.map +1 -0
  43. package/lib/cjs/EntityExistenceCache.js +91 -0
  44. package/lib/cjs/EntityExistenceCache.js.map +1 -0
  45. package/lib/cjs/EntityUnifier.d.ts +7 -7
  46. package/lib/cjs/EntityUnifier.d.ts.map +1 -1
  47. package/lib/cjs/EntityUnifier.js +55 -24
  48. package/lib/cjs/EntityUnifier.js.map +1 -1
  49. package/lib/cjs/IModelCloneContext.d.ts +8 -2
  50. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  51. package/lib/cjs/IModelCloneContext.js +42 -12
  52. package/lib/cjs/IModelCloneContext.js.map +1 -1
  53. package/lib/cjs/IModelExporter.d.ts +143 -30
  54. package/lib/cjs/IModelExporter.d.ts.map +1 -1
  55. package/lib/cjs/IModelExporter.js +871 -172
  56. package/lib/cjs/IModelExporter.js.map +1 -1
  57. package/lib/cjs/IModelImporter.d.ts +87 -31
  58. package/lib/cjs/IModelImporter.d.ts.map +1 -1
  59. package/lib/cjs/IModelImporter.js +361 -139
  60. package/lib/cjs/IModelImporter.js.map +1 -1
  61. package/lib/cjs/IModelTransformContext.d.ts +54 -0
  62. package/lib/cjs/IModelTransformContext.d.ts.map +1 -0
  63. package/lib/cjs/IModelTransformContext.js +3 -0
  64. package/lib/cjs/IModelTransformContext.js.map +1 -0
  65. package/lib/cjs/IModelTransformer.d.ts +132 -174
  66. package/lib/cjs/IModelTransformer.d.ts.map +1 -1
  67. package/lib/cjs/IModelTransformer.js +679 -1025
  68. package/lib/cjs/IModelTransformer.js.map +1 -1
  69. package/lib/cjs/IModelTransformerError.d.ts +84 -0
  70. package/lib/cjs/IModelTransformerError.d.ts.map +1 -0
  71. package/lib/cjs/IModelTransformerError.js +93 -0
  72. package/lib/cjs/IModelTransformerError.js.map +1 -0
  73. package/lib/cjs/ProvenanceManager.d.ts +194 -0
  74. package/lib/cjs/ProvenanceManager.d.ts.map +1 -0
  75. package/lib/cjs/ProvenanceManager.js +771 -0
  76. package/lib/cjs/ProvenanceManager.js.map +1 -0
  77. package/lib/cjs/SyncTypeResolver.d.ts +32 -0
  78. package/lib/cjs/SyncTypeResolver.d.ts.map +1 -0
  79. package/lib/cjs/SyncTypeResolver.js +92 -0
  80. package/lib/cjs/SyncTypeResolver.js.map +1 -0
  81. package/lib/cjs/TransformerLoggerCategory.d.ts +1 -1
  82. package/lib/cjs/TransformerLoggerCategory.js +1 -1
  83. package/lib/cjs/TransformerLoggerCategory.js.map +1 -1
  84. package/lib/cjs/TransformerPackageMetadata.d.ts +8 -0
  85. package/lib/cjs/TransformerPackageMetadata.d.ts.map +1 -0
  86. package/lib/cjs/TransformerPackageMetadata.js +47 -0
  87. package/lib/cjs/TransformerPackageMetadata.js.map +1 -0
  88. package/lib/cjs/imodel-transformer.d.ts +27 -0
  89. package/lib/cjs/imodel-transformer.d.ts.map +1 -1
  90. package/lib/cjs/imodel-transformer.js +61 -34
  91. package/lib/cjs/imodel-transformer.js.map +1 -1
  92. package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.d.ts +29 -0
  93. package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.d.ts.map +1 -0
  94. package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.js +212 -0
  95. package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.js.map +1 -0
  96. package/lib/cjs/schema-processing/SchemaProcessingCoordinator.d.ts +25 -0
  97. package/lib/cjs/schema-processing/SchemaProcessingCoordinator.d.ts.map +1 -0
  98. package/lib/cjs/schema-processing/SchemaProcessingCoordinator.js +196 -0
  99. package/lib/cjs/schema-processing/SchemaProcessingCoordinator.js.map +1 -0
  100. package/lib/cjs/schema-processing/SchemaProcessingStrategy.d.ts +59 -0
  101. package/lib/cjs/schema-processing/SchemaProcessingStrategy.d.ts.map +1 -0
  102. package/lib/cjs/schema-processing/SchemaProcessingStrategy.js +28 -0
  103. package/lib/cjs/schema-processing/SchemaProcessingStrategy.js.map +1 -0
  104. package/lib/cjs/schema-processing.d.ts +7 -0
  105. package/lib/cjs/schema-processing.d.ts.map +1 -0
  106. package/lib/cjs/schema-processing.js +27 -0
  107. package/lib/cjs/schema-processing.js.map +1 -0
  108. package/package.json +70 -57
  109. package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts +0 -16
  110. package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts.map +0 -1
  111. package/lib/cjs/DetachedExportElementAspectsStrategy.js +0 -106
  112. package/lib/cjs/DetachedExportElementAspectsStrategy.js.map +0 -1
  113. package/lib/cjs/ElementCascadingDeleter.d.ts +0 -22
  114. package/lib/cjs/ElementCascadingDeleter.d.ts.map +0 -1
  115. package/lib/cjs/ElementCascadingDeleter.js +0 -57
  116. package/lib/cjs/ElementCascadingDeleter.js.map +0 -1
  117. package/lib/cjs/EntityMap.d.ts +0 -26
  118. package/lib/cjs/EntityMap.d.ts.map +0 -1
  119. package/lib/cjs/EntityMap.js +0 -54
  120. package/lib/cjs/EntityMap.js.map +0 -1
  121. package/lib/cjs/ExportElementAspectsStrategy.d.ts +0 -35
  122. package/lib/cjs/ExportElementAspectsStrategy.d.ts.map +0 -1
  123. package/lib/cjs/ExportElementAspectsStrategy.js +0 -52
  124. package/lib/cjs/ExportElementAspectsStrategy.js.map +0 -1
  125. package/lib/cjs/ExportElementAspectsWithElementsStrategy.d.ts +0 -12
  126. package/lib/cjs/ExportElementAspectsWithElementsStrategy.d.ts.map +0 -1
  127. package/lib/cjs/ExportElementAspectsWithElementsStrategy.js +0 -47
  128. package/lib/cjs/ExportElementAspectsWithElementsStrategy.js.map +0 -1
@@ -1,11 +1,22 @@
1
- import { Id64Array, Id64Set, Id64String } from "@itwin/core-bentley";
1
+ import { GuidString, Id64Array, Id64Set, Id64String } from "@itwin/core-bentley";
2
2
  import * as ECSchemaMetaData from "@itwin/ecschema-metadata";
3
3
  import { Transform } from "@itwin/core-geometry";
4
- import { Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, Entity, ExternalSourceAspect, IModelDb, Model, Relationship, RelationshipProps } from "@itwin/core-backend";
4
+ import { EditTxn, Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, Entity, ExternalSourceAspect, IModelDb, Model, Relationship, RelationshipProps } from "@itwin/core-backend";
5
5
  import { ChangesetIndexAndId, CodeSpec, ElementAspectProps, ElementProps, ExternalSourceAspectProps, FontProps, Helmert2DWithZOffset, ModelProps, Placement2d, Placement3d } from "@itwin/core-common";
6
6
  import { ChangedInstanceIds, ExportChangesOptions, ExportSchemaResult, IModelExporter, IModelExportHandler } from "./IModelExporter";
7
7
  import { IModelImporter, OptimizeGeometryOptions } from "./IModelImporter";
8
- import { IModelCloneContext } from "./IModelCloneContext";
8
+ import type { IModelTransformContext } from "./IModelTransformContext";
9
+ import { ProvenanceManager } from "./ProvenanceManager";
10
+ import { ProcessSchemasOptions } from "./schema-processing/SchemaProcessingStrategy";
11
+ /** Required arguments for the [[IModelTransformer]] constructor.
12
+ * @beta
13
+ */
14
+ export interface IModelTransformArgs {
15
+ /** The source iModel or exporter to read elements from. */
16
+ source: IModelDb | IModelExporter;
17
+ /** The target for the transformation. Pass an [[EditTxn]] to have the transformer create a default [[IModelImporter]], or pass a pre-configured [[IModelImporter]]. */
18
+ target: EditTxn | IModelImporter;
19
+ }
9
20
  /** Options provided to the [[IModelTransformer]] constructor.
10
21
  * @beta
11
22
  * @note if adding an option, you must explicitly add its serialization to [[IModelTransformer.saveStateToFile]]!
@@ -122,6 +133,13 @@ export interface IModelTransformOptions {
122
133
  * @default false
123
134
  */
124
135
  tryAlignGeolocation?: boolean;
136
+ /** An optional [[EditTxn]] for write operations on the **source** iModel.
137
+ * Only needed for reverse synchronization workflows where provenance must be written back to the source.
138
+ * If not provided, the source iModel is treated as read-only.
139
+ * Must be started before calling [[IModelTransformer.process]].
140
+ * @beta
141
+ */
142
+ sourceEditTxn?: EditTxn;
125
143
  }
126
144
  /**
127
145
  * Data type for persisting change version information within provenance Scope ExternalSourceAspect.
@@ -164,7 +182,7 @@ export interface InitOptions {
164
182
  * @beta
165
183
  */
166
184
  export type ProcessChangesOptions = ExportChangesOptions & {
167
- /** how to call saveChanges on the target. Must call targetDb.saveChanges, should not edit the iModel */
185
+ /** how to save changes on the target. Must call `editTxn.saveChanges()` on the target EditTxn, should not edit the iModel */
168
186
  saveTargetChanges?: (transformer: IModelTransformer) => Promise<void>;
169
187
  /**
170
188
  * The forward sync 'version' to set on the scoping ESA @see ExternalSourceAspectProps upon startup, if the version property on the scoping ESA is undefined or empty string.
@@ -202,6 +220,7 @@ export interface RelationshipPropsForDelete {
202
220
  export declare class IModelTransformer extends IModelExportHandler {
203
221
  /** The IModelExporter that will export from the source iModel. */
204
222
  readonly exporter: IModelExporter;
223
+ private readonly _schemaProcessingCoordinator;
205
224
  /** The IModelImporter that will import into the target iModel. */
206
225
  readonly importer: IModelImporter;
207
226
  /** The normally read-only source iModel.
@@ -210,8 +229,10 @@ export declare class IModelTransformer extends IModelExportHandler {
210
229
  readonly sourceDb: IModelDb;
211
230
  /** The read/write target iModel. */
212
231
  readonly targetDb: IModelDb;
213
- /** The IModelTransformContext for this IModelTransformer. */
214
- readonly context: IModelCloneContext;
232
+ /** The supported transformation context for this transformer. */
233
+ get context(): IModelTransformContext;
234
+ /** The clone context used by the transformer implementation. */
235
+ private readonly _cloneContext;
215
236
  /** The transform to be applied to the placement of spatial elements
216
237
  * This transform should be applied when:
217
238
  * - source and target db have different ECEF locations
@@ -221,47 +242,38 @@ export declare class IModelTransformer extends IModelExportHandler {
221
242
  * @beta
222
243
  */
223
244
  private _linearSpatialTransform?;
224
- private _syncType?;
245
+ /** The [[EditTxn]] used for write operations on the target iModel.
246
+ * The caller is responsible for starting, committing or abandoning this transaction.
247
+ * @beta
248
+ */
249
+ protected readonly _targetEditTxn: EditTxn;
250
+ /** The optional [[EditTxn]] used for write operations on the source iModel during reverse synchronization.
251
+ * @beta
252
+ */
253
+ protected readonly _sourceEditTxn?: EditTxn;
254
+ private _syncTypeResolver;
255
+ protected _provenanceManager: ProvenanceManager;
225
256
  /** The Id of the Element in the **target** iModel that represents the **source** repository as a whole and scopes its [ExternalSourceAspect]($backend) instances. */
226
257
  get targetScopeElementId(): Id64String;
227
258
  /** a set of elements for which source provenance will be explicitly tracked by ExternalSourceAspects */
228
259
  protected _elementsWithExplicitlyTrackedProvenance: Set<string>;
229
260
  protected _partiallyCommittedElementIds: Id64Set;
230
261
  protected _partiallyCommittedAspectIds: Id64Set;
231
- /** the options that were used to initialize this transformer */
232
- private readonly _options;
233
262
  /**
234
- * A private variable meant to be set by tests which have an outdated way of setting up transforms. In all synchronizations today we expect to find an ESA in the branch db which describes the master -> branch relationship.
235
- * The exception to this is the first transform aka the provenance initializing transform which requires that the master imodel and the branch imodel are identical at the time of provenance initialization.
236
- * A couple ofoutdated tests run their first transform providing a source and targetdb that are slightly different which is no longer supported. In order to not remove these tests which are still providing value
237
- * this private property on the IModelTransformer exists.
263
+ * Tracks target element IDs that were remapped by Code during the current
264
+ * transformation pass. Used to prevent deletion of target elements that have been remapped
265
+ * to a new source element in the same pass (e.g., when a source element is deleted and a
266
+ * new one with the same properties is added, causing a remap to the same target).
238
267
  */
239
- private _allowNoScopingESA;
240
- static noEsaSyncDirectionErrorMessage: string;
241
- /**
242
- * Queries for an esa which matches the props in the provided aspectProps.
243
- * @param dbToQuery db to run the query on for scope external source
244
- * @param aspectProps aspectProps to search for @see ExternalSourceAspectProps
245
- */
246
- static queryScopeExternalSourceAspect(dbToQuery: IModelDb, aspectProps: ExternalSourceAspectProps): Promise<{
247
- aspectId: Id64String;
248
- version?: string;
249
- /** stringified json */
250
- jsonProperties?: string;
251
- } | undefined>;
268
+ private _targetElementIdsRemappedByCode;
252
269
  /**
253
- * Determines the sync direction "forward" or "reverse" of a given sourceDb and targetDb by looking for the scoping ESA.
254
- * If the sourceDb's iModelId is found as the identifier of the expected scoping ESA in the targetDb, then it is a forward synchronization.
255
- * If the targetDb's iModelId is found as the identifier of the expected scoping ESA in the sourceDb, then it is a reverse synchronization.
256
- * @throws if no scoping ESA can be found in either the sourceDb or targetDb which describes a master branch relationship between the two databases.
257
- * @returns "forward" or "reverse"
258
- */
259
- static determineSyncType(sourceDb: IModelDb, targetDb: IModelDb,
260
- /** @see [[IModelTransformOptions.targetScopeElementId]] */
261
- targetScopeElementId: Id64String): Promise<"forward" | "reverse">;
262
- private determineSyncType;
263
- getIsReverseSynchronization(): Promise<boolean>;
264
- getIsForwardSynchronization(): Promise<boolean>;
270
+ * Tracks target model IDs that were imported (inserted or updated) during the current
271
+ * transformation pass. Used to prevent deletion of target models that have been recreated
272
+ * in the same pass (e.g. when a partition element is recreated with a new model).
273
+ */
274
+ private _targetModelsImportedInCurrentTransform;
275
+ /** the options that were used to initialize this transformer */
276
+ private readonly _options;
265
277
  private _changesetRanges;
266
278
  /**
267
279
  * Set if the transformer is being used to perform the provenance initialization step of a fork initialization.
@@ -273,11 +285,10 @@ export declare class IModelTransformer extends IModelExportHandler {
273
285
  /** The element aspect classes that are considered to define provenance in the iModel */
274
286
  static get provenanceElementAspectClasses(): (typeof Entity)[];
275
287
  /** Construct a new IModelTransformer
276
- * @param source Specifies the source IModelExporter or the source IModelDb that will be used to construct the source IModelExporter.
277
- * @param target Specifies the target IModelImporter or the target IModelDb that will be used to construct the target IModelImporter.
288
+ * @param args The required arguments including source and target.
278
289
  * @param options The options that specify how the transformation should be done.
279
290
  */
280
- constructor(source: IModelDb | IModelExporter, target: IModelDb | IModelImporter, options?: IModelTransformOptions);
291
+ constructor(args: IModelTransformArgs, options?: IModelTransformOptions);
281
292
  /** validates that the importer set on the transformer has the same values for its shared options as the transformer.
282
293
  * @note This expects that the importer is already set on the transformer.
283
294
  */
@@ -286,28 +297,6 @@ export declare class IModelTransformer extends IModelExportHandler {
286
297
  dispose(): void;
287
298
  /** Log current settings that affect IModelTransformer's behavior. */
288
299
  private logSettings;
289
- /** Return the IModelDb where IModelTransformer will store its provenance.
290
- * @note This will be [[targetDb]] except when it is a reverse synchronization. In that case it be [[sourceDb]].
291
- */
292
- getProvenanceDb(): Promise<IModelDb>;
293
- /** Return the IModelDb where IModelTransformer looks for entities referred to by stored provenance.
294
- * @note This will be [[sourceDb]] except when it is a reverse synchronization. In that case it be [[targetDb]].
295
- */
296
- getProvenanceSourceDb(): Promise<IModelDb>;
297
- /** Create an ExternalSourceAspectProps in a standard way for an Element in an iModel --> iModel transformation. */
298
- static initElementProvenanceOptions(sourceElementId: Id64String, targetElementId: Id64String, args: {
299
- sourceDb: IModelDb;
300
- targetDb: IModelDb;
301
- isReverseSynchronization: boolean;
302
- targetScopeElementId: Id64String;
303
- }): ExternalSourceAspectProps;
304
- static initRelationshipProvenanceOptions(sourceRelInstanceId: Id64String, targetRelInstanceId: Id64String, args: {
305
- sourceDb: IModelDb;
306
- targetDb: IModelDb;
307
- isReverseSynchronization: boolean;
308
- targetScopeElementId: Id64String;
309
- forceOldRelationshipProvenanceMethod: boolean;
310
- }): Promise<ExternalSourceAspectProps>;
311
300
  /**
312
301
  * Previously the transformer would insert provenance always pointing to the "target" relationship.
313
302
  * It should (and now by default does) instead insert provenance pointing to the provenanceSource
@@ -317,26 +306,6 @@ export declare class IModelTransformer extends IModelExportHandler {
317
306
  private _forceOldRelationshipProvenanceMethod;
318
307
  /** Create an ExternalSourceAspectProps in a standard way for an Element in an iModel --> iModel transformation. */
319
308
  initElementProvenance(sourceElementId: Id64String, targetElementId: Id64String): Promise<ExternalSourceAspectProps>;
320
- /** Create an ExternalSourceAspectProps in a standard way for a Relationship in an iModel --> iModel transformations.
321
- * The ExternalSourceAspect is meant to be owned by the Element in the target iModel that is the `sourceId` of transformed relationship.
322
- * The `identifier` property of the ExternalSourceAspect will be the ECInstanceId of the relationship in the master iModel.
323
- * The ECInstanceId of the relationship in the branch iModel will be stored in the JsonProperties of the ExternalSourceAspect.
324
- */
325
- private initRelationshipProvenance;
326
- /** NOTE: the json properties must be converted to string before insertion */
327
- private _targetScopeProvenanceProps;
328
- /**
329
- * Index of the changeset that the transformer was at when the transformation begins (was constructed).
330
- * Used to determine at the end which changesets were part of a synchronization.
331
- */
332
- private _startingChangesetIndices;
333
- private _cachedSynchronizationVersion;
334
- /**
335
- * We cache the synchronization version to avoid querying the target scoping ESA multiple times.
336
- * If the target scoping ESA is ever updated we need to clear any potentially cached sync version otherwise we will get stale values.
337
- * Sets this._cachedSynchronizationVersion to undefined.
338
- */
339
- private clearCachedSynchronizationVersion;
340
309
  /** the changeset in the scoping element's source version found for this transformation
341
310
  * @note the version depends on whether this is a reverse synchronization or not, as
342
311
  * it is stored separately for both synchronization directions.
@@ -353,52 +322,32 @@ export declare class IModelTransformer extends IModelExportHandler {
353
322
  /**
354
323
  * Make sure there are no conflicting other scope-type external source aspects on the *target scope element*,
355
324
  * If there are none at all, insert one, then this must be a first synchronization.
356
- * @returns the last synced version (changesetId) on the target scope's external source aspect,
357
- * if this was a [BriefcaseDb]($backend)
358
325
  */
359
326
  protected initScopeProvenance(): Promise<void>;
360
- /** Returns true if a change was made to the aspectProps. */
361
- private handleUnsafeMigrate;
362
327
  /**
363
- * Iterate all matching federation guids and ExternalSourceAspects in the provenance iModel (target unless reverse sync)
364
- * and call a function for each one.
365
- * @note provenance is done by federation guids where possible
366
- * @note this may execute on each element more than once! Only use in cases where that is handled
367
- */
368
- static forEachTrackedElement(args: {
369
- provenanceSourceDb: IModelDb;
370
- provenanceDb: IModelDb;
371
- targetScopeElementId: Id64String;
372
- isReverseSynchronization: boolean;
373
- fn: (sourceElementId: Id64String, targetElementId: Id64String) => void;
374
- skipPropagateChangesToRootElements: boolean;
375
- }): Promise<void>;
376
- private forEachTrackedElement;
328
+ * Get the IModelDb where provenance (ExternalSourceAspects) is stored.
329
+ * This will be targetDb except when it is a reverse synchronization, in which case it will be sourceDb.
330
+ */
331
+ getProvenanceDb(): Promise<IModelDb>;
377
332
  /**
378
- * Queries the provenanceDb for an ESA whose identifier is equal to the provided 'entityInProvenanceSourceId'.
379
- * The identifier on the ESA is the id of the element in the [[IModelTransformer.provenanceSourceDb]]
380
- * Therefore it only makes sense to call this function when you have an id in the provenanceSourceDb.
381
- * @param entityInProvenanceSourceId
382
- * @returns the elementId that the ESA is stored on, esa.Element.Id
333
+ * Get whether this is a reverse synchronization.
383
334
  */
384
- private _queryProvenanceForElement;
335
+ getIsReverseSynchronization(): Promise<boolean>;
385
336
  /**
386
- * Queries the provenanceDb for an ESA whose identifier is equal to the provided 'entityInProvenanceSourceId'.
387
- * The identifier on the ESA is the id of the relationship in the [[IModelTransformer.provenanceSourceDb]]
388
- * Therefore it only makes sense to call this function when you have an id in the provenanceSourceDb.
389
- * @param entityInProvenanceSourceId
390
- * @returns
391
- */
392
- private _queryProvenanceForRelationship;
393
- private _queryTargetRelId;
394
- private _targetClassNameToClassIdCache;
395
- private _targetClassNameToClassId;
396
- private _getRelClassId;
337
+ * Get whether this is a forward synchronization.
338
+ */
339
+ getIsForwardSynchronization(): Promise<boolean>;
340
+ /**
341
+ * Updates the synchronization version on the scope ESA.
342
+ */
343
+ updateSynchronizationVersion({ initializeReverseSyncVersion, }?: {
344
+ initializeReverseSyncVersion?: boolean | undefined;
345
+ }): Promise<void>;
397
346
  /** Returns `true` if *brute force* delete detections should be run.
398
347
  * @note This is only called if [[IModelTransformOptions.forceExternalSourceAspectProvenance]] option is true
399
348
  * @note Not relevant for [[process]] when [[IModelTransformOptions.argsForProcessChanges]] are provided and change history is known.
400
349
  */
401
- protected shouldDetectDeletes(): boolean;
350
+ protected shouldDetectDeletes(): Promise<boolean>;
402
351
  /** Transform the specified sourceElement into ElementProps for the target iModel.
403
352
  * @param sourceElement The Element from the source iModel to transform.
404
353
  * @returns ElementProps for the target iModel.
@@ -420,44 +369,66 @@ export declare class IModelTransformer extends IModelExportHandler {
420
369
  /** Returns true if a change within sourceElement is detected.
421
370
  * @param sourceElement The Element from the source iModel
422
371
  * @note A subclass can override this method to provide custom change detection behavior.
372
+ * @note During change processing, elements not present in the changeset are short-circuited
373
+ * in the exporter before reaching this method. To add elements to the changeset programmatically,
374
+ * use [[addCustomChanges]] rather than overriding this method to expand processing.
423
375
  */
424
376
  protected hasElementChanged(sourceElement: Element): boolean;
425
377
  protected completePartiallyCommittedElements(): Promise<void>;
426
378
  protected completePartiallyCommittedAspects(): Promise<void>;
379
+ /** An exported source element or model exists, so later references to it need no source query.
380
+ * Aspects are not recorded: they are rarely referenced, and they are usually the largest group.
381
+ */
382
+ private markSourceEntityExists;
427
383
  private doAllReferencesExistInTarget;
428
- private assertReferenceExistsInSource;
384
+ /** Assert that all `referenceIds` exist in the source iModel, batching the existence
385
+ * queries by entity type and caching positive results for the rest of the run.
386
+ */
387
+ private assertReferencesExistInSource;
429
388
  /** Cause the specified Element and its child Elements (if applicable) to be exported from the source iModel and imported into the target iModel.
430
389
  * @param sourceElementId Identifies the Element from the source iModel to import.
431
390
  * @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
391
+ * @note After composing subset processing calls, call [[IModelImporter.finalize]] before saving target changes.
432
392
  */
433
393
  processElement(sourceElementId: Id64String): Promise<void>;
434
394
  /** Import child elements into the target IModelDb
435
395
  * @param sourceElementId Import the child elements of this element in the source IModelDb.
436
396
  * @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
397
+ * @note After composing subset processing calls, call [[IModelImporter.finalize]] before saving target changes.
437
398
  */
438
399
  processChildElements(sourceElementId: Id64String): Promise<void>;
400
+ private processScopedElementExport;
439
401
  /** Override of [IModelExportHandler.shouldExportElement]($transformer) that is called to determine if an element should be exported from the source iModel.
440
402
  * @note Reaching this point means that the element has passed the standard exclusion checks in IModelExporter.
441
403
  */
442
- shouldExportElement(_sourceElement: Element): boolean;
404
+ shouldExportElement(_sourceElement: Element): Promise<boolean>;
443
405
  /**
444
406
  * If they haven't been already, import all of the required references
445
407
  * @internal do not call, override or implement this, it will be removed
446
408
  */
447
409
  preExportElement(sourceElement: Element): Promise<void>;
410
+ /** Makes sure an element that a changed element requires is mapped in the target before the changed element is imported.
411
+ * A changed required element is exported. An unchanged one is only looked up in the target: change processing does not insert it, and exporting it would visit its children, which can include the element that requires it.
412
+ * @throws [[IModelTransformerError.DependencyMappingMissing]] if the required element is still not mapped.
413
+ */
414
+ private resolveRequiredElement;
415
+ /** Finds the existing target element for a source element by FederationGuid, then by Code, and records the mapping.
416
+ * @note Updates `targetElementProps.code` as the Code lookup requires.
417
+ * @returns the target element's id, or `Id64.invalid` if none is found.
418
+ */
419
+ private findExistingTargetElement;
448
420
  private getElemTransformState;
421
+ private queryElementIdByCode;
449
422
  /** Override of [IModelExportHandler.onExportElement]($transformer) that imports an element into the target iModel when it is exported from the source iModel.
450
423
  * This override calls [[onTransformElement]] and then [IModelImporter.importElement]($transformer) to update the target iModel.
451
424
  */
452
425
  onExportElement(sourceElement: Element): Promise<void>;
453
- /** Override of [IModelExportHandler.onDeleteElement]($transformer) that is called when [IModelExporter]($transformer) detects that an Element has been deleted from the source iModel.
454
- * This override propagates the delete to the target iModel via [IModelImporter.deleteElement]($transformer).
455
- */
456
- onDeleteElement(sourceElementId: Id64String): void;
426
+ /** Maps the deleted source element IDs and passes the target IDs to the importer as one set. */
427
+ onDeleteElements(sourceElementIds: ReadonlySet<Id64String>): Promise<void>;
457
428
  /** Override of [IModelExportHandler.onExportModel]($transformer) that is called when a Model should be exported from the source iModel.
458
429
  * This override calls [[onTransformModel]] and then [IModelImporter.importModel]($transformer) to update the target iModel.
459
430
  */
460
- onExportModel(sourceModel: Model): void;
431
+ onExportModel(sourceModel: Model): Promise<void>;
461
432
  /** Override of [IModelExportHandler.onDeleteModel]($transformer) that is called when [IModelExporter]($transformer) detects that a [Model]($backend) has been deleted from the source iModel. */
462
433
  onDeleteModel(sourceModelId: Id64String): Promise<void>;
463
434
  /** Schedule modeled partition deletion */
@@ -465,6 +436,7 @@ export declare class IModelTransformer extends IModelExportHandler {
465
436
  /** Cause the model container, contents, and sub-models to be exported from the source iModel and imported into the target iModel.
466
437
  * @param sourceModeledElementId Import this [Model]($backend) from the source IModelDb.
467
438
  * @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
439
+ * @note After composing subset processing calls, call [[IModelImporter.finalize]] before saving target changes.
468
440
  */
469
441
  processModel(sourceModeledElementId: Id64String): Promise<void>;
470
442
  /** Cause the model contents to be exported from the source iModel and imported into the target iModel.
@@ -472,6 +444,7 @@ export declare class IModelTransformer extends IModelExportHandler {
472
444
  * @param targetModelId Import into this model in the target IModelDb. The target model must exist prior to this call.
473
445
  * @param elementClassFullName Optional classFullName of an element subclass to limit import query against the source model.
474
446
  * @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
447
+ * @note After composing subset processing calls, call [[IModelImporter.finalize]] before saving target changes.
475
448
  */
476
449
  processModelContents(sourceModelId: Id64String, targetModelId: Id64String, elementClassFullName?: string): Promise<void>;
477
450
  /** Cause all sub-models that recursively descend from the specified Subject to be exported from the source iModel and imported into the target iModel. */
@@ -483,53 +456,38 @@ export declare class IModelTransformer extends IModelExportHandler {
483
456
  * @note A subclass can override this method to provide custom transform behavior.
484
457
  */
485
458
  onTransformModel(sourceModel: Model, targetModeledElementId: Id64String): ModelProps;
486
- /**
487
- * Called at the end of a transformation,
488
- * updates the target scope element to say that transformation up through the
489
- * source's changeset has been performed. Also stores all changesets that occurred
490
- * during the transformation as "pending synchronization changeset indices" @see TargetScopeProvenanceJsonProps
491
- *
492
- * You generally should not call this function yourself and use [[process]] with [[IModelTransformOptions.argsForProcessChanges]] provided instead.
493
- * It is public for unsupported use cases of custom synchronization transforms.
494
- * @note If [[IModelTransformOptions.argsForProcessChanges]] is not defined in this transformation, this function will return early without updating the sync version,
495
- * unless the `initializeReverseSyncVersion` option is set to `true`
496
- *
497
- * The `initializeReverseSyncVersion` is added to set the reverse synchronization version during a forward synchronization.
498
- * When set to `true`, it saves the reverse sync version as the current changeset of the targetDb. This is typically used for the first transformation between a master and branch iModel.
499
- * Setting `initializeReverseSyncVersion` to `true` has the effect of making it so any changesets in the branch iModel at the time of the first transformation will be ignored during any future reverse synchronizations from the branch to the master iModel.
500
- *
501
- * Note that typically, the reverseSyncVersion is saved as the last changeset merged from the branch into master.
502
- * Setting initializeReverseSyncVersion to true during a forward transformation could overwrite this correct reverseSyncVersion and should only be done during the first transformation between a master and branch iModel.
503
- */
504
- updateSynchronizationVersion({ initializeReverseSyncVersion, }?: {
505
- initializeReverseSyncVersion?: boolean | undefined;
506
- }): Promise<void>;
459
+ /** Complete a high-level transformation after all export operations finish. */
507
460
  private finalizeTransformation;
461
+ private setCodeValueBehavior;
508
462
  /** Imports all relationships that subclass from the specified base class.
509
463
  * @param baseRelClassFullName The specified base relationship class.
510
464
  * @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
465
+ * @note After composing subset processing calls, call [[IModelImporter.finalize]] before saving target changes.
511
466
  */
512
467
  processRelationships(baseRelClassFullName: string): Promise<void>;
513
468
  /** Override of [IModelExportHandler.shouldExportRelationship]($transformer) that is called to determine if a [Relationship]($backend) should be exported.
514
469
  * @note Reaching this point means that the relationship has passed the standard exclusion checks in [IModelExporter]($transformer).
515
470
  */
516
- shouldExportRelationship(_sourceRelationship: Relationship): boolean;
471
+ shouldExportRelationship(_sourceRelationship: Relationship): Promise<boolean>;
517
472
  /** Override of [IModelExportHandler.onExportRelationship]($transformer) that imports a relationship into the target iModel when it is exported from the source iModel.
518
473
  * This override calls [[onTransformRelationship]] and then [IModelImporter.importRelationship]($transformer) to update the target iModel.
519
474
  */
520
- onExportRelationship(sourceRelationship: Relationship): Promise<void>;
475
+ onExportRelationship(sourceRelationship: Relationship, _isUpdate?: boolean, sourceFedGuid?: GuidString, targetFedGuid?: GuidString): Promise<void>;
521
476
  /** Override of [IModelExportHandler.onDeleteRelationship]($transformer) that is called when [IModelExporter]($transformer) detects that a [Relationship]($backend) has been deleted from the source iModel.
522
477
  * This override propagates the delete to the target iModel via [IModelImporter.deleteRelationship]($transformer).
523
478
  */
524
479
  onDeleteRelationship(sourceRelInstanceId: Id64String): Promise<void>;
525
- private _yieldManager;
526
480
  /** Transform the specified sourceRelationship into RelationshipProps for the target iModel.
527
481
  * @param sourceRelationship The Relationship from the source iModel to be transformed.
528
482
  * @returns RelationshipProps for the target iModel.
529
483
  * @note A subclass can override this method to provide custom transform behavior.
530
484
  */
531
485
  protected onTransformRelationship(sourceRelationship: Relationship): RelationshipProps;
532
- shouldExportElementAspect(aspect: ElementAspect): boolean;
486
+ shouldExportElementAspect(aspect: ElementAspect): Promise<boolean>;
487
+ /** Records the target aspects of an owner batch before its source aspects are imported.
488
+ * The returned callback deletes the recorded replaceable aspects that the importer did not reuse, or discards the recorded state if the export failed.
489
+ */
490
+ private prepareElementAspects;
533
491
  /** Override of [IModelExportHandler.onExportElementUniqueAspect]($transformer) that imports an ElementUniqueAspect into the target iModel when it is exported from the source iModel.
534
492
  * This override calls [[onTransformElementAspect]] and then [IModelImporter.importElementUniqueAspect]($transformer) to update the target iModel.
535
493
  */
@@ -539,6 +497,9 @@ export declare class IModelTransformer extends IModelExportHandler {
539
497
  * @note ElementMultiAspects are handled as a group to make it easier to differentiate between insert, update, and delete.
540
498
  */
541
499
  onExportElementMultiAspects(sourceAspects: ElementMultiAspect[]): Promise<void>;
500
+ private _targetScopeElementIds?;
501
+ /** The target scope elements, including the current one. Read by [[initialize]], after the current scope's provenance exists. */
502
+ private getTargetScopeElementIds;
542
503
  /** Transform the specified sourceElementAspect into ElementAspectProps for the target iModel.
543
504
  * @param sourceElementAspect The ElementAspect from the source iModel to be transformed.
544
505
  * @returns ElementAspectProps for the target iModel.
@@ -550,29 +511,25 @@ export declare class IModelTransformer extends IModelExportHandler {
550
511
  /** Override of [IModelExportHandler.shouldExportSchema]($transformer) that is called to determine if a schema should be exported
551
512
  * @note the default behavior doesn't import schemas older than those already in the target
552
513
  */
553
- shouldExportSchema(schemaKey: ECSchemaMetaData.SchemaKey): boolean;
554
- private _longNamedSchemasMap;
555
- /** Override of [IModelExportHandler.onExportSchema]($transformer) that serializes a schema to disk for [[processSchemas]] to import into
556
- * the target iModel when it is exported from the source iModel.
557
- * @returns {Promise<ExportSchemaResult>} Although the type is possibly void for backwards compatibility of subclasses,
558
- * `IModelTransformer.onExportSchema` always returns an[[IModelExportHandler.ExportSchemaResult]]
559
- * with a defined `schemaPath` property, for subclasses to know where the schema was written.
560
- * Schemas are *not* guaranteed to be written to [[IModelTransformer._schemaExportDir]] by a
561
- * known pattern derivable from the schema's name, so you must use this to find it.
514
+ shouldExportSchema(schemaKey: ECSchemaMetaData.SchemaKey): Promise<boolean>;
515
+ /** Serialize a source schema to the temporary directory used by [[processSchemas]].
516
+ * @returns A path to the serialized schema file.
517
+ * @note The file name is not derived reliably from the schema name. Use the returned path when a subclass calls `super`.
562
518
  */
563
519
  onExportSchema(schema: ECSchemaMetaData.Schema): Promise<void | ExportSchemaResult>;
564
- private _makeLongNameResolvingSchemaCtx;
565
- /** Cause all schemas to be exported from the source iModel and imported into the target iModel.
520
+ /** Process source schemas and import selected or generated definitions into the target iModel.
521
+ * @param options Selects the schema processing strategy.
522
+ * @note When no strategy is supplied, [[NewerVersionSchemaImportStrategy]] is used.
566
523
  * @note For performance reasons, it is recommended that [IModelDb.saveChanges]($backend) be called after `processSchemas` is complete.
567
524
  * It is more efficient to process *data* changes after the schema changes have been saved.
568
525
  */
569
- processSchemas(): Promise<void>;
526
+ processSchemas(options?: ProcessSchemasOptions): Promise<void>;
570
527
  /** Cause all fonts to be exported from the source iModel and imported into the target iModel.
571
528
  * @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
572
529
  */
573
530
  processFonts(): Promise<void>;
574
531
  /** Override of [IModelExportHandler.onExportFont]($transformer) that imports a font into the target iModel when it is exported from the source iModel. */
575
- onExportFont(font: FontProps, _isUpdate: boolean | undefined): void;
532
+ onExportFont(font: FontProps, _isUpdate: boolean | undefined): Promise<void>;
576
533
  /** Cause all CodeSpecs to be exported from the source iModel and imported into the target iModel.
577
534
  * @note This method is called from [[process]], so it only needs to be called directly when processing a subset of an iModel.
578
535
  */
@@ -584,16 +541,19 @@ export declare class IModelTransformer extends IModelExportHandler {
584
541
  /** Override of [IModelExportHandler.shouldExportCodeSpec]($transformer) that is called to determine if a CodeSpec should be exported from the source iModel.
585
542
  * @note Reaching this point means that the CodeSpec has passed the standard exclusion checks in [IModelExporter]($transformer).
586
543
  */
587
- shouldExportCodeSpec(_sourceCodeSpec: CodeSpec): boolean;
544
+ shouldExportCodeSpec(_sourceCodeSpec: CodeSpec): Promise<boolean>;
588
545
  /** Override of [IModelExportHandler.onExportCodeSpec]($transformer) that imports a CodeSpec into the target iModel when it is exported from the source iModel. */
589
- onExportCodeSpec(sourceCodeSpec: CodeSpec): void;
590
- /** Recursively import all Elements and sub-Models that descend from the specified Subject */
546
+ onExportCodeSpec(sourceCodeSpec: CodeSpec): Promise<void>;
547
+ /** Recursively import all Elements and sub-Models that descend from the specified Subject.
548
+ * @note After composing subset processing calls, call [[IModelImporter.finalize]] before saving target changes.
549
+ */
591
550
  processSubject(sourceSubjectId: Id64String, targetSubjectId: Id64String): Promise<void>;
592
551
  /** state to prevent reinitialization, @see [[initialize]] */
593
552
  private _initialized;
594
553
  private _sourceChangeDataState;
595
554
  /** length === 0 when _changeDataState = "no-change", length > 0 means "has-changes", otherwise undefined */
596
555
  private _csFileProps?;
556
+ private _deletionRecordsByChangeset?;
597
557
  /**
598
558
  * Initialize prerequisites of processing, you must initialize with an [[InitOptions]] if you
599
559
  * are intending to process changes. Callers may wish to explicitly call initialize if they need to execute code after initialize but before [[process]] is called.
@@ -601,6 +561,7 @@ export declare class IModelTransformer extends IModelExportHandler {
601
561
  * Overriders must call `super.initialize()` first
602
562
  */
603
563
  initialize(): Promise<void>;
564
+ private initializeChangesetScanAndExporter;
604
565
  /**
605
566
  * Reads all the changeset files in the private member of the transformer: _csFileProps
606
567
  * and finds the corresponding target entity for any deleted source entities and remaps the sourceId to the targetId.
@@ -629,6 +590,8 @@ export declare class IModelTransformer extends IModelExportHandler {
629
590
  */
630
591
  private processDeletedOp;
631
592
  private _tryInitChangesetData;
593
+ /** Asserts that the EditTxn is active before any write operations. */
594
+ private assertEditTxnActive;
632
595
  /**
633
596
  * The behavior of process is influenced by [[IModelTransformOptions.argsForProcessChanges]] being defined or not defined during construction passed of the IModelTransformer.
634
597
  * @section When argsForProcessChanges are defined:
@@ -657,9 +620,6 @@ export declare class IModelTransformer extends IModelExportHandler {
657
620
  * @note [[processSchemas]] is not called automatically since the target iModel may want a different collection of schemas.
658
621
  */
659
622
  private processAll;
660
- /** previous provenance, either a federation guid, a `${sourceFedGuid}/${targetFedGuid}` pair, or required aspect props */
661
- private _lastProvenanceEntityInfo;
662
- private markLastProvenance;
663
623
  /** Export changes from the source iModel and import the transformed entities into the target iModel.
664
624
  * Inserts, updates, and deletes are determined by inspecting the changeset(s).
665
625
  * @note the transformer assumes that you saveChanges after processing changes. You should not
@@ -690,12 +650,10 @@ export declare class TemplateModelCloner extends IModelTransformer {
690
650
  /** Accumulates the mapping of sourceElementIds to targetElementIds from the elements in the template model that were cloned. */
691
651
  private _sourceIdToTargetIdMap?;
692
652
  /** Construct a new TemplateModelCloner
693
- * @param sourceDb The source IModelDb that contains the templates to clone
694
- * @param targetDb Optionally specify the target IModelDb where the cloned template will be inserted.
695
- * Typically this is left unspecified, and the default is to use the sourceDb as the target
653
+ * @param editTxn The [[EditTxn]] to use for all read and write operations. The source and target db are both derived from `editTxn.iModel`. Must be started before constructing.
696
654
  * @note The expectation is that the template definitions are within the same iModel where instances will be placed.
697
655
  */
698
- constructor(sourceDb: IModelDb, targetDb?: IModelDb);
656
+ constructor(editTxn: EditTxn);
699
657
  /** Place a template from the sourceDb at the specified placement in the target model within the targetDb.
700
658
  * @param sourceTemplateModelId The Id of the template model in the sourceDb
701
659
  * @param targetModelId The Id of the target model (must be a subclass of GeometricModel3d) where the cloned component will be inserted.
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"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"}