@itwin/imodel-transformer 2.0.0-dev.50 → 2.0.0-dev.52

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 (32) hide show
  1. package/lib/cjs/ChangedElementForest.d.ts +14 -0
  2. package/lib/cjs/ChangedElementForest.d.ts.map +1 -0
  3. package/lib/cjs/ChangedElementForest.js +86 -0
  4. package/lib/cjs/ChangedElementForest.js.map +1 -0
  5. package/lib/cjs/ElementAspectCleanup.d.ts.map +1 -1
  6. package/lib/cjs/ElementAspectCleanup.js +1 -2
  7. package/lib/cjs/ElementAspectCleanup.js.map +1 -1
  8. package/lib/cjs/ElementBulkDelete.d.ts +11 -0
  9. package/lib/cjs/ElementBulkDelete.d.ts.map +1 -0
  10. package/lib/cjs/ElementBulkDelete.js +55 -0
  11. package/lib/cjs/ElementBulkDelete.js.map +1 -0
  12. package/lib/cjs/IModelExporter.d.ts +19 -3
  13. package/lib/cjs/IModelExporter.d.ts.map +1 -1
  14. package/lib/cjs/IModelExporter.js +138 -56
  15. package/lib/cjs/IModelExporter.js.map +1 -1
  16. package/lib/cjs/IModelImporter.d.ts +26 -10
  17. package/lib/cjs/IModelImporter.d.ts.map +1 -1
  18. package/lib/cjs/IModelImporter.js +52 -19
  19. package/lib/cjs/IModelImporter.js.map +1 -1
  20. package/lib/cjs/IModelTransformer.d.ts +2 -4
  21. package/lib/cjs/IModelTransformer.d.ts.map +1 -1
  22. package/lib/cjs/IModelTransformer.js +11 -13
  23. package/lib/cjs/IModelTransformer.js.map +1 -1
  24. package/lib/cjs/IModelTransformerError.d.ts +2 -0
  25. package/lib/cjs/IModelTransformerError.d.ts.map +1 -1
  26. package/lib/cjs/IModelTransformerError.js +2 -0
  27. package/lib/cjs/IModelTransformerError.js.map +1 -1
  28. package/package.json +1 -1
  29. package/lib/cjs/ElementCascadingDeleter.d.ts +0 -22
  30. package/lib/cjs/ElementCascadingDeleter.d.ts.map +0 -1
  31. package/lib/cjs/ElementCascadingDeleter.js +0 -57
  32. package/lib/cjs/ElementCascadingDeleter.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ import { IModelDb } from "@itwin/core-backend";
