@itwin/core-backend 4.11.0-dev.2 → 4.11.0-dev.4

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 (53) hide show
  1. package/CHANGELOG.md +42 -1
  2. package/lib/cjs/BisCoreSchema.d.ts.map +1 -1
  3. package/lib/cjs/BisCoreSchema.js +2 -0
  4. package/lib/cjs/BisCoreSchema.js.map +1 -1
  5. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  6. package/lib/cjs/ChangeSummaryManager.js +12 -5
  7. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  8. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  9. package/lib/cjs/ChangesetECAdaptor.js +1 -0
  10. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  11. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  12. package/lib/cjs/CheckpointManager.js +2 -0
  13. package/lib/cjs/CheckpointManager.js.map +1 -1
  14. package/lib/cjs/ECDb.d.ts +46 -1
  15. package/lib/cjs/ECDb.d.ts.map +1 -1
  16. package/lib/cjs/ECDb.js +90 -0
  17. package/lib/cjs/ECDb.js.map +1 -1
  18. package/lib/cjs/ECSqlStatement.d.ts +200 -2
  19. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  20. package/lib/cjs/ECSqlStatement.js +237 -5
  21. package/lib/cjs/ECSqlStatement.js.map +1 -1
  22. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  23. package/lib/cjs/ElementAspect.js +2 -0
  24. package/lib/cjs/ElementAspect.js.map +1 -1
  25. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  26. package/lib/cjs/ElementTreeWalker.js +4 -0
  27. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  28. package/lib/cjs/IModelDb.d.ts +13 -1
  29. package/lib/cjs/IModelDb.d.ts.map +1 -1
  30. package/lib/cjs/IModelDb.js +41 -5
  31. package/lib/cjs/IModelDb.js.map +1 -1
  32. package/lib/cjs/IModelHost.d.ts.map +1 -1
  33. package/lib/cjs/IModelHost.js +1 -1
  34. package/lib/cjs/IModelHost.js.map +1 -1
  35. package/lib/cjs/Relationship.d.ts.map +1 -1
  36. package/lib/cjs/Relationship.js +3 -1
  37. package/lib/cjs/Relationship.js.map +1 -1
  38. package/lib/cjs/ViewStore.d.ts.map +1 -1
  39. package/lib/cjs/ViewStore.js +2 -1
  40. package/lib/cjs/ViewStore.js.map +1 -1
  41. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
  42. package/lib/cjs/internal/ChannelAdmin.js +2 -0
  43. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  44. package/lib/cjs/rpc/multipart.d.ts.map +1 -1
  45. package/lib/cjs/rpc/multipart.js +2 -1
  46. package/lib/cjs/rpc/multipart.js.map +1 -1
  47. package/lib/cjs/rpc/web/request.d.ts.map +1 -1
  48. package/lib/cjs/rpc/web/request.js +2 -1
  49. package/lib/cjs/rpc/web/request.js.map +1 -1
  50. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  51. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +3 -2
  52. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  53. package/package.json +18 -15
package/CHANGELOG.md CHANGED
@@ -1,6 +1,47 @@
1
1
  # Change Log - @itwin/core-backend
2
2
 
3
- This log was last generated on Tue, 21 Jan 2025 21:58:14 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 02 Apr 2025 19:37:09 GMT and should not be manually modified.
4
+
5
+ ## 4.10.12
6
+ Wed, 02 Apr 2025 19:35:47 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 4.10.11
11
+ Wed, 19 Mar 2025 15:30:39 GMT
12
+
13
+ ### Updates
14
+
15
+ - new test for 3d linestyle part export
16
+
17
+ ## 4.10.10
18
+ Tue, 11 Mar 2025 15:25:11 GMT
19
+
20
+ ### Updates
21
+
22
+ - Resolves CVE-2025-27152
23
+
24
+ ## 4.10.9
25
+ Tue, 11 Mar 2025 05:17:33 GMT
26
+
27
+ _Version update only_
28
+
29
+ ## 4.10.8
30
+ Thu, 06 Mar 2025 14:13:37 GMT
31
+
32
+ _Version update only_
33
+
34
+ ## 4.10.7
35
+ Tue, 18 Feb 2025 17:27:03 GMT
36
+
37
+ ### Updates
38
+
39
+ - Fix issue with concurrent query where it interrupt statement during prepare
40
+
41
+ ## 4.10.6
42
+ Fri, 24 Jan 2025 08:02:40 GMT
43
+
44
+ _Version update only_
4
45
 
5
46
  ## 4.10.5
6
47
  Tue, 21 Jan 2025 21:56:45 GMT
@@ -1 +1 @@
1
- {"version":3,"file":"BisCoreSchema.d.ts","sourceRoot":"","sources":["../../src/BisCoreSchema.ts"],"names":[],"mappings":"AAIA;;GAEG;AAYH,OAAO,EAAE,MAAM,EAAW,MAAM,UAAU,CAAC;AAM3C;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,SAAQ,MAAM;IACvC,WAA2B,UAAU,IAAI,MAAM,CAAsB;IACrE,WAAkB,cAAc,IAAI,MAAM,CAAsH;IAEhK,gBAAgB;WACF,cAAc;CAsB7B"}
1
+ {"version":3,"file":"BisCoreSchema.d.ts","sourceRoot":"","sources":["../../src/BisCoreSchema.ts"],"names":[],"mappings":"AAIA;;GAEG;AAYH,OAAO,EAAE,MAAM,EAAW,MAAM,UAAU,CAAC;AAO3C;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,SAAQ,MAAM;IACvC,WAA2B,UAAU,IAAI,MAAM,CAAsB;IACrE,WAAkB,cAAc,IAAI,MAAM,CAAsH;IAEhK,gBAAgB;WACF,cAAc;CAuB7B"}
@@ -23,6 +23,7 @@ const textureMod = require("./Texture");
23
23
  const viewMod = require("./ViewDefinition");
24
24
  const displayStyleMod = require("./DisplayStyle");
25
25
  const annotationsMod = require("./TextAnnotationElement");
