@itwin/imodel-transformer 0.4.4-dev.0 → 0.4.18-dev.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 (65) hide show
  1. package/CHANGELOG.md +1 -9
  2. package/lib/cjs/Algo.d.ts +7 -0
  3. package/lib/cjs/Algo.d.ts.map +1 -0
  4. package/lib/cjs/Algo.js +65 -0
  5. package/lib/cjs/Algo.js.map +1 -0
  6. package/lib/cjs/BigMap.d.ts +1 -6
  7. package/lib/cjs/BigMap.d.ts.map +1 -1
  8. package/lib/cjs/BigMap.js +3 -29
  9. package/lib/cjs/BigMap.js.map +1 -1
  10. package/lib/cjs/BranchProvenanceInitializer.d.ts +10 -3
  11. package/lib/cjs/BranchProvenanceInitializer.d.ts.map +1 -1
  12. package/lib/cjs/BranchProvenanceInitializer.js +101 -10
  13. package/lib/cjs/BranchProvenanceInitializer.js.map +1 -1
  14. package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts.map +1 -1
  15. package/lib/cjs/DetachedExportElementAspectsStrategy.js +12 -5
  16. package/lib/cjs/DetachedExportElementAspectsStrategy.js.map +1 -1
  17. package/lib/cjs/ECReferenceTypesCache.d.ts.map +1 -1
  18. package/lib/cjs/ECReferenceTypesCache.js +32 -18
  19. package/lib/cjs/ECReferenceTypesCache.js.map +1 -1
  20. package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.d.ts +1 -1
  21. package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.d.ts.map +1 -1
  22. package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.js +7 -5
  23. package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.js.map +1 -1
  24. package/lib/cjs/ElementCascadingDeleter.d.ts +3 -3
  25. package/lib/cjs/ElementCascadingDeleter.d.ts.map +1 -1
  26. package/lib/cjs/ElementCascadingDeleter.js +9 -7
  27. package/lib/cjs/ElementCascadingDeleter.js.map +1 -1
  28. package/lib/cjs/EntityMap.d.ts.map +1 -1
  29. package/lib/cjs/EntityMap.js.map +1 -1
  30. package/lib/cjs/EntityUnifier.d.ts +5 -0
  31. package/lib/cjs/EntityUnifier.d.ts.map +1 -1
  32. package/lib/cjs/EntityUnifier.js +22 -35
  33. package/lib/cjs/EntityUnifier.js.map +1 -1
  34. package/lib/cjs/ExportElementAspectsStrategy.d.ts.map +1 -1
  35. package/lib/cjs/ExportElementAspectsStrategy.js +5 -4
  36. package/lib/cjs/ExportElementAspectsStrategy.js.map +1 -1
  37. package/lib/cjs/ExportElementAspectsWithElementsStrategy.d.ts.map +1 -1
  38. package/lib/cjs/ExportElementAspectsWithElementsStrategy.js +9 -5
  39. package/lib/cjs/ExportElementAspectsWithElementsStrategy.js.map +1 -1
  40. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  41. package/lib/cjs/IModelCloneContext.js +23 -14
  42. package/lib/cjs/IModelCloneContext.js.map +1 -1
  43. package/lib/cjs/IModelExporter.d.ts +87 -21
  44. package/lib/cjs/IModelExporter.d.ts.map +1 -1
  45. package/lib/cjs/IModelExporter.js +279 -114
  46. package/lib/cjs/IModelExporter.js.map +1 -1
  47. package/lib/cjs/IModelImporter.d.ts +29 -21
  48. package/lib/cjs/IModelImporter.d.ts.map +1 -1
  49. package/lib/cjs/IModelImporter.js +115 -62
  50. package/lib/cjs/IModelImporter.js.map +1 -1
  51. package/lib/cjs/IModelTransformer.d.ts +285 -48
  52. package/lib/cjs/IModelTransformer.d.ts.map +1 -1
  53. package/lib/cjs/IModelTransformer.js +1273 -337
  54. package/lib/cjs/IModelTransformer.js.map +1 -1
  55. package/lib/cjs/PendingReferenceMap.d.ts.map +1 -1
  56. package/lib/cjs/PendingReferenceMap.js +12 -6
  57. package/lib/cjs/PendingReferenceMap.js.map +1 -1
  58. package/lib/cjs/TransformerLoggerCategory.d.ts +2 -2
  59. package/lib/cjs/TransformerLoggerCategory.d.ts.map +1 -1
  60. package/lib/cjs/TransformerLoggerCategory.js +5 -5
  61. package/lib/cjs/TransformerLoggerCategory.js.map +1 -1
  62. package/lib/cjs/transformer.d.ts.map +1 -1
  63. package/lib/cjs/transformer.js +14 -10
  64. package/lib/cjs/transformer.js.map +1 -1
  65. package/package.json +20 -17
@@ -1,7 +1,7 @@
1
- import { AccessToken, Id64String } from "@itwin/core-bentley";
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, IModelDb, Model, Relationship, RelationshipProps, SQLiteDb } from "@itwin/core-backend";
4
- import { CodeSpec, ElementAspectProps, ElementProps, EntityReference, EntityReferenceSet, ExternalSourceAspectProps, FontProps, ModelProps, Placement2d, Placement3d } from "@itwin/core-common";
3
+ import { Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, Entity, ExternalSourceAspect, IModelDb, Model, Relationship, RelationshipProps, SQLiteDb } from "@itwin/core-backend";
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";
7
7
  import { PendingReferenceMap } from "./PendingReferenceMap";
@@ -13,7 +13,8 @@ import { IModelCloneContext } from "./IModelCloneContext";
13
13
  */