2
+ import { Id64String } from "@itwin/core-bentley";
3
+ /** The minimal parent-child forest containing changed or excluded elements and their ancestors. */
4
+ export declare class ChangedElementForest {
5
+ private readonly _rootsByModel;
6
+ private readonly _childrenByParent;
7
+ private constructor();
8
+ static create(sourceDb: IModelDb, ownedCandidateIds: Id64String[], maximumElementCount: number): Promise<ChangedElementForest | undefined>;
9
+ /** Gets the indexed root element IDs for a model. */
10
+ getModelRoots(modelId: Id64String): readonly Id64String[];
11
+ /** Gets the indexed child element IDs for a parent element. */
12
+ getChildren(parentId: Id64String): readonly Id64String[];
13
+ }
14
+ //# sourceMappingURL=ChangedElementForest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangedElementForest.d.ts","sourceRoot":"","sources":["../../src/ChangedElementForest.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAGtE,mGAAmG;AACnG,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAI9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IALpC,OAAO,eASH;IAEJ,OAAoB,MAAM,CACxB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,UAAU,EAAE,EAC/B,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAwD3C;IAED,qDAAqD;IAC9C,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,UAAU,EAAE,CAE/D;IAED,+DAA+D;IACxD,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,UAAU,EAAE,CAE9D;CACF"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ChangedElementForest = void 0;
8
+ const core_backend_1 = require("@itwin/core-backend");
9
+ const core_bentley_1 = require("@itwin/core-bentley");
10
+ const core_common_1 = require("@itwin/core-common");
11
+ /** The minimal parent-child forest containing changed or excluded elements and their ancestors. */
12
+ class ChangedElementForest {
13
+ _rootsByModel;
14
+ _childrenByParent;
15
+ constructor(_rootsByModel, _childrenByParent) {
16
+ this._rootsByModel = _rootsByModel;
17
+ this._childrenByParent = _childrenByParent;
18
+ }
19
+ static async create(sourceDb, ownedCandidateIds, maximumElementCount) {
20
+ if (ownedCandidateIds.length === 0) {
21
+ return new ChangedElementForest(new Map(), new Map());
22
+ }
23
+ const sql = `
24
+ WITH RECURSIVE ChangedElementHierarchy (ECInstanceId, ParentId, ModelId) AS (
25
+ SELECT e.ECInstanceId, e.Parent.Id, e.Model.Id
26
+ FROM ${core_backend_1.Element.classFullName} e
27
+ INNER JOIN IdSet(:candidateIds) ids ON ids.id = e.ECInstanceId
28
+ UNION
29
+ SELECT p.ECInstanceId, p.Parent.Id, p.Model.Id
30
+ FROM ${core_backend_1.Element.classFullName} p
31
+ INNER JOIN ChangedElementHierarchy c ON p.ECInstanceId = c.ParentId
32
+ )
33
+ SELECT ECInstanceId, ParentId, ModelId FROM ChangedElementHierarchy
34
+ LIMIT :resultLimit
35
+ `;
36
+ core_bentley_1.OrderedId64Iterable.sortArray(ownedCandidateIds);
37
+ const params = new core_common_1.QueryBinder()
38
+ .bindIdSet("candidateIds", ownedCandidateIds)
39
+ .bindInt("resultLimit", maximumElementCount + 1);
40
+ // QueryBinder serializes the IdSet synchronously, so release this temporary copy before retaining the hierarchy.
41
+ ownedCandidateIds.length = 0;
42
+ const rootsByModel = new Map();
43
+ const childrenByParent = new Map();
44
+ let elementCount = 0;
45
+ let elementLimitExceeded = false;
46
+ for await (const row of sourceDb.createQueryReader(sql, params, {
47
+ usePrimaryConn: true,
48
+ })) {
49
+ if (elementCount >= maximumElementCount) {
50
+ // Consume the single overflow row so the ECSqlReader reaches done; it has no disposal API.
51
+ elementLimitExceeded = true;
52
+ continue;
53
+ }
54
+ elementCount++;
55
+ const elementId = row[0];
56
+ const parentId = row[1] ?? undefined;
57
+ const modelId = row[2];
58
+ const index = parentId === undefined ? rootsByModel : childrenByParent;
59
+ const key = parentId ?? modelId;
60
+ const siblings = index.get(key);
61
+ if (siblings === undefined)
62
+ index.set(key, [elementId]);
63
+ else
64
+ siblings.push(elementId);
65
+ }
66
+ if (elementLimitExceeded)
67
+ return undefined;
68
+ for (const siblings of rootsByModel.values()) {
69
+ core_bentley_1.OrderedId64Iterable.sortArray(siblings);
70
+ }
71
+ for (const siblings of childrenByParent.values()) {
72
+ core_bentley_1.OrderedId64Iterable.sortArray(siblings);
73
+ }
74
+ return new ChangedElementForest(rootsByModel, childrenByParent);
75
+ }
76
+ /** Gets the indexed root element IDs for a model. */
77
+ getModelRoots(modelId) {
78
+ return this._rootsByModel.get(modelId) ?? [];
79
+ }
80
+ /** Gets the indexed child element IDs for a parent element. */
81
+ getChildren(parentId) {
82
+ return this._childrenByParent.get(parentId) ?? [];
83
+ }
84
+ }
85
+ exports.ChangedElementForest = ChangedElementForest;
86
+ //# sourceMappingURL=ChangedElementForest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangedElementForest.js","sourceRoot":"","sources":["../../src/ChangedElementForest.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport {\n // eslint-disable-next-line @typescript-eslint/no-redeclare\n Element,\n IModelDb,\n} from \"@itwin/core-backend\";\nimport { Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport { QueryBinder } from \"@itwin/core-common\";\n\n/** The minimal parent-child forest containing changed or excluded elements and their ancestors. */\nexport class ChangedElementForest {\n private constructor(\n private readonly _rootsByModel: ReadonlyMap<\n Id64String,\n readonly Id64String[]\n >,\n private readonly _childrenByParent: ReadonlyMap<\n Id64String,\n readonly Id64String[]\n >\n ) {}\n\n public static async create(\n sourceDb: IModelDb,\n ownedCandidateIds: Id64String[],\n maximumElementCount: number\n ): Promise<ChangedElementForest | undefined> {\n if (ownedCandidateIds.length === 0) {\n return new ChangedElementForest(new Map(), new Map());\n }\n\n const sql = `\n WITH RECURSIVE ChangedElementHierarchy (ECInstanceId, ParentId, ModelId) AS (\n SELECT e.ECInstanceId, e.Parent.Id, e.Model.Id\n FROM ${Element.classFullName} e\n INNER JOIN IdSet(:candidateIds) ids ON ids.id = e.ECInstanceId\n UNION\n SELECT p.ECInstanceId, p.Parent.Id, p.Model.Id\n FROM ${Element.classFullName} p\n INNER JOIN ChangedElementHierarchy c ON p.ECInstanceId = c.ParentId\n )\n SELECT ECInstanceId, ParentId, ModelId FROM ChangedElementHierarchy\n LIMIT :resultLimit\n `;\n OrderedId64Iterable.sortArray(ownedCandidateIds);\n const params = new QueryBinder()\n .bindIdSet(\"candidateIds\", ownedCandidateIds)\n .bindInt(\"resultLimit\", maximumElementCount + 1);\n // QueryBinder serializes the IdSet synchronously, so release this temporary copy before retaining the hierarchy.\n ownedCandidateIds.length = 0;\n const rootsByModel = new Map<Id64String, Id64String[]>();\n const childrenByParent = new Map<Id64String, Id64String[]>();\n let elementCount = 0;\n let elementLimitExceeded = false;\n for await (const row of sourceDb.createQueryReader(sql, params, {\n usePrimaryConn: true,\n })) {\n if (elementCount >= maximumElementCount) {\n // Consume the single overflow row so the ECSqlReader reaches done; it has no disposal API.\n elementLimitExceeded = true;\n continue;\n }\n elementCount++;\n const elementId: Id64String = row[0];\n const parentId: Id64String | undefined = row[1] ?? undefined;\n const modelId: Id64String = row[2];\n const index = parentId === undefined ? rootsByModel : childrenByParent;\n const key = parentId ?? modelId;\n const siblings = index.get(key);\n if (siblings === undefined) index.set(key, [elementId]);\n else siblings.push(elementId);\n }\n\n if (elementLimitExceeded) return undefined;\n\n for (const siblings of rootsByModel.values()) {\n OrderedId64Iterable.sortArray(siblings);\n }\n for (const siblings of childrenByParent.values()) {\n OrderedId64Iterable.sortArray(siblings);\n }\n return new ChangedElementForest(rootsByModel, childrenByParent);\n }\n\n /** Gets the indexed root element IDs for a model. */\n public getModelRoots(modelId: Id64String): readonly Id64String[] {\n return this._rootsByModel.get(modelId) ?? [];\n }\n\n /** Gets the indexed child element IDs for a parent element. */\n public getChildren(parentId: Id64String): readonly Id64String[] {\n return this._childrenByParent.get(parentId) ?? [];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementAspectCleanup.d.ts","sourceRoot":"","sources":["../../src/ElementAspectCleanup.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,OAAO,EACP,aAAa,EAIb,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,YACmB,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EACtE;IAEJ;;OAEG;IACU,MAAM,CACjB,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,EACzC,mCAAmC,EAAE,WAAW,CAAC,MAAM,CAAC,EACxD,iBAAiB,CAAC,EAAE,UAAU,EAC9B,QAAQ,SAAwB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAgEf;CACF"}
1
+ {"version":3,"file":"ElementAspectCleanup.d.ts","sourceRoot":"","sources":["../../src/ElementAspectCleanup.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,OAAO,EACP,aAAa,EAIb,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,YACmB,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EACtE;IAEJ;;OAEG;IACU,MAAM,CACjB,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,EACzC,mCAAmC,EAAE,WAAW,CAAC,MAAM,CAAC,EACxD,iBAAiB,CAAC,EAAE,UAAU,EAC9B,QAAQ,SAAwB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA+Df;CACF"}
@@ -61,8 +61,7 @@ class ElementAspectCleanup {
61
61
  FROM ${aspectClassFullName} aspect
62
62
  INNER JOIN IdSet(:elementIds) ids ON ids.id = aspect.Element.Id
63
63
  WHERE ${whereClause}
64
- LIMIT ${pageSize}
65
- OPTIONS ENABLE_EXPERIMENTAL_FEATURES`;
64
+ LIMIT ${pageSize}`;
66
65
  // Drain the full page before deleting: mutating a table while a reader is still
67
66
  // scanning it is unsafe.
68
67
  const candidateIds = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ElementAspectCleanup.js","sourceRoot":"","sources":["../../src/ElementAspectCleanup.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,sDAO6B;AAE7B,oDAAiD;AAEjD;;GAEG;AACH;IAEqB,SAAS;IACT,QAAQ;IACR,aAAa;IAHhC,YACmB,SAAmB,EACnB,QAAiB,EACjB,aAAuD;yBAFvD,SAAS;wBACT,QAAQ;6BACR,aAAa;IAC7B,CAAC;IAEJ;;OAEG;IACI,KAAK,CAAC,MAAM,CACjB,gBAAyC,EACzC,mCAAwD,EACxD,iBAA8B,EAC9B,QAAQ,GAAG,uBAAQ,CAAC,QAAQ,GAAG,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAExC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAa,gBAAgB,CAAC,CAAC;QAClD,MAAM,yCAAyC,GAAG;YAChD,GAAG,mCAAmC;SACvC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QACzE,KAAK,MAAM,mBAAmB,IAAI;YAChC,kCAAmB,CAAC,aAAa;YACjC,iCAAkB,CAAC,aAAa;SACjC,EAAE,CAAC;YACF,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBAC9D,IAAI,WAAW,GAAG,MAAM,CAAC;gBACzB,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;oBACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;oBACtD,WAAW,IAAI;uCACc,mCAAoB,CAAC,aAAa;;YAE7D,CAAC;gBACL,CAAC;gBACD,IAAI,yCAAyC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzD,WAAW,IAAI;uCACc,mBAAmB;kCACxB;wBACpB,GAAG,yCAAyC;qBAC7C,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,CAAC;gBACL,CAAC;gBAED,MAAM,KAAK,GAAG;iBACL,mBAAmB;;kBAElB,WAAW;kBACX,QAAQ;+CACqB,CAAC;gBACxC,gFAAgF;gBAChF,yBAAyB;gBACzB,MAAM,YAAY,GAAiB,EAAE,CAAC;gBACtC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CACtD,KAAK,EACL,MAAM,EACN,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,EAAE,CAAC;oBACF,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;gBACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAErC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;oBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC3D,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport {\n EditTxn,\n ElementAspect,\n ElementMultiAspect,\n ElementUniqueAspect,\n ExternalSourceAspect,\n IModelDb,\n} from \"@itwin/core-backend\";\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { QueryBinder } from \"@itwin/core-common\";\n\n/** Deletes replaceable ElementAspects for target owners while preserving excluded classes and transformer provenance aspects.\n * @internal\n */\nexport class ElementAspectCleanup {\n public constructor(\n private readonly _targetDb: IModelDb,\n private readonly _editTxn: EditTxn,\n private readonly _deleteAspect: (aspect: ElementAspect) => Promise<void>\n ) {}\n\n /** Deletes replaceable unique and multi-aspects owned by the supplied target elements.\n * Excluded classes and transformer provenance aspects for `provenanceScopeId` are preserved. Each deletion is performed through the configured callback and requires the target `EditTxn` to be active.\n */\n public async delete(\n targetElementIds: ReadonlySet<Id64String>,\n excludedElementAspectClassFullNames: ReadonlySet<string>,\n provenanceScopeId?: Id64String,\n pageSize = IModelDb.maxLimit - 1\n ): Promise<void> {\n if (!this._editTxn.isActive) {\n throw new Error(\n \"The target EditTxn must be active when deleting ElementAspects.\"\n );\n }\n if (pageSize <= 0 || !Number.isSafeInteger(pageSize)) {\n throw new Error(\n \"ElementAspect deletion pageSize must be a positive integer.\"\n );\n }\n if (targetElementIds.size === 0) return;\n\n const ids = new Set<Id64String>(targetElementIds);\n const targetExcludedElementAspectClassFullNames = [\n ...excludedElementAspectClassFullNames,\n ].filter((classFullName) => this._targetDb.containsClass(classFullName));\n for (const aspectClassFullName of [\n ElementUniqueAspect.classFullName,\n ElementMultiAspect.classFullName,\n ]) {\n while (true) {\n const params = new QueryBinder().bindIdSet(\"elementIds\", ids);\n let whereClause = \"TRUE\";\n if (provenanceScopeId !== undefined) {\n params.bindId(\"provenanceScopeId\", provenanceScopeId);\n whereClause += ` AND ECInstanceId NOT IN (\n SELECT ECInstanceId FROM ${ExternalSourceAspect.classFullName}\n WHERE Element.Id = :provenanceScopeId OR Scope.Id = :provenanceScopeId\n )`;\n }\n if (targetExcludedElementAspectClassFullNames.length > 0) {\n whereClause += ` AND ECInstanceId NOT IN (\n SELECT ECInstanceId FROM ${aspectClassFullName}\n WHERE ECClassId IS (${[\n ...targetExcludedElementAspectClassFullNames,\n ].join(\", \")})\n )`;\n }\n\n const query = `SELECT aspect.ECInstanceId as id\n FROM ${aspectClassFullName} aspect\n INNER JOIN IdSet(:elementIds) ids ON ids.id = aspect.Element.Id\n WHERE ${whereClause}\n LIMIT ${pageSize}\n OPTIONS ENABLE_EXPERIMENTAL_FEATURES`;\n // Drain the full page before deleting: mutating a table while a reader is still\n // scanning it is unsafe.\n const candidateIds: Id64String[] = [];\n for await (const row of this._targetDb.createQueryReader(\n query,\n params,\n { usePrimaryConn: true }\n )) {\n candidateIds.push(row.id);\n }\n if (candidateIds.length === 0) break;\n\n for (const aspectId of candidateIds) {\n const aspect = this._targetDb.elements.getAspect(aspectId);\n await this._deleteAspect(aspect);\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ElementAspectCleanup.js","sourceRoot":"","sources":["../../src/ElementAspectCleanup.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,sDAO6B;AAE7B,oDAAiD;AAEjD;;GAEG;AACH;IAEqB,SAAS;IACT,QAAQ;IACR,aAAa;IAHhC,YACmB,SAAmB,EACnB,QAAiB,EACjB,aAAuD;yBAFvD,SAAS;wBACT,QAAQ;6BACR,aAAa;IAC7B,CAAC;IAEJ;;OAEG;IACI,KAAK,CAAC,MAAM,CACjB,gBAAyC,EACzC,mCAAwD,EACxD,iBAA8B,EAC9B,QAAQ,GAAG,uBAAQ,CAAC,QAAQ,GAAG,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAExC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAa,gBAAgB,CAAC,CAAC;QAClD,MAAM,yCAAyC,GAAG;YAChD,GAAG,mCAAmC;SACvC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QACzE,KAAK,MAAM,mBAAmB,IAAI;YAChC,kCAAmB,CAAC,aAAa;YACjC,iCAAkB,CAAC,aAAa;SACjC,EAAE,CAAC;YACF,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBAC9D,IAAI,WAAW,GAAG,MAAM,CAAC;gBACzB,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;oBACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;oBACtD,WAAW,IAAI;uCACc,mCAAoB,CAAC,aAAa;;YAE7D,CAAC;gBACL,CAAC;gBACD,IAAI,yCAAyC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzD,WAAW,IAAI;uCACc,mBAAmB;kCACxB;wBACpB,GAAG,yCAAyC;qBAC7C,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,CAAC;gBACL,CAAC;gBAED,MAAM,KAAK,GAAG;iBACL,mBAAmB;;kBAElB,WAAW;kBACX,QAAQ,EAAE,CAAC;gBACrB,gFAAgF;gBAChF,yBAAyB;gBACzB,MAAM,YAAY,GAAiB,EAAE,CAAC;gBACtC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CACtD,KAAK,EACL,MAAM,EACN,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,EAAE,CAAC;oBACF,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;gBACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAErC,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;oBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC3D,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport {\n EditTxn,\n ElementAspect,\n ElementMultiAspect,\n ElementUniqueAspect,\n ExternalSourceAspect,\n IModelDb,\n} from \"@itwin/core-backend\";\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { QueryBinder } from \"@itwin/core-common\";\n\n/** Deletes replaceable ElementAspects for target owners while preserving excluded classes and transformer provenance aspects.\n * @internal\n */\nexport class ElementAspectCleanup {\n public constructor(\n private readonly _targetDb: IModelDb,\n private readonly _editTxn: EditTxn,\n private readonly _deleteAspect: (aspect: ElementAspect) => Promise<void>\n ) {}\n\n /** Deletes replaceable unique and multi-aspects owned by the supplied target elements.\n * Excluded classes and transformer provenance aspects for `provenanceScopeId` are preserved. Each deletion is performed through the configured callback and requires the target `EditTxn` to be active.\n */\n public async delete(\n targetElementIds: ReadonlySet<Id64String>,\n excludedElementAspectClassFullNames: ReadonlySet<string>,\n provenanceScopeId?: Id64String,\n pageSize = IModelDb.maxLimit - 1\n ): Promise<void> {\n if (!this._editTxn.isActive) {\n throw new Error(\n \"The target EditTxn must be active when deleting ElementAspects.\"\n );\n }\n if (pageSize <= 0 || !Number.isSafeInteger(pageSize)) {\n throw new Error(\n \"ElementAspect deletion pageSize must be a positive integer.\"\n );\n }\n if (targetElementIds.size === 0) return;\n\n const ids = new Set<Id64String>(targetElementIds);\n const targetExcludedElementAspectClassFullNames = [\n ...excludedElementAspectClassFullNames,\n ].filter((classFullName) => this._targetDb.containsClass(classFullName));\n for (const aspectClassFullName of [\n ElementUniqueAspect.classFullName,\n ElementMultiAspect.classFullName,\n ]) {\n while (true) {\n const params = new QueryBinder().bindIdSet(\"elementIds\", ids);\n let whereClause = \"TRUE\";\n if (provenanceScopeId !== undefined) {\n params.bindId(\"provenanceScopeId\", provenanceScopeId);\n whereClause += ` AND ECInstanceId NOT IN (\n SELECT ECInstanceId FROM ${ExternalSourceAspect.classFullName}\n WHERE Element.Id = :provenanceScopeId OR Scope.Id = :provenanceScopeId\n )`;\n }\n if (targetExcludedElementAspectClassFullNames.length > 0) {\n whereClause += ` AND ECInstanceId NOT IN (\n SELECT ECInstanceId FROM ${aspectClassFullName}\n WHERE ECClassId IS (${[\n ...targetExcludedElementAspectClassFullNames,\n ].join(\", \")})\n )`;\n }\n\n const query = `SELECT aspect.ECInstanceId as id\n FROM ${aspectClassFullName} aspect\n INNER JOIN IdSet(:elementIds) ids ON ids.id = aspect.Element.Id\n WHERE ${whereClause}\n LIMIT ${pageSize}`;\n // Drain the full page before deleting: mutating a table while a reader is still\n // scanning it is unsafe.\n const candidateIds: Id64String[] = [];\n for await (const row of this._targetDb.createQueryReader(\n query,\n params,\n { usePrimaryConn: true }\n )) {\n candidateIds.push(row.id);\n }\n if (candidateIds.length === 0) break;\n\n for (const aspectId of candidateIds) {\n const aspect = this._targetDb.elements.getAspect(aspectId);\n await this._deleteAspect(aspect);\n }\n }\n }\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { Id64Set, Id64String } from "@itwin/core-bentley";
2
+ import { IModelDb } from "@itwin/core-backend";
3
+ /** Finds the target roots required for native bulk deletion.
4
+ *
5
+ * Native deletion already cascades through child elements and modeled contents. This query follows
6
+ * those dependencies to find top-level elements whose codes are scoped by an element in a deleted
7
+ * tree. Each code-dependent element becomes another native deletion root.
8
+ * @internal
9
+ */
10
+ export declare function findBulkDeleteRoots(targetDb: IModelDb, elementIds: ReadonlySet<Id64String>): Promise<Id64Set>;
11
+ //# sourceMappingURL=ElementBulkDelete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementBulkDelete.d.ts","sourceRoot":"","sources":["../../src/ElementBulkDelete.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,GAClC,OAAO,CAAC,OAAO,CAAC,CAsClB"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.findBulkDeleteRoots = findBulkDeleteRoots;
8
+ const core_common_1 = require("@itwin/core-common");
9
+ /** Finds the target roots required for native bulk deletion.
10
+ *
11
+ * Native deletion already cascades through child elements and modeled contents. This query follows
12
+ * those dependencies to find top-level elements whose codes are scoped by an element in a deleted
13
+ * tree. Each code-dependent element becomes another native deletion root.
14
+ * @internal
15
+ */
16
+ async function findBulkDeleteRoots(targetDb, elementIds) {
17
+ const deleteRoots = new Set();
18
+ // CascadeIds pairs each traversed element with a root that the native API must delete. The anchor
19
+ // adds requested roots that still exist. Recursive branches walk child elements and modeled
20
+ // contents while preserving DeleteRootId. A top-level element whose code is scoped by anything
21
+ // already traversed becomes a new root, so recursion also covers its tree and code dependents.
22
+ // DeleteRoots returns only the roots because native deletion performs the child and model cascade.
23
+ const query = `
24
+ WITH RECURSIVE CascadeIds(Id, DeleteRootId) AS (
25
+ SELECT element.ECInstanceId, element.ECInstanceId
26
+ FROM bis.Element element
27
+ INNER JOIN IdSet(:elementIds) ids ON ids.id = element.ECInstanceId
28
+ UNION
29
+ SELECT child.ECInstanceId, deletionParent.DeleteRootId
30
+ FROM bis.Element child
31
+ INNER JOIN CascadeIds deletionParent ON child.Parent.Id = deletionParent.Id
32
+ UNION
33
+ SELECT modelElement.ECInstanceId, modeledElement.DeleteRootId
34
+ FROM bis.Element modelElement
35
+ INNER JOIN CascadeIds modeledElement ON modelElement.Model.Id = modeledElement.Id
36
+ UNION
37
+ SELECT codeDependent.ECInstanceId, codeDependent.ECInstanceId
38
+ FROM bis.Element codeDependent
39
+ INNER JOIN CascadeIds scope ON codeDependent.CodeScope.Id = scope.Id
40
+ WHERE codeDependent.Parent.Id IS NULL
41
+ ),
42
+ DeleteRoots(Id) AS (
43
+ SELECT DISTINCT DeleteRootId FROM CascadeIds
44
+ )
45
+ SELECT Id AS id FROM DeleteRoots
46
+ `;
47
+ const params = new core_common_1.QueryBinder().bindIdSet("elementIds", elementIds);
48
+ for await (const row of targetDb.createQueryReader(query, params, {
49
+ usePrimaryConn: true,
50
+ })) {
51
+ deleteRoots.add(row.id);
52
+ }
53
+ return deleteRoots;
54
+ }
55
+ //# sourceMappingURL=ElementBulkDelete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementBulkDelete.js","sourceRoot":"","sources":["../../src/ElementBulkDelete.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAGhG,oDAAiD;AAGjD;;;;;;GAMG;AACI,KAAK,8BACV,QAAkB,EAClB,UAAmC;IAEnC,MAAM,WAAW,GAAY,IAAI,GAAG,EAAc,CAAC;IACnD,kGAAkG;IAClG,4FAA4F;IAC5F,+FAA+F;IAC/F,+FAA+F;IAC/F,mGAAmG;IACnG,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;GAuBb,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE;QAChE,cAAc,EAAE,IAAI;KACrB,CAAC,EAAE,CAAC;QACH,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Id64Set, Id64String } from \"@itwin/core-bentley\";\nimport { QueryBinder } from \"@itwin/core-common\";\nimport { IModelDb } from \"@itwin/core-backend\";\n\n/** Finds the target roots required for native bulk deletion.\n *\n * Native deletion already cascades through child elements and modeled contents. This query follows\n * those dependencies to find top-level elements whose codes are scoped by an element in a deleted\n * tree. Each code-dependent element becomes another native deletion root.\n * @internal\n */\nexport async function findBulkDeleteRoots(\n targetDb: IModelDb,\n elementIds: ReadonlySet<Id64String>\n): Promise<Id64Set> {\n const deleteRoots: Id64Set = new Set<Id64String>();\n // CascadeIds pairs each traversed element with a root that the native API must delete. The anchor\n // adds requested roots that still exist. Recursive branches walk child elements and modeled\n // contents while preserving DeleteRootId. A top-level element whose code is scoped by anything\n // already traversed becomes a new root, so recursion also covers its tree and code dependents.\n // DeleteRoots returns only the roots because native deletion performs the child and model cascade.\n const query = `\n WITH RECURSIVE CascadeIds(Id, DeleteRootId) AS (\n SELECT element.ECInstanceId, element.ECInstanceId\n FROM bis.Element element\n INNER JOIN IdSet(:elementIds) ids ON ids.id = element.ECInstanceId\n UNION\n SELECT child.ECInstanceId, deletionParent.DeleteRootId\n FROM bis.Element child\n INNER JOIN CascadeIds deletionParent ON child.Parent.Id = deletionParent.Id\n UNION\n SELECT modelElement.ECInstanceId, modeledElement.DeleteRootId\n FROM bis.Element modelElement\n INNER JOIN CascadeIds modeledElement ON modelElement.Model.Id = modeledElement.Id\n UNION\n SELECT codeDependent.ECInstanceId, codeDependent.ECInstanceId\n FROM bis.Element codeDependent\n INNER JOIN CascadeIds scope ON codeDependent.CodeScope.Id = scope.Id\n WHERE codeDependent.Parent.Id IS NULL\n ),\n DeleteRoots(Id) AS (\n SELECT DISTINCT DeleteRootId FROM CascadeIds\n )\n SELECT Id AS id FROM DeleteRoots\n `;\n const params = new QueryBinder().bindIdSet(\"elementIds\", elementIds);\n for await (const row of targetDb.createQueryReader(query, params, {\n usePrimaryConn: true,\n })) {\n deleteRoots.add(row.id);\n }\n return deleteRoots;\n}\n"]}
@@ -112,8 +112,8 @@ export declare abstract class IModelExportHandler {
112
112
  * @internal
113
113
  */
114
114
  preExportElement(_element: Element): Promise<void>;
115
- /** Called when an element should be deleted. */
116
- onDeleteElement(_elementId: Id64String): Promise<void>;
115
+ /** Called once with the source IDs of all elements deleted by the exported changes. */
116
+ onDeleteElements(_elementIds: ReadonlySet<Id64String>): Promise<void>;
117
117
  /** If `true` is returned, then the ElementAspect will be exported.
118
118
  * @note This method can optionally be overridden to exclude an individual ElementAspect from the export. The base implementation always returns `true`.
119
119
  */
@@ -202,6 +202,10 @@ export declare class IModelExporter {
202
202
  private _progressCounter;
203
203
  /** Optionally cached entity change information */
204
204
  private _sourceDbChanges?;
205
+ /** State shared by nested calls in one change-processing element traversal. */
206
+ private _changedElementTraversal?;
207
+ /** Bounds the additional hierarchy retained by the sparse changed-element path. */
208
+ private readonly _changedElementForestElementLimit;
205
209
  /**
206
210
  * Retrieve the cached entity change information.
207
211
  * @note This will only be initialized after [IModelExporter.exportChanges] is invoked or [IModelExporter.initialize] is called.
@@ -249,7 +253,9 @@ export declare class IModelExporter {
249
253
  registerHandler(handler: IModelExportHandler): void;
250
254
  /** Add a rule to exclude a CodeSpec */
251
255
  excludeCodeSpec(codeSpecName: string): void;
252
- /** Add a rule to exclude a specific Element. */
256
+ /** Add a rule to exclude a specific Element.
257
+ * @note Configure exclusions before starting an export operation. Changing exclusions while an export is in progress is unsupported.
258
+ */
253
259
  excludeElement(elementId: Id64String): void;
254
260
  /** Add a rule to exclude all Elements in a specified Category. */
255
261
  excludeElementsInCategory(categoryId: Id64String): void;
@@ -354,11 +360,21 @@ export declare class IModelExporter {
354
360
  */
355
361
  exportChildElements(elementId: Id64String): Promise<void>;
356
362
  private exportChildElementsImpl;
363
+ /** Whether change processing may use the sparse hierarchy as the child-id source.
364
+ * Custom traversal overrides retain the previous full element dispatch.
365
+ */
366
+ private canUseChangedElementForest;
367
+ private getOverriddenElementTraversalMethods;
368
+ private disableChangedElementForest;
369
+ private createChangedElementForest;
370
+ private getChangedElementForest;
357
371
  /** Exports all aspects owned by the supplied elements. */
358
372
  private exportAspectsForOwners;
359
373
  private filterOwnerElementIdsForAspectExport;
360
374
  private shouldExportElementHierarchyForAspect;
361
375
  private shouldExportModelForAspect;
376
+ private beginChangedElementTraversalScope;
377
+ private endChangedElementTraversalScope;
362
378
  private runScopedElementExport;
363
379
  /** Apply the element export filter when deciding whether to process an aspect owner. @internal */
364
380
  private shouldExportElementForAspect;
@@ -1 +1 @@
1
- {"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelExporter.d.ts","sourceRoot":"","sources":["../../src/IModelExporter.ts"],"names":[],"mappings":"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"}