26
+ const sheetIndex = require("./SheetIndex");
26
27
  /**
27
28
  * The [BisCore]($docs/bis/guide/fundamentals/schemas-domains.md) schema is the lowest level Schema in an iModel.
28
29
  *
@@ -56,6 +57,7 @@ class BisCoreSchema extends Schema_1.Schema {
56
57
  externalSourceMod,
57
58
  displayStyleMod,
58
59
  annotationsMod,
60
+ sheetIndex
59
61
  ].forEach((module) => ClassRegistry_1.ClassRegistry.registerModule(module, this));
60
62
  }
61
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BisCoreSchema.js","sourceRoot":"","sources":["../../src/BisCoreSchema.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,6BAA6B;AAC7B,0CAA0C;AAC1C,mDAAgD;AAChD,wCAAwC;AACxC,6CAA6C;AAC7C,sDAAsD;AACtD,6CAA8C;AAC9C,0CAA0C;AAC1C,oCAAoC;AACpC,0CAA0C;AAC1C,qCAA2C;AAC3C,wCAAwC;AACxC,4CAA4C;AAC5C,kDAAkD;AAClD,0DAA0D;AAE1D;;;;;;;;;;GAUG;AACH,MAAa,aAAc,SAAQ,eAAM;IAChC,MAAM,KAAc,UAAU,KAAa,OAAO,SAAS,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,cAAc,KAAa,OAAO,IAAI,CAAC,IAAI,CAAC,2BAAc,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,UAAU,eAAe,CAAC,CAAC,CAAC,CAAC;IAEhK,gBAAgB;IACT,MAAM,CAAC,cAAc;QAC1B,IAAI,IAAI,KAAK,gBAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;YACvD,OAAO;QAET,gBAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,gBAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE7B,sHAAsH;QACtH;YACE,UAAU;YACV,SAAS;YACT,QAAQ;YACR,WAAW;YACX,OAAO;YACP,OAAO;YACP,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,eAAe;YACf,cAAc;SACf,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,6BAAa,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;CACF;AA3BD,sCA2BC","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/** @packageDocumentation\n * @module Schema\n */\n\nimport * as path from \"path\";\nimport * as categoryMod from \"./Category\";\nimport { ClassRegistry } from \"./ClassRegistry\";\nimport * as elementMod from \"./Element\";\nimport * as aspectMod from \"./ElementAspect\";\nimport * as externalSourceMod from \"./ExternalSource\";\nimport { KnownLocations } from \"./IModelHost\";\nimport * as materialMod from \"./Material\";\nimport * as modelMod from \"./Model\";\nimport * as linkMod from \"./Relationship\";\nimport { Schema, Schemas } from \"./Schema\";\nimport * as textureMod from \"./Texture\";\nimport * as viewMod from \"./ViewDefinition\";\nimport * as displayStyleMod from \"./DisplayStyle\";\nimport * as annotationsMod from \"./TextAnnotationElement\";\n\n/**\n * The [BisCore]($docs/bis/guide/fundamentals/schemas-domains.md) schema is the lowest level Schema in an iModel.\n *\n * It is automatically registered when [[IModelHost.startup]] is called.\n *\n * Example:\n * ``` ts\n * [[include:BisCore.registerSchemaAndGetClass]]\n * ```\n * @public\n */\nexport class BisCoreSchema extends Schema {\n public static override get schemaName(): string { return \"BisCore\"; }\n public static get schemaFilePath(): string { return path.join(KnownLocations.nativeAssetsDir, \"ECSchemas\", \"Dgn\", `${BisCoreSchema.schemaName}.ecschema.xml`); }\n\n /** @internal */\n public static registerSchema() {\n if (this === Schemas.getRegisteredSchema(this.schemaName))\n return;\n\n Schemas.unregisterSchema(this.schemaName);\n Schemas.registerSchema(this);\n\n // this list should include all backend .ts files with implementations of Entity-based classes. Order does not matter.\n [\n elementMod,\n aspectMod,\n modelMod,\n categoryMod,\n viewMod,\n linkMod,\n textureMod,\n materialMod,\n externalSourceMod,\n displayStyleMod,\n annotationsMod,\n ].forEach((module) => ClassRegistry.registerModule(module, this));\n }\n}\n"]}
1
+ {"version":3,"file":"BisCoreSchema.js","sourceRoot":"","sources":["../../src/BisCoreSchema.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,6BAA6B;AAC7B,0CAA0C;AAC1C,mDAAgD;AAChD,wCAAwC;AACxC,6CAA6C;AAC7C,sDAAsD;AACtD,6CAA8C;AAC9C,0CAA0C;AAC1C,oCAAoC;AACpC,0CAA0C;AAC1C,qCAA2C;AAC3C,wCAAwC;AACxC,4CAA4C;AAC5C,kDAAkD;AAClD,0DAA0D;AAC1D,2CAA2C;AAE3C;;;;;;;;;;GAUG;AACH,MAAa,aAAc,SAAQ,eAAM;IAChC,MAAM,KAAc,UAAU,KAAa,OAAO,SAAS,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,cAAc,KAAa,OAAO,IAAI,CAAC,IAAI,CAAC,2BAAc,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,UAAU,eAAe,CAAC,CAAC,CAAC,CAAC;IAEhK,gBAAgB;IACT,MAAM,CAAC,cAAc;QAC1B,IAAI,IAAI,KAAK,gBAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;YACvD,OAAO;QAET,gBAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,gBAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE7B,sHAAsH;QACtH;YACE,UAAU;YACV,SAAS;YACT,QAAQ;YACR,WAAW;YACX,OAAO;YACP,OAAO;YACP,UAAU;YACV,WAAW;YACX,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,UAAU;SACX,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,6BAAa,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;CACF;AA5BD,sCA4BC","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/** @packageDocumentation\n * @module Schema\n */\n\nimport * as path from \"path\";\nimport * as categoryMod from \"./Category\";\nimport { ClassRegistry } from \"./ClassRegistry\";\nimport * as elementMod from \"./Element\";\nimport * as aspectMod from \"./ElementAspect\";\nimport * as externalSourceMod from \"./ExternalSource\";\nimport { KnownLocations } from \"./IModelHost\";\nimport * as materialMod from \"./Material\";\nimport * as modelMod from \"./Model\";\nimport * as linkMod from \"./Relationship\";\nimport { Schema, Schemas } from \"./Schema\";\nimport * as textureMod from \"./Texture\";\nimport * as viewMod from \"./ViewDefinition\";\nimport * as displayStyleMod from \"./DisplayStyle\";\nimport * as annotationsMod from \"./TextAnnotationElement\";\nimport * as sheetIndex from \"./SheetIndex\";\n\n/**\n * The [BisCore]($docs/bis/guide/fundamentals/schemas-domains.md) schema is the lowest level Schema in an iModel.\n *\n * It is automatically registered when [[IModelHost.startup]] is called.\n *\n * Example:\n * ``` ts\n * [[include:BisCore.registerSchemaAndGetClass]]\n * ```\n * @public\n */\nexport class BisCoreSchema extends Schema {\n public static override get schemaName(): string { return \"BisCore\"; }\n public static get schemaFilePath(): string { return path.join(KnownLocations.nativeAssetsDir, \"ECSchemas\", \"Dgn\", `${BisCoreSchema.schemaName}.ecschema.xml`); }\n\n /** @internal */\n public static registerSchema() {\n if (this === Schemas.getRegisteredSchema(this.schemaName))\n return;\n\n Schemas.unregisterSchema(this.schemaName);\n Schemas.registerSchema(this);\n\n // this list should include all backend .ts files with implementations of Entity-based classes. Order does not matter.\n [\n elementMod,\n aspectMod,\n modelMod,\n categoryMod,\n viewMod,\n linkMod,\n textureMod,\n materialMod,\n externalSourceMod,\n displayStyleMod,\n annotationsMod,\n sheetIndex\n ].forEach((module) => ClassRegistry.registerModule(module, this));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChangeSummaryManager.d.ts","sourceRoot":"","sources":["../../src/ChangeSummaryManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAoB,UAAU,EAAE,UAAU,EAA+B,MAAM,qBAAqB,CAAC;AACzH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAA8B,MAAM,oBAAoB,CAAC;AAMjH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO7D;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,UAAU,CAAA;KAAE,CAAC;CAC3H;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,EAAE,UAAU,CAAC;IACtB,eAAe,EAAE;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,QAAQ;IACvD,+CAA+C;IAC/C,OAAO,EAAE,UAAU,CAAC;IAEpB,uBAAuB;IACvB,QAAQ,EAAE,UAAU,CAAC;IAErB;;;;OAIG;IACH,KAAK,EAAE,cAAc,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAmC;IAE5F;;;OAGG;WACW,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IAO9D;;;;OAIG;WACW,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAoBvD;;;;OAIG;WACW,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAUvD,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuBtC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmBlC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAEpC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAWxC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAuB/B;;;;;;;;;;OAUG;WACW,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,GAAG,aAAa;IAejG;;;;;;;;;;OAUG;WACW,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,GAAG,cAAc;IA0BpG;;;;;;;OAOG;WACW,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,GAAG,MAAM,EAAE;IA4BpG;;;;;;;;;;;;;;;OAeG;WACW,8BAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAC;QAAC,eAAe,EAAE;YAAE,EAAE,EAAE,UAAU,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAyBpQ;;;;;;OAMG;WACiB,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA4C3G;;;;OAIG;WACiB,qBAAqB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAyChG"}
1
+ {"version":3,"file":"ChangeSummaryManager.d.ts","sourceRoot":"","sources":["../../src/ChangeSummaryManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAoB,UAAU,EAAE,UAAU,EAA+B,MAAM,qBAAqB,CAAC;AACzH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAA8B,MAAM,oBAAoB,CAAC;AAMjH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO7D;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,UAAU,CAAA;KAAE,CAAC;CAC3H;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,EAAE,UAAU,CAAC;IACtB,eAAe,EAAE;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,QAAQ;IACvD,+CAA+C;IAC/C,OAAO,EAAE,UAAU,CAAC;IAEpB,uBAAuB;IACvB,QAAQ,EAAE,UAAU,CAAC;IAErB;;;;OAIG;IACH,KAAK,EAAE,cAAc,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAmC;IAE5F;;;OAGG;WACW,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IAO9D;;;;OAIG;WACW,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAoBvD;;;;OAIG;WACW,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAUvD,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuBtC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmBlC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAEpC,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAWxC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAuB/B;;;;;;;;;;OAUG;WACW,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,GAAG,aAAa;IAejG;;;;;;;;;;OAUG;WACW,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,GAAG,cAAc;IA6BpG;;;;;;;OAOG;WACW,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,GAAG,MAAM,EAAE;IA4BpG;;;;;;;;;;;;;;;OAeG;WACW,8BAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,UAAU,CAAC;QAAC,eAAe,EAAE;YAAE,EAAE,EAAE,UAAU,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAyBpQ;;;;;;OAMG;WACiB,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA4C3G;;;;OAIG;WACiB,qBAAqB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAyChG"}
@@ -100,6 +100,7 @@ class ChangeSummaryManager {
100
100
  }
101
101
  static openChangeCacheFile(changesFile, changeCacheFilePath) {
102
102
  changesFile.openDb(changeCacheFilePath, ECDb_1.ECDbOpenMode.FileUpgrade);
103
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
103
104
  const actualSchemaVersion = changesFile.withPreparedStatement("SELECT VersionMajor read,VersionWrite write,VersionMinor minor FROM meta.ECSchemaDef WHERE Name='IModelChange'", (stmt) => {
104
105
  if (stmt.step() !== core_bentley_1.DbResult.BE_SQLITE_ROW)
105
106
  throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR, "File is not a valid Change Cache file.");
@@ -113,6 +114,7 @@ class ChangeSummaryManager {
113
114
  }
114
115
  static getExtendedSchemaPath() { return path.join(IModelHost_1.KnownLocations.packageAssetsDir, "IModelChange.02.00.00.ecschema.xml"); }
115
116
  static isSummaryAlreadyExtracted(changesFile, changeSetId) {
117
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
116
118
  return changesFile.withPreparedStatement("SELECT Summary.Id summaryid FROM imodelchange.ChangeSet WHERE WsgId=?", (stmt) => {
117
119
  stmt.bindString(1, changeSetId);
118
120
  if (core_bentley_1.DbResult.BE_SQLITE_ROW === stmt.step())
@@ -121,7 +123,7 @@ class ChangeSummaryManager {
121
123
  });
122
124
  }
123
125
  static addExtendedInfos(changesFile, changeSummaryId, changesetWsgId, changesetParentWsgId, description, changesetPushDate, changeSetUserCreated) {
124
- changesFile.withPreparedStatement("INSERT INTO imodelchange.ChangeSet(Summary.Id,WsgId,ParentWsgId,Description,PushDate,UserCreated) VALUES(?,?,?,?,?,?)", (stmt) => {
126
+ changesFile.withCachedWriteStatement("INSERT INTO imodelchange.ChangeSet(Summary.Id,WsgId,ParentWsgId,Description,PushDate,UserCreated) VALUES(?,?,?,?,?,?)", (stmt) => {
125
127
  stmt.bindId(1, changeSummaryId);
126
128
  stmt.bindString(2, changesetWsgId);
127
129
  if (changesetParentWsgId)
@@ -132,9 +134,9 @@ class ChangeSummaryManager {
132
134
  stmt.bindDateTime(5, changesetPushDate);
133
135
  if (changeSetUserCreated)
134
136
  stmt.bindString(6, changeSetUserCreated);
135
- const r = stmt.step();
136
- if (r !== core_bentley_1.DbResult.BE_SQLITE_DONE)
137
- throw new core_common_1.IModelError(r, `Failed to add changeset information to extracted change summary ${changeSummaryId}`);
137
+ const r = stmt.stepForInsert();
138
+ if (r.status !== core_bentley_1.DbResult.BE_SQLITE_DONE)
139
+ throw new core_common_1.IModelError(r.status, `Failed to add changeset information to extracted change summary ${changeSummaryId}`);
138
140
  });
139
141
  }
140
142
  /** Queries the ChangeSummary for the specified change summary id
@@ -151,6 +153,7 @@ class ChangeSummaryManager {
151
153
  static queryChangeSummary(iModel, changeSummaryId) {
152
154
  if (!ChangeSummaryManager.isChangeCacheAttached(iModel))
153
155
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, "Change Cache file must be attached to iModel.");
156
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
154
157
  return iModel.withPreparedStatement("SELECT WsgId,ParentWsgId,Description,PushDate,UserCreated FROM ecchange.imodelchange.ChangeSet WHERE Summary.Id=?", (stmt) => {
155
158
  stmt.bindId(1, changeSummaryId);
156
159
  if (stmt.step() !== core_bentley_1.DbResult.BE_SQLITE_ROW)
@@ -174,9 +177,12 @@ class ChangeSummaryManager {
174
177
  if (!ChangeSummaryManager.isChangeCacheAttached(iModel))
175
178
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, "Change Cache file must be attached to iModel.");
176
179
  // query instance changes
180
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
177
181
  const instanceChange = iModel.withPreparedStatement(`SELECT ic.Summary.Id summaryId, s.Name changedInstanceSchemaName, c.Name changedInstanceClassName, ic.ChangedInstance.Id changedInstanceId,
178
182
  ic.OpCode, ic.IsIndirect FROM ecchange.change.InstanceChange ic JOIN main.meta.ECClassDef c ON c.ECInstanceId = ic.ChangedInstance.ClassId
179
- JOIN main.meta.ECSchemaDef s ON c.Schema.Id = s.ECInstanceId WHERE ic.ECInstanceId =? `, (stmt) => {
183
+ JOIN main.meta.ECSchemaDef s ON c.Schema.Id = s.ECInstanceId WHERE ic.ECInstanceId =? `,
184
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
185
+ (stmt) => {
180
186
  stmt.bindId(1, instanceChangeId);
181
187
  if (stmt.step() !== core_bentley_1.DbResult.BE_SQLITE_ROW)
182
188
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `No InstanceChange found for id ${instanceChangeId}.`);
@@ -200,6 +206,7 @@ class ChangeSummaryManager {
200
206
  * @throws [IModelError]($common) if the change cache file hasn't been attached, or in case of other errors.
201
207
  */
202
208
  static getChangedPropertyValueNames(iModel, instanceChangeId) {
209
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
203
210
  return iModel.withPreparedStatement("SELECT AccessString FROM ecchange.change.PropertyValueChange WHERE InstanceChange.Id=?", (stmt) => {
204
211
  stmt.bindId(1, instanceChangeId);
205
212
  const selectClauseItems = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ChangeSummaryManager.js","sourceRoot":"","sources":["../../src/ChangeSummaryManager.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/** @packageDocumentation\n * @module iModels\n */\n\nimport { AccessToken, assert, DbResult, GuidString, Id64String, IModelStatus, Logger, using } from \"@itwin/core-bentley\";\nimport { ChangedValueState, ChangeOpCode, ChangesetRange, IModelError, IModelVersion } from \"@itwin/core-common\";\nimport * as path from \"path\";\nimport { BackendLoggerCategory } from \"./BackendLoggerCategory\";\nimport { BriefcaseManager } from \"./BriefcaseManager\";\nimport { ECDb, ECDbOpenMode } from \"./ECDb\";\nimport { ECSqlStatement } from \"./ECSqlStatement\";\nimport { BriefcaseDb, IModelDb, TokenArg } from \"./IModelDb\";\nimport { IModelHost, KnownLocations } from \"./IModelHost\";\nimport { IModelJsFs } from \"./IModelJsFs\";\nimport { _nativeDb } from \"./internal/Symbols\";\n\nconst loggerCategory: string = BackendLoggerCategory.ECDb;\n\n/** Represents an instance of the `ChangeSummary` ECClass from the `ECDbChange` ECSchema\n * combined with the information from the related `Changeset` instance (from the `IModelChange` ECSchema) from\n * which the Change Summary was extracted.\n *\n * See also\n * - [ChangeSummaryManager.queryChangeSummary]($backend)\n * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)\n * @beta\n */\nexport interface ChangeSummary {\n id: Id64String;\n changeSet: { wsgId: GuidString, parentWsgId: GuidString, description: string, pushDate: string, userCreated: GuidString };\n}\n\n/** Represents an instance of the `InstanceChange` ECClass from the `ECDbChange` ECSchema\n *\n * See also\n * - [ChangeSummaryManager.queryInstanceChange]($backend)\n * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)\n * @beta\n */\nexport interface InstanceChange {\n id: Id64String;\n summaryId: Id64String;\n changedInstance: { id: Id64String, className: string };\n opCode: ChangeOpCode;\n isIndirect: boolean;\n}\n\n/** Options for [ChangeSummaryManager.createChangeSummaries]($backend).\n * @beta\n */\nexport interface CreateChangeSummaryArgs extends TokenArg {\n /** Id of the iTwin that contains the iModel */\n iTwinId: GuidString;\n\n /** Id of the iModel */\n iModelId: GuidString;\n\n /**\n * Range of change sets\n * - the Change Summary for the first and last versions are also included\n * - if unspecified, all change sets until the latest version are processed\n */\n range: ChangesetRange;\n}\n\n/** Class to extract Change Summaries for a briefcase.\n *\n * See also:\n * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)\n * @beta\n */\nexport class ChangeSummaryManager {\n private static readonly _currentIModelChangeSchemaVersion = { read: 2, write: 0, minor: 0 };\n\n /** Determines whether the *Change Cache file* is attached to the specified iModel or not\n * @param iModel iModel to check whether a *Change Cache file* is attached\n * @returns Returns true if the *Change Cache file* is attached to the iModel. false otherwise\n */\n public static isChangeCacheAttached(iModel: IModelDb): boolean {\n if (!iModel || !iModel.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n\n return iModel[_nativeDb].isChangeCacheAttached();\n }\n\n /** Attaches the *Change Cache file* to the specified iModel if it hasn't been attached yet.\n * A new *Change Cache file* will be created for the iModel if it hasn't existed before.\n * @param iModel iModel to attach the *Change Cache file* file to\n * @throws [IModelError]($common)\n */\n public static attachChangeCache(iModel: IModelDb): void {\n if (!iModel || !iModel.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n\n if (ChangeSummaryManager.isChangeCacheAttached(iModel))\n return;\n\n const changesCacheFilePath: string = BriefcaseManager.getChangeCachePathName(iModel.iModelId);\n if (!IModelJsFs.existsSync(changesCacheFilePath)) {\n using(new ECDb(), (changeCacheFile: ECDb) => {\n ChangeSummaryManager.createChangeCacheFile(iModel, changeCacheFile, changesCacheFilePath);\n });\n }\n\n assert(IModelJsFs.existsSync(changesCacheFilePath));\n const res: DbResult = iModel[_nativeDb].attachChangeCache(changesCacheFilePath);\n if (res !== DbResult.BE_SQLITE_OK)\n throw new IModelError(res, `Failed to attach Change Cache file to ${iModel.pathName}.`);\n }\n\n /** Detaches the *Change Cache file* from the specified iModel.\n * - note that this method will cause any pending (currently running or queued) queries to fail\n * @param iModel iModel to detach the *Change Cache file* to\n * @throws [IModelError]($common) in case of errors, e.g. if no *Change Cache file* was attached before.\n */\n public static detachChangeCache(iModel: IModelDb): void {\n if (!iModel || !iModel.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n\n iModel.clearCaches();\n const res: DbResult = iModel[_nativeDb].detachChangeCache();\n if (res !== DbResult.BE_SQLITE_OK)\n throw new IModelError(res, `Failed to detach Change Cache file from ${iModel.pathName}.`);\n }\n\n private static openOrCreateChangesFile(iModel: BriefcaseDb): ECDb {\n if (!iModel?.isOpen)\n throw new IModelError(IModelStatus.BadArg, \"Invalid iModel handle. iModel must be open.\");\n\n const changesFile = new ECDb();\n const changeCacheFilePath = BriefcaseManager.getChangeCachePathName(iModel.iModelId);\n if (IModelJsFs.existsSync(changeCacheFilePath)) {\n ChangeSummaryManager.openChangeCacheFile(changesFile, changeCacheFilePath);\n return changesFile;\n }\n\n try {\n ChangeSummaryManager.createChangeCacheFile(iModel, changesFile, changeCacheFilePath);\n return changesFile;\n } catch (e) {\n // delete cache file again in case it was created but schema import failed\n if (IModelJsFs.existsSync(changeCacheFilePath))\n IModelJsFs.removeSync(changeCacheFilePath);\n\n throw e;\n }\n }\n\n private static createChangeCacheFile(iModel: IModelDb, changesFile: ECDb, changeCacheFilePath: string): void {\n if (!iModel?.isOpen)\n throw new IModelError(IModelStatus.BadArg, \"Invalid iModel object. iModel must be open.\");\n\n const stat: DbResult = iModel[_nativeDb].createChangeCache(changesFile[_nativeDb], changeCacheFilePath);\n if (stat !== DbResult.BE_SQLITE_OK)\n throw new IModelError(stat, `Failed to create Change Cache file at \"${changeCacheFilePath}\".`);\n\n // Extended information like changeset ids, push dates are persisted in the IModelChange ECSchema\n changesFile.importSchema(ChangeSummaryManager.getExtendedSchemaPath());\n }\n\n private static openChangeCacheFile(changesFile: ECDb, changeCacheFilePath: string): void {\n changesFile.openDb(changeCacheFilePath, ECDbOpenMode.FileUpgrade);\n\n const actualSchemaVersion: { read: number, write: number, minor: number } = changesFile.withPreparedStatement(\"SELECT VersionMajor read,VersionWrite write,VersionMinor minor FROM meta.ECSchemaDef WHERE Name='IModelChange'\",\n (stmt: ECSqlStatement) => {\n if (stmt.step() !== DbResult.BE_SQLITE_ROW)\n throw new IModelError(DbResult.BE_SQLITE_ERROR, \"File is not a valid Change Cache file.\");\n\n return stmt.getRow();\n });\n\n if (actualSchemaVersion.read === ChangeSummaryManager._currentIModelChangeSchemaVersion.read &&\n actualSchemaVersion.write === ChangeSummaryManager._currentIModelChangeSchemaVersion.write &&\n actualSchemaVersion.minor === ChangeSummaryManager._currentIModelChangeSchemaVersion.minor)\n return;\n\n changesFile.importSchema(ChangeSummaryManager.getExtendedSchemaPath());\n }\n\n private static getExtendedSchemaPath(): string { return path.join(KnownLocations.packageAssetsDir, \"IModelChange.02.00.00.ecschema.xml\"); }\n\n private static isSummaryAlreadyExtracted(changesFile: ECDb, changeSetId: GuidString): Id64String | undefined {\n return changesFile.withPreparedStatement(\"SELECT Summary.Id summaryid FROM imodelchange.ChangeSet WHERE WsgId=?\",\n (stmt: ECSqlStatement) => {\n stmt.bindString(1, changeSetId);\n if (DbResult.BE_SQLITE_ROW === stmt.step())\n return stmt.getValue(0).getId();\n\n return undefined;\n });\n }\n\n private static addExtendedInfos(changesFile: ECDb, changeSummaryId: Id64String, changesetWsgId: GuidString, changesetParentWsgId?: GuidString, description?: string, changesetPushDate?: string, changeSetUserCreated?: GuidString): void {\n changesFile.withPreparedStatement(\"INSERT INTO imodelchange.ChangeSet(Summary.Id,WsgId,ParentWsgId,Description,PushDate,UserCreated) VALUES(?,?,?,?,?,?)\",\n (stmt: ECSqlStatement) => {\n stmt.bindId(1, changeSummaryId);\n stmt.bindString(2, changesetWsgId);\n if (changesetParentWsgId)\n stmt.bindString(3, changesetParentWsgId);\n\n if (description)\n stmt.bindString(4, description);\n\n if (changesetPushDate)\n stmt.bindDateTime(5, changesetPushDate);\n\n if (changeSetUserCreated)\n stmt.bindString(6, changeSetUserCreated);\n\n const r: DbResult = stmt.step();\n if (r !== DbResult.BE_SQLITE_DONE)\n throw new IModelError(r, `Failed to add changeset information to extracted change summary ${changeSummaryId}`);\n });\n }\n\n /** Queries the ChangeSummary for the specified change summary id\n *\n * See also\n * - `ECDbChange.ChangeSummary` ECClass in the *ECDbChange* ECSchema\n * - [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param changeSummaryId ECInstanceId of the ChangeSummary\n * @returns Returns the requested ChangeSummary object\n * @throws [IModelError]($common) If change summary does not exist for the specified id, or if the\n * change cache file hasn't been attached, or in case of other errors.\n */\n public static queryChangeSummary(iModel: BriefcaseDb, changeSummaryId: Id64String): ChangeSummary {\n if (!ChangeSummaryManager.isChangeCacheAttached(iModel))\n throw new IModelError(IModelStatus.BadArg, \"Change Cache file must be attached to iModel.\");\n\n return iModel.withPreparedStatement(\"SELECT WsgId,ParentWsgId,Description,PushDate,UserCreated FROM ecchange.imodelchange.ChangeSet WHERE Summary.Id=?\",\n (stmt: ECSqlStatement) => {\n stmt.bindId(1, changeSummaryId);\n if (stmt.step() !== DbResult.BE_SQLITE_ROW)\n throw new IModelError(IModelStatus.BadArg, `No ChangeSet information found for ChangeSummary ${changeSummaryId}.`);\n\n const row = stmt.getRow();\n return { id: changeSummaryId, changeSet: { wsgId: row.wsgId, parentWsgId: row.parentWsgId, description: row.description, pushDate: row.pushDate, userCreated: row.userCreated } };\n });\n }\n\n /** Queries the InstanceChange for the specified instance change id.\n *\n * See also\n * - `ECDbChange.InstanceChange` ECClass in the *ECDbChange* ECSchema\n * - [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param instanceChangeId ECInstanceId of the InstanceChange (see `ECDbChange.InstanceChange` ECClass in the *ECDbChange* ECSchema)\n * @returns Returns the requested InstanceChange object (see `ECDbChange.InstanceChange` ECClass in the *ECDbChange* ECSchema)\n * @throws [IModelError]($common) if instance change does not exist for the specified id, or if the\n * change cache file hasn't been attached, or in case of other errors.\n */\n public static queryInstanceChange(iModel: BriefcaseDb, instanceChangeId: Id64String): InstanceChange {\n if (!ChangeSummaryManager.isChangeCacheAttached(iModel))\n throw new IModelError(IModelStatus.BadArg, \"Change Cache file must be attached to iModel.\");\n\n // query instance changes\n const instanceChange: InstanceChange = iModel.withPreparedStatement(`SELECT ic.Summary.Id summaryId, s.Name changedInstanceSchemaName, c.Name changedInstanceClassName, ic.ChangedInstance.Id changedInstanceId,\n ic.OpCode, ic.IsIndirect FROM ecchange.change.InstanceChange ic JOIN main.meta.ECClassDef c ON c.ECInstanceId = ic.ChangedInstance.ClassId\n JOIN main.meta.ECSchemaDef s ON c.Schema.Id = s.ECInstanceId WHERE ic.ECInstanceId =? `, (stmt: ECSqlStatement) => {\n stmt.bindId(1, instanceChangeId);\n if (stmt.step() !== DbResult.BE_SQLITE_ROW)\n throw new IModelError(IModelStatus.BadArg, `No InstanceChange found for id ${instanceChangeId}.`);\n\n const row = stmt.getRow();\n const changedInstanceId: Id64String = row.changedInstanceId;\n const changedInstanceClassName: string = `[${row.changedInstanceSchemaName}].[${row.changedInstanceClassName}]`;\n const op: ChangeOpCode = row.opCode as ChangeOpCode;\n\n return {\n id: instanceChangeId, summaryId: row.summaryId, changedInstance: { id: changedInstanceId, className: changedInstanceClassName },\n opCode: op, isIndirect: row.isIndirect,\n };\n });\n\n return instanceChange;\n }\n\n /** Retrieves the names of the properties whose values have changed for the given instance change\n *\n * See also [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param instanceChangeId Id of the InstanceChange to query the properties whose values have changed\n * @returns Returns names of the properties whose values have changed for the given instance change\n * @throws [IModelError]($common) if the change cache file hasn't been attached, or in case of other errors.\n */\n public static getChangedPropertyValueNames(iModel: IModelDb, instanceChangeId: Id64String): string[] {\n return iModel.withPreparedStatement(\"SELECT AccessString FROM ecchange.change.PropertyValueChange WHERE InstanceChange.Id=?\",\n (stmt: ECSqlStatement) => {\n stmt.bindId(1, instanceChangeId);\n\n const selectClauseItems: string[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n // access string tokens need to be escaped as they might collide with reserved words in ECSQL or SQLite\n const accessString: string = stmt.getValue(0).getString();\n const accessStringTokens: string[] = accessString.split(\".\");\n assert(accessStringTokens.length > 0);\n\n let isFirstToken: boolean = true;\n let item: string = \"\";\n for (const token of accessStringTokens) {\n if (!isFirstToken)\n item += \".\";\n\n item += `[${token}]`;\n isFirstToken = false;\n }\n selectClauseItems.push(item);\n }\n\n return selectClauseItems;\n });\n }\n\n /** Builds the ECSQL to query the property value changes for the specified instance change and the specified ChangedValueState.\n *\n * See also [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param instanceChangeInfo InstanceChange to query the property value changes for\n * changedInstance.className must be fully qualified and schema and class name must be escaped with square brackets if they collide with reserved ECSQL words: `[schema name].[class name]`\n * @param changedValueState The Changed State to query the values for. This must correspond to the [InstanceChange.OpCode]($backend) of the InstanceChange.\n * @param changedPropertyNames List of the property names for which values have changed for the specified instance change.\n * The list can be obtained by calling [ChangeSummaryManager.getChangedPropertyValueNames]($core-backend).\n * If omitted, the method will call the above method by itself. The parameter allows for checking first whether\n * an instance change has any property value changes at all. If there are no property value changes, this method\n * should not be called, as it will throw an error.\n * @returns Returns the ECSQL that will retrieve the property value changes\n * @throws [IModelError]($common) if instance change does not exist, if there are not property value changes for the instance change,\n * if the change cache file hasn't been attached, or in case of other errors.\n */\n public static buildPropertyValueChangesECSql(iModel: IModelDb, instanceChangeInfo: { id: Id64String, summaryId: Id64String, changedInstance: { id: Id64String, className: string } }, changedValueState: ChangedValueState, changedPropertyNames?: string[]): string {\n let selectClauseItems: string[];\n if (!changedPropertyNames) {\n // query property value changes just to build a SELECT statement against the class of the changed instance\n selectClauseItems = ChangeSummaryManager.getChangedPropertyValueNames(iModel, instanceChangeInfo.id);\n } else\n selectClauseItems = changedPropertyNames;\n\n if (selectClauseItems.length === 0)\n throw new IModelError(IModelStatus.BadArg, `No property value changes found for InstanceChange ${instanceChangeInfo.id}.`);\n\n let ecsql: string = \"SELECT \";\n selectClauseItems.map((item: string, index: number) => {\n if (index !== 0)\n ecsql += \",\";\n\n ecsql += item;\n });\n\n // Avoiding parameters in the Changes function speeds up performance because ECDb can do optimizations\n // if it knows the function args at prepare time\n ecsql += ` FROM main.${instanceChangeInfo.changedInstance.className}.Changes(${instanceChangeInfo.summaryId},${changedValueState}) WHERE ECInstanceId=${instanceChangeInfo.changedInstance.id}`;\n return ecsql;\n }\n\n /**\n * Creates a change summary for the last applied change set to the iModel\n * @param accessToken A valid access token string\n * @param iModel iModel to extract change summaries for. The iModel must not be a standalone iModel, and must have at least one change set applied to it.\n * @returns The id of the extracted change summary.\n * @beta\n */\n public static async createChangeSummary(accessToken: AccessToken, iModel: BriefcaseDb): Promise<Id64String> {\n if (!iModel?.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n const changesetId = iModel.changeset.id;\n if (!changesetId)\n throw new IModelError(IModelStatus.BadRequest, \"No change set was applied to the iModel\");\n if (this.isChangeCacheAttached(iModel))\n throw new IModelError(IModelStatus.BadRequest, \"Change cache must be detached before extraction\");\n\n const iModelId = iModel.iModelId;\n const changesetsFolder: string = BriefcaseManager.getChangeSetsPath(iModelId);\n const changeset = await IModelHost.hubAccess.downloadChangeset({ accessToken: IModelHost.authorizationClient ? undefined : accessToken, iModelId, changeset: { id: iModel.changeset.id }, targetDir: changesetsFolder });\n\n if (!IModelJsFs.existsSync(changeset.pathname))\n throw new IModelError(IModelStatus.FileNotFound, `Failed to download change set: ${changeset.pathname}`);\n\n let changesFile: ECDb | undefined;\n try {\n changesFile = ChangeSummaryManager.openOrCreateChangesFile(iModel);\n assert(changesFile[_nativeDb] !== undefined, \"Invalid changesFile - should've caused an exception\");\n\n let changeSummaryId = ChangeSummaryManager.isSummaryAlreadyExtracted(changesFile, changesetId);\n if (changeSummaryId !== undefined) {\n Logger.logInfo(loggerCategory, `Change Summary for changeset already exists. It is not extracted again.`, () => ({ iModelId, changeSetId: changesetId }));\n return changeSummaryId;\n }\n\n const stat = iModel[_nativeDb].extractChangeSummary(changesFile[_nativeDb], changeset.pathname);\n if (stat.error && stat.error.status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(stat.error.status, stat.error.message);\n\n assert(undefined !== stat.result);\n changeSummaryId = stat.result;\n ChangeSummaryManager.addExtendedInfos(changesFile, changeSummaryId, changesetId, changeset.parentId, changeset.description, changeset.pushDate, changeset.userCreated);\n\n changesFile.saveChanges();\n return changeSummaryId;\n } finally {\n if (changesFile !== undefined)\n changesFile.dispose();\n IModelJsFs.unlinkSync(changeset.pathname);\n }\n }\n\n /**\n * Creates change summaries for the specified iModel and a specified range of versions\n * @note This may be an expensive operation - downloads the first version and starts applying the change sets, extracting summaries one by one\n * @param args Arguments including the range of versions for which Change Summaries are to be created, and other necessary input for creation\n */\n public static async createChangeSummaries(args: CreateChangeSummaryArgs): Promise<Id64String[]> {\n // if we pass undefined to hubAccess methods they will use our authorizationClient to refresh the token as needed.\n const accessToken = IModelHost.authorizationClient ? undefined : args.accessToken ?? \"\";\n const { iModelId, iTwinId, range } = args;\n range.end = range.end ?? (await IModelHost.hubAccess.getChangesetFromVersion({ accessToken, iModelId, version: IModelVersion.latest() })).index;\n if (range.first > range.end)\n throw new IModelError(IModelStatus.BadArg, \"Invalid range of changesets\");\n if (range.first === 0 && range.end === 0)\n return []; // no changesets exist, so the inclusive range is empty\n\n const changesets = await IModelHost.hubAccess.queryChangesets({ accessToken, iModelId, range });\n\n // Setup a temporary briefcase to help with extracting change summaries\n const briefcasePath = BriefcaseManager.getBriefcaseBasePath(iModelId);\n const fileName: string = path.join(briefcasePath, `ChangeSummaryBriefcase.bim`);\n if (IModelJsFs.existsSync(fileName))\n IModelJsFs.removeSync(fileName);\n\n let iModel: BriefcaseDb | undefined;\n try {\n // Download a version that has the first change set applied\n const props = await BriefcaseManager.downloadBriefcase({ accessToken, iTwinId, iModelId, asOf: { afterChangeSetId: changesets[0].id }, briefcaseId: 0, fileName });\n iModel = await BriefcaseDb.open({ fileName: props.fileName });\n\n const summaryIds = new Array<Id64String>();\n for (let index = 0; index < changesets.length; index++) {\n // Apply a change set if necessary\n if (index > 0)\n await iModel.pullChanges({ accessToken, toIndex: changesets[index].index });\n\n // Create a change summary for the last change set that was applied\n const summaryId = await this.createChangeSummary(accessToken ?? await IModelHost.authorizationClient?.getAccessToken() ?? \"\", iModel);\n summaryIds.push(summaryId);\n }\n return summaryIds;\n } finally {\n if (iModel !== undefined)\n iModel.close();\n IModelJsFs.removeSync(fileName);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ChangeSummaryManager.js","sourceRoot":"","sources":["../../src/ChangeSummaryManager.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/** @packageDocumentation\n * @module iModels\n */\n\nimport { AccessToken, assert, DbResult, GuidString, Id64String, IModelStatus, Logger, using } from \"@itwin/core-bentley\";\nimport { ChangedValueState, ChangeOpCode, ChangesetRange, IModelError, IModelVersion } from \"@itwin/core-common\";\nimport * as path from \"path\";\nimport { BackendLoggerCategory } from \"./BackendLoggerCategory\";\nimport { BriefcaseManager } from \"./BriefcaseManager\";\nimport { ECDb, ECDbOpenMode } from \"./ECDb\";\nimport { ECSqlInsertResult, ECSqlStatement, ECSqlWriteStatement } from \"./ECSqlStatement\";\nimport { BriefcaseDb, IModelDb, TokenArg } from \"./IModelDb\";\nimport { IModelHost, KnownLocations } from \"./IModelHost\";\nimport { IModelJsFs } from \"./IModelJsFs\";\nimport { _nativeDb } from \"./internal/Symbols\";\n\nconst loggerCategory: string = BackendLoggerCategory.ECDb;\n\n/** Represents an instance of the `ChangeSummary` ECClass from the `ECDbChange` ECSchema\n * combined with the information from the related `Changeset` instance (from the `IModelChange` ECSchema) from\n * which the Change Summary was extracted.\n *\n * See also\n * - [ChangeSummaryManager.queryChangeSummary]($backend)\n * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)\n * @beta\n */\nexport interface ChangeSummary {\n id: Id64String;\n changeSet: { wsgId: GuidString, parentWsgId: GuidString, description: string, pushDate: string, userCreated: GuidString };\n}\n\n/** Represents an instance of the `InstanceChange` ECClass from the `ECDbChange` ECSchema\n *\n * See also\n * - [ChangeSummaryManager.queryInstanceChange]($backend)\n * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)\n * @beta\n */\nexport interface InstanceChange {\n id: Id64String;\n summaryId: Id64String;\n changedInstance: { id: Id64String, className: string };\n opCode: ChangeOpCode;\n isIndirect: boolean;\n}\n\n/** Options for [ChangeSummaryManager.createChangeSummaries]($backend).\n * @beta\n */\nexport interface CreateChangeSummaryArgs extends TokenArg {\n /** Id of the iTwin that contains the iModel */\n iTwinId: GuidString;\n\n /** Id of the iModel */\n iModelId: GuidString;\n\n /**\n * Range of change sets\n * - the Change Summary for the first and last versions are also included\n * - if unspecified, all change sets until the latest version are processed\n */\n range: ChangesetRange;\n}\n\n/** Class to extract Change Summaries for a briefcase.\n *\n * See also:\n * - [ChangeSummary Overview]($docs/learning/ChangeSummaries)\n * @beta\n */\nexport class ChangeSummaryManager {\n private static readonly _currentIModelChangeSchemaVersion = { read: 2, write: 0, minor: 0 };\n\n /** Determines whether the *Change Cache file* is attached to the specified iModel or not\n * @param iModel iModel to check whether a *Change Cache file* is attached\n * @returns Returns true if the *Change Cache file* is attached to the iModel. false otherwise\n */\n public static isChangeCacheAttached(iModel: IModelDb): boolean {\n if (!iModel || !iModel.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n\n return iModel[_nativeDb].isChangeCacheAttached();\n }\n\n /** Attaches the *Change Cache file* to the specified iModel if it hasn't been attached yet.\n * A new *Change Cache file* will be created for the iModel if it hasn't existed before.\n * @param iModel iModel to attach the *Change Cache file* file to\n * @throws [IModelError]($common)\n */\n public static attachChangeCache(iModel: IModelDb): void {\n if (!iModel || !iModel.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n\n if (ChangeSummaryManager.isChangeCacheAttached(iModel))\n return;\n\n const changesCacheFilePath: string = BriefcaseManager.getChangeCachePathName(iModel.iModelId);\n if (!IModelJsFs.existsSync(changesCacheFilePath)) {\n using(new ECDb(), (changeCacheFile: ECDb) => {\n ChangeSummaryManager.createChangeCacheFile(iModel, changeCacheFile, changesCacheFilePath);\n });\n }\n\n assert(IModelJsFs.existsSync(changesCacheFilePath));\n const res: DbResult = iModel[_nativeDb].attachChangeCache(changesCacheFilePath);\n if (res !== DbResult.BE_SQLITE_OK)\n throw new IModelError(res, `Failed to attach Change Cache file to ${iModel.pathName}.`);\n }\n\n /** Detaches the *Change Cache file* from the specified iModel.\n * - note that this method will cause any pending (currently running or queued) queries to fail\n * @param iModel iModel to detach the *Change Cache file* to\n * @throws [IModelError]($common) in case of errors, e.g. if no *Change Cache file* was attached before.\n */\n public static detachChangeCache(iModel: IModelDb): void {\n if (!iModel || !iModel.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n\n iModel.clearCaches();\n const res: DbResult = iModel[_nativeDb].detachChangeCache();\n if (res !== DbResult.BE_SQLITE_OK)\n throw new IModelError(res, `Failed to detach Change Cache file from ${iModel.pathName}.`);\n }\n\n private static openOrCreateChangesFile(iModel: BriefcaseDb): ECDb {\n if (!iModel?.isOpen)\n throw new IModelError(IModelStatus.BadArg, \"Invalid iModel handle. iModel must be open.\");\n\n const changesFile = new ECDb();\n const changeCacheFilePath = BriefcaseManager.getChangeCachePathName(iModel.iModelId);\n if (IModelJsFs.existsSync(changeCacheFilePath)) {\n ChangeSummaryManager.openChangeCacheFile(changesFile, changeCacheFilePath);\n return changesFile;\n }\n\n try {\n ChangeSummaryManager.createChangeCacheFile(iModel, changesFile, changeCacheFilePath);\n return changesFile;\n } catch (e) {\n // delete cache file again in case it was created but schema import failed\n if (IModelJsFs.existsSync(changeCacheFilePath))\n IModelJsFs.removeSync(changeCacheFilePath);\n\n throw e;\n }\n }\n\n private static createChangeCacheFile(iModel: IModelDb, changesFile: ECDb, changeCacheFilePath: string): void {\n if (!iModel?.isOpen)\n throw new IModelError(IModelStatus.BadArg, \"Invalid iModel object. iModel must be open.\");\n\n const stat: DbResult = iModel[_nativeDb].createChangeCache(changesFile[_nativeDb], changeCacheFilePath);\n if (stat !== DbResult.BE_SQLITE_OK)\n throw new IModelError(stat, `Failed to create Change Cache file at \"${changeCacheFilePath}\".`);\n\n // Extended information like changeset ids, push dates are persisted in the IModelChange ECSchema\n changesFile.importSchema(ChangeSummaryManager.getExtendedSchemaPath());\n }\n\n private static openChangeCacheFile(changesFile: ECDb, changeCacheFilePath: string): void {\n changesFile.openDb(changeCacheFilePath, ECDbOpenMode.FileUpgrade);\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const actualSchemaVersion: { read: number, write: number, minor: number } = changesFile.withPreparedStatement(\"SELECT VersionMajor read,VersionWrite write,VersionMinor minor FROM meta.ECSchemaDef WHERE Name='IModelChange'\", (stmt: ECSqlStatement) => {\n if (stmt.step() !== DbResult.BE_SQLITE_ROW)\n throw new IModelError(DbResult.BE_SQLITE_ERROR, \"File is not a valid Change Cache file.\");\n\n return stmt.getRow();\n });\n\n if (actualSchemaVersion.read === ChangeSummaryManager._currentIModelChangeSchemaVersion.read &&\n actualSchemaVersion.write === ChangeSummaryManager._currentIModelChangeSchemaVersion.write &&\n actualSchemaVersion.minor === ChangeSummaryManager._currentIModelChangeSchemaVersion.minor)\n return;\n\n changesFile.importSchema(ChangeSummaryManager.getExtendedSchemaPath());\n }\n\n private static getExtendedSchemaPath(): string { return path.join(KnownLocations.packageAssetsDir, \"IModelChange.02.00.00.ecschema.xml\"); }\n\n private static isSummaryAlreadyExtracted(changesFile: ECDb, changeSetId: GuidString): Id64String | undefined {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return changesFile.withPreparedStatement(\"SELECT Summary.Id summaryid FROM imodelchange.ChangeSet WHERE WsgId=?\", (stmt: ECSqlStatement) => {\n stmt.bindString(1, changeSetId);\n if (DbResult.BE_SQLITE_ROW === stmt.step())\n return stmt.getValue(0).getId();\n\n return undefined;\n });\n }\n\n private static addExtendedInfos(changesFile: ECDb, changeSummaryId: Id64String, changesetWsgId: GuidString, changesetParentWsgId?: GuidString, description?: string, changesetPushDate?: string, changeSetUserCreated?: GuidString): void {\n changesFile.withCachedWriteStatement(\"INSERT INTO imodelchange.ChangeSet(Summary.Id,WsgId,ParentWsgId,Description,PushDate,UserCreated) VALUES(?,?,?,?,?,?)\",\n (stmt: ECSqlWriteStatement) => {\n stmt.bindId(1, changeSummaryId);\n stmt.bindString(2, changesetWsgId);\n if (changesetParentWsgId)\n stmt.bindString(3, changesetParentWsgId);\n\n if (description)\n stmt.bindString(4, description);\n\n if (changesetPushDate)\n stmt.bindDateTime(5, changesetPushDate);\n\n if (changeSetUserCreated)\n stmt.bindString(6, changeSetUserCreated);\n\n const r: ECSqlInsertResult = stmt.stepForInsert();\n if (r.status !== DbResult.BE_SQLITE_DONE)\n throw new IModelError(r.status, `Failed to add changeset information to extracted change summary ${changeSummaryId}`);\n });\n }\n\n /** Queries the ChangeSummary for the specified change summary id\n *\n * See also\n * - `ECDbChange.ChangeSummary` ECClass in the *ECDbChange* ECSchema\n * - [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param changeSummaryId ECInstanceId of the ChangeSummary\n * @returns Returns the requested ChangeSummary object\n * @throws [IModelError]($common) If change summary does not exist for the specified id, or if the\n * change cache file hasn't been attached, or in case of other errors.\n */\n public static queryChangeSummary(iModel: BriefcaseDb, changeSummaryId: Id64String): ChangeSummary {\n if (!ChangeSummaryManager.isChangeCacheAttached(iModel))\n throw new IModelError(IModelStatus.BadArg, \"Change Cache file must be attached to iModel.\");\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return iModel.withPreparedStatement(\"SELECT WsgId,ParentWsgId,Description,PushDate,UserCreated FROM ecchange.imodelchange.ChangeSet WHERE Summary.Id=?\", (stmt: ECSqlStatement) => {\n stmt.bindId(1, changeSummaryId);\n if (stmt.step() !== DbResult.BE_SQLITE_ROW)\n throw new IModelError(IModelStatus.BadArg, `No ChangeSet information found for ChangeSummary ${changeSummaryId}.`);\n\n const row = stmt.getRow();\n return { id: changeSummaryId, changeSet: { wsgId: row.wsgId, parentWsgId: row.parentWsgId, description: row.description, pushDate: row.pushDate, userCreated: row.userCreated } };\n });\n }\n\n /** Queries the InstanceChange for the specified instance change id.\n *\n * See also\n * - `ECDbChange.InstanceChange` ECClass in the *ECDbChange* ECSchema\n * - [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param instanceChangeId ECInstanceId of the InstanceChange (see `ECDbChange.InstanceChange` ECClass in the *ECDbChange* ECSchema)\n * @returns Returns the requested InstanceChange object (see `ECDbChange.InstanceChange` ECClass in the *ECDbChange* ECSchema)\n * @throws [IModelError]($common) if instance change does not exist for the specified id, or if the\n * change cache file hasn't been attached, or in case of other errors.\n */\n public static queryInstanceChange(iModel: BriefcaseDb, instanceChangeId: Id64String): InstanceChange {\n if (!ChangeSummaryManager.isChangeCacheAttached(iModel))\n throw new IModelError(IModelStatus.BadArg, \"Change Cache file must be attached to iModel.\");\n\n // query instance changes\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const instanceChange: InstanceChange = iModel.withPreparedStatement(`SELECT ic.Summary.Id summaryId, s.Name changedInstanceSchemaName, c.Name changedInstanceClassName, ic.ChangedInstance.Id changedInstanceId,\n ic.OpCode, ic.IsIndirect FROM ecchange.change.InstanceChange ic JOIN main.meta.ECClassDef c ON c.ECInstanceId = ic.ChangedInstance.ClassId\n JOIN main.meta.ECSchemaDef s ON c.Schema.Id = s.ECInstanceId WHERE ic.ECInstanceId =? `,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (stmt: ECSqlStatement) => {\n stmt.bindId(1, instanceChangeId);\n if (stmt.step() !== DbResult.BE_SQLITE_ROW)\n throw new IModelError(IModelStatus.BadArg, `No InstanceChange found for id ${instanceChangeId}.`);\n\n const row = stmt.getRow();\n const changedInstanceId: Id64String = row.changedInstanceId;\n const changedInstanceClassName: string = `[${row.changedInstanceSchemaName}].[${row.changedInstanceClassName}]`;\n const op: ChangeOpCode = row.opCode as ChangeOpCode;\n\n return {\n id: instanceChangeId, summaryId: row.summaryId, changedInstance: { id: changedInstanceId, className: changedInstanceClassName },\n opCode: op, isIndirect: row.isIndirect,\n };\n });\n\n return instanceChange;\n }\n\n /** Retrieves the names of the properties whose values have changed for the given instance change\n *\n * See also [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param instanceChangeId Id of the InstanceChange to query the properties whose values have changed\n * @returns Returns names of the properties whose values have changed for the given instance change\n * @throws [IModelError]($common) if the change cache file hasn't been attached, or in case of other errors.\n */\n public static getChangedPropertyValueNames(iModel: IModelDb, instanceChangeId: Id64String): string[] {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return iModel.withPreparedStatement(\"SELECT AccessString FROM ecchange.change.PropertyValueChange WHERE InstanceChange.Id=?\", (stmt: ECSqlStatement) => {\n stmt.bindId(1, instanceChangeId);\n\n const selectClauseItems: string[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n // access string tokens need to be escaped as they might collide with reserved words in ECSQL or SQLite\n const accessString: string = stmt.getValue(0).getString();\n const accessStringTokens: string[] = accessString.split(\".\");\n assert(accessStringTokens.length > 0);\n\n let isFirstToken: boolean = true;\n let item: string = \"\";\n for (const token of accessStringTokens) {\n if (!isFirstToken)\n item += \".\";\n\n item += `[${token}]`;\n isFirstToken = false;\n }\n selectClauseItems.push(item);\n }\n\n return selectClauseItems;\n });\n }\n\n /** Builds the ECSQL to query the property value changes for the specified instance change and the specified ChangedValueState.\n *\n * See also [Change Summary Overview]($docs/learning/ChangeSummaries)\n * @param iModel iModel\n * @param instanceChangeInfo InstanceChange to query the property value changes for\n * changedInstance.className must be fully qualified and schema and class name must be escaped with square brackets if they collide with reserved ECSQL words: `[schema name].[class name]`\n * @param changedValueState The Changed State to query the values for. This must correspond to the [InstanceChange.OpCode]($backend) of the InstanceChange.\n * @param changedPropertyNames List of the property names for which values have changed for the specified instance change.\n * The list can be obtained by calling [ChangeSummaryManager.getChangedPropertyValueNames]($core-backend).\n * If omitted, the method will call the above method by itself. The parameter allows for checking first whether\n * an instance change has any property value changes at all. If there are no property value changes, this method\n * should not be called, as it will throw an error.\n * @returns Returns the ECSQL that will retrieve the property value changes\n * @throws [IModelError]($common) if instance change does not exist, if there are not property value changes for the instance change,\n * if the change cache file hasn't been attached, or in case of other errors.\n */\n public static buildPropertyValueChangesECSql(iModel: IModelDb, instanceChangeInfo: { id: Id64String, summaryId: Id64String, changedInstance: { id: Id64String, className: string } }, changedValueState: ChangedValueState, changedPropertyNames?: string[]): string {\n let selectClauseItems: string[];\n if (!changedPropertyNames) {\n // query property value changes just to build a SELECT statement against the class of the changed instance\n selectClauseItems = ChangeSummaryManager.getChangedPropertyValueNames(iModel, instanceChangeInfo.id);\n } else\n selectClauseItems = changedPropertyNames;\n\n if (selectClauseItems.length === 0)\n throw new IModelError(IModelStatus.BadArg, `No property value changes found for InstanceChange ${instanceChangeInfo.id}.`);\n\n let ecsql: string = \"SELECT \";\n selectClauseItems.map((item: string, index: number) => {\n if (index !== 0)\n ecsql += \",\";\n\n ecsql += item;\n });\n\n // Avoiding parameters in the Changes function speeds up performance because ECDb can do optimizations\n // if it knows the function args at prepare time\n ecsql += ` FROM main.${instanceChangeInfo.changedInstance.className}.Changes(${instanceChangeInfo.summaryId},${changedValueState}) WHERE ECInstanceId=${instanceChangeInfo.changedInstance.id}`;\n return ecsql;\n }\n\n /**\n * Creates a change summary for the last applied change set to the iModel\n * @param accessToken A valid access token string\n * @param iModel iModel to extract change summaries for. The iModel must not be a standalone iModel, and must have at least one change set applied to it.\n * @returns The id of the extracted change summary.\n * @beta\n */\n public static async createChangeSummary(accessToken: AccessToken, iModel: BriefcaseDb): Promise<Id64String> {\n if (!iModel?.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"Briefcase must be open\");\n const changesetId = iModel.changeset.id;\n if (!changesetId)\n throw new IModelError(IModelStatus.BadRequest, \"No change set was applied to the iModel\");\n if (this.isChangeCacheAttached(iModel))\n throw new IModelError(IModelStatus.BadRequest, \"Change cache must be detached before extraction\");\n\n const iModelId = iModel.iModelId;\n const changesetsFolder: string = BriefcaseManager.getChangeSetsPath(iModelId);\n const changeset = await IModelHost.hubAccess.downloadChangeset({ accessToken: IModelHost.authorizationClient ? undefined : accessToken, iModelId, changeset: { id: iModel.changeset.id }, targetDir: changesetsFolder });\n\n if (!IModelJsFs.existsSync(changeset.pathname))\n throw new IModelError(IModelStatus.FileNotFound, `Failed to download change set: ${changeset.pathname}`);\n\n let changesFile: ECDb | undefined;\n try {\n changesFile = ChangeSummaryManager.openOrCreateChangesFile(iModel);\n assert(changesFile[_nativeDb] !== undefined, \"Invalid changesFile - should've caused an exception\");\n\n let changeSummaryId = ChangeSummaryManager.isSummaryAlreadyExtracted(changesFile, changesetId);\n if (changeSummaryId !== undefined) {\n Logger.logInfo(loggerCategory, `Change Summary for changeset already exists. It is not extracted again.`, () => ({ iModelId, changeSetId: changesetId }));\n return changeSummaryId;\n }\n\n const stat = iModel[_nativeDb].extractChangeSummary(changesFile[_nativeDb], changeset.pathname);\n if (stat.error && stat.error.status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(stat.error.status, stat.error.message);\n\n assert(undefined !== stat.result);\n changeSummaryId = stat.result;\n ChangeSummaryManager.addExtendedInfos(changesFile, changeSummaryId, changesetId, changeset.parentId, changeset.description, changeset.pushDate, changeset.userCreated);\n\n changesFile.saveChanges();\n return changeSummaryId;\n } finally {\n if (changesFile !== undefined)\n changesFile.dispose();\n IModelJsFs.unlinkSync(changeset.pathname);\n }\n }\n\n /**\n * Creates change summaries for the specified iModel and a specified range of versions\n * @note This may be an expensive operation - downloads the first version and starts applying the change sets, extracting summaries one by one\n * @param args Arguments including the range of versions for which Change Summaries are to be created, and other necessary input for creation\n */\n public static async createChangeSummaries(args: CreateChangeSummaryArgs): Promise<Id64String[]> {\n // if we pass undefined to hubAccess methods they will use our authorizationClient to refresh the token as needed.\n const accessToken = IModelHost.authorizationClient ? undefined : args.accessToken ?? \"\";\n const { iModelId, iTwinId, range } = args;\n range.end = range.end ?? (await IModelHost.hubAccess.getChangesetFromVersion({ accessToken, iModelId, version: IModelVersion.latest() })).index;\n if (range.first > range.end)\n throw new IModelError(IModelStatus.BadArg, \"Invalid range of changesets\");\n if (range.first === 0 && range.end === 0)\n return []; // no changesets exist, so the inclusive range is empty\n\n const changesets = await IModelHost.hubAccess.queryChangesets({ accessToken, iModelId, range });\n\n // Setup a temporary briefcase to help with extracting change summaries\n const briefcasePath = BriefcaseManager.getBriefcaseBasePath(iModelId);\n const fileName: string = path.join(briefcasePath, `ChangeSummaryBriefcase.bim`);\n if (IModelJsFs.existsSync(fileName))\n IModelJsFs.removeSync(fileName);\n\n let iModel: BriefcaseDb | undefined;\n try {\n // Download a version that has the first change set applied\n const props = await BriefcaseManager.downloadBriefcase({ accessToken, iTwinId, iModelId, asOf: { afterChangeSetId: changesets[0].id }, briefcaseId: 0, fileName });\n iModel = await BriefcaseDb.open({ fileName: props.fileName });\n\n const summaryIds = new Array<Id64String>();\n for (let index = 0; index < changesets.length; index++) {\n // Apply a change set if necessary\n if (index > 0)\n await iModel.pullChanges({ accessToken, toIndex: changesets[index].index });\n\n // Create a change summary for the last change set that was applied\n const summaryId = await this.createChangeSummary(accessToken ?? await IModelHost.authorizationClient?.getAccessToken() ?? \"\", iModel);\n summaryIds.push(summaryId);\n }\n return summaryIds;\n } finally {\n if (iModel !== undefined)\n iModel.close();\n IModelJsFs.removeSync(fileName);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChangesetECAdaptor.d.ts","sourceRoot":"","sources":["../../src/ChangesetECAdaptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChangesetECAdaptor.d.ts","sourceRoot":"","sources":["../../src/ChangesetECAdaptor.ts"],"names":[],"mappings":"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"}
@@ -388,6 +388,7 @@ class PartialECChangeUnifier {
388
388
  if (rhs.$meta.fallbackClassId && lhs.$meta.fallbackClassId && db && rhs.$meta.fallbackClassId !== lhs.$meta.fallbackClassId) {
389
389
  const lhsClassId = lhs.$meta.fallbackClassId;
390
390
  const rhsClassId = rhs.$meta.fallbackClassId;
391
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
391
392
  const isRhsIsSubClassOfLhs = db.withPreparedStatement("SELECT ec_instanceof(?,?)", (stmt) => {
392
393
  stmt.bindId(1, rhsClassId);
393
394
  stmt.bindId(2, lhsClassId);