14
14
  export interface IModelTransformOptions {
15
15
  /** The Id of the Element in the **target** iModel that represents the **source** repository as a whole and scopes its [ExternalSourceAspect]($backend) instances.
16
- * When the goal is to consolidate multiple source iModels into a single target iModel, this option must be specified.
16
+ * It is always a good idea to define this, although particularly necessary in any multi-source scenario such as multiple branches that reverse synchronize
17
+ * or physical consolidation.
17
18
  */
18
19
  targetScopeElementId?: Id64String;
19
20
  /** Set to `true` if IModelTransformer should not record its provenance.
@@ -38,6 +39,7 @@ export interface IModelTransformOptions {
38
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.
39
40
  * This means that the provenance on the (current) source is used instead.
40
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
41
43
  */
42
44
  isReverseSynchronization?: boolean;
43
45
  /** Flag that indicates whether or not the transformation process needs to consider the source geometry before cloning/transforming.
@@ -100,6 +102,42 @@ export interface IModelTransformOptions {
100
102
  * @beta
101
103
  */
102
104
  optimizeGeometry?: OptimizeGeometryOptions;
105
+ /**
106
+ * force the insertion of external source aspects to provide provenance, even if there are federation guids
107
+ * in the source that we can use. This can make some operations (like transforming new elements or initializing forks)
108
+ * much slower due to needing to insert aspects, but prevents requiring change information for future merges.
109
+ * @default false
110
+ */
111
+ forceExternalSourceAspectProvenance?: boolean;
112
+ /**
113
+ * Do not detach the change cache that we build. Use this if you want to do multiple transformations to
114
+ * the same iModels, to avoid the performance cost of reinitializing the change cache which can be
115
+ * expensive. You should only use this if you know the cache will be reused.
116
+ * @note You must detach the change cache yourself.
117
+ * @default false
118
+ */
119
+ noDetachChangeCache?: boolean;
120
+ /**
121
+ * Do not check that processChanges is called from the next changeset index.
122
+ * This is an unsafe option (e.g. it can cause data loss in future branch operations)
123
+ * and you should not use it.
124
+ * @default false
125
+ */
126
+ ignoreMissingChangesetsInSynchronizations?: boolean;
127
+ /**
128
+ * Do not error out if a scoping ESA @see ExternalSourceAspectProps is found without a version or jsonProperties defined on that scoping ESA.
129
+ * If true, the version and jsonproperties will be properly set on the scoping ESA @see TargetScopeProvenanceJsonProps after the transformer is complete.
130
+ * 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.
131
+ * Depending on the state of the branching relationship at the time of using this option, some data may be lost.
132
+ * @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.
133
+ * @default "reject"
134
+ */
135
+ branchRelationshipDataBehavior?: "unsafe-migrate" | "reject";
136
+ /**
137
+ * Skip propagating changes made to the root subject, dictionaryModel and IModelImporter._realityDataSourceLinkPartitionStaticId (0xe)
138
+ * @default false
139
+ */
140
+ skipPropagateChangesToRootElements?: boolean;
103
141
  }
104
142
  /**
105
143
  * A container for tracking the state of a partially committed entity and finalizing it when it's ready to be fully committed
@@ -123,10 +161,31 @@ declare class PartiallyCommittedEntity {
123
161
  resolveReference(id: EntityReference): void;
124
162
  forceComplete(): void;
125
163
  }
126
- /** Arguments you can pass to [[IModelTransformer.initExternalSourceAspects]]
164
+ /**
165
+ * Data type for persisting change version information within provenance Scope ExternalSourceAspect.
166
+ * Additionally, forward synchronization version is stored in Scope aspect's 'version' field.
127
167
  * @beta
128
168
  */
129
- export interface InitFromExternalSourceAspectsArgs {
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
+ */
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
+ */
181
+ pendingSyncChangesetIndices: number[];
182
+ /** the latest changesetid/index reverse synced into master */
183
+ reverseSyncVersion: string;
184
+ }
185
+ /** Arguments you can pass to [[IModelTransformer.initialize]]
186
+ * @beta
187
+ */
188
+ export interface InitOptions {
130
189
  accessToken?: AccessToken;
131
190
  /**
132
191
  * Include changes from this changeset up through and including the current changeset.
@@ -142,8 +201,39 @@ export interface InitFromExternalSourceAspectsArgs {
142
201
  /**
143
202
  * Arguments for [[IModelTransformer.processChanges]]
144
203
  */
145
- export interface ProcessChangesOptions extends ExportChangesOptions {
204
+ export type ProcessChangesOptions = ExportChangesOptions & FinalizeTransformationOptions;
205
+ /**
206
+ * Options which modify the behavior of [[IModelTransformer.finalizeTransformation]], called at the end of [[IModelTransformer.processAll]] and [[IModelTransformer.processChanges]].
207
+ * @beta
208
+ */
209
+ export interface FinalizeTransformationOptions {
210
+ /**
211
+ * This description will be used when the transformer needs to push changes to the branch during a reverse sync.
212
+ * @default `Update provenance in response to a reverse sync to iModel: ${this.targetDb.iModelId}`
213
+ */
214
+ reverseSyncBranchChangesetDescription?: string;
215
+ /**
216
+ * This description will be used when the transformer needs to push changes to master during a reverse sync.
217
+ * @default `Reverse sync of iModel: ${this.sourceDb.iModelId}`
218
+ */
219
+ reverseSyncMasterChangesetDescription?: string;
220
+ /**
221
+ * This description will be used when the transformer needs to push changes to the branch during a forward sync.
222
+ * @default `Forward sync of iModel: ${this.sourceDb.iModelId}`
223
+ */
224
+ forwardSyncBranchChangesetDescription?: string;
225
+ /**
226
+ * This description will be used when the transformer needs to push changes to the branch during a provenance init transform.
227
+ * @default `initialized branch provenance with master iModel: ${this.sourceDb.iModelId}`
228
+ */
229
+ provenanceInitTransformChangesetDescription?: string;
230
+ /** how to call saveChanges on the target. Must call targetDb.saveChanges, should not edit the iModel */
231
+ saveTargetChanges?: (transformer: IModelTransformer) => Promise<void>;
146
232
  }
233
+ /** Arguments you can pass to [[IModelTransformer.initExternalSourceAspects]]
234
+ * @deprecated in 0.1.0. Use [[InitOptions]] (and [[IModelTransformer.initialize]]) instead.
235
+ */
236
+ export type InitFromExternalSourceAspectsArgs = InitOptions;
147
237
  /** Base class used to transform a source iModel into a different target iModel.
148
238
  * @see [iModel Transformation and Data Exchange]($docs/learning/transformer/index.md), [IModelExporter]($transformer), [IModelImporter]($transformer)
149
239
  * @beta
@@ -161,17 +251,57 @@ export declare class IModelTransformer extends IModelExportHandler {
161
251
  readonly targetDb: IModelDb;
162
252
  /** The IModelTransformContext for this IModelTransformer. */
163
253
  readonly context: IModelCloneContext;
254
+ private _syncType?;
164
255
  /** The Id of the Element in the **target** iModel that represents the **source** repository as a whole and scopes its [ExternalSourceAspect]($backend) instances. */
165
256
  get targetScopeElementId(): Id64String;
166
257
  /** map of (unprocessed element, referencing processed element) pairs to the partially committed element that needs the reference resolved
167
258
  * and have some helper methods below for now */
168
259
  protected _pendingReferences: PendingReferenceMap<PartiallyCommittedEntity>;
260
+ /** a set of elements for which source provenance will be explicitly tracked by ExternalSourceAspects */
261
+ protected _elementsWithExplicitlyTrackedProvenance: Set<string>;
169
262
  /** map of partially committed entities to their partial commit progress */
170
263
  protected _partiallyCommittedEntities: EntityMap<PartiallyCommittedEntity>;
171
264
  /** the options that were used to initialize this transformer */
172
265
  private readonly _options;
173
- /** Set if it can be determined whether this is the first source --> target synchronization. */
174
- private _isFirstSynchronization?;
266
+ private _isSynchronization;
267
+ /**
268
+ * 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.
269
+ * 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.
270
+ * 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
271
+ * this private property on the IModelTransformer exists.
272
+ */
273
+ private _allowNoScopingESA;
274
+ static noEsaSyncDirectionErrorMessage: string;
275
+ /**
276
+ * Queries for an esa which matches the props in the provided aspectProps.
277
+ * @param dbToQuery db to run the query on for scope external source
278
+ * @param aspectProps aspectProps to search for @see ExternalSourceAspectProps
279
+ */
280
+ static queryScopeExternalSourceAspect(dbToQuery: IModelDb, aspectProps: ExternalSourceAspectProps): {
281
+ aspectId: Id64String;
282
+ version?: string;
283
+ /** stringified json */
284
+ jsonProperties?: string;
285
+ } | undefined;
286
+ /**
287
+ * Determines the sync direction "forward" or "reverse" of a given sourceDb and targetDb by looking for the scoping ESA.
288
+ * If the sourceDb's iModelId is found as the identifier of the expected scoping ESA in the targetDb, then it is a forward synchronization.
289
+ * If the targetDb's iModelId is found as the identifier of the expected scoping ESA in the sourceDb, then it is a reverse synchronization.
290
+ * @throws if no scoping ESA can be found in either the sourceDb or targetDb which describes a master branch relationship between the two databases.
291
+ * @returns "forward" or "reverse"
292
+ */
293
+ static determineSyncType(sourceDb: IModelDb, targetDb: IModelDb,
294
+ /** @see [[IModelTransformOptions.targetScopeElementId]] */
295
+ targetScopeElementId: Id64String): "forward" | "reverse";
296
+ private determineSyncType;
297
+ get isReverseSynchronization(): boolean;
298
+ get isForwardSynchronization(): boolean;
299
+ private _changesetRanges;
300
+ /**
301
+ * Set if the transformer is being used to perform the provenance initialization step of a fork initialization.
302
+ * In general don't use the transformer for that, prefer [[BranchProvenanceInitializer.initializeBranchProvenance]]
303
+ */
304
+ private _isProvenanceInitTransform?;
175
305
  /** The element classes that are considered to define provenance in the iModel */
176
306
  static get provenanceElementClasses(): (typeof Entity)[];
177
307
  /** The element aspect classes that are considered to define provenance in the iModel */
@@ -186,6 +316,10 @@ export declare class IModelTransformer extends IModelExportHandler {
186
316
  * @param options The options that specify how the transformation should be done.
187
317
  */
188
318
  constructor(source: IModelDb | IModelExporter, target: IModelDb | IModelImporter, options?: IModelTransformOptions);
319
+ /** validates that the importer set on the transformer has the same values for its shared options as the transformer.
320
+ * @note This expects that the importer is already set on the transformer.
321
+ */
322
+ private validateSharedOptionsMatch;
189
323
  /** Dispose any native resources associated with this IModelTransformer. */
190
324
  dispose(): void;
191
325
  /** Log current settings that affect IModelTransformer's behavior. */
@@ -205,44 +339,96 @@ export declare class IModelTransformer extends IModelExportHandler {
205
339
  isReverseSynchronization: boolean;
206
340
  targetScopeElementId: Id64String;
207
341
  }): ExternalSourceAspectProps;
342
+ static initRelationshipProvenanceOptions(sourceRelInstanceId: Id64String, targetRelInstanceId: Id64String, args: {
343
+ sourceDb: IModelDb;
344
+ targetDb: IModelDb;
345
+ isReverseSynchronization: boolean;
346
+ targetScopeElementId: Id64String;
347
+ forceOldRelationshipProvenanceMethod: boolean;
348
+ }): ExternalSourceAspectProps;
349
+ /**
350
+ * Previously the transformer would insert provenance always pointing to the "target" relationship.
351
+ * It should (and now by default does) instead insert provenance pointing to the provenanceSource
352
+ * SEE: https://github.com/iTwin/imodel-transformer/issues/54
353
+ * This exists only to facilitate testing that the transformer can handle the older, flawed method
354
+ */
355
+ private _forceOldRelationshipProvenanceMethod;
208
356
  /** Create an ExternalSourceAspectProps in a standard way for an Element in an iModel --> iModel transformation. */
209
- private initElementProvenance;
357
+ initElementProvenance(sourceElementId: Id64String, targetElementId: Id64String): ExternalSourceAspectProps;
210
358
  /** Create an ExternalSourceAspectProps in a standard way for a Relationship in an iModel --> iModel transformations.
211
359
  * The ExternalSourceAspect is meant to be owned by the Element in the target iModel that is the `sourceId` of transformed relationship.
212
- * The `identifier` property of the ExternalSourceAspect will be the ECInstanceId of the relationship in the source iModel.
213
- * The ECInstanceId of the relationship in the target iModel will be stored in the JsonProperties of the ExternalSourceAspect.
360
+ * The `identifier` property of the ExternalSourceAspect will be the ECInstanceId of the relationship in the master iModel.
361
+ * The ECInstanceId of the relationship in the branch iModel will be stored in the JsonProperties of the ExternalSourceAspect.
214
362
  */
215
363
  private initRelationshipProvenance;
216
- private validateScopeProvenance;
217
- private queryExternalSourceAspectId;
218
- /** Iterate all matching ExternalSourceAspects in the provenance iModel (target unless reverse sync) and call a function for each one. */
364
+ /** NOTE: the json properties must be converted to string before insertion */
365
+ private _targetScopeProvenanceProps;
366
+ /**
367
+ * Index of the changeset that the transformer was at when the transformation begins (was constructed).
368
+ * Used to determine at the end which changesets were part of a synchronization.
369
+ */
370
+ private _startingChangesetIndices;
371
+ private _cachedSynchronizationVersion;
372
+ /** the changeset in the scoping element's source version found for this transformation
373
+ * @note: the version depends on whether this is a reverse synchronization or not, as
374
+ * it is stored separately for both synchronization directions.
375
+ * @note: must call [[initScopeProvenance]] before using this property.
376
+ * @note: empty string and -1 for changeset and index if it has never been transformed or was transformed before federation guid update (pre 1.x).
377
+ */
378
+ private get _synchronizationVersion();
379
+ /** the changeset in the scoping element's source version found for this transformation
380
+ * @note: the version depends on whether this is a reverse synchronization or not, as
381
+ * it is stored separately for both synchronization directions.
382
+ * @note: empty string and -1 for changeset and index if it has never been transformed, or was transformed before federation guid update (pre 1.x).
383
+ */
384
+ protected get synchronizationVersion(): ChangesetIndexAndId;
385
+ /**
386
+ * @returns provenance scope aspect if it exists in the provenanceDb.
387
+ * Provenance scope aspect is created and inserted into provenanceDb when [[initScopeProvenance]] is invoked.
388
+ */
389
+ protected tryGetProvenanceScopeAspect(): ExternalSourceAspect | undefined;
390
+ /**
391
+ * Make sure there are no conflicting other scope-type external source aspects on the *target scope element*,
392
+ * If there are none at all, insert one, then this must be a first synchronization.
393
+ * @returns the last synced version (changesetId) on the target scope's external source aspect,
394
+ * if this was a [BriefcaseDb]($backend)
395
+ */
396
+ protected initScopeProvenance(): void;
397
+ /**
398
+ * Iterate all matching federation guids and ExternalSourceAspects in the provenance iModel (target unless reverse sync)
399
+ * and call a function for each one.
400
+ * @note provenance is done by federation guids where possible
401
+ * @note this may execute on each element more than once! Only use in cases where that is handled
402
+ */
219
403
  static forEachTrackedElement(args: {
220
404
  provenanceSourceDb: IModelDb;
221
405
  provenanceDb: IModelDb;
222
406
  targetScopeElementId: Id64String;
223
407
  isReverseSynchronization: boolean;
224
408
  fn: (sourceElementId: Id64String, targetElementId: Id64String) => void;
409
+ skipPropagateChangesToRootElements: boolean;
225
410
  }): void;
226
411
  private forEachTrackedElement;
227
- /** Initialize the source to target Element mapping from ExternalSourceAspects in the target iModel.
228
- * @note This method is called from all `process*` functions and should never need to be called directly.
229
- * @deprecated in 3.x. call [[initialize]] instead, it does the same thing among other initialization
230
- * @note Passing an [[InitFromExternalSourceAspectsArgs]] is required when processing changes, to remap any elements that may have been deleted.
231
- * 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.
232
- */
233
- initFromExternalSourceAspects(args?: InitFromExternalSourceAspectsArgs): void | Promise<void>;
234
- /** When processing deleted elements in a reverse synchronization, the [[provenanceDb]] (usually a branch iModel) has already
235
- * deleted the [ExternalSourceAspect]($backend)s that tell us which elements in the reverse synchronization target (usually
236
- * a master iModel) should be deleted. We must use the changesets to get the values of those before they were deleted.
237
- */
238
- private remapDeletedSourceElements;
412
+ private _queryProvenanceForElement;
413
+ private _queryProvenanceForRelationship;
414
+ private _queryTargetRelId;
415
+ private _targetClassNameToClassIdCache;
416
+ private _targetClassNameToClassId;
417
+ private _getRelClassId;
418
+ private _queryElemIdByFedGuid;
239
419
  /** Returns `true` if *brute force* delete detections should be run.
420
+ * @note This is only called if [[IModelTransformOptions.forceExternalSourceAspectProvenance]] option is true
240
421
  * @note Not relevant for processChanges when change history is known.
241
422
  */
242
423
  protected shouldDetectDeletes(): boolean;
243
- /** Detect Element deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against Elements in the source iModel.
244
- * @see processChanges
245
- * @note This method is called from [[processAll]] and is not needed by [[processChanges]], so it only needs to be called directly when processing a subset of an iModel.
424
+ /**
425
+ * Detect Element deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against Elements
426
+ * in the source iModel.
427
+ * @deprecated in 1.x. Do not use this. // FIXME<MIKE>: how to better explain this?
428
+ * This method is only called during [[processAll]] when the option
429
+ * [[IModelTransformOptions.forceExternalSourceAspectProvenance]] is enabled. It is not
430
+ * necessary when using [[processChanges]] since changeset information is sufficient.
431
+ * @note you do not need to call this directly unless processing a subset of an iModel.
246
432
  * @throws [[IModelError]] If the required provenance information is not available to detect deletes.
247
433
  */
248
434
  detectElementDeletes(): Promise<void>;
@@ -257,12 +443,14 @@ export declare class IModelTransformer extends IModelExportHandler {
257
443
  * @note This can be called more than once for an element in arbitrary order, so it should not have side-effects.
258
444
  */
259
445
  onTransformElement(sourceElement: Element): ElementProps;
446
+ private _hasElementChangedCache?;
447
+ private _deletedSourceRelationshipData?;
260
448
  /** Returns true if a change within sourceElement is detected.
261
449
  * @param sourceElement The Element from the source iModel
262
450
  * @param targetElementId The Element from the target iModel to compare against.
263
451
  * @note A subclass can override this method to provide custom change detection behavior.
264
452
  */
265
- protected hasElementChanged(sourceElement: Element, targetElementId: Id64String): boolean;
453
+ protected hasElementChanged(sourceElement: Element, _targetElementId: Id64String): boolean;
266
454
  private static transformCallbackFor;
267
455
  /** callback to perform when a partial element says it's ready to be completed
268
456
  * transforms the source element with all references now valid, then updates the partial element with the results
@@ -335,6 +523,19 @@ export declare class IModelTransformer extends IModelExportHandler {
335
523
  * @deprecated in 3.x. This method is no longer necessary since the transformer no longer needs to defer elements
336
524
  */
337
525
  processDeferredElements(_numRetries?: number): Promise<void>;
526
+ /** called at the end ([[finalizeTransformation]]) of a transformation,
527
+ * updates the target scope element to say that transformation up through the
528
+ * source's changeset has been performed. Also stores all changesets that occurred
529
+ * during the transformation as "pending synchronization changeset indices" @see TargetScopeProvenanceJsonProps
530
+ *
531
+ * You generally should not call this function yourself and use [[processChanges]] instead.
532
+ * It is public for unsupported use cases of custom synchronization transforms.
533
+ * @note if you are not running processChanges in this transformation, this will fail
534
+ * without setting the `force` option to `true`
535
+ */
536
+ updateSynchronizationVersion({ force }?: {
537
+ force?: boolean | undefined;
538
+ }): void;
338
539
  private finalizeTransformation;
339
540
  /** Imports all relationships that subclass from the specified base class.
340
541
  * @param baseRelClassFullName The specified base relationship class.
@@ -355,6 +556,7 @@ export declare class IModelTransformer extends IModelExportHandler {
355
556
  onDeleteRelationship(sourceRelInstanceId: Id64String): void;
356
557
  private _yieldManager;
357
558
  /** Detect Relationship deletes using ExternalSourceAspects in the target iModel and a *brute force* comparison against relationships in the source iModel.
559
+ * @deprecated in 1.x. Don't use this anymore
358
560
  * @see processChanges
359
561
  * @note This method is called from [[processAll]] and is not needed by [[processChanges]], so it only needs to be called directly when processing a subset of an iModel.
360
562
  * @throws [[IModelError]] If the required provenance information is not available to detect deletes.
@@ -406,8 +608,8 @@ export declare class IModelTransformer extends IModelExportHandler {
406
608
  */
407
609
  processSchemas(): Promise<void>;
408
610
  /** Cause all fonts to be exported from the source iModel and imported into the target iModel.
409
- * @note This method is called from [[processChanges]] and [[processAll]], so it only needs to be called directly when processing a subset of an iModel.
410
- */
611
+ * @note This method is called from [[processChanges]] and [[processAll]], so it only needs to be called directly when processing a subset of an iModel.
612
+ */
411
613
  processFonts(): Promise<void>;
412
614
  /** Override of [IModelExportHandler.onExportFont]($transformer) that imports a font into the target iModel when it is exported from the source iModel. */
413
615
  onExportFont(font: FontProps, _isUpdate: boolean | undefined): void;
@@ -429,17 +631,41 @@ export declare class IModelTransformer extends IModelExportHandler {
429
631
  processSubject(sourceSubjectId: Id64String, targetSubjectId: Id64String): Promise<void>;
430
632
  /** state to prevent reinitialization, @see [[initialize]] */
431
633
  private _initialized;
634
+ private _sourceChangeDataState;
635
+ /** length === 0 when _changeDataState = "no-change", length > 0 means "has-changes", otherwise undefined */
636
+ private _csFileProps?;
432
637
  /**
433
- * Initialize prerequisites of processing, you must initialize with an [[InitFromExternalSourceAspectsArgs]] if you
434
- * are intending process changes, but prefer using [[processChanges]]
435
- * Called by all `process*` functions implicitly.
638
+ * Initialize prerequisites of processing, you must initialize with an [[InitOptions]] if you
639
+ * are intending to process changes, but prefer using [[processChanges]] explicitly since it calls this.
640
+ * @note Called by all `process*` functions implicitly.
436
641
  * Overriders must call `super.initialize()` first
437
642
  */
438
- initialize(args?: InitFromExternalSourceAspectsArgs): Promise<void>;
643
+ initialize(args?: InitOptions): Promise<void>;
644
+ /**
645
+ * Reads all the changeset files in the private member of the transformer: _csFileProps and does two things with these changesets.
646
+ * Finds the corresponding target entity for any deleted source entities and remaps the sourceId to the targetId.
647
+ * Populates this._hasElementChangedCache with a set of elementIds that have been updated or inserted into the database.
648
+ * This function returns early if csFileProps is undefined or is of length 0.
649
+ * @returns void
650
+ */
651
+ private processChangesets;
652
+ /**
653
+ * Helper function for processChangesets. Remaps the id of element deleted found in the 'change' to an element in the targetDb.
654
+ * @param change the change to process, must be of changeType "Deleted"
655
+ * @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.
656
+ * 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.
657
+ * @param isRelationship is relationship or not
658
+ * @param alreadyImportedElementInserts used to handle entity recreation and not delete already handled element inserts.
659
+ * @param alreadyImportedModelInserts used to handle entity recreation and not delete already handled model inserts.
660
+ * @returns void
661
+ */
662
+ private processDeletedOp;
663
+ private _tryInitChangesetData;
439
664
  /** Export everything from the source iModel and import the transformed entities into the target iModel.
440
- * @note [[processSchemas]] is not called automatically since the target iModel may want a different collection of schemas.
441
- */
442
- processAll(): Promise<void>;
665
+ * @note [[processSchemas]] is not called automatically since the target iModel may want a different collection of schemas.
666
+ */
667
+ processAll(options?: FinalizeTransformationOptions): Promise<void>;
668
+ /** previous provenance, either a federation guid, a `${sourceFedGuid}/${targetFedGuid}` pair, or required aspect props */
443
669
  private _lastProvenanceEntityInfo;
444
670
  private markLastProvenance;
445
671
  /** @internal the name of the table where javascript state of the transformer is serialized in transformer state dumps */
@@ -454,7 +680,7 @@ export declare class IModelTransformer extends IModelExportHandler {
454
680
  */
455
681
  protected loadStateFromDb(db: SQLiteDb): void;
456
682
  /**
457
- * @deprecated in 0.1.x, this is buggy, and with 1.x it will be equivalently efficient to simply restart the transformation
683
+ * @deprecated in 0.1.x, this is buggy, and it is now equivalently efficient to simply restart the transformation
458
684
  * from the original changeset
459
685
  *
460
686
  * Return a new transformer instance with the same remappings state as saved from a previous [[IModelTransformer.saveStateToFile]] call.
@@ -486,7 +712,7 @@ export declare class IModelTransformer extends IModelExportHandler {
486
712
  */
487
713
  protected saveStateToDb(db: SQLiteDb): void;
488
714
  /**
489
- * @deprecated in 0.1.x, this is buggy, and with 1.x it will be equivalently efficient to simply restart the transformation
715
+ * @deprecated in 0.1.x, this is buggy, and it is now equivalently efficient to simply restart the transformation
490
716
  * from the original changeset
491
717
  *
492
718
  * Save the state of the active transformation to a file path, if a file at the path already exists, it will be overwritten
@@ -499,12 +725,23 @@ export declare class IModelTransformer extends IModelExportHandler {
499
725
  */
500
726
  saveStateToFile(nativeStatePath: string): void;
501
727
  /** Export changes from the source iModel and import the transformed entities into the target iModel.
502
- * @note To form a range of versions to process, set `startChangesetId` for the start (inclusive)
503
- * of the desired range and open the source iModel as of the end (inclusive) of the desired range.
504
- */
505
- processChanges(args: ProcessChangesOptions): Promise<void>;
506
- /** @deprecated in 0.1.x, use a single [[ProcessChangesOptions]] object instead */
507
- processChanges(accessToken: AccessToken, startChangesetId?: string): Promise<void>;
728
+ * Inserts, updates, and deletes are determined by inspecting the changeset(s).
729
+ * @note the transformer saves and pushes changes when its work is complete.
730
+ * @note if no startChangesetId or startChangeset option is provided as part of the ProcessChangesOptions, the next unsynchronized changeset
731
+ * will automatically be determined and used
732
+ * @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.
733
+ */
734
+ processChanges(options: ProcessChangesOptions): Promise<void>;
735
+ /** Changeset data must be initialized in order to build correct changeOptions.
736
+ * Call [[IModelTransformer.initialize]] for initialization of synchronization provenance data
737
+ */
738
+ private getExportInitOpts;
739
+ /** Combine an array of source elements into a single target element.
740
+ * All source and target elements must be created before calling this method.
741
+ * The "combine" operation is a remap and no properties from the source elements will be exported into the target
742
+ * and provenance will be explicitly tracked by ExternalSourceAspects
743
+ */
744
+ combineElements(sourceElementIds: Id64Array, targetElementId: Id64String): void;
508
745
  }
509
746
  /** IModelTransformer that clones the contents of a template model.
510
747
  * @beta
@@ -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":"AAUA,OAAO,EACL,WAAW,EAOX,SAAS,EACT,UAAU,EAMX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,gBAAgB,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAYL,OAAO,EACP,aAAa,EACb,kBAAkB,EAGlB,mBAAmB,EACnB,MAAM,EAGN,oBAAoB,EAKpB,QAAQ,EAKR,KAAK,EAGL,YAAY,EACZ,iBAAiB,EAIjB,QAAQ,EAGT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,mBAAmB,EAGnB,QAAQ,EAER,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EAIT,UAAU,EACV,WAAW,EACX,WAAW,EAKZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EAEpB,kBAAkB,EAClB,cAAc,EAEd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EAEd,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAoB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAa,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAmB1D;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAElC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IAExC;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;;OASG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;;;;OAQG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;;;;;;;;;OAYG;IACH,4BAA4B,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEnD;;;;;;;;;;;OAWG;IACH,0BAA0B,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEjD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAE3C;;;;;OAKG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAE9C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;IACH,yCAAyC,CAAC,EAAE,OAAO,CAAC;IAEpD;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,gBAAgB,GAAG,QAAQ,CAAC;IAC7D;;;OAGG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC9C;AAED;;;GAGG;AACH,cAAM,wBAAwB;IAE1B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW;;IANnB;;;;OAIG;IACK,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,MAAM,IAAI;IAE1B,gBAAgB,CAAC,EAAE,EAAE,eAAe;IAIpC,aAAa;CAGrB;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,kCAAkC,EAAE,MAAM,EAAE,CAAC;IAC7C;;;;OAIG;IACH,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAwCD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GACtD,6BAA6B,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,qCAAqC,CAAC,EAAE,MAAM,CAAC;IAC/C;;;OAGG;IACH,qCAAqC,CAAC,EAAE,MAAM,CAAC;IAC/C;;;OAGG;IACH,qCAAqC,CAAC,EAAE,MAAM,CAAC;IAC/C;;;OAGG;IACH,2CAA2C,CAAC,EAAE,MAAM,CAAC;IACrD,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAQD;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,WAAW,CAAC;AAI5D;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,kEAAkE;IAClE,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,kEAAkE;IAClE,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC;;OAEG;IACH,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,oCAAoC;IACpC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,6DAA6D;IAC7D,SAAgB,OAAO,EAAE,kBAAkB,CAAC;IAC5C,OAAO,CAAC,SAAS,CAAC,CAAW;IAE7B,qKAAqK;IACrK,IAAW,oBAAoB,IAAI,UAAU,CAE5C;IAED;oDACgD;IAChD,SAAS,CAAC,kBAAkB,gDAC0B;IAEtD,wGAAwG;IACxG,SAAS,CAAC,wCAAwC,cAAyB;IAE3E,2EAA2E;IAC3E,SAAS,CAAC,2BAA2B,sCACO;IAE5C,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IAEF,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAAS;IAEnC,OAAc,8BAA8B,SAC8L;IAE1O;;;;OAIG;WACW,8BAA8B,CAC1C,SAAS,EAAE,QAAQ,EACnB,WAAW,EAAE,yBAAyB,GAEpC;QACE,QAAQ,EAAE,UAAU,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,uBAAuB;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACD,SAAS;IA8Bb;;;;;;OAMG;WACW,iBAAiB,CAC7B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ;IAClB,2DAA2D;IAC3D,oBAAoB,EAAE,UAAU,GAC/B,SAAS,GAAG,SAAS;IAoCxB,OAAO,CAAC,iBAAiB;IAyBzB,IAAW,wBAAwB,IAAI,OAAO,CAG7C;IAED,IAAW,wBAAwB,IAAI,OAAO,CAG7C;IAED,OAAO,CAAC,gBAAgB,CAA6C;IAErE;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAC,CAAU;IAE7C,iFAAiF;IACjF,WAAkB,wBAAwB,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAO9D;IAED,wFAAwF;IACxF,WAAkB,8BAA8B,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,CAEpE;IAED;;OAEG;IACH,SAAS,CAAC,gBAAgB,iEAAwB;IAElD;;;;OAIG;gBAED,MAAM,EAAE,QAAQ,GAAG,cAAc,EACjC,MAAM,EAAE,QAAQ,GAAG,cAAc,EACjC,OAAO,CAAC,EAAE,sBAAsB;IA+ElC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAmBlC,2EAA2E;IACpE,OAAO,IAAI,IAAI;IAKtB,qEAAqE;IACrE,OAAO,CAAC,WAAW;IAuDnB;;OAEG;IACH,IAAW,YAAY,IAAI,QAAQ,CAElC;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,QAAQ,CAExC;IAED,mHAAmH;WACrG,4BAA4B,CACxC,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,EAC3B,IAAI,EAAE;QACJ,QAAQ,EAAE,QAAQ,CAAC;QACnB,QAAQ,EAAE,QAAQ,CAAC;QAEnB,wBAAwB,EAAE,OAAO,CAAC;QAClC,oBAAoB,EAAE,UAAU,CAAC;KAClC,GACA,yBAAyB;WAwBd,iCAAiC,CAC7C,mBAAmB,EAAE,UAAU,EAC/B,mBAAmB,EAAE,UAAU,EAC/B,IAAI,EAAE;QACJ,QAAQ,EAAE,QAAQ,CAAC;QACnB,QAAQ,EAAE,QAAQ,CAAC;QACnB,wBAAwB,EAAE,OAAO,CAAC;QAClC,oBAAoB,EAAE,UAAU,CAAC;QACjC,oCAAoC,EAAE,OAAO,CAAC;KAC/C,GACA,yBAAyB;IAuC5B;;;;;OAKG;IACH,OAAO,CAAC,qCAAqC,CAAS;IAEtD,mHAAmH;IAC5G,qBAAqB,CAC1B,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,GAC1B,yBAAyB;IAa5B;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAkBlC,6EAA6E;IAC7E,OAAO,CAAC,2BAA2B,CAIT;IAE1B;;;OAGG;IACH,OAAO,CAAC,yBAAyB,CAKP;IAE1B,OAAO,CAAC,6BAA6B,CACzB;IAEZ;;;;;OAKG;IACH,OAAO,KAAK,uBAAuB,GAoBlC;IAED;;;;OAIG;IACH,SAAS,KAAK,sBAAsB,IAAI,mBAAmB,CAwB1D;IAED;;;OAGG;IACH,SAAS,CAAC,2BAA2B,IAAI,oBAAoB,GAAG,SAAS;IAkBzE;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAoFrC;;;;;OAKG;WACW,qBAAqB,CAAC,IAAI,EAAE;QACxC,kBAAkB,EAAE,QAAQ,CAAC;QAC7B,YAAY,EAAE,QAAQ,CAAC;QACvB,oBAAoB,EAAE,UAAU,CAAC;QACjC,wBAAwB,EAAE,OAAO,CAAC;QAClC,EAAE,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,KAAK,IAAI,CAAC;QACvE,kCAAkC,EAAE,OAAO,CAAC;KAC7C,GAAG,IAAI;IAgHR,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,+BAA+B;IA4CvC,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,8BAA8B,CAA6B;IAEnE,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,qBAAqB;IAe7B;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,OAAO;IAMxC;;;;;;;;;OASG;IACU,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BlD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI;IAOpD;;;;;OAKG;IACI,kBAAkB,CAAC,aAAa,EAAE,OAAO,GAAG,YAAY;IAqB/D,OAAO,CAAC,uBAAuB,CAAC,CAA8B;IAC9D,OAAO,CAAC,8BAA8B,CAAC,CASzB;IAEd;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CACzB,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,UAAU,GAC3B,OAAO;IAcV,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAmBnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6BlC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA2DjC;;;OAGG;IACU,cAAc,CAAC,eAAe,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvE;;;OAGG;IACU,oBAAoB,CAC/B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;IACa,mBAAmB,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO;IAIrD,aAAa,CAAC,eAAe,EAAE,UAAU,GAAG,IAAI;IAyBhE;;;OAGG;IACmB,gBAAgB,CACpC,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IA2DhB,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACa,eAAe,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAqH7D,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACa,eAAe,CAAC,eAAe,EAAE,UAAU,GAAG,IAAI;IAQlE;;OAEG;IACa,aAAa,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI;IAsBvD,iMAAiM;IACjL,aAAa,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI;IAqD9D,0CAA0C;IAC1C,OAAO,CAAC,gCAAgC;IAQxC;;;OAGG;IACU,YAAY,CAAC,sBAAsB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5E;;;;;OAKG;IACU,oBAAoB,CAC/B,aAAa,EAAE,UAAU,EACzB,aAAa,EAAE,UAAU,EACzB,oBAAoB,GAAE,MAA8B,GACnD,OAAO,CAAC,IAAI,CAAC;IAUhB,0JAA0J;YAC5I,uBAAuB;IA2CrC;;;;;OAKG;IACI,gBAAgB,CACrB,WAAW,EAAE,KAAK,EAClB,sBAAsB,EAAE,UAAU,GACjC,UAAU;IAcb;;OAEG;IACU,uBAAuB,CAClC,WAAW,GAAE,MAAU,GACtB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;;;;;;OASG;IACI,4BAA4B,CAAC,EAAE,KAAa,EAAE;;KAAK;YA6G5C,sBAAsB;IAkEpC;;;OAGG;IACU,oBAAoB,CAC/B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;IACa,wBAAwB,CACtC,mBAAmB,EAAE,YAAY,GAChC,OAAO;IAIV;;OAEG;IACa,oBAAoB,CAAC,kBAAkB,EAAE,YAAY,GAAG,IAAI;IA8C5E;;OAEG;IACa,oBAAoB,CAAC,mBAAmB,EAAE,UAAU,GAAG,IAAI;IA+C3E,OAAO,CAAC,aAAa,CAAsB;IAE3C;;;;;OAKG;IACU,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqDvD;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC/B,kBAAkB,EAAE,YAAY,GAC/B,iBAAiB;IA0BJ,yBAAyB,CAAC,MAAM,EAAE,aAAa;IAM/D;;OAEG;IACa,2BAA2B,CACzC,YAAY,EAAE,mBAAmB,GAChC,IAAI;IAcP;;;OAGG;IACa,2BAA2B,CACzC,aAAa,EAAE,kBAAkB,EAAE,GAClC,IAAI;IA4BP;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,CAChC,mBAAmB,EAAE,aAAa,EAClC,gBAAgB,EAAE,UAAU,GAC3B,kBAAkB;IAMrB,iFAAiF;IACjF,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAGhC;IAEF;;OAEG;IACa,kBAAkB,CAChC,SAAS,EAAE,gBAAgB,CAAC,SAAS,GACpC,OAAO;IASV,OAAO,CAAC,oBAAoB,CAA6B;IAEzD;;;;;;;OAOG;IACmB,cAAc,CAClC,MAAM,EAAE,gBAAgB,CAAC,MAAM,GAC9B,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC;IA4BrC,OAAO,CAAC,+BAA+B;IAUvC;;;OAGG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5C;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C,0JAA0J;IAC1I,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,IAAI;IAIP;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9C;;OAEG;IACU,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;IACa,oBAAoB,CAAC,eAAe,EAAE,QAAQ,GAAG,OAAO;IAIxE,kKAAkK;IAClJ,gBAAgB,CAAC,cAAc,EAAE,QAAQ,GAAG,IAAI;IAIhE,6FAA6F;IAChF,cAAc,CACzB,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,UAAU,GAC1B,OAAO,CAAC,IAAI,CAAC;IAUhB,6DAA6D;IAC7D,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,sBAAsB,CAA+B;IAC7D,6GAA6G;IAC7G,OAAO,CAAC,YAAY,CAAC,CAAmC;IAExD;;;;;OAKG;IACU,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D;;;;;;OAMG;YACW,iBAAiB;IA6G/B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;YAoIV,qBAAqB;IA6FnC;;OAEG;IACU,UAAU,CACrB,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,IAAI,CAAC;IAwChB,0HAA0H;IAC1H,OAAO,CAAC,yBAAyB,CACF;IAE/B,OAAO,CAAC,kBAAkB;IAiB1B,yHAAyH;IACzH,gBAAuB,YAAY,wBAAwB;IAE3D,iHAAiH;IACjH,gBAAuB,6BAA6B,8BACvB;IAE7B;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IAsG7C;;;;;;;;;;;;;OAaG;WACW,oBAAoB,CAChC,QAAQ,SAAS,KACf,GAAG,CAAC,EAAE,GAAG,EAAE,KACR,iBAAiB,GAAG,OAAO,iBAAiB,EAEjD,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,eAAe,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAClD,YAAY,CAAC,QAAQ,CAAC;IAYzB;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,GAAG;IAIvC;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI;IAE9D;;;;;OAKG;IACH,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IAqE3C;;;;;;;;;;;OAWG;IACI,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAarD;;;;;;OAMG;IACU,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;;OAIG;IACI,eAAe,CACpB,gBAAgB,EAAE,SAAS,EAC3B,eAAe,EAAE,UAAU;CAO9B;AAYD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,8CAA8C;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,gIAAgI;IAChI,OAAO,CAAC,sBAAsB,CAAC,CAA8B;IAC7D;;;;;OAKG;gBACgB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAE,QAAmB;IAMpE;;;;;;OAMG;IACU,eAAe,CAC1B,qBAAqB,EAAE,UAAU,EACjC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAkBvC;;;;;;OAMG;IACU,eAAe,CAC1B,qBAAqB,EAAE,UAAU,EACjC,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAkBvC,4EAA4E;IAC5D,kBAAkB,CAAC,aAAa,EAAE,OAAO,GAAG,YAAY;CAsDzE"}