@itwin/imodel-transformer 0.4.18-fedguidopt.6 → 1.0.0-dev.10
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/CHANGELOG.md +9 -1
- package/lib/cjs/Algo.d.ts +7 -0
- package/lib/cjs/Algo.d.ts.map +1 -1
- package/lib/cjs/Algo.js +10 -4
- package/lib/cjs/Algo.js.map +1 -1
- package/lib/cjs/BigMap.d.ts +6 -1
- package/lib/cjs/BigMap.d.ts.map +1 -1
- package/lib/cjs/BigMap.js +29 -3
- package/lib/cjs/BigMap.js.map +1 -1
- package/lib/cjs/BranchProvenanceInitializer.d.ts.map +1 -1
- package/lib/cjs/BranchProvenanceInitializer.js +15 -4
- package/lib/cjs/BranchProvenanceInitializer.js.map +1 -1
- package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts.map +1 -1
- package/lib/cjs/DetachedExportElementAspectsStrategy.js +12 -5
- package/lib/cjs/DetachedExportElementAspectsStrategy.js.map +1 -1
- package/lib/cjs/ECReferenceTypesCache.d.ts.map +1 -1
- package/lib/cjs/ECReferenceTypesCache.js +32 -18
- package/lib/cjs/ECReferenceTypesCache.js.map +1 -1
- package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.d.ts +1 -1
- package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.d.ts.map +1 -1
- package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.js +7 -5
- package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.js.map +1 -1
- package/lib/cjs/ElementCascadingDeleter.d.ts +3 -3
- package/lib/cjs/ElementCascadingDeleter.d.ts.map +1 -1
- package/lib/cjs/ElementCascadingDeleter.js +9 -7
- package/lib/cjs/ElementCascadingDeleter.js.map +1 -1
- package/lib/cjs/EntityMap.d.ts.map +1 -1
- package/lib/cjs/EntityMap.js.map +1 -1
- package/lib/cjs/EntityUnifier.d.ts +5 -0
- package/lib/cjs/EntityUnifier.d.ts.map +1 -1
- package/lib/cjs/EntityUnifier.js +22 -35
- package/lib/cjs/EntityUnifier.js.map +1 -1
- package/lib/cjs/ExportElementAspectsStrategy.d.ts.map +1 -1
- package/lib/cjs/ExportElementAspectsStrategy.js +5 -4
- package/lib/cjs/ExportElementAspectsStrategy.js.map +1 -1
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.d.ts.map +1 -1
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.js +9 -5
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.js.map +1 -1
- package/lib/cjs/IModelCloneContext.d.ts +1 -4
- package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelCloneContext.js +37 -41
- package/lib/cjs/IModelCloneContext.js.map +1 -1
- package/lib/cjs/IModelExporter.d.ts +69 -73
- package/lib/cjs/IModelExporter.d.ts.map +1 -1
- package/lib/cjs/IModelExporter.js +240 -176
- package/lib/cjs/IModelExporter.js.map +1 -1
- package/lib/cjs/IModelImporter.d.ts +17 -65
- package/lib/cjs/IModelImporter.d.ts.map +1 -1
- package/lib/cjs/IModelImporter.js +79 -109
- package/lib/cjs/IModelImporter.js.map +1 -1
- package/lib/cjs/IModelTransformer.d.ts +151 -121
- package/lib/cjs/IModelTransformer.d.ts.map +1 -1
- package/lib/cjs/IModelTransformer.js +809 -751
- package/lib/cjs/IModelTransformer.js.map +1 -1
- package/lib/cjs/PendingReferenceMap.d.ts.map +1 -1
- package/lib/cjs/PendingReferenceMap.js +12 -6
- package/lib/cjs/PendingReferenceMap.js.map +1 -1
- package/lib/cjs/TransformerLoggerCategory.d.ts +2 -2
- package/lib/cjs/TransformerLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/TransformerLoggerCategory.js +5 -5
- package/lib/cjs/TransformerLoggerCategory.js.map +1 -1
- package/lib/cjs/transformer.d.ts.map +1 -1
- package/lib/cjs/transformer.js +15 -10
- package/lib/cjs/transformer.js.map +1 -1
- package/package.json +22 -18
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AccessToken, Id64Array, Id64String } from "@itwin/core-bentley";
|
|
2
2
|
import * as ECSchemaMetaData from "@itwin/ecschema-metadata";
|
|
3
|
-
import { Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, Entity, ExternalSourceAspect, IModelDb, Model, Relationship, RelationshipProps
|
|
3
|
+
import { Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, Entity, ExternalSourceAspect, IModelDb, Model, Relationship, RelationshipProps } from "@itwin/core-backend";
|
|
4
4
|
import { ChangesetIndexAndId, CodeSpec, ElementAspectProps, ElementProps, EntityReference, EntityReferenceSet, ExternalSourceAspectProps, FontProps, ModelProps, Placement2d, Placement3d } from "@itwin/core-common";
|
|
5
5
|
import { ExportChangesOptions, ExportSchemaResult, IModelExporter, IModelExportHandler } from "./IModelExporter";
|
|
6
6
|
import { IModelImporter, OptimizeGeometryOptions } from "./IModelImporter";
|
|
@@ -39,6 +39,7 @@ export interface IModelTransformOptions {
|
|
|
39
39
|
* The most common example is to first synchronize master to branch, make changes to the branch, and then reverse directions to synchronize from branch to master.
|
|
40
40
|
* This means that the provenance on the (current) source is used instead.
|
|
41
41
|
* @note This also means that only [[IModelTransformer.processChanges]] can detect deletes.
|
|
42
|
+
* @deprecated in 1.x this option is ignored and the transformer now detects synchronization direction using the target scope element
|
|
42
43
|
*/
|
|
43
44
|
isReverseSynchronization?: boolean;
|
|
44
45
|
/** Flag that indicates whether or not the transformation process needs to consider the source geometry before cloning/transforming.
|
|
@@ -69,20 +70,6 @@ export interface IModelTransformOptions {
|
|
|
69
70
|
* @beta
|
|
70
71
|
*/
|
|
71
72
|
preserveElementIdsForFiltering?: boolean;
|
|
72
|
-
/** The behavior to use when an element reference (id) is found stored as a reference on an element in the source,
|
|
73
|
-
* but the referenced element does not actually exist in the source.
|
|
74
|
-
* It is possible to craft an iModel with dangling references/invalidated relationships by, e.g., deleting certain
|
|
75
|
-
* elements without fixing up references.
|
|
76
|
-
*
|
|
77
|
-
* @note "reject" will throw an error and reject the transformation upon finding this case.
|
|
78
|
-
* @note "ignore" passes the issue down to consuming applications, iModels that have invalid element references
|
|
79
|
-
* like this can cause errors, and you should consider adding custom logic in your transformer to remove the
|
|
80
|
-
* reference depending on your use case.
|
|
81
|
-
* @default "reject"
|
|
82
|
-
* @beta
|
|
83
|
-
* @deprecated in 3.x. use [[danglingReferencesBehavior]] instead, the use of the term *predecessors* was confusing and became inaccurate when the transformer could handle cycles
|
|
84
|
-
*/
|
|
85
|
-
danglingPredecessorsBehavior?: "reject" | "ignore";
|
|
86
73
|
/** The behavior to use when an element reference (id) is found stored as a reference on an element in the source,
|
|
87
74
|
* but the referenced element does not actually exist in the source.
|
|
88
75
|
* It is possible to craft an iModel with dangling references/invalidated relationships by, e.g., deleting certain
|
|
@@ -123,6 +110,34 @@ export interface IModelTransformOptions {
|
|
|
123
110
|
* @default false
|
|
124
111
|
*/
|
|
125
112
|
ignoreMissingChangesetsInSynchronizations?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Do not error out if a scoping ESA @see ExternalSourceAspectProps is found without a version or jsonProperties defined on that scoping ESA.
|
|
115
|
+
* If true, the version and jsonproperties will be properly set on the scoping ESA @see TargetScopeProvenanceJsonProps after the transformer is complete.
|
|
116
|
+
* These properties not being defined are a sign that this branching relationship was created with an older version of the transformer, and setting this option to 'unsafe-migrate' is not without risk.
|
|
117
|
+
* Depending on the state of the branching relationship at the time of using this option, some data may be lost.
|
|
118
|
+
* @note This should only need to be set to 'unsafe-migrate' at most once for a branching relationship. For future transformations on the branching relationship, the @see TargetScopeProvenanceJsonProps will be present.
|
|
119
|
+
* @default "reject"
|
|
120
|
+
*/
|
|
121
|
+
branchRelationshipDataBehavior?: "unsafe-migrate" | "reject";
|
|
122
|
+
/**
|
|
123
|
+
* 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.
|
|
124
|
+
* @note This option is not without risk! You must also set @see branchRelationshipDataBehavior to "unsafe-migrate".
|
|
125
|
+
* @note This value is ignored if the version property on the scoping ESA is NOT undefined or empty string.
|
|
126
|
+
* @default ""
|
|
127
|
+
*/
|
|
128
|
+
unsafeFallbackSyncVersion?: string;
|
|
129
|
+
/**
|
|
130
|
+
* The reverse sync version to set on the scoping ESA @see TargetScopeProvenanceJsonProps upon startup, if the reverseSync property on the scoping ESA is undefined or empty string.
|
|
131
|
+
* @note This option is not without risk! You must also set @see branchRelationshipDataBehavior to "unsafe-migrate".
|
|
132
|
+
* @note This value is ignored if the reverseSyncVersion property on the scoping ESA is NOT undefined or empty string.
|
|
133
|
+
* @default ""
|
|
134
|
+
*/
|
|
135
|
+
unsafeFallbackReverseSyncVersion?: string;
|
|
136
|
+
/**
|
|
137
|
+
* Skip propagating changes made to the root subject, dictionaryModel and IModelImporter._realityDataSourceLinkPartitionStaticId (0xe)
|
|
138
|
+
* @default false
|
|
139
|
+
*/
|
|
140
|
+
skipPropagateChangesToRootElements?: boolean;
|
|
126
141
|
}
|
|
127
142
|
/**
|
|
128
143
|
* A container for tracking the state of a partially committed entity and finalizing it when it's ready to be fully committed
|
|
@@ -152,8 +167,19 @@ declare class PartiallyCommittedEntity {
|
|
|
152
167
|
* @beta
|
|
153
168
|
*/
|
|
154
169
|
export interface TargetScopeProvenanceJsonProps {
|
|
170
|
+
/** An array of changeset indices to ignore when doing a reverse sync. This array gets appended to during a forward sync and cleared
|
|
171
|
+
* during a reverse sync. Since a forward sync pushes a changeset to the branch db, the changeset pushed to the branch db
|
|
172
|
+
* by the forward sync isn't considered part of the changes made on the branch db and therefore doesn't need to be synced back to master
|
|
173
|
+
* during a forward sync.
|
|
174
|
+
*/
|
|
155
175
|
pendingReverseSyncChangesetIndices: number[];
|
|
176
|
+
/** An array of changeset indices to ignore when doing a forward sync. This array gets appended to during a reverse sync and cleared
|
|
177
|
+
* during a forward sync. Since a reverse sync pushes a changeset to the master db, the changeset pushed to the master db
|
|
178
|
+
* by the reverse sync isn't considered part of the changes made on the master db and therefore doesn't need to be synced back to the branch
|
|
179
|
+
* during a forward sync.
|
|
180
|
+
*/
|
|
156
181
|
pendingSyncChangesetIndices: number[];
|
|
182
|
+
/** the latest changesetid/index reverse synced into master */
|
|
157
183
|
reverseSyncVersion: string;
|
|
158
184
|
}
|
|
159
185
|
/** Arguments you can pass to [[IModelTransformer.initialize]]
|
|
@@ -175,14 +201,18 @@ export interface InitOptions {
|
|
|
175
201
|
/**
|
|
176
202
|
* Arguments for [[IModelTransformer.processChanges]]
|
|
177
203
|
*/
|
|
178
|
-
export
|
|
204
|
+
export type ProcessChangesOptions = ExportChangesOptions & {
|
|
179
205
|
/** how to call saveChanges on the target. Must call targetDb.saveChanges, should not edit the iModel */
|
|
180
206
|
saveTargetChanges?: (transformer: IModelTransformer) => Promise<void>;
|
|
181
|
-
}
|
|
207
|
+
};
|
|
182
208
|
/** Arguments you can pass to [[IModelTransformer.initExternalSourceAspects]]
|
|
183
209
|
* @deprecated in 0.1.0. Use [[InitOptions]] (and [[IModelTransformer.initialize]]) instead.
|
|
184
210
|
*/
|
|
185
211
|
export type InitFromExternalSourceAspectsArgs = InitOptions;
|
|
212
|
+
export interface RelationshipPropsForDelete {
|
|
213
|
+
id: Id64String;
|
|
214
|
+
classFullName: string;
|
|
215
|
+
}
|
|
186
216
|
/** Base class used to transform a source iModel into a different target iModel.
|
|
187
217
|
* @see [iModel Transformation and Data Exchange]($docs/learning/transformer/index.md), [IModelExporter]($transformer), [IModelImporter]($transformer)
|
|
188
218
|
* @beta
|
|
@@ -200,6 +230,7 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
200
230
|
readonly targetDb: IModelDb;
|
|
201
231
|
/** The IModelTransformContext for this IModelTransformer. */
|
|
202
232
|
readonly context: IModelCloneContext;
|
|
233
|
+
private _syncType?;
|
|
203
234
|
/** The Id of the Element in the **target** iModel that represents the **source** repository as a whole and scopes its [ExternalSourceAspect]($backend) instances. */
|
|
204
235
|
get targetScopeElementId(): Id64String;
|
|
205
236
|
/** map of (unprocessed element, referencing processed element) pairs to the partially committed element that needs the reference resolved
|
|
@@ -211,12 +242,47 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
211
242
|
protected _partiallyCommittedEntities: EntityMap<PartiallyCommittedEntity>;
|
|
212
243
|
/** the options that were used to initialize this transformer */
|
|
213
244
|
private readonly _options;
|
|
245
|
+
/** @see hasDefinitionContainerDeletionFeature */
|
|
246
|
+
private _hasDefinitionContainerDeletionFeature?;
|
|
214
247
|
private _isSynchronization;
|
|
215
|
-
|
|
216
|
-
|
|
248
|
+
/**
|
|
249
|
+
* 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.
|
|
250
|
+
* 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.
|
|
251
|
+
* 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
|
|
252
|
+
* this private property on the IModelTransformer exists.
|
|
253
|
+
*/
|
|
254
|
+
private _allowNoScopingESA;
|
|
255
|
+
static noEsaSyncDirectionErrorMessage: string;
|
|
256
|
+
/**
|
|
257
|
+
* Queries for an esa which matches the props in the provided aspectProps.
|
|
258
|
+
* @param dbToQuery db to run the query on for scope external source
|
|
259
|
+
* @param aspectProps aspectProps to search for @see ExternalSourceAspectProps
|
|
260
|
+
*/
|
|
261
|
+
static queryScopeExternalSourceAspect(dbToQuery: IModelDb, aspectProps: ExternalSourceAspectProps): {
|
|
262
|
+
aspectId: Id64String;
|
|
263
|
+
version?: string;
|
|
264
|
+
/** stringified json */
|
|
265
|
+
jsonProperties?: string;
|
|
266
|
+
} | undefined;
|
|
267
|
+
/**
|
|
268
|
+
* Determines the sync direction "forward" or "reverse" of a given sourceDb and targetDb by looking for the scoping ESA.
|
|
269
|
+
* If the sourceDb's iModelId is found as the identifier of the expected scoping ESA in the targetDb, then it is a forward synchronization.
|
|
270
|
+
* If the targetDb's iModelId is found as the identifier of the expected scoping ESA in the sourceDb, then it is a reverse synchronization.
|
|
271
|
+
* @throws if no scoping ESA can be found in either the sourceDb or targetDb which describes a master branch relationship between the two databases.
|
|
272
|
+
* @returns "forward" or "reverse"
|
|
273
|
+
*/
|
|
274
|
+
static determineSyncType(sourceDb: IModelDb, targetDb: IModelDb,
|
|
275
|
+
/** @see [[IModelTransformOptions.targetScopeElementId]] */
|
|
276
|
+
targetScopeElementId: Id64String): "forward" | "reverse";
|
|
277
|
+
private determineSyncType;
|
|
278
|
+
get isReverseSynchronization(): boolean;
|
|
279
|
+
get isForwardSynchronization(): boolean;
|
|
217
280
|
private _changesetRanges;
|
|
218
|
-
/**
|
|
219
|
-
|
|
281
|
+
/**
|
|
282
|
+
* Set if the transformer is being used to perform the provenance initialization step of a fork initialization.
|
|
283
|
+
* In general don't use the transformer for that, prefer [[BranchProvenanceInitializer.initializeBranchProvenance]]
|
|
284
|
+
*/
|
|
285
|
+
private _isProvenanceInitTransform?;
|
|
220
286
|
/** The element classes that are considered to define provenance in the iModel */
|
|
221
287
|
static get provenanceElementClasses(): (typeof Entity)[];
|
|
222
288
|
/** The element aspect classes that are considered to define provenance in the iModel */
|
|
@@ -231,6 +297,10 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
231
297
|
* @param options The options that specify how the transformation should be done.
|
|
232
298
|
*/
|
|
233
299
|
constructor(source: IModelDb | IModelExporter, target: IModelDb | IModelImporter, options?: IModelTransformOptions);
|
|
300
|
+
/** validates that the importer set on the transformer has the same values for its shared options as the transformer.
|
|
301
|
+
* @note This expects that the importer is already set on the transformer.
|
|
302
|
+
*/
|
|
303
|
+
private validateSharedOptionsMatch;
|
|
234
304
|
/** Dispose any native resources associated with this IModelTransformer. */
|
|
235
305
|
dispose(): void;
|
|
236
306
|
/** Log current settings that affect IModelTransformer's behavior. */
|
|
@@ -280,17 +350,23 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
280
350
|
*/
|
|
281
351
|
private _startingChangesetIndices;
|
|
282
352
|
private _cachedSynchronizationVersion;
|
|
283
|
-
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
|
|
287
|
-
|
|
353
|
+
/**
|
|
354
|
+
* As of itwinjs 4.6.0, definitionContainers are now deleted as if they were DefinitionPartitions as opposed to Definitions.
|
|
355
|
+
* This variable being true will be used to special case the deletion of DefinitionContainers the same way DefinitionPartitions are deleted.
|
|
356
|
+
*/
|
|
357
|
+
protected get hasDefinitionContainerDeletionFeature(): boolean;
|
|
358
|
+
/**
|
|
359
|
+
* We cache the synchronization version to avoid querying the target scoping ESA multiple times.
|
|
360
|
+
* If the target scoping ESA is ever updated we need to clear any potentially cached sync version otherwise we will get stale values.
|
|
361
|
+
* Sets this._cachedSynchronizationVersion to undefined.
|
|
288
362
|
*/
|
|
289
|
-
private
|
|
363
|
+
private clearCachedSynchronizationVersion;
|
|
290
364
|
/** the changeset in the scoping element's source version found for this transformation
|
|
291
|
-
* @note
|
|
365
|
+
* @note the version depends on whether this is a reverse synchronization or not, as
|
|
292
366
|
* it is stored separately for both synchronization directions.
|
|
293
|
-
* @note
|
|
367
|
+
* @note empty string and -1 for changeset and index if it has never been transformed
|
|
368
|
+
* @note empty string and -1 for changeset and index if it was transformed before federation guid update (pre 1.x) and @see [[IModelTransformOptions.branchRelationshipDataBehavior]] === "unsafe-migrate".
|
|
369
|
+
* @throws if the version is not found in a preexisting scope aspect and @see [[IModelTransformOptions.branchRelationshipDataBehavior]] !== "unsafe-migrate"
|
|
294
370
|
*/
|
|
295
371
|
protected get synchronizationVersion(): ChangesetIndexAndId;
|
|
296
372
|
/**
|
|
@@ -305,11 +381,8 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
305
381
|
* if this was a [BriefcaseDb]($backend)
|
|
306
382
|
*/
|
|
307
383
|
protected initScopeProvenance(): void;
|
|
308
|
-
/**
|
|
309
|
-
|
|
310
|
-
* May also return a reverseSyncVersion from json properties if requested
|
|
311
|
-
*/
|
|
312
|
-
private queryScopeExternalSource;
|
|
384
|
+
/** Returns true if a change was made to the aspectProps. */
|
|
385
|
+
private handleUnsafeMigrate;
|
|
313
386
|
/**
|
|
314
387
|
* Iterate all matching federation guids and ExternalSourceAspects in the provenance iModel (target unless reverse sync)
|
|
315
388
|
* and call a function for each one.
|
|
@@ -322,21 +395,24 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
322
395
|
targetScopeElementId: Id64String;
|
|
323
396
|
isReverseSynchronization: boolean;
|
|
324
397
|
fn: (sourceElementId: Id64String, targetElementId: Id64String) => void;
|
|
398
|
+
skipPropagateChangesToRootElements: boolean;
|
|
325
399
|
}): void;
|
|
326
400
|
private forEachTrackedElement;
|
|
327
|
-
/** Initialize the source to target Element mapping from ExternalSourceAspects in the target iModel.
|
|
328
|
-
* @note This method is called from all `process*` functions and should never need to be called directly.
|
|
329
|
-
* @deprecated in 3.x. call [[initialize]] instead, it does the same thing among other initialization
|
|
330
|
-
* @note Passing an [[InitFromExternalSourceAspectsArgs]] is required when processing changes, to remap any elements that may have been deleted.
|
|
331
|
-
* You must await the returned promise as well in this case. The synchronous behavior has not changed but is deprecated and won't process everything.
|
|
332
|
-
*/
|
|
333
|
-
initFromExternalSourceAspects(args?: InitOptions): void | Promise<void>;
|
|
334
401
|
/**
|
|
335
|
-
*
|
|
336
|
-
*
|
|
402
|
+
* Queries the provenanceDb for an ESA whose identifier is equal to the provided 'entityInProvenanceSourceId'.
|
|
403
|
+
* The identifier on the ESA is the id of the element in the [[IModelTransformer.provenanceSourceDb]]
|
|
404
|
+
* Therefore it only makes sense to call this function when you have an id in the provenanceSourceDb.
|
|
405
|
+
* @param entityInProvenanceSourceId
|
|
406
|
+
* @returns the elementId that the ESA is stored on, esa.Element.Id
|
|
337
407
|
*/
|
|
338
|
-
private remapDeletedSourceEntities;
|
|
339
408
|
private _queryProvenanceForElement;
|
|
409
|
+
/**
|
|
410
|
+
* Queries the provenanceDb for an ESA whose identifier is equal to the provided 'entityInProvenanceSourceId'.
|
|
411
|
+
* The identifier on the ESA is the id of the relationship in the [[IModelTransformer.provenanceSourceDb]]
|
|
412
|
+
* Therefore it only makes sense to call this function when you have an id in the provenanceSourceDb.
|
|
413
|
+
* @param entityInProvenanceSourceId
|
|
414
|
+
* @returns
|
|
415
|
+
*/
|
|
340
416
|
private _queryProvenanceForRelationship;
|
|
341
417
|
private _queryTargetRelId;
|
|
342
418
|
private _targetClassNameToClassIdCache;
|
|
@@ -344,6 +420,7 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
344
420
|
private _getRelClassId;
|
|
345
421
|
private _queryElemIdByFedGuid;
|
|
346
422
|
/** Returns `true` if *brute force* delete detections should be run.
|
|
423
|
+
* @note This is only called if [[IModelTransformOptions.forceExternalSourceAspectProvenance]] option is true
|
|
347
424
|
* @note Not relevant for processChanges when change history is known.
|
|
348
425
|
*/
|
|
349
426
|
protected shouldDetectDeletes(): boolean;
|
|
@@ -352,7 +429,7 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
352
429
|
* in the source iModel.
|
|
353
430
|
* @deprecated in 1.x. Do not use this. // FIXME<MIKE>: how to better explain this?
|
|
354
431
|
* This method is only called during [[processAll]] when the option
|
|
355
|
-
* [[
|
|
432
|
+
* [[IModelTransformOptions.forceExternalSourceAspectProvenance]] is enabled. It is not
|
|
356
433
|
* necessary when using [[processChanges]] since changeset information is sufficient.
|
|
357
434
|
* @note you do not need to call this directly unless processing a subset of an iModel.
|
|
358
435
|
* @throws [[IModelError]] If the required provenance information is not available to detect deletes.
|
|
@@ -371,13 +448,11 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
371
448
|
onTransformElement(sourceElement: Element): ElementProps;
|
|
372
449
|
private _hasElementChangedCache?;
|
|
373
450
|
private _deletedSourceRelationshipData?;
|
|
374
|
-
private _cacheSourceChanges;
|
|
375
451
|
/** Returns true if a change within sourceElement is detected.
|
|
376
452
|
* @param sourceElement The Element from the source iModel
|
|
377
|
-
* @param targetElementId The Element from the target iModel to compare against.
|
|
378
453
|
* @note A subclass can override this method to provide custom change detection behavior.
|
|
379
454
|
*/
|
|
380
|
-
protected hasElementChanged(sourceElement: Element
|
|
455
|
+
protected hasElementChanged(sourceElement: Element): boolean;
|
|
381
456
|
private static transformCallbackFor;
|
|
382
457
|
/** callback to perform when a partial element says it's ready to be completed
|
|
383
458
|
* transforms the source element with all references now valid, then updates the partial element with the results
|
|
@@ -450,10 +525,10 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
450
525
|
* @deprecated in 3.x. This method is no longer necessary since the transformer no longer needs to defer elements
|
|
451
526
|
*/
|
|
452
527
|
processDeferredElements(_numRetries?: number): Promise<void>;
|
|
453
|
-
/** called at the end
|
|
528
|
+
/** called at the end of a transformation,
|
|
454
529
|
* updates the target scope element to say that transformation up through the
|
|
455
530
|
* source's changeset has been performed. Also stores all changesets that occurred
|
|
456
|
-
* during the transformation as "pending synchronization changeset indices"
|
|
531
|
+
* during the transformation as "pending synchronization changeset indices" @see TargetScopeProvenanceJsonProps
|
|
457
532
|
*
|
|
458
533
|
* You generally should not call this function yourself and use [[processChanges]] instead.
|
|
459
534
|
* It is public for unsupported use cases of custom synchronization transforms.
|
|
@@ -535,8 +610,8 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
535
610
|
*/
|
|
536
611
|
processSchemas(): Promise<void>;
|
|
537
612
|
/** Cause all fonts to be exported from the source iModel and imported into the target iModel.
|
|
538
|
-
|
|
539
|
-
|
|
613
|
+
* @note This method is called from [[processChanges]] and [[processAll]], so it only needs to be called directly when processing a subset of an iModel.
|
|
614
|
+
*/
|
|
540
615
|
processFonts(): Promise<void>;
|
|
541
616
|
/** Override of [IModelExportHandler.onExportFont]($transformer) that imports a font into the target iModel when it is exported from the source iModel. */
|
|
542
617
|
onExportFont(font: FontProps, _isUpdate: boolean | undefined): void;
|
|
@@ -558,9 +633,9 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
558
633
|
processSubject(sourceSubjectId: Id64String, targetSubjectId: Id64String): Promise<void>;
|
|
559
634
|
/** state to prevent reinitialization, @see [[initialize]] */
|
|
560
635
|
private _initialized;
|
|
561
|
-
/** length === 0 when _changeDataState = "no-change", length > 0 means "has-changes", otherwise undefined */
|
|
562
|
-
private _changeSummaryIds?;
|
|
563
636
|
private _sourceChangeDataState;
|
|
637
|
+
/** length === 0 when _changeDataState = "no-change", length > 0 means "has-changes", otherwise undefined */
|
|
638
|
+
private _csFileProps?;
|
|
564
639
|
/**
|
|
565
640
|
* Initialize prerequisites of processing, you must initialize with an [[InitOptions]] if you
|
|
566
641
|
* are intending to process changes, but prefer using [[processChanges]] explicitly since it calls this.
|
|
@@ -568,88 +643,43 @@ export declare class IModelTransformer extends IModelExportHandler {
|
|
|
568
643
|
* Overriders must call `super.initialize()` first
|
|
569
644
|
*/
|
|
570
645
|
initialize(args?: InitOptions): Promise<void>;
|
|
646
|
+
/**
|
|
647
|
+
* Reads all the changeset files in the private member of the transformer: _csFileProps and does two things with these changesets.
|
|
648
|
+
* Finds the corresponding target entity for any deleted source entities and remaps the sourceId to the targetId.
|
|
649
|
+
* Populates this._hasElementChangedCache with a set of elementIds that have been updated or inserted into the database.
|
|
650
|
+
* This function returns early if csFileProps is undefined or is of length 0.
|
|
651
|
+
* @returns void
|
|
652
|
+
*/
|
|
653
|
+
private processChangesets;
|
|
654
|
+
/**
|
|
655
|
+
* Helper function for processChangesets. Remaps the id of element deleted found in the 'change' to an element in the targetDb.
|
|
656
|
+
* @param change the change to process, must be of changeType "Deleted"
|
|
657
|
+
* @param mapOfDeletedElemIdToScopeEsas a map of elementIds to changedECInstances (which are ESAs). the elementId is not the id of the esa itself, but the elementid that the esa was stored on before the esa's deletion.
|
|
658
|
+
* All ESAs in this map are part of the transformer's scope / ESA data and are tracked in case the ESA is deleted in the target.
|
|
659
|
+
* @param isRelationship is relationship or not
|
|
660
|
+
* @param alreadyImportedElementInserts used to handle entity recreation and not delete already handled element inserts.
|
|
661
|
+
* @param alreadyImportedModelInserts used to handle entity recreation and not delete already handled model inserts.
|
|
662
|
+
* @returns void
|
|
663
|
+
*/
|
|
664
|
+
private processDeletedOp;
|
|
571
665
|
private _tryInitChangesetData;
|
|
572
666
|
/** Export everything from the source iModel and import the transformed entities into the target iModel.
|
|
573
|
-
|
|
574
|
-
|
|
667
|
+
* @note [[processSchemas]] is not called automatically since the target iModel may want a different collection of schemas.
|
|
668
|
+
*/
|
|
575
669
|
processAll(): Promise<void>;
|
|
576
670
|
/** previous provenance, either a federation guid, a `${sourceFedGuid}/${targetFedGuid}` pair, or required aspect props */
|
|
577
671
|
private _lastProvenanceEntityInfo;
|
|
578
672
|
private markLastProvenance;
|
|
579
|
-
/** @internal the name of the table where javascript state of the transformer is serialized in transformer state dumps */
|
|
580
|
-
static readonly jsStateTable = "TransformerJsState";
|
|
581
|
-
/** @internal the name of the table where the target state heuristics is serialized in transformer state dumps */
|
|
582
|
-
static readonly lastProvenanceEntityInfoTable = "LastProvenanceEntityInfo";
|
|
583
|
-
/**
|
|
584
|
-
* Load the state of the active transformation from an open SQLiteDb
|
|
585
|
-
* You can override this if you'd like to load from custom tables in the resumable dump state, but you should call
|
|
586
|
-
* this super implementation
|
|
587
|
-
* @note the SQLiteDb must be open
|
|
588
|
-
*/
|
|
589
|
-
protected loadStateFromDb(db: SQLiteDb): void;
|
|
590
|
-
/**
|
|
591
|
-
* @deprecated in 0.1.x, this is buggy, and it is now equivalently efficient to simply restart the transformation
|
|
592
|
-
* from the original changeset
|
|
593
|
-
*
|
|
594
|
-
* Return a new transformer instance with the same remappings state as saved from a previous [[IModelTransformer.saveStateToFile]] call.
|
|
595
|
-
* This allows you to "resume" an iModel transformation, you will have to call [[IModelTransformer.processChanges]]/[[IModelTransformer.processAll]]
|
|
596
|
-
* again but the remapping state will cause already mapped elements to be skipped.
|
|
597
|
-
* To "resume" an iModel Transformation you need:
|
|
598
|
-
* - the sourceDb at the same changeset
|
|
599
|
-
* - the same targetDb in the state in which it was before
|
|
600
|
-
* @param statePath the path to the serialized state of the transformer, use [[IModelTransformer.saveStateToFile]] to get this from an existing transformer instance
|
|
601
|
-
* @param constructorArgs remaining arguments that you would normally pass to the Transformer subclass you are using, usually (sourceDb, targetDb)
|
|
602
|
-
* @note custom transformers with custom state may need to override this method in order to handle loading their own custom state somewhere
|
|
603
|
-
*/
|
|
604
|
-
static resumeTransformation<SubClass extends new (...a: any[]) => IModelTransformer = typeof IModelTransformer>(this: SubClass, statePath: string, ...constructorArgs: ConstructorParameters<SubClass>): InstanceType<SubClass>;
|
|
605
|
-
/**
|
|
606
|
-
* You may override this to store arbitrary json state in a transformer state dump, useful for some resumptions
|
|
607
|
-
* @see [[IModelTransformer.saveStateToFile]]
|
|
608
|
-
*/
|
|
609
|
-
protected getAdditionalStateJson(): any;
|
|
610
|
-
/**
|
|
611
|
-
* You may override this to load arbitrary json state in a transformer state dump, useful for some resumptions
|
|
612
|
-
* @see [[IModelTransformer.loadStateFromFile]]
|
|
613
|
-
*/
|
|
614
|
-
protected loadAdditionalStateJson(_additionalState: any): void;
|
|
615
|
-
/**
|
|
616
|
-
* Save the state of the active transformation to an open SQLiteDb
|
|
617
|
-
* You can override this if you'd like to write custom tables to the resumable dump state, but you should call
|
|
618
|
-
* this super implementation
|
|
619
|
-
* @note the SQLiteDb must be open
|
|
620
|
-
*/
|
|
621
|
-
protected saveStateToDb(db: SQLiteDb): void;
|
|
622
|
-
/**
|
|
623
|
-
* @deprecated in 0.1.x, this is buggy, and it is now equivalently efficient to simply restart the transformation
|
|
624
|
-
* from the original changeset
|
|
625
|
-
*
|
|
626
|
-
* Save the state of the active transformation to a file path, if a file at the path already exists, it will be overwritten
|
|
627
|
-
* This state can be used by [[IModelTransformer.resumeTransformation]] to resume a transformation from this point.
|
|
628
|
-
* The serialization format is a custom sqlite database.
|
|
629
|
-
* @note custom transformers with custom state may override [[IModelTransformer.saveStateToDb]] or [[IModelTransformer.getAdditionalStateJson]]
|
|
630
|
-
* and [[IModelTransformer.loadStateFromDb]] (with a super call) or [[IModelTransformer.loadAdditionalStateJson]]
|
|
631
|
-
* if they have custom state that needs to be stored with
|
|
632
|
-
* potentially inside the same sqlite file in separate tables
|
|
633
|
-
*/
|
|
634
|
-
saveStateToFile(nativeStatePath: string): void;
|
|
635
673
|
/** Export changes from the source iModel and import the transformed entities into the target iModel.
|
|
636
674
|
* Inserts, updates, and deletes are determined by inspecting the changeset(s).
|
|
637
675
|
* @note the transformer assumes that you saveChanges after processing changes. You should not
|
|
638
676
|
* modify the iModel after processChanges until saveChanges, failure to do so may result in corrupted
|
|
639
677
|
* data loss in future branch operations
|
|
640
|
-
* @
|
|
641
|
-
* @param startChangesetId Include changes from this changeset up through and including the current changeset.
|
|
642
|
-
* @note if no startChangesetId or startChangeset option is provided, the next unsynchronized changeset
|
|
678
|
+
* @note if no startChangesetId or startChangeset option is provided as part of the ProcessChangesOptions, the next unsynchronized changeset
|
|
643
679
|
* will automatically be determined and used
|
|
644
680
|
* @note To form a range of versions to process, set `startChangesetId` for the start (inclusive) of the desired range and open the source iModel as of the end (inclusive) of the desired range.
|
|
645
681
|
*/
|
|
646
682
|
processChanges(options: ProcessChangesOptions): Promise<void>;
|
|
647
|
-
/**
|
|
648
|
-
* @deprecated in 0.1.x, use a single [[ProcessChangesOptions]] object instead
|
|
649
|
-
* This overload follows the older behavior of defaulting an undefined startChangesetId to the
|
|
650
|
-
* current changeset.
|
|
651
|
-
*/
|
|
652
|
-
processChanges(accessToken: AccessToken, startChangesetId?: string): Promise<void>;
|
|
653
683
|
/** Changeset data must be initialized in order to build correct changeOptions.
|
|
654
684
|
* Call [[IModelTransformer.initialize]] for initialization of synchronization provenance data
|
|
655
685
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"IModelTransformer.d.ts","sourceRoot":"","sources":["../../src/IModelTransformer.ts"],"names":[],"mappings":"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"}
|