@itwin/imodel-transformer 2.0.0-dev.7 → 2.0.0-dev.71
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/README.md +13 -27
- package/lib/cjs/Algo.d.ts +0 -4
- package/lib/cjs/Algo.d.ts.map +1 -1
- package/lib/cjs/Algo.js +0 -11
- package/lib/cjs/Algo.js.map +1 -1
- package/lib/cjs/BigMap.d.ts.map +1 -1
- package/lib/cjs/BigMap.js.map +1 -1
- package/lib/cjs/BranchProvenanceInitializer.d.ts.map +1 -1
- package/lib/cjs/BranchProvenanceInitializer.js +26 -26
- package/lib/cjs/BranchProvenanceInitializer.js.map +1 -1
- package/lib/cjs/ChangedElementForest.d.ts +14 -0
- package/lib/cjs/ChangedElementForest.d.ts.map +1 -0
- package/lib/cjs/ChangedElementForest.js +86 -0
- package/lib/cjs/ChangedElementForest.js.map +1 -0
- package/lib/cjs/ChangesetScanner.d.ts +141 -0
- package/lib/cjs/ChangesetScanner.d.ts.map +1 -0
- package/lib/cjs/ChangesetScanner.js +187 -0
- package/lib/cjs/ChangesetScanner.js.map +1 -0
- package/lib/cjs/ECReferenceTypesCache.d.ts +0 -4
- package/lib/cjs/ECReferenceTypesCache.d.ts.map +1 -1
- package/lib/cjs/ECReferenceTypesCache.js +61 -111
- package/lib/cjs/ECReferenceTypesCache.js.map +1 -1
- package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.d.ts.map +1 -1
- package/lib/cjs/ECSqlReaderAsyncIterableIteratorAdapter.js.map +1 -1
- package/lib/cjs/ElementAspectCleanup.d.ts +16 -0
- package/lib/cjs/ElementAspectCleanup.d.ts.map +1 -0
- package/lib/cjs/ElementAspectCleanup.js +87 -0
- package/lib/cjs/ElementAspectCleanup.js.map +1 -0
- package/lib/cjs/ElementAspectExportCoordinator.d.ts +44 -0
- package/lib/cjs/ElementAspectExportCoordinator.d.ts.map +1 -0
- package/lib/cjs/ElementAspectExportCoordinator.js +148 -0
- package/lib/cjs/ElementAspectExportCoordinator.js.map +1 -0
- package/lib/cjs/ElementAspectExportProcessor.d.ts +44 -0
- package/lib/cjs/ElementAspectExportProcessor.d.ts.map +1 -0
- package/lib/cjs/ElementAspectExportProcessor.js +152 -0
- package/lib/cjs/ElementAspectExportProcessor.js.map +1 -0
- package/lib/cjs/ElementBulkDelete.d.ts +30 -0
- package/lib/cjs/ElementBulkDelete.d.ts.map +1 -0
- package/lib/cjs/ElementBulkDelete.js +358 -0
- package/lib/cjs/ElementBulkDelete.js.map +1 -0
- package/lib/cjs/EntityExistenceCache.d.ts +43 -0
- package/lib/cjs/EntityExistenceCache.d.ts.map +1 -0
- package/lib/cjs/EntityExistenceCache.js +91 -0
- package/lib/cjs/EntityExistenceCache.js.map +1 -0
- package/lib/cjs/EntityUnifier.d.ts +7 -7
- package/lib/cjs/EntityUnifier.d.ts.map +1 -1
- package/lib/cjs/EntityUnifier.js +55 -24
- package/lib/cjs/EntityUnifier.js.map +1 -1
- package/lib/cjs/IModelCloneContext.d.ts +9 -3
- package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelCloneContext.js +56 -22
- package/lib/cjs/IModelCloneContext.js.map +1 -1
- package/lib/cjs/IModelExporter.d.ts +180 -43
- package/lib/cjs/IModelExporter.d.ts.map +1 -1
- package/lib/cjs/IModelExporter.js +946 -247
- package/lib/cjs/IModelExporter.js.map +1 -1
- package/lib/cjs/IModelImporter.d.ts +75 -30
- package/lib/cjs/IModelImporter.d.ts.map +1 -1
- package/lib/cjs/IModelImporter.js +292 -132
- package/lib/cjs/IModelImporter.js.map +1 -1
- package/lib/cjs/IModelTransformContext.d.ts +54 -0
- package/lib/cjs/IModelTransformContext.d.ts.map +1 -0
- package/lib/cjs/IModelTransformContext.js +3 -0
- package/lib/cjs/IModelTransformContext.js.map +1 -0
- package/lib/cjs/IModelTransformer.d.ts +184 -206
- package/lib/cjs/IModelTransformer.d.ts.map +1 -1
- package/lib/cjs/IModelTransformer.js +819 -1278
- package/lib/cjs/IModelTransformer.js.map +1 -1
- package/lib/cjs/IModelTransformerError.d.ts +84 -0
- package/lib/cjs/IModelTransformerError.d.ts.map +1 -0
- package/lib/cjs/IModelTransformerError.js +93 -0
- package/lib/cjs/IModelTransformerError.js.map +1 -0
- package/lib/cjs/ProvenanceManager.d.ts +177 -0
- package/lib/cjs/ProvenanceManager.d.ts.map +1 -0
- package/lib/cjs/ProvenanceManager.js +719 -0
- package/lib/cjs/ProvenanceManager.js.map +1 -0
- package/lib/cjs/SourceClassKinds.d.ts +22 -0
- package/lib/cjs/SourceClassKinds.d.ts.map +1 -0
- package/lib/cjs/SourceClassKinds.js +60 -0
- package/lib/cjs/SourceClassKinds.js.map +1 -0
- package/lib/cjs/SyncTypeResolver.d.ts +32 -0
- package/lib/cjs/SyncTypeResolver.d.ts.map +1 -0
- package/lib/cjs/SyncTypeResolver.js +92 -0
- package/lib/cjs/SyncTypeResolver.js.map +1 -0
- package/lib/cjs/TransformerLoggerCategory.d.ts +1 -1
- package/lib/cjs/TransformerLoggerCategory.js +1 -1
- package/lib/cjs/TransformerLoggerCategory.js.map +1 -1
- package/lib/cjs/TransformerPackageMetadata.d.ts +8 -0
- package/lib/cjs/TransformerPackageMetadata.d.ts.map +1 -0
- package/lib/cjs/TransformerPackageMetadata.js +47 -0
- package/lib/cjs/TransformerPackageMetadata.js.map +1 -0
- package/lib/cjs/imodel-transformer.d.ts +28 -0
- package/lib/cjs/imodel-transformer.d.ts.map +1 -1
- package/lib/cjs/imodel-transformer.js +61 -34
- package/lib/cjs/imodel-transformer.js.map +1 -1
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.d.ts +29 -0
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.d.ts.map +1 -0
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.js +212 -0
- package/lib/cjs/schema-processing/DynamicSchemaUnionStrategy.js.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.d.ts +25 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.d.ts.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.js +196 -0
- package/lib/cjs/schema-processing/SchemaProcessingCoordinator.js.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.d.ts +59 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.d.ts.map +1 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.js +28 -0
- package/lib/cjs/schema-processing/SchemaProcessingStrategy.js.map +1 -0
- package/lib/cjs/schema-processing.d.ts +7 -0
- package/lib/cjs/schema-processing.d.ts.map +1 -0
- package/lib/cjs/schema-processing.js +27 -0
- package/lib/cjs/schema-processing.js.map +1 -0
- package/package.json +70 -57
- package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts +0 -16
- package/lib/cjs/DetachedExportElementAspectsStrategy.d.ts.map +0 -1
- package/lib/cjs/DetachedExportElementAspectsStrategy.js +0 -106
- package/lib/cjs/DetachedExportElementAspectsStrategy.js.map +0 -1
- package/lib/cjs/ElementCascadingDeleter.d.ts +0 -22
- package/lib/cjs/ElementCascadingDeleter.d.ts.map +0 -1
- package/lib/cjs/ElementCascadingDeleter.js +0 -57
- package/lib/cjs/ElementCascadingDeleter.js.map +0 -1
- package/lib/cjs/EntityMap.d.ts +0 -26
- package/lib/cjs/EntityMap.d.ts.map +0 -1
- package/lib/cjs/EntityMap.js +0 -54
- package/lib/cjs/EntityMap.js.map +0 -1
- package/lib/cjs/ExportElementAspectsStrategy.d.ts +0 -35
- package/lib/cjs/ExportElementAspectsStrategy.d.ts.map +0 -1
- package/lib/cjs/ExportElementAspectsStrategy.js +0 -52
- package/lib/cjs/ExportElementAspectsStrategy.js.map +0 -1
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.d.ts +0 -12
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.d.ts.map +0 -1
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.js +0 -47
- package/lib/cjs/ExportElementAspectsWithElementsStrategy.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module iModels
|
|
3
3
|
*/
|
|
4
|
-
import { BriefcaseDb,
|
|
5
|
-
import { Id64Arg, Id64String } from "@itwin/core-bentley";
|
|
4
|
+
import { BriefcaseDb, ChangeInstance, Element, ElementAspect, ElementMultiAspect, ElementUniqueAspect, IModelDb, IModelJsNative, Model, Relationship, SqliteChangeOp } from "@itwin/core-backend";
|
|
5
|
+
import { GuidString, Id64Arg, Id64String } from "@itwin/core-bentley";
|
|
6
6
|
import { ChangesetFileProps, CodeSpec, FontFamilyDescriptor, FontProps } from "@itwin/core-common";
|
|
7
7
|
import { Schema, SchemaKey } from "@itwin/ecschema-metadata";
|
|
8
|
-
import {
|
|
8
|
+
import { ElementAspectExportCoordinator } from "./ElementAspectExportCoordinator";
|
|
9
9
|
/**
|
|
10
10
|
* @beta
|
|
11
11
|
* The (optional) result of [[IModelExportHandler.onExportSchema]]
|
|
@@ -60,6 +60,17 @@ export type ExportChangesOptions = {
|
|
|
60
60
|
index?: number;
|
|
61
61
|
};
|
|
62
62
|
} | {});
|
|
63
|
+
/** The FederationGuids of a relationship's source and target elements, read by [[IModelExporter]] while it reads the relationship.
|
|
64
|
+
* A missing property means that endpoint element has no FederationGuid.
|
|
65
|
+
* @see [[IModelExportHandler.onExportRelationship]]
|
|
66
|
+
* @beta
|
|
67
|
+
*/
|
|
68
|
+
export interface RelationshipEndpointFederationGuids {
|
|
69
|
+
/** The FederationGuid of the relationship's source element. */
|
|
70
|
+
source?: GuidString;
|
|
71
|
+
/** The FederationGuid of the relationship's target element. */
|
|
72
|
+
target?: GuidString;
|
|
73
|
+
}
|
|
63
74
|
/** Handles the events generated by IModelExporter.
|
|
64
75
|
* @note Change information is available when `IModelExportHandler` methods are invoked via [IModelExporter.exportChanges]($transformer), but not available when invoked via [IModelExporter.exportAll]($transformer).
|
|
65
76
|
* @note The handler is intended to be owned by (registered with) and called from the IModelExporter exclusively
|
|
@@ -70,35 +81,37 @@ export declare abstract class IModelExportHandler {
|
|
|
70
81
|
/** If `true` is returned, then the CodeSpec will be exported.
|
|
71
82
|
* @note This method can optionally be overridden to exclude an individual CodeSpec from the export. The base implementation always returns `true`.
|
|
72
83
|
*/
|
|
73
|
-
shouldExportCodeSpec(_codeSpec: CodeSpec): boolean
|
|
84
|
+
shouldExportCodeSpec(_codeSpec: CodeSpec): Promise<boolean>;
|
|
74
85
|
/** Called when a CodeSpec should be exported.
|
|
75
86
|
* @param codeSpec The CodeSpec to export
|
|
76
87
|
* @param isUpdate If defined, then `true` indicates an UPDATE operation while `false` indicates an INSERT operation. If not defined, then INSERT vs. UPDATE is not known.
|
|
77
88
|
* @note This should be overridden to actually do the export.
|
|
78
89
|
*/
|
|
79
|
-
onExportCodeSpec(_codeSpec: CodeSpec, _isUpdate: boolean | undefined): void
|
|
90
|
+
onExportCodeSpec(_codeSpec: CodeSpec, _isUpdate: boolean | undefined): Promise<void>;
|
|
80
91
|
/** Called when a font should be exported.
|
|
81
92
|
* @param font The font to export
|
|
82
93
|
* @param isUpdate If defined, then `true` indicates an UPDATE operation while `false` indicates an INSERT operation. If not defined, then INSERT vs. UPDATE is not known.
|
|
83
94
|
* @note This should be overridden to actually do the export.
|
|
84
95
|
*/
|
|
85
|
-
onExportFont(_font: FontProps, _isUpdate: boolean | undefined): void
|
|
96
|
+
onExportFont(_font: FontProps, _isUpdate: boolean | undefined): Promise<void>;
|
|
86
97
|
/** Called when a model should be exported.
|
|
87
98
|
* @param model The model to export
|
|
88
99
|
* @param isUpdate If defined, then `true` indicates an UPDATE operation while `false` indicates an INSERT operation. If not defined, then INSERT vs. UPDATE is not known.
|
|
89
100
|
* @note This should be overridden to actually do the export.
|
|
90
101
|
*/
|
|
91
|
-
onExportModel(_model: Model, _isUpdate: boolean | undefined): void
|
|
102
|
+
onExportModel(_model: Model, _isUpdate: boolean | undefined): Promise<void>;
|
|
92
103
|
/** Called when a model should be deleted. */
|
|
93
104
|
onDeleteModel(_modelId: Id64String): Promise<void>;
|
|
94
105
|
/** If `true` is returned, then the element will be exported.
|
|
95
106
|
* @note This method can optionally be overridden to exclude an individual Element (and its children and ElementAspects) from the export. The base implementation always returns `true`.
|
|
107
|
+
* @note During [IModelExporter.exportChanges]($transformer), this method is also called once for each unchanged ancestor of a changed element, so that a rejected ancestor excludes its changed descendants.
|
|
96
108
|
*/
|
|
97
|
-
shouldExportElement(_element: Element): boolean
|
|
109
|
+
shouldExportElement(_element: Element): Promise<boolean>;
|
|
98
110
|
/** Called when element is skipped instead of exported.
|
|
99
111
|
* @note When an element is skipped, exporter will not export any of its child elements. Because of this, [[onSkipElement]] will not be invoked for any children of a "skipped" element.
|
|
112
|
+
* @note During [IModelExporter.exportChanges]($transformer), an unchanged ancestor is filtered only when a changed descendant is reached. An element excluded by ID below it may therefore receive [[onSkipElement]] before the ancestor is rejected.
|
|
100
113
|
*/
|
|
101
|
-
onSkipElement(_elementId: Id64String): void
|
|
114
|
+
onSkipElement(_elementId: Id64String): Promise<void>;
|
|
102
115
|
/** Called when an element should be exported.
|
|
103
116
|
* @param element The element to export
|
|
104
117
|
* @param isUpdate If defined, then `true` indicates an UPDATE operation while `false` indicates an INSERT operation. If not defined, then INSERT vs. UPDATE is not known.
|
|
@@ -112,12 +125,12 @@ export declare abstract class IModelExportHandler {
|
|
|
112
125
|
* @internal
|
|
113
126
|
*/
|
|
114
127
|
preExportElement(_element: Element): Promise<void>;
|
|
115
|
-
/** Called
|
|
116
|
-
|
|
128
|
+
/** Called once with the source IDs of all elements deleted by the exported changes. */
|
|
129
|
+
onDeleteElements(_elementIds: ReadonlySet<Id64String>): Promise<void>;
|
|
117
130
|
/** If `true` is returned, then the ElementAspect will be exported.
|
|
118
131
|
* @note This method can optionally be overridden to exclude an individual ElementAspect from the export. The base implementation always returns `true`.
|
|
119
132
|
*/
|
|
120
|
-
shouldExportElementAspect(_aspect: ElementAspect): boolean
|
|
133
|
+
shouldExportElementAspect(_aspect: ElementAspect): Promise<boolean>;
|
|
121
134
|
/** Called when an ElementUniqueAspect should be exported.
|
|
122
135
|
* @param aspect The ElementUniqueAspect to export
|
|
123
136
|
* @param isUpdate If defined, then `true` indicates an UPDATE operation while `false` indicates an INSERT operation. If not defined, then INSERT vs. UPDATE is not known.
|
|
@@ -131,19 +144,20 @@ export declare abstract class IModelExportHandler {
|
|
|
131
144
|
/** If `true` is returned, then the relationship will be exported.
|
|
132
145
|
* @note This method can optionally be overridden to exclude an individual CodeSpec from the export. The base implementation always returns `true`.
|
|
133
146
|
*/
|
|
134
|
-
shouldExportRelationship(_relationship: Relationship): boolean
|
|
147
|
+
shouldExportRelationship(_relationship: Relationship): Promise<boolean>;
|
|
135
148
|
/** Called when a Relationship should be exported.
|
|
136
149
|
* @param relationship The Relationship to export
|
|
137
150
|
* @param isUpdate If defined, then `true` indicates an UPDATE operation while `false` indicates an INSERT operation. If not defined, then INSERT vs. UPDATE is not known.
|
|
151
|
+
* @param endpointFedGuids The FederationGuids of the relationship's source and target elements. [[IModelExporter]] always supplies them. `undefined` means the caller did not supply them.
|
|
138
152
|
* @note This should be overridden to actually do the export.
|
|
139
153
|
*/
|
|
140
|
-
onExportRelationship(_relationship: Relationship, _isUpdate: boolean | undefined): Promise<void>;
|
|
154
|
+
onExportRelationship(_relationship: Relationship, _isUpdate: boolean | undefined, _endpointFedGuids?: RelationshipEndpointFederationGuids): Promise<void>;
|
|
141
155
|
/** Called when a relationship should be deleted. */
|
|
142
|
-
onDeleteRelationship(_relInstanceId: Id64String): void
|
|
156
|
+
onDeleteRelationship(_relInstanceId: Id64String): Promise<void>;
|
|
143
157
|
/** If `true` is returned, then the schema will be exported.
|
|
144
158
|
* @note This method can optionally be overridden to exclude an individual schema from the export. The base implementation always returns `true`.
|
|
145
159
|
*/
|
|
146
|
-
shouldExportSchema(_schemaKey: SchemaKey): boolean
|
|
160
|
+
shouldExportSchema(_schemaKey: SchemaKey): Promise<boolean>;
|
|
147
161
|
/** Called when a schema should be exported.
|
|
148
162
|
* @param schema The schema to export
|
|
149
163
|
* @note This should be overridden to actually do the export.
|
|
@@ -159,10 +173,14 @@ export declare abstract class IModelExportHandler {
|
|
|
159
173
|
}
|
|
160
174
|
/** Base class for exporting data from an iModel.
|
|
161
175
|
* @note Most uses cases will not require a custom subclass of `IModelExporter`. Instead, it is more typical to subclass/customize [IModelExportHandler]($transformer).
|
|
176
|
+
* ElementAspects are exported separately from element callbacks in bounded,
|
|
177
|
+
* owner-scoped groups. Aspect callbacks are not guaranteed to be adjacent to
|
|
178
|
+
* callbacks for their owners.
|
|
162
179
|
* @see [iModel Transformation and Data Exchange]($docs/learning/transformer/index.md), [[registerHandler]], [IModelTransformer]($transformer), [IModelImporter]($transformer)
|
|
163
180
|
* @beta
|
|
164
181
|
*/
|
|
165
182
|
export declare class IModelExporter {
|
|
183
|
+
private static readonly _elementAspectOwnerBatchSize;
|
|
166
184
|
/** The read-only source iModel. */
|
|
167
185
|
readonly sourceDb: IModelDb;
|
|
168
186
|
/** A flag that indicates whether element GeometryStreams are loaded or not.
|
|
@@ -196,6 +214,12 @@ export declare class IModelExporter {
|
|
|
196
214
|
private _progressCounter;
|
|
197
215
|
/** Optionally cached entity change information */
|
|
198
216
|
private _sourceDbChanges?;
|
|
217
|
+
/** State shared by nested calls in one change-processing element traversal. */
|
|
218
|
+
private _changedElementTraversal?;
|
|
219
|
+
/** Unchanged elements on the current change-processing path. Each is filtered only when a changed descendant is reached. */
|
|
220
|
+
private readonly _unchangedAncestors;
|
|
221
|
+
/** Bounds the additional hierarchy retained by the sparse changed-element path. */
|
|
222
|
+
private readonly _changedElementForestElementLimit;
|
|
199
223
|
/**
|
|
200
224
|
* Retrieve the cached entity change information.
|
|
201
225
|
* @note This will only be initialized after [IModelExporter.exportChanges] is invoked or [IModelExporter.initialize] is called.
|
|
@@ -215,13 +239,22 @@ export declare class IModelExporter {
|
|
|
215
239
|
private _excludedElementClasses;
|
|
216
240
|
/** The set of classes of Relationships that will be excluded (polymorphically) from transformation to the target iModel. */
|
|
217
241
|
private _excludedRelationshipClasses;
|
|
218
|
-
/**
|
|
219
|
-
private
|
|
242
|
+
/** Exports ElementAspects for accepted owner groups. */
|
|
243
|
+
private _elementAspectExportProcessor;
|
|
244
|
+
/** Coordinates accepted-owner scopes and bounded group processing. */
|
|
245
|
+
private readonly _elementAspectExportCoordinator;
|
|
246
|
+
/** Coordinates accepted ElementAspect owners and bounded group processing.
|
|
247
|
+
* @internal
|
|
248
|
+
*/
|
|
249
|
+
get elementAspectExportCoordinator(): ElementAspectExportCoordinator;
|
|
250
|
+
/** Whether change traversal skips root-owned entities. */
|
|
251
|
+
private _skipPropagateChangesToRootElements;
|
|
252
|
+
private readonly _rootElementIds;
|
|
220
253
|
/** Construct a new IModelExporter
|
|
221
254
|
* @param sourceDb The source IModelDb
|
|
222
255
|
* @see registerHandler
|
|
223
256
|
*/
|
|
224
|
-
constructor(sourceDb: IModelDb
|
|
257
|
+
constructor(sourceDb: IModelDb);
|
|
225
258
|
/**
|
|
226
259
|
* Initialize prerequisites of exporting. This is implicitly done by any `export*` calls that need initialization
|
|
227
260
|
* which is currently just `exportChanges`.
|
|
@@ -234,7 +267,9 @@ export declare class IModelExporter {
|
|
|
234
267
|
registerHandler(handler: IModelExportHandler): void;
|
|
235
268
|
/** Add a rule to exclude a CodeSpec */
|
|
236
269
|
excludeCodeSpec(codeSpecName: string): void;
|
|
237
|
-
/** Add a rule to exclude a specific Element.
|
|
270
|
+
/** Add a rule to exclude a specific Element.
|
|
271
|
+
* @note Configure exclusions before starting an export operation. Changing exclusions while an export is in progress is unsupported.
|
|
272
|
+
*/
|
|
238
273
|
excludeElement(elementId: Id64String): void;
|
|
239
274
|
/** Add a rule to exclude all Elements in a specified Category. */
|
|
240
275
|
excludeElementsInCategory(categoryId: Id64String): void;
|
|
@@ -250,6 +285,7 @@ export declare class IModelExporter {
|
|
|
250
285
|
exportAll(): Promise<void>;
|
|
251
286
|
/** Export changes from the source iModel.
|
|
252
287
|
* Inserts, updates, and deletes are determined by inspecting the changeset(s).
|
|
288
|
+
* @throws [[ITwinError]] with scope `@itwin/imodel-transformer` and key `no-changesets` if the source iModel has no changesets and no custom changes. Call [[exportAll]] to export all content.
|
|
253
289
|
* @note To form a range of versions to process, set `startChangesetId` for the start (inclusive) of the desired
|
|
254
290
|
* range and open the source iModel as of the end (inclusive) of the desired range.
|
|
255
291
|
* @note the changedInstanceIds are just for this call to exportChanges, so you must continue to pass it in
|
|
@@ -257,6 +293,11 @@ export declare class IModelExporter {
|
|
|
257
293
|
*/
|
|
258
294
|
exportChanges(args?: ExportChangesOptions): Promise<void>;
|
|
259
295
|
private _resetChangeDataOnExport;
|
|
296
|
+
/** Enumerate schemas from the source iModel in database order.
|
|
297
|
+
* @note Override this method to customize schema discovery for both direct exports and transformer schema processing.
|
|
298
|
+
* @beta
|
|
299
|
+
*/
|
|
300
|
+
enumerateSchemas(): AsyncIterable<Schema>;
|
|
260
301
|
/** Export schemas from the source iModel.
|
|
261
302
|
* @note This must be called separately from [[exportAll]] or [[exportChanges]].
|
|
262
303
|
*/
|
|
@@ -300,6 +341,7 @@ export declare class IModelExporter {
|
|
|
300
341
|
* @note This method is called from [[exportChanges]] and [[exportAll]], so it only needs to be called directly when exporting a subset of an iModel.
|
|
301
342
|
*/
|
|
302
343
|
exportModel(modeledElementId: Id64String): Promise<void>;
|
|
344
|
+
private exportModelImpl;
|
|
303
345
|
/** Export the model (the container only) from the source iModel. */
|
|
304
346
|
private exportModelContainer;
|
|
305
347
|
private _yieldManager;
|
|
@@ -310,32 +352,98 @@ export declare class IModelExporter {
|
|
|
310
352
|
* @note This method is called from [[exportChanges]] and [[exportAll]], so it only needs to be called directly when exporting a subset of an iModel.
|
|
311
353
|
*/
|
|
312
354
|
exportModelContents(modelId: Id64String, elementClassFullName?: string, skipRootSubject?: boolean): Promise<void>;
|
|
355
|
+
private exportModelContentsImpl;
|
|
356
|
+
/** Whether the public element traversal methods still have their base implementations. */
|
|
357
|
+
private hasDefaultElementTraversal;
|
|
358
|
+
/** Whether hierarchy traversal can use the streamed query.
|
|
359
|
+
* Changes mode and overrides of the public traversal methods require legacy dispatch.
|
|
360
|
+
*/
|
|
361
|
+
private canUseSetBasedTraversal;
|
|
362
|
+
/** Stream element trees in the legacy depth-first order with one recursive ECSQL query.
|
|
363
|
+
* Rejected subtrees are skipped in the exporter without loading their descendants.
|
|
364
|
+
* @param anchorSelect a SELECT producing `(ECInstanceId, 0)` rows for the tree roots
|
|
365
|
+
*/
|
|
366
|
+
private exportElementTreesStreamed;
|
|
313
367
|
/** Export the sub-models directly below the specified model.
|
|
314
368
|
* @note This method is called from [[exportChanges]] and [[exportAll]], so it only needs to be called directly when exporting a subset of an iModel.
|
|
315
369
|
*/
|
|
316
370
|
exportSubModels(parentModelId: Id64String): Promise<void>;
|
|
371
|
+
private exportSubModelsImpl;
|
|
317
372
|
/** Returns true if the specified element should be exported.
|
|
318
373
|
* This considers the standard IModelExporter exclusion rules plus calls [IModelExportHandler.shouldExportElement]($transformer) for any custom exclusion rules.
|
|
319
374
|
* @note This method is called from within [[exportChanges]] and [[exportAll]], so usually does not need to be called directly.
|
|
320
375
|
*/
|
|
321
|
-
shouldExportElement(element: Element): boolean
|
|
322
|
-
/** Export the specified element
|
|
376
|
+
shouldExportElement(element: Element): Promise<boolean>;
|
|
377
|
+
/** Export the specified element and its child elements (if applicable).
|
|
323
378
|
* @note This method is called from [[exportChanges]] and [[exportAll]], so it only needs to be called directly when exporting a subset of an iModel.
|
|
379
|
+
* @note ElementAspects are exported separately in owner-scoped groups, so their callbacks are not guaranteed to follow this element callback.
|
|
324
380
|
*/
|
|
325
381
|
exportElement(elementId: Id64String): Promise<void>;
|
|
382
|
+
private exportElementImpl;
|
|
383
|
+
/** Returns the filter result for an unchanged ancestor on the current change-processing path, or `undefined` if it has not been filtered.
|
|
384
|
+
* @internal
|
|
385
|
+
*/
|
|
386
|
+
getUnchangedAncestorFilterResult(elementId: Id64String): boolean | undefined;
|
|
387
|
+
/** Filters the unchanged ancestors of a changed element, top-down, once each.
|
|
388
|
+
* @returns `false` if an ancestor is rejected.
|
|
389
|
+
*/
|
|
390
|
+
private acceptUnchangedAncestors;
|
|
391
|
+
/** Runs the export callbacks for a single element without visiting its children.
|
|
392
|
+
* @returns how to continue with the element's children: skip them, visit them, or pass through an unchanged element to reach changed descendants.
|
|
393
|
+
*/
|
|
394
|
+
private exportElementShallow;
|
|
326
395
|
/** Export the child elements of the specified element from the source iModel.
|
|
327
396
|
* @note This method is called from [[exportChanges]] and [[exportAll]], so it only needs to be called directly when exporting a subset of an iModel.
|
|
328
397
|
*/
|
|
329
398
|
exportChildElements(elementId: Id64String): Promise<void>;
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
399
|
+
private exportChildElementsImpl;
|
|
400
|
+
/** Whether change processing may use the sparse hierarchy as the child-id source.
|
|
401
|
+
* Custom traversal overrides retain the previous full element dispatch.
|
|
402
|
+
*/
|
|
403
|
+
private canUseChangedElementForest;
|
|
404
|
+
private getOverriddenElementTraversalMethods;
|
|
405
|
+
private disableChangedElementForest;
|
|
406
|
+
private createChangedElementForest;
|
|
407
|
+
private getChangedElementForest;
|
|
408
|
+
/** Exports all aspects owned by the supplied elements. */
|
|
409
|
+
private exportAspectsForOwners;
|
|
410
|
+
private filterOwnerElementIdsForAspectExport;
|
|
411
|
+
private shouldExportElementHierarchyForAspect;
|
|
412
|
+
private shouldExportModelForAspect;
|
|
413
|
+
private beginChangedElementTraversalScope;
|
|
414
|
+
private endChangedElementTraversalScope;
|
|
415
|
+
private runScopedElementExport;
|
|
416
|
+
/** Apply the element export filter when deciding whether to process an aspect owner. @internal */
|
|
417
|
+
private shouldExportElementForAspect;
|
|
418
|
+
private shouldExportElementFact;
|
|
419
|
+
private queryAspectElementHierarchyFacts;
|
|
420
|
+
private queryAspectElementFacts;
|
|
421
|
+
private queryAspectModelHierarchyFacts;
|
|
422
|
+
private getAspectOwnerIdBatches;
|
|
333
423
|
/** Exports all relationships that subclass from the specified base class.
|
|
334
424
|
* @note This method is called from [[exportChanges]] and [[exportAll]], so it only needs to be called directly when exporting a subset of an iModel.
|
|
425
|
+
* @note This is the bulk traversal path. It hydrates relationships with one streaming query and calls [[exportRelationshipInstance]] directly; it does not call [[exportRelationship]] once per row.
|
|
335
426
|
*/
|
|
336
427
|
exportRelationships(baseRelClassFullName: string): Promise<void>;
|
|
337
|
-
/**
|
|
428
|
+
/** Builds the raw relationship query used by the bulk and targeted export paths. */
|
|
429
|
+
private getRelationshipQuery;
|
|
430
|
+
/** Applies the changeset filter (when exporting changes) to a relationship instance id.
|
|
431
|
+
* @returns whether to skip the relationship, and whether the export is an update.
|
|
432
|
+
*/
|
|
433
|
+
private checkRelationshipChangesetFilter;
|
|
434
|
+
/** Converts a raw `$` instance-access row into [RelationshipProps]($common). */
|
|
435
|
+
private getRelationshipProps;
|
|
436
|
+
/** Export one specified relationship from the source iModel.
|
|
437
|
+
* @note This targeted path is separate from [[exportRelationships]], which traverses a class hierarchy. It uses the same raw instance query and passes endpoint FederationGuids to the handler.
|
|
438
|
+
*/
|
|
338
439
|
exportRelationship(relClassFullName: string, relInstanceId: Id64String): Promise<void>;
|
|
440
|
+
/** Hydrates a relationship query row and runs the common export pipeline. */
|
|
441
|
+
private exportHydratedRelationship;
|
|
442
|
+
/** Applies exclusion rules and handler callbacks to an already-hydrated relationship instance.
|
|
443
|
+
* @param endpointFedGuids The FederationGuids of the relationship's source and target elements, passed to [[IModelExportHandler.onExportRelationship]].
|
|
444
|
+
* @note This is the common protected hook used by both [[exportRelationship]] and [[exportRelationships]]. Most consumers should customize [[IModelExportHandler]] instead.
|
|
445
|
+
*/
|
|
446
|
+
protected exportRelationshipInstance(relationship: Relationship, isUpdate: boolean | undefined, endpointFedGuids?: RelationshipEndpointFederationGuids): Promise<void>;
|
|
339
447
|
/** Tracks incremental progress */
|
|
340
448
|
private trackProgress;
|
|
341
449
|
}
|
|
@@ -361,6 +469,24 @@ export declare class ChangedInstanceOps {
|
|
|
361
469
|
*/
|
|
362
470
|
get isEmpty(): boolean;
|
|
363
471
|
}
|
|
472
|
+
/**
|
|
473
|
+
* A change to one EC instance, for recording changes that don't come from a changeset reader.
|
|
474
|
+
* @see [[ChangedInstanceIds.addChangeRecord]]
|
|
475
|
+
* @beta
|
|
476
|
+
*/
|
|
477
|
+
export interface ChangeRecord {
|
|
478
|
+
/** ID of the changed instance. */
|
|
479
|
+
id: Id64String;
|
|
480
|
+
/** EC class ID of the changed instance, used to tell elements, models, aspects, relationships, and CodeSpecs apart. */
|
|
481
|
+
ecClassId: Id64String;
|
|
482
|
+
/** The operation that changed the instance. */
|
|
483
|
+
op: SqliteChangeOp;
|
|
484
|
+
/**
|
|
485
|
+
* For an aspect, the element that owns it. Required for a deleted aspect, because the source iModel no longer has it.
|
|
486
|
+
* When undefined for an inserted or updated aspect, the owner is read from the source iModel.
|
|
487
|
+
*/
|
|
488
|
+
aspectOwnerElementId?: Id64String;
|
|
489
|
+
}
|
|
364
490
|
/**
|
|
365
491
|
* Class for discovering modified elements between 2 versions of an iModel.
|
|
366
492
|
* @public
|
|
@@ -372,32 +498,36 @@ export declare class ChangedInstanceIds {
|
|
|
372
498
|
aspect: ChangedInstanceOps;
|
|
373
499
|
relationship: ChangedInstanceOps;
|
|
374
500
|
font: ChangedInstanceOps;
|
|
375
|
-
private
|
|
376
|
-
private
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
501
|
+
private _classKinds?;
|
|
502
|
+
private readonly _aspectOwnerElementIds;
|
|
503
|
+
/** Element IDs that own the aspects represented by `aspect` changes.
|
|
504
|
+
* @internal
|
|
505
|
+
*/
|
|
506
|
+
get aspectOwnerElementIds(): ReadonlySet<Id64String>;
|
|
381
507
|
private _db;
|
|
382
508
|
constructor(db: IModelDb);
|
|
383
|
-
private setupECClassIds;
|
|
384
|
-
private get _ecClassIdsInitialized();
|
|
385
|
-
private isRelationship;
|
|
386
|
-
private isCodeSpec;
|
|
387
|
-
private isAspect;
|
|
388
|
-
private isModel;
|
|
389
|
-
private isElement;
|
|
390
509
|
/** Checks if there are any changes.
|
|
391
510
|
* @returns true if there are any changes in the ChangedInstanceIds object.
|
|
392
511
|
*/
|
|
393
512
|
get hasChanges(): boolean;
|
|
394
513
|
/**
|
|
395
|
-
* Adds the provided [[
|
|
514
|
+
* Adds the provided [[ChangeInstance]] to the appropriate set of changes by class type (codeSpec, model, element, aspect, or relationship) maintained by this instance of ChangedInstanceIds.
|
|
396
515
|
* If the same ECInstanceId is seen multiple times, the changedInstanceIds will be modified accordingly, i.e. if an id 'x' was updated but now we see 'x' was deleted, we will remove 'x'
|
|
397
516
|
* from the set of updatedIds and add it to the set of deletedIds for the appropriate class type.
|
|
398
|
-
* @param change
|
|
517
|
+
* @param change Changed EC instance with the ID, operation, and EC class ID of the changed entity.
|
|
399
518
|
*/
|
|
400
|
-
addChange(change:
|
|
519
|
+
addChange(change: ChangeInstance): Promise<void>;
|
|
520
|
+
/**
|
|
521
|
+
* Adds a change read from somewhere other than a changeset, such as a precomputed cache, like [[addChange]]
|
|
522
|
+
* does for a changeset reader's [ChangeInstance]($backend). Add changes in the order they were made, so that,
|
|
523
|
+
* for example, an insert followed by a delete of the same instance cancels out.
|
|
524
|
+
* @throws [ITwinError]($bentley) with key `AspectOwnerRequired` if a deleted aspect has no `aspectOwnerElementId`.
|
|
525
|
+
* @beta
|
|
526
|
+
*/
|
|
527
|
+
addChangeRecord(change: ChangeRecord): Promise<void>;
|
|
528
|
+
private recordChange;
|
|
529
|
+
private applyChangeRecord;
|
|
530
|
+
private tryGetAspectOwnerElementId;
|
|
401
531
|
/**
|
|
402
532
|
* This method should only be called inside [[IModelTransformer.addCustomChanges]].
|
|
403
533
|
* It adds the provided change to the element changes maintained by this instance of ChangedInstanceIds.
|
|
@@ -429,10 +559,13 @@ export declare class ChangedInstanceIds {
|
|
|
429
559
|
* If the same ECInstanceId is seen multiple times, the changedInstanceIds will be modified accordingly, i.e. if an id 'x' was updated but now we see 'x' was deleted, we will remove 'x'
|
|
430
560
|
* from the set of updatedIds and add it to the set of deletedIds for the appropriate class type.
|
|
431
561
|
* @note It is the responsibility of the caller to ensure that the provided id is, in fact an aspect.
|
|
562
|
+
* @param elementIds Owning element IDs. Required when `changeType` is
|
|
563
|
+
* `Deleted` or the source aspect row is unavailable.
|
|
432
564
|
* @note In most cases, this method does not need to be called. Its only for consumers to mimic changes as if they were found in a changeset, which should only be useful in certain cases such as the changing of filter criteria for a preexisting master branch relationship.
|
|
433
565
|
* @beta
|
|
434
566
|
*/
|
|
435
|
-
addCustomAspectChange(changeType: SqliteChangeOp, ids: Id64Arg): void;
|
|
567
|
+
addCustomAspectChange(changeType: SqliteChangeOp, ids: Id64Arg, elementIds?: Id64Arg): void;
|
|
568
|
+
private recordCustomAspectChange;
|
|
436
569
|
/**
|
|
437
570
|
* There is an optimization in [IModelExporter.exportModelContents] which doesn't try to export elements within a model unless the model itself is marked as `Updated` or 'Inserted' in sourceDbChanges. This method is used in [[addCustomElementChange]] and [[addCustomModelChange]] to add the parent model hierarchy to the 'updatedIds' so that the custom element changes are exported.
|
|
438
571
|
* Transformer will insert 'Updated' model to target if it does not exist there already. To handle such case, modeled elements of parent models are also marked as updated. This is done, because model can not be inserted without it's modeled element.
|
|
@@ -446,5 +579,9 @@ export declare class ChangedInstanceIds {
|
|
|
446
579
|
* @public
|
|
447
580
|
*/
|
|
448
581
|
static initialize(opts: ChangedInstanceIdsInitOptions): Promise<ChangedInstanceIds | undefined>;
|
|
582
|
+
/** Record an ordered batch, then resolve missing aspect owners against current source state.
|
|
583
|
+
* @internal
|
|
584
|
+
*/
|
|
585
|
+
addChanges(changes: Iterable<ChangeInstance>): Promise<void>;
|
|
449
586
|
}
|
|
450
587
|
//# sourceMappingURL=IModelExporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,WAAW,EAEX,
|
|
1
|
+
{"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,WAAW,EAEX,cAAc,EAGd,OAAO,EACP,aAAa,EACb,kBAAkB,EAElB,mBAAmB,EAEnB,QAAQ,EACR,cAAc,EACd,KAAK,EAEL,YAAY,EACZ,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,UAAU,EAEV,OAAO,EAEP,UAAU,EAMX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,kBAAkB,EAClB,QAAQ,EAER,oBAAoB,EAEpB,SAAS,EAKV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAIxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAyBlF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC9C,CAAC;;;GAGC,GAAG,CACF;IAAE,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAAE;AACvC;;;;;GAKG;GACD;IAAE,kBAAkB,EAAE,kBAAkB,CAAA;CAAE;AAC5C;;;GAGG;GACD;IAAE,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CAAE;AACzC;;;;;GAKG;GACD;IAAE,cAAc,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAEnD,EAAE,CACL,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,mCAAmC;IAClD,+DAA+D;IAC/D,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED;;;;;GAKG;AACH,8BAAsB,mBAAmB;IACvC;;OAEG;IACU,oBAAoB,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvE;IAED;;;;OAIG;IACU,gBAAgB,CAC3B,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB;;;;OAIG;IACU,YAAY,CACvB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB;;;;OAIG;IACU,aAAa,CACxB,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB,6CAA6C;IAChC,aAAa,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAG;IAElE;;;OAGG;IACU,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpE;IAED;;;OAGG;IACU,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAG;IAEpE;;;;OAIG;IACU,eAAe,CAC1B,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB;;;;;OAKG;IACU,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAG;IAElE,uFAAuF;IAC1E,gBAAgB,CAC3B,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB;;OAEG;IACU,yBAAyB,CACpC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB;IAED;;;;OAIG;IACU,2BAA2B,CACtC,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,OAAO,GAAG,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB;;OAEG;IACU,2BAA2B,CACtC,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB;;OAEG;IACU,wBAAwB,CACnC,aAAa,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC,CAElB;IAED;;;;;OAKG;IACU,oBAAoB,CAC/B,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,iBAAiB,CAAC,EAAE,mCAAmC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB,oDAAoD;IACvC,oBAAoB,CAC/B,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,IAAI,CAAC,CAAG;IAEnB;;OAEG;IACU,kBAAkB,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvE;IAED;;;;;OAKG;IACU,cAAc,CACzB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAG;IAExC;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAG;CAC5C;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAQ;IAC5D,mCAAmC;IACnC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC;;;;;OAKG;IACI,YAAY,EAAE,OAAO,CAAQ;IACpC;;;OAGG;IACI,kBAAkB,EAAE,OAAO,CAAQ;IAC1C;;;OAGG;IACI,iBAAiB,EAAE,OAAO,CAAQ;IACzC;;OAEG;IACI,aAAa,EAAE,OAAO,CAAQ;IACrC;;OAEG;IACI,kBAAkB,EAAE,OAAO,CAAQ;IAC1C,sHAAsH;IAC/G,gBAAgB,EAAE,MAAM,CAAQ;IACvC,4DAA4D;IAC5D,OAAO,CAAC,gBAAgB,CAAa;IACrC,kDAAkD;IAClD,OAAO,CAAC,gBAAgB,CAAC,CAAqB;IAC9C,+EAA+E;IAC/E,OAAO,CAAC,wBAAwB,CAAC,CAG/B;IACF,4HAA4H;IAC5H,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAG3B;IACT,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAW;IAE7D;;;OAGG;IACH,IAAW,eAAe,IAAI,kBAAkB,GAAG,SAAS,CAE3D;IACD,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAkC;IAClD,iDAAiD;IACjD,SAAS,KAAK,OAAO,IAAI,mBAAmB,CAY3C;IAED,uDAAuD;IACvD,OAAO,CAAC,sBAAsB,CAAqB;IACnD,+DAA+D;IAC/D,OAAO,CAAC,mBAAmB,CAAyB;IACpD,uHAAuH;IACvH,OAAO,CAAC,2BAA2B,CAAyB;IAC5D,uHAAuH;IACvH,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,4HAA4H;IAC5H,OAAO,CAAC,4BAA4B,CAAkC;IAEtE,wDAAwD;IACxD,OAAO,CAAC,6BAA6B,CAA+B;IACpE,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAiC;IAEjF;;OAEG;IACH,IAAW,8BAA8B,IAAI,8BAA8B,CAE1E;IACD,0DAA0D;IAC1D,OAAO,CAAC,mCAAmC,CAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAK7B;IAEH;;;OAGG;IACH,YAAmB,QAAQ,EAAE,QAAQ,EAsBpC;IAED;;;;;;OAMG;IACU,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnE;IAED,kEAAkE;IAC3D,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAEzD;IAED,uCAAuC;IAChC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAEjD;IAED;;OAEG;IACI,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAEjD;IAED,kEAAkE;IAC3D,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAE7D;IAED,+DAA+D;IACxD,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAItD;IAED,qEAAqE;IAC9D,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAE5D;IAED,oEAAoE;IAC7D,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAI3D;IAED;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAStC;IAED;;;;;;;OAOG;IACU,aAAa,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHrE;IAED,OAAO,CAAC,wBAAwB,CAAQ;IAExC;;;OAGG;IACW,gBAAgB,IAAI,aAAa,CAAC,MAAM,CAAC,CAgCtD;IAED;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAc1C;IAED,sDAAsD;IACtD,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ5C;IAED;;OAEG;IACU,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrE;IAED;;OAEG;IACU,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;IAED;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxC;IAED;;;OAGG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ7D;IAED;;OAEG;IACU,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtE;IAED;;OAEG;IACU,gCAAgC,CAC3C,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAUf;IAED;;OAEG;IACU,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjE;IAED;;OAEG;IACU,WAAW,CAAC,gBAAgB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE;YAEa,eAAe;IAoB7B,oEAAoE;YACtD,oBAAoB;IAgBlC,OAAO,CAAC,aAAa,CAAsB;IAE3C;;;;;OAKG;IACU,mBAAmB,CAC9B,OAAO,EAAE,UAAU,EACnB,oBAAoB,GAAE,MAA8B,EACpD,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CAQf;YAEa,uBAAuB;IAmErC,0FAA0F;IAC1F,OAAO,CAAC,0BAA0B;IASlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;;OAGG;YACW,0BAA0B;IAmCxC;;OAEG;IACU,eAAe,CAAC,aAAa,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrE;YAEa,mBAAmB;IA0BjC;;;OAGG;IACU,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCnE;IAED;;;OAGG;IACU,aAAa,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;YAEa,iBAAiB;IAsB/B;;OAEG;IACI,gCAAgC,CACrC,SAAS,EAAE,UAAU,GACpB,OAAO,GAAG,SAAS,CAIrB;IAED;;OAEG;YACW,wBAAwB;IAiBtC;;OAEG;YACW,oBAAoB;IAmDlC;;OAEG;IACU,mBAAmB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrE;YAEa,uBAAuB;IAsCrC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,oCAAoC;IAW5C,OAAO,CAAC,2BAA2B;YASrB,0BAA0B;YAoC1B,uBAAuB;IAWrC,0DAA0D;YAC5C,sBAAsB;YAMtB,oCAAoC;YAsCpC,qCAAqC;YAiCrC,0BAA0B;IAmCxC,OAAO,CAAC,iCAAiC;IAmBzC,OAAO,CAAC,+BAA+B;YAIzB,sBAAsB;IAYpC,kGAAkG;YACpF,4BAA4B;IAuB1C,OAAO,CAAC,uBAAuB;YAkDjB,gCAAgC;YA0BhC,uBAAuB;YAqDvB,8BAA8B;IA6C5C,OAAO,CAAE,uBAAuB;IAchC;;;OAGG;IACU,mBAAmB,CAC9B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CAgGf;IAED,oFAAoF;IACpF,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAaxC,gFAAgF;IAChF,OAAO,CAAC,oBAAoB;IAsC5B;;OAEG;IACU,kBAAkB,CAC7B,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,UAAU,GACxB,OAAO,CAAC,IAAI,CAAC,CAsCf;IAED,6EAA6E;YAC/D,0BAA0B;IAexC;;;OAGG;IACH,UAAgB,0BAA0B,CACxC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,gBAAgB,CAAC,EAAE,mCAAmC,GACrD,OAAO,CAAC,IAAI,CAAC,CAwBf;IAED,kCAAkC;YACpB,aAAa;CAM5B;AAED;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,oBAAoB,GAAG;IACjE,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,qBAAa,kBAAkB;IACtB,SAAS,cAAyB;IAClC,SAAS,cAAyB;IAClC,SAAS,cAAyB;IAEzC,0EAA0E;IACnE,WAAW,CAChB,GAAG,EAAE,cAAc,CAAC,uBAAuB,GAAG,SAAS,GACtD,IAAI,CAWN;IAED;;;OAGG;IACH,IAAW,OAAO,IAAI,OAAO,CAM5B;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,EAAE,EAAE,UAAU,CAAC;IACf,uHAAuH;IACvH,SAAS,EAAE,UAAU,CAAC;IACtB,+CAA+C;IAC/C,EAAE,EAAE,cAAc,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,UAAU,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IACtB,QAAQ,qBAA4B;IACpC,KAAK,qBAA4B;IACjC,OAAO,qBAA4B;IACnC,MAAM,qBAA4B;IAClC,YAAY,qBAA4B;IACxC,IAAI,qBAA4B;IACvC,OAAO,CAAC,WAAW,CAAC,CAAmB;IACvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAEhE;;OAEG;IACH,IAAW,qBAAqB,IAAI,WAAW,CAAC,UAAU,CAAC,CAE1D;IAED,OAAO,CAAC,GAAG,CAAW;IACtB,YAAmB,EAAE,EAAE,QAAQ,EAE9B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAS/B;IAED;;;;;OAKG;IACU,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;IAED;;;;;;OAMG;IACU,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAehE;YAEa,YAAY;YAiCZ,iBAAiB;IAiC/B,OAAO,CAAC,0BAA0B;IAgBlC;;;;;;;;;;;OAWG;IACU,sBAAsB,CACjC,UAAU,EAAE,cAAc,EAC1B,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAgCf;IAED;;;;;;;;;;OAUG;IACU,oBAAoB,CAC/B,UAAU,EAAE,cAAc,EAC1B,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;IAED;;;;;;;;;;OAUG;IACI,qBAAqB,CAC1B,UAAU,EAAE,cAAc,EAC1B,GAAG,EAAE,OAAO,EACZ,UAAU,CAAC,EAAE,OAAO,GACnB,IAAI,CAkCN;IAED,OAAO,CAAC,wBAAwB;IAShC;;;OAGG;YACW,yBAAyB;YAgCzB,kCAAkC;YAwBlC,4BAA4B;IAmB1C,OAAO,CAAC,YAAY;IAyBpB;;;OAGG;IACH,OAAoB,UAAU,CAC5B,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CA+CzC;IAED;;OAEG;IACU,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxE;CACF"}
|