@itwin/core-backend 5.13.0-dev.9 → 5.14.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/lib/cjs/Category.d.ts +4 -4
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts +5 -0
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +13 -3
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/CodeSpecs.d.ts +3 -3
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +2 -2
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/EditTxn.d.ts.map +1 -1
- package/lib/cjs/EditTxn.js +1 -0
- package/lib/cjs/EditTxn.js.map +1 -1
- package/lib/cjs/Element.d.ts +48 -12
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +120 -24
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +30 -15
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +51 -15
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/Model.d.ts +5 -5
- package/lib/cjs/Model.d.ts.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/PropertyStore.js +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/SchemaSync.d.ts +37 -9
- package/lib/cjs/SchemaSync.d.ts.map +1 -1
- package/lib/cjs/SchemaSync.js +125 -6
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SynchronousChannel.d.ts +62 -0
- package/lib/cjs/SynchronousChannel.d.ts.map +1 -0
- package/lib/cjs/SynchronousChannel.js +11 -0
- package/lib/cjs/SynchronousChannel.js.map +1 -0
- package/lib/cjs/Texture.d.ts +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +44 -4
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +72 -14
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +6 -6
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.d.ts +22 -7
- package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +104 -36
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +25 -10
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -0
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -0
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/internal/IntegrityCheck.d.ts +22 -0
- package/lib/cjs/internal/IntegrityCheck.d.ts.map +1 -1
- package/lib/cjs/internal/IntegrityCheck.js +13 -0
- package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
- package/lib/cjs/internal/NoReservations.d.ts +6 -0
- package/lib/cjs/internal/NoReservations.d.ts.map +1 -0
- package/lib/cjs/internal/NoReservations.js +21 -0
- package/lib/cjs/internal/NoReservations.js.map +1 -0
- package/lib/cjs/internal/SchemaSyncReservations.d.ts +4 -0
- package/lib/cjs/internal/SchemaSyncReservations.d.ts.map +1 -0
- package/lib/cjs/internal/SchemaSyncReservations.js +118 -0
- package/lib/cjs/internal/SchemaSyncReservations.js.map +1 -0
- package/lib/cjs/internal/Symbols.d.ts +1 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +2 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/esm/Category.d.ts +4 -4
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts +5 -0
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +13 -3
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/CodeSpecs.d.ts +3 -3
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +2 -2
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/EditTxn.d.ts.map +1 -1
- package/lib/esm/EditTxn.js +1 -0
- package/lib/esm/EditTxn.js.map +1 -1
- package/lib/esm/Element.d.ts +48 -12
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +121 -25
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +30 -15
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +52 -16
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/Model.d.ts +5 -5
- package/lib/esm/Model.d.ts.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/PropertyStore.js +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/SchemaSync.d.ts +37 -9
- package/lib/esm/SchemaSync.d.ts.map +1 -1
- package/lib/esm/SchemaSync.js +127 -8
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SynchronousChannel.d.ts +62 -0
- package/lib/esm/SynchronousChannel.d.ts.map +1 -0
- package/lib/esm/SynchronousChannel.js +9 -0
- package/lib/esm/SynchronousChannel.js.map +1 -0
- package/lib/esm/Texture.d.ts +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +44 -4
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +72 -14
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +6 -6
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.d.ts +22 -7
- package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +104 -36
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +25 -10
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -0
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -0
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/internal/IntegrityCheck.d.ts +22 -0
- package/lib/esm/internal/IntegrityCheck.d.ts.map +1 -1
- package/lib/esm/internal/IntegrityCheck.js +13 -0
- package/lib/esm/internal/IntegrityCheck.js.map +1 -1
- package/lib/esm/internal/NoReservations.d.ts +6 -0
- package/lib/esm/internal/NoReservations.d.ts.map +1 -0
- package/lib/esm/internal/NoReservations.js +18 -0
- package/lib/esm/internal/NoReservations.js.map +1 -0
- package/lib/esm/internal/SchemaSyncReservations.d.ts +4 -0
- package/lib/esm/internal/SchemaSyncReservations.d.ts.map +1 -0
- package/lib/esm/internal/SchemaSyncReservations.js +115 -0
- package/lib/esm/internal/SchemaSyncReservations.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +1 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +1 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +8 -3
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js +178 -2
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +48 -18
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +177 -0
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryReaders.test.js +2 -16
- package/lib/esm/test/ecdb/QueryReaders.test.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js +2 -2
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js +80 -2
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/imodel/IModelECSql.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelECSql.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelECSql.test.js +367 -0
- package/lib/esm/test/imodel/IModelECSql.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelElements.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelElements.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelElements.test.js +969 -0
- package/lib/esm/test/imodel/IModelElements.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.js +539 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.js +499 -0
- package/lib/esm/test/imodel/IModelLifecycle.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelMetadata.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelMetadata.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelMetadata.test.js +274 -0
- package/lib/esm/test/imodel/IModelMetadata.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelModels.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelModels.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelModels.test.js +357 -0
- package/lib/esm/test/imodel/IModelModels.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelRelationships.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelRelationships.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelRelationships.test.js +407 -0
- package/lib/esm/test/imodel/IModelRelationships.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelTestFixtures.d.ts +53 -0
- package/lib/esm/test/imodel/IModelTestFixtures.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelTestFixtures.js +107 -0
- package/lib/esm/test/imodel/IModelTestFixtures.js.map +1 -0
- package/lib/esm/test/imodel/IModelViews.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelViews.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelViews.test.js +199 -0
- package/lib/esm/test/imodel/IModelViews.test.js.map +1 -0
- package/lib/esm/test/index.d.ts +0 -1
- package/lib/esm/test/index.d.ts.map +1 -1
- package/lib/esm/test/index.js +0 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +8 -26
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.d.ts +2 -0
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.js +263 -0
- package/lib/esm/test/standalone/DgnDomainMergeConflict.test.js.map +1 -0
- package/lib/esm/test/standalone/GeometryStream.test.js +1 -3
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +78 -1
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/IntegrityCheck.test.js +29 -10
- package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
- package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +23 -0
- package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaSyncDb.test.d.ts +2 -0
- package/lib/esm/test/standalone/SchemaSyncDb.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SchemaSyncDb.test.js +221 -0
- package/lib/esm/test/standalone/SchemaSyncDb.test.js.map +1 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.d.ts +2 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.js +459 -0
- package/lib/esm/test/standalone/SchemaSyncElementReservation.test.js.map +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js +1 -0
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js +108 -8
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/package.json +14 -17
- package/lib/esm/test/RevisionUtility.d.ts +0 -33
- package/lib/esm/test/RevisionUtility.d.ts.map +0 -1
- package/lib/esm/test/RevisionUtility.js +0 -52
- package/lib/esm/test/RevisionUtility.js.map +0 -1
- package/lib/esm/test/imodel/IModel.test.d.ts +0 -2
- package/lib/esm/test/imodel/IModel.test.d.ts.map +0 -1
- package/lib/esm/test/imodel/IModel.test.js +0 -3277
- package/lib/esm/test/imodel/IModel.test.js.map +0 -1
package/lib/cjs/TxnManager.js
CHANGED
|
@@ -77,6 +77,16 @@ function setMaxEntitiesPerEvent(max) {
|
|
|
77
77
|
ChangedEntitiesProc.maxPerEvent = max;
|
|
78
78
|
return prevMax;
|
|
79
79
|
}
|
|
80
|
+
class TxnEntityMetadataImpl {
|
|
81
|
+
classFullName;
|
|
82
|
+
baseClasses = [];
|
|
83
|
+
constructor(classFullName) {
|
|
84
|
+
this.classFullName = classFullName;
|
|
85
|
+
}
|
|
86
|
+
is(baseClassFullName) {
|
|
87
|
+
return this.classFullName === baseClassFullName || this.baseClasses.some((baseClass) => baseClass.is(baseClassFullName));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
80
90
|
/** Maintains an ordered array of entity Ids and a parallel array containing the index of the corresponding entity's class Id. */
|
|
81
91
|
class ChangedEntitiesArray {
|
|
82
92
|
entityIds = new core_bentley_1.OrderedId64Array();
|
|
@@ -109,12 +119,17 @@ class ChangedEntitiesArray {
|
|
|
109
119
|
entities[type] = core_bentley_1.CompressedId64Set.compressIds(this.entityIds);
|
|
110
120
|
entities[`${type}Meta`] = this._classIndices;
|
|
111
121
|
}
|
|
112
|
-
iterable(classIds) {
|
|
122
|
+
iterable(classIds, metadata) {
|
|
113
123
|
function* iterator(entityIds, classIndices) {
|
|
114
|
-
|
|
124
|
+
let entity;
|
|
115
125
|
for (let i = 0; i < entityIds.length; i++) {
|
|
126
|
+
const classIndex = classIndices[i];
|
|
127
|
+
const entityMetadata = metadata[classIndex];
|
|
128
|
+
(0, core_bentley_1.assert)(undefined !== entityMetadata);
|
|
129
|
+
entity ??= { id: "", classId: "", metadata: entityMetadata };
|
|
116
130
|
entity.id = entityIds[i];
|
|
117
|
-
entity.classId = classIds[
|
|
131
|
+
entity.classId = classIds[classIndex];
|
|
132
|
+
entity.metadata = entityMetadata;
|
|
118
133
|
yield entity;
|
|
119
134
|
}
|
|
120
135
|
}
|
|
@@ -160,10 +175,10 @@ class ChangedEntitiesProc {
|
|
|
160
175
|
const meta = db.classMetaDataRegistry.findByClassId(classId);
|
|
161
176
|
nameToIndex.set(meta?.ecclass ?? "", nameToIndex.size);
|
|
162
177
|
}
|
|
163
|
-
const
|
|
178
|
+
const metadata = [];
|
|
164
179
|
function addMetadata(name, index) {
|
|
165
180
|
const bases = [];
|
|
166
|
-
|
|
181
|
+
metadata[index] = { name, bases };
|
|
167
182
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
168
183
|
const meta = db.tryGetMetaData(name);
|
|
169
184
|
if (!meta) {
|
|
@@ -186,25 +201,43 @@ class ChangedEntitiesProc {
|
|
|
186
201
|
}
|
|
187
202
|
addMetadata(name, index);
|
|
188
203
|
}
|
|
189
|
-
return
|
|
204
|
+
return metadata;
|
|
205
|
+
}
|
|
206
|
+
populateBackendMetadata(frontendMetadata) {
|
|
207
|
+
const backendMetadata = frontendMetadata.map(({ name }) => new TxnEntityMetadataImpl(name));
|
|
208
|
+
for (let index = 0; index < frontendMetadata.length; index++) {
|
|
209
|
+
const frontend = frontendMetadata[index];
|
|
210
|
+
const backend = backendMetadata[index];
|
|
211
|
+
(0, core_bentley_1.assert)(undefined !== frontend && undefined !== backend);
|
|
212
|
+
for (const baseClassIndex of frontend.bases) {
|
|
213
|
+
const baseClass = backendMetadata[baseClassIndex];
|
|
214
|
+
(0, core_bentley_1.assert)(undefined !== baseClass);
|
|
215
|
+
backend.baseClasses.push(baseClass);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return backendMetadata;
|
|
190
219
|
}
|
|
191
220
|
sendEvent(iModel, evt, evtName) {
|
|
192
221
|
if (this._currSize === 0)
|
|
193
222
|
return;
|
|
194
223
|
const classIds = this._classIds.toArray();
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
224
|
+
const frontendMetadata = this.populateMetadata(iModel, classIds);
|
|
225
|
+
// Notify backend listeners. Avoid constructing the backend metadata graph when there are no listeners.
|
|
226
|
+
if (evt.numberOfListeners > 0) {
|
|
227
|
+
const backendMetadata = this.populateBackendMetadata(frontendMetadata);
|
|
228
|
+
const txnEntities = {
|
|
229
|
+
inserts: this._inserted.iterable(classIds, backendMetadata),
|
|
230
|
+
deletes: this._deleted.iterable(classIds, backendMetadata),
|
|
231
|
+
updates: this._updated.iterable(classIds, backendMetadata),
|
|
232
|
+
};
|
|
233
|
+
evt.raiseEvent(txnEntities);
|
|
234
|
+
}
|
|
202
235
|
// Notify frontend listeners.
|
|
203
236
|
const entities = {
|
|
204
237
|
insertedMeta: [],
|
|
205
238
|
updatedMeta: [],
|
|
206
239
|
deletedMeta: [],
|
|
207
|
-
meta:
|
|
240
|
+
meta: frontendMetadata,
|
|
208
241
|
};
|
|
209
242
|
this._inserted.addToChangedEntities(entities, "inserted");
|
|
210
243
|
this._deleted.addToChangedEntities(entities, "deleted");
|
|
@@ -973,6 +1006,15 @@ class TxnManager {
|
|
|
973
1006
|
};
|
|
974
1007
|
};
|
|
975
1008
|
// Default conflict resolution for which custom handler is never called.
|
|
1009
|
+
// A local txn that imported a domain replays an insert to `dgn_Domain` for a domain the
|
|
1010
|
+
// just-merged changesets already registered. Both rows describe the same domain, so the
|
|
1011
|
+
// merged row wins and the local insert is dropped. Only a primary key collision on an insert
|
|
1012
|
+
// is benign - an update or delete whose "before" values do not match (`Data`) describes a real
|
|
1013
|
+
// divergence and is left to the handlers below.
|
|
1014
|
+
if (args.tableName === "dgn_Domain" && args.cause === "Conflict" && args.opcode === "Inserted") {
|
|
1015
|
+
core_bentley_1.Logger.logInfo(BackendLoggerCategory_1.BackendLoggerCategory.IModelDb, "dgn_Domain insert conflict during rebase. Keeping the merged row and skipping the local change.", getChangeMetaData());
|
|
1016
|
+
return core_bentley_1.DbConflictResolution.Skip;
|
|
1017
|
+
}
|
|
976
1018
|
if (args.cause === "Data" && !args.indirect) {
|
|
977
1019
|
if (args.tableName === "be_Prop") {
|
|
978
1020
|
if (args.getValueText(0, "Old") === "ec_Db" && args.getValueText(1, "Old") === "localDbInfo") {
|
|
@@ -1070,11 +1112,27 @@ class TxnManager {
|
|
|
1070
1112
|
onEndValidation = new core_bentley_1.BeEvent();
|
|
1071
1113
|
/** Called after validation completes from [[IModelDb.saveChanges]].
|
|
1072
1114
|
* The argument to the event holds the list of elements that were inserted, updated, and deleted.
|
|
1115
|
+
* Each changed entity includes its `id`, `classId`, and [[TxnChangedEntity.metadata]]. Use `metadata.classFullName` for an exact class match or `metadata.is` to match a class or one of its subclasses.
|
|
1116
|
+
* @example
|
|
1117
|
+
* ```ts
|
|
1118
|
+
* iModel.txns.onElementsChanged.addListener((changes) => {
|
|
1119
|
+
* for (const change of changes.inserts) {
|
|
1120
|
+
* if (change.metadata.classFullName === "MySchema:MyElement")
|
|
1121
|
+
* invalidateCache();
|
|
1122
|
+
* }
|
|
1123
|
+
*
|
|
1124
|
+
* for (const change of changes.updates) {
|
|
1125
|
+
* if (change.metadata.is("BisCore:GeometricElement"))
|
|
1126
|
+
* invalidateGeometryCache(change.id);
|
|
1127
|
+
* }
|
|
1128
|
+
* });
|
|
1129
|
+
* ```
|
|
1073
1130
|
* @note If there are many changed elements in a single Txn, the notifications are sent in batches so this event *may be called multiple times* per Txn.
|
|
1074
1131
|
*/
|
|
1075
1132
|
onElementsChanged = new core_bentley_1.BeEvent();
|
|
1076
1133
|
/** Called after validation completes from [[IModelDb.saveChanges]].
|
|
1077
1134
|
* The argument to the event holds the list of models that were inserted, updated, and deleted.
|
|
1135
|
+
* Each changed model includes its `id`, `classId`, and [[TxnChangedEntity.metadata]]. Use `metadata.classFullName` for an exact class match or `metadata.is` to match a class or one of its subclasses.
|
|
1078
1136
|
* @note If there are many changed models in a single Txn, the notifications are sent in batches so this event *may be called multiple times* per Txn.
|
|
1079
1137
|
*/
|
|
1080
1138
|
onModelsChanged = new core_bentley_1.BeEvent();
|