@itwin/core-backend 5.0.0-dev.97 → 5.0.0-dev.98

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 (75) hide show
  1. package/lib/cjs/BackendHubAccess.d.ts +2 -8
  2. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  3. package/lib/cjs/BackendHubAccess.js.map +1 -1
  4. package/lib/cjs/CheckpointManager.d.ts +8 -15
  5. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  6. package/lib/cjs/CheckpointManager.js +23 -54
  7. package/lib/cjs/CheckpointManager.js.map +1 -1
  8. package/lib/cjs/Element.d.ts +16 -4
  9. package/lib/cjs/Element.d.ts.map +1 -1
  10. package/lib/cjs/Element.js +40 -2
  11. package/lib/cjs/Element.js.map +1 -1
  12. package/lib/cjs/HubMock.d.ts +1 -1
  13. package/lib/cjs/HubMock.d.ts.map +1 -1
  14. package/lib/cjs/HubMock.js +13 -2
  15. package/lib/cjs/HubMock.js.map +1 -1
  16. package/lib/cjs/IModelDb.d.ts.map +1 -1
  17. package/lib/cjs/IModelDb.js +4 -2
  18. package/lib/cjs/IModelDb.js.map +1 -1
  19. package/lib/cjs/internal/Symbols.d.ts +2 -0
  20. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  21. package/lib/cjs/internal/Symbols.js +3 -1
  22. package/lib/cjs/internal/Symbols.js.map +1 -1
  23. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  24. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +11 -22
  25. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  26. package/lib/esm/BackendHubAccess.d.ts +2 -8
  27. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  28. package/lib/esm/BackendHubAccess.js.map +1 -1
  29. package/lib/esm/CheckpointManager.d.ts +8 -15
  30. package/lib/esm/CheckpointManager.d.ts.map +1 -1
  31. package/lib/esm/CheckpointManager.js +22 -52
  32. package/lib/esm/CheckpointManager.js.map +1 -1
  33. package/lib/esm/Element.d.ts +16 -4
  34. package/lib/esm/Element.d.ts.map +1 -1
  35. package/lib/esm/Element.js +40 -2
  36. package/lib/esm/Element.js.map +1 -1
  37. package/lib/esm/HubMock.d.ts +1 -1
  38. package/lib/esm/HubMock.d.ts.map +1 -1
  39. package/lib/esm/HubMock.js +13 -2
  40. package/lib/esm/HubMock.js.map +1 -1
  41. package/lib/esm/IModelDb.d.ts.map +1 -1
  42. package/lib/esm/IModelDb.js +4 -2
  43. package/lib/esm/IModelDb.js.map +1 -1
  44. package/lib/esm/internal/Symbols.d.ts +2 -0
  45. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  46. package/lib/esm/internal/Symbols.js +2 -0
  47. package/lib/esm/internal/Symbols.js.map +1 -1
  48. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  49. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js +13 -24
  50. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  51. package/lib/esm/test/CloudSqliteMock.d.ts +37 -0
  52. package/lib/esm/test/CloudSqliteMock.d.ts.map +1 -0
  53. package/lib/esm/test/CloudSqliteMock.js +117 -0
  54. package/lib/esm/test/CloudSqliteMock.js.map +1 -0
  55. package/lib/esm/test/IModelTestUtils.d.ts +1 -1
  56. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  57. package/lib/esm/test/IModelTestUtils.js +6 -4
  58. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  59. package/lib/esm/test/font/IModelDbFonts.test.js +3 -1
  60. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  61. package/lib/esm/test/hubaccess/BriefcaseManager.test.js +18 -7
  62. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  63. package/lib/esm/test/hubaccess/CheckpointManager.test.js +5 -91
  64. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  65. package/lib/esm/test/standalone/ChangeMerge.test.js +0 -4
  66. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  67. package/lib/esm/test/standalone/Drawing.test.d.ts +2 -0
  68. package/lib/esm/test/standalone/Drawing.test.d.ts.map +1 -0
  69. package/lib/esm/test/standalone/Drawing.test.js +120 -0
  70. package/lib/esm/test/standalone/Drawing.test.js.map +1 -0
  71. package/lib/esm/test/standalone/IModelWrite.test.js +15 -6
  72. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  73. package/lib/esm/test/standalone/SnapshotDb.test.js +4 -3
  74. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  75. package/package.json +12 -11
@@ -15,4 +15,6 @@ export declare const _verifyChannel: unique symbol;
15
15
  export declare const _hubAccess: unique symbol;
16
16
  export declare const _setHubAccess: unique symbol;
17
17
  export declare const _getHubAccess: unique symbol;
18
+ export declare const _openCheckpoint: unique symbol;
19
+ export declare const _getCheckpointDb: unique symbol;
18
20
  //# sourceMappingURL=Symbols.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Symbols.d.ts","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,eAAO,MAAM,yBAAyB,eAAmG,CAAC;AAM1I,eAAO,MAAM,MAAM,eAA2B,CAAC;AAC/C,eAAO,MAAM,kBAAkB,eAAuC,CAAC;AACvE,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,QAAQ,eAA6B,CAAC;AACnD,eAAO,MAAM,IAAI,eAAyB,CAAC;AAC3C,gBAAgB;AAChB,eAAO,MAAM,SAAS,eAA8B,CAAC;AACrD,eAAO,MAAM,gBAAgB,eAAqC,CAAC;AACnE,eAAO,MAAM,cAAc,eAAmC,CAAC;AAC/D,gBAAgB;AAChB,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,eAAO,MAAM,aAAa,eAAkC,CAAC"}
1
+ {"version":3,"file":"Symbols.d.ts","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,eAAO,MAAM,yBAAyB,eAAmG,CAAC;AAM1I,eAAO,MAAM,MAAM,eAA2B,CAAC;AAC/C,eAAO,MAAM,kBAAkB,eAAuC,CAAC;AACvE,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,QAAQ,eAA6B,CAAC;AACnD,eAAO,MAAM,IAAI,eAAyB,CAAC;AAC3C,gBAAgB;AAChB,eAAO,MAAM,SAAS,eAA8B,CAAC;AACrD,eAAO,MAAM,gBAAgB,eAAqC,CAAC;AACnE,eAAO,MAAM,cAAc,eAAmC,CAAC;AAC/D,gBAAgB;AAChB,eAAO,MAAM,UAAU,eAA+B,CAAC;AACvD,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,eAAO,MAAM,aAAa,eAAkC,CAAC;AAC7D,eAAO,MAAM,eAAe,eAAoC,CAAC;AACjE,eAAO,MAAM,gBAAgB,eAAqC,CAAC"}
@@ -22,4 +22,6 @@ export const _verifyChannel = Symbol.for(sym("verifyChannel"));
22
22
  export const _hubAccess = Symbol.for(sym("hubAccess"));
23
23
  export const _setHubAccess = Symbol.for(sym("setHubAccess"));
24
24
  export const _getHubAccess = Symbol.for(sym("getHubAccess"));
25
+ export const _openCheckpoint = Symbol.for(sym("openCheckpoint"));
26
+ export const _getCheckpointDb = Symbol.for(sym("getCheckpointDb"));
25
27
  //# sourceMappingURL=Symbols.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Symbols.js","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;AAE1I,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,wCAAwC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,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/** @packageDocumentation\n * @module Workspace\n */\n\nexport const _implementationProhibited = Symbol.for(\"Implementations of this interface can only be obtained from the containing package\");\n\nfunction sym(name: string): string {\n return `${name}_core-backend_INTERNAL_ONLY_DO_NOT_USE`;\n}\n\nexport const _close = Symbol.for(sym(\"close\"));\nexport const _elementWasCreated = Symbol.for(sym(\"elementWasCreated\"));\nexport const _faceProps = Symbol.for(sym(\"faceProps\"));\nexport const _getData = Symbol.for(sym(\"getData\"));\nexport const _key = Symbol.for(sym(\"key\"));\n/** @internal */\nexport const _nativeDb = Symbol.for(sym(\"nativeDb\"));\nexport const _releaseAllLocks = Symbol.for(sym(\"releaseAllLocks\"));\nexport const _verifyChannel = Symbol.for(sym(\"verifyChannel\"));\n/** @internal */\nexport const _hubAccess = Symbol.for(sym(\"hubAccess\"));\nexport const _setHubAccess = Symbol.for(sym(\"setHubAccess\"));\nexport const _getHubAccess = Symbol.for(sym(\"getHubAccess\"));\n"]}
1
+ {"version":3,"file":"Symbols.js","sourceRoot":"","sources":["../../../src/internal/Symbols.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;AAE1I,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,wCAAwC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,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/** @packageDocumentation\n * @module Workspace\n */\n\nexport const _implementationProhibited = Symbol.for(\"Implementations of this interface can only be obtained from the containing package\");\n\nfunction sym(name: string): string {\n return `${name}_core-backend_INTERNAL_ONLY_DO_NOT_USE`;\n}\n\nexport const _close = Symbol.for(sym(\"close\"));\nexport const _elementWasCreated = Symbol.for(sym(\"elementWasCreated\"));\nexport const _faceProps = Symbol.for(sym(\"faceProps\"));\nexport const _getData = Symbol.for(sym(\"getData\"));\nexport const _key = Symbol.for(sym(\"key\"));\n/** @internal */\nexport const _nativeDb = Symbol.for(sym(\"nativeDb\"));\nexport const _releaseAllLocks = Symbol.for(sym(\"releaseAllLocks\"));\nexport const _verifyChannel = Symbol.for(sym(\"verifyChannel\"));\n/** @internal */\nexport const _hubAccess = Symbol.for(sym(\"hubAccess\"));\nexport const _setHubAccess = Symbol.for(sym(\"setHubAccess\"));\nexport const _getHubAccess = Symbol.for(sym(\"getHubAccess\"));\nexport const _openCheckpoint = Symbol.for(sym(\"openCheckpoint\"));\nexport const _getCheckpointDb = Symbol.for(sym(\"getCheckpointDb\"));\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RpcBriefcaseUtility.d.ts","sourceRoot":"","sources":["../../../src/rpc-impl/RpcBriefcaseUtility.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAA0D,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EACL,cAAc,EAAE,qBAAqB,EAAe,kBAAkB,EAAE,cAAc,EAAiB,WAAW,EAAsB,QAAQ,EACjJ,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAe,QAAQ,EAAc,MAAM,aAAa,CAAC;AAOhE,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,EAAE,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AACD;;;GAGG;AACH,qBAAa,mBAAmB;mBAET,eAAe;IA2DpC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAgD;mBAC5D,aAAa;IAelC;;;;OAIG;WACiB,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc;WAQ/D,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC5G;;OAEG;WAEiB,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;WAgEpG,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC7K;;OAEG;WAEiB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAQ1L"}
1
+ {"version":3,"file":"RpcBriefcaseUtility.d.ts","sourceRoot":"","sources":["../../../src/rpc-impl/RpcBriefcaseUtility.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAA4C,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EACL,cAAc,EAAE,qBAAqB,EAAe,kBAAkB,EAAE,cAAc,EAAiB,WAAW,EAAsB,QAAQ,EACjJ,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAe,QAAQ,EAAc,MAAM,aAAa,CAAC;AAOhE,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,EAAE,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AACD;;;GAGG;AACH,qBAAa,mBAAmB;mBAET,eAAe;IAgEpC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAgD;mBAC5D,aAAa;IAelC;;;;OAIG;WACiB,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc;WAQ/D,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC5G;;OAEG;WAEiB,IAAI,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;WA8CpG,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC7K;;OAEG;WAEiB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAQ1L"}
@@ -5,11 +5,11 @@
5
5
  /** @packageDocumentation
6
6
  * @module RpcInterface
7
7
  */
8
- import { assert, BeDuration, BentleyError, IModelStatus, Logger } from "@itwin/core-bentley";
8
+ import { assert, BeDuration, IModelStatus, Logger } from "@itwin/core-bentley";
9
9
  import { IModelError, IModelVersion, RpcPendingResponse, SyncMode, } from "@itwin/core-common";
10
10
  import { BackendLoggerCategory } from "../BackendLoggerCategory";
11
11
  import { BriefcaseManager } from "../BriefcaseManager";
12
- import { CheckpointManager, V1CheckpointManager } from "../CheckpointManager";
12
+ import { CheckpointManager } from "../CheckpointManager";
13
13
  import { BriefcaseDb, IModelDb, SnapshotDb } from "../IModelDb";
14
14
  import { IModelHost } from "../IModelHost";
15
15
  import { IModelJsFs } from "../IModelJsFs";
@@ -41,8 +41,14 @@ export class RpcBriefcaseUtility {
41
41
  const fileName = resolver({ briefcaseId, iModelId });
42
42
  if (IModelJsFs.existsSync(fileName)) {
43
43
  const briefcaseDb = BriefcaseDb.findByFilename(fileName);
44
- if (briefcaseDb !== undefined)
45
- return briefcaseDb;
44
+ if (briefcaseDb !== undefined) {
45
+ if (briefcaseDb.isBriefcaseDb()) {
46
+ return briefcaseDb;
47
+ }
48
+ else {
49
+ throw new IModelError(IModelStatus.AlreadyOpen, "iModel is already open as a SnapshotDb");
50
+ }
51
+ }
46
52
  try {
47
53
  if (args.forceDownload)
48
54
  throw new Error(); // causes delete below
@@ -134,26 +140,9 @@ export class RpcBriefcaseUtility {
134
140
  Logger.logTrace(loggerCategory, "Checkpoint was already open", tokenProps);
135
141
  return db;
136
142
  }
137
- try {
138
- // now try V2 checkpoint
139
- db = await SnapshotDb.openCheckpointFromRpc(checkpoint);
140
- Logger.logTrace(loggerCategory, "using V2 checkpoint", tokenProps);
141
- }
142
- catch (e) {
143
- Logger.logTrace(loggerCategory, "unable to open V2 checkpoint - falling back to V1 checkpoint", { error: BentleyError.getErrorProps(e), ...tokenProps });
144
- // this isn't a v2 checkpoint. Set up a race between the specified timeout period and the open. Throw an RpcPendingResponse exception if the timeout happens first.
145
- const request = {
146
- checkpoint,
147
- localFile: V1CheckpointManager.getFileName(checkpoint),
148
- aliasFiles: [],
149
- };
150
- db = await BeDuration.race(timeout, V1CheckpointManager.getCheckpointDb(request));
151
- if (db === undefined) {
152
- Logger.logTrace(loggerCategory, "Open V1 checkpoint - pending", tokenProps);
153
- throw new RpcPendingResponse(); // eslint-disable-line @typescript-eslint/only-throw-error
154
- }
155
- Logger.logTrace(loggerCategory, "Opened V1 checkpoint", tokenProps);
156
- }
143
+ // now try V2 checkpoint
144
+ db = await SnapshotDb.openCheckpointFromRpc(checkpoint);
145
+ Logger.logTrace(loggerCategory, "using V2 checkpoint", tokenProps);
157
146
  return db;
158
147
  }
159
148
  static async openWithTimeout(activity, tokenProps, syncMode, timeout = 1000) {
@@ -1 +1 @@
1
- {"version":3,"file":"RpcBriefcaseUtility.js","sourceRoot":"","sources":["../../../src/rpc-impl/RpcBriefcaseUtility.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 RpcInterface\n */\n\nimport { AccessToken, assert, BeDuration, BentleyError, IModelStatus, Logger } from \"@itwin/core-bentley\";\nimport {\n BriefcaseProps, IModelConnectionProps, IModelError, IModelRpcOpenProps, IModelRpcProps, IModelVersion, RpcActivity, RpcPendingResponse, SyncMode,\n} from \"@itwin/core-common\";\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\nimport { BriefcaseManager, RequestNewBriefcaseArg } from \"../BriefcaseManager\";\nimport { CheckpointManager, V1CheckpointManager } from \"../CheckpointManager\";\nimport { BriefcaseDb, IModelDb, SnapshotDb } from \"../IModelDb\";\nimport { IModelHost } from \"../IModelHost\";\nimport { IModelJsFs } from \"../IModelJsFs\";\nimport { _hubAccess } from \"../internal/Symbols\";\n\nconst loggerCategory: string = BackendLoggerCategory.IModelDb;\n\n/** @internal */\nexport interface DownloadAndOpenArgs {\n activity: RpcActivity;\n tokenProps: IModelRpcOpenProps;\n syncMode: SyncMode;\n fileNameResolvers?: ((arg: BriefcaseProps) => string)[];\n timeout?: number;\n forceDownload?: boolean;\n}\n/**\n * Utility to open the iModel for RPC interfaces\n * @internal\n */\nexport class RpcBriefcaseUtility {\n\n private static async downloadAndOpen(args: DownloadAndOpenArgs): Promise<BriefcaseDb> {\n const { activity, tokenProps } = args;\n const accessToken = activity.accessToken;\n assert(undefined !== tokenProps.iModelId);\n\n const iModelId = tokenProps.iModelId;\n let myBriefcaseIds: number[];\n if (args.syncMode === SyncMode.PullOnly) {\n myBriefcaseIds = [0]; // PullOnly means briefcaseId 0\n } else {\n // check with iModelHub and see if we already have acquired any briefcaseIds\n myBriefcaseIds = await IModelHost[_hubAccess].getMyBriefcaseIds({ accessToken, iModelId });\n }\n\n const resolvers = args.fileNameResolvers ?? [(arg) => BriefcaseManager.getFileName(arg)];\n\n // see if we can open any of the briefcaseIds we already acquired from iModelHub\n if (resolvers) {\n for (const resolver of resolvers) {\n for (const briefcaseId of myBriefcaseIds) {\n const fileName = resolver({ briefcaseId, iModelId });\n if (IModelJsFs.existsSync(fileName)) {\n const briefcaseDb = BriefcaseDb.findByFilename(fileName);\n if (briefcaseDb !== undefined)\n return briefcaseDb as BriefcaseDb;\n try {\n if (args.forceDownload)\n throw new Error(); // causes delete below\n const db = await BriefcaseDb.open({ fileName });\n if (db.changeset.id !== tokenProps.changeset?.id) {\n assert(undefined !== tokenProps.changeset);\n const toIndex = tokenProps.changeset?.index ??\n (await IModelHost[_hubAccess].getChangesetFromVersion({ accessToken, iModelId, version: IModelVersion.asOfChangeSet(tokenProps.changeset.id) })).index;\n await BriefcaseManager.pullAndApplyChangesets(db, { accessToken, toIndex });\n }\n return db;\n } catch (error: any) {\n if (!(error.errorNumber === IModelStatus.AlreadyOpen))\n // somehow we have this briefcaseId and the file exists, but we can't open it. Delete it.\n await BriefcaseManager.deleteBriefcaseFiles(fileName, accessToken);\n }\n }\n }\n }\n }\n\n // no local briefcase available. Download one and open it.\n assert(undefined !== tokenProps.iTwinId);\n const request: RequestNewBriefcaseArg = {\n accessToken,\n iTwinId: tokenProps.iTwinId,\n iModelId,\n briefcaseId: args.syncMode === SyncMode.PullOnly ? 0 : undefined, // if briefcaseId is undefined, we'll acquire a new one.\n };\n\n const props = await BriefcaseManager.downloadBriefcase(request);\n return BriefcaseDb.open(props);\n }\n\n private static _briefcasePromises: Map<string, Promise<BriefcaseDb>> = new Map();\n private static async openBriefcase(args: DownloadAndOpenArgs): Promise<BriefcaseDb> {\n const key = `${args.tokenProps.iModelId}:${args.tokenProps.changeset?.id}:${args.tokenProps.changeset?.index}:${args.syncMode}`;\n const cachedPromise = this._briefcasePromises.get(key);\n if (cachedPromise)\n return cachedPromise;\n\n try {\n const briefcasePromise = this.downloadAndOpen(args); // save the fact that we're working on downloading so if we timeout, we'll reuse this request.\n this._briefcasePromises.set(key, briefcasePromise);\n return await briefcasePromise;\n } finally {\n this._briefcasePromises.delete(key); // the download and open is now done\n }\n }\n\n /** find a previously opened iModel for RPC.\n * @param accessToken necessary (only) for V2 checkpoints to refresh access token in daemon if it has expired. We use the accessToken of the current RPC request\n * to refresh the daemon, even though it will be used for all authorized users.\n * @param the IModelRpcProps to locate the opened iModel.\n */\n public static async findOpenIModel(accessToken: AccessToken, iModel: IModelRpcProps) {\n const iModelDb = IModelDb.findByKey(iModel.key);\n\n // call refreshContainer, just in case this is a V2 checkpoint whose sasToken is about to expire, or its default transaction is about to be restarted.\n await iModelDb.refreshContainerForRpc(accessToken);\n return iModelDb;\n }\n\n public static async open(args: DownloadAndOpenArgs & { syncMode: SyncMode.FixedVersion }): Promise<IModelDb>;\n /**\n * @deprecated in 4.4.0 - only `SyncMode.FixedVersion` should be used in RPC backends\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- these are separate to explicitly deprecate some SyncMode members.\n public static async open(args: DownloadAndOpenArgs & { syncMode: Exclude<SyncMode, \"FixedVersion\"> }): Promise<IModelDb>;\n /**\n * Download and open a checkpoint or briefcase, ensuring the operation completes within a default timeout. If the time to open exceeds the timeout period,\n * a RpcPendingResponse exception is thrown\n */\n public static async open(args: DownloadAndOpenArgs): Promise<IModelDb> {\n const { activity, tokenProps, syncMode } = args;\n Logger.logTrace(loggerCategory, \"RpcBriefcaseUtility.open\", tokenProps);\n\n const timeout = args.timeout ?? 1000;\n if (syncMode === SyncMode.PullOnly || syncMode === SyncMode.PullAndPush) {\n const briefcaseDb = await BeDuration.race(timeout, this.openBriefcase(args));\n\n if (briefcaseDb === undefined) {\n Logger.logTrace(loggerCategory, \"Open briefcase - pending\", tokenProps);\n throw new RpcPendingResponse(); // eslint-disable-line @typescript-eslint/only-throw-error\n }\n // note: usage is logged in the function BriefcaseManager.downloadNewBriefcaseAndOpen\n return briefcaseDb;\n }\n if (!tokenProps.iModelId || !tokenProps.iTwinId || !tokenProps.changeset)\n throw new IModelError(IModelStatus.BadArg, \"invalid arguments\");\n\n const checkpoint = {\n iModelId: tokenProps.iModelId,\n iTwinId: tokenProps.iTwinId,\n changeset: tokenProps.changeset,\n accessToken: activity.accessToken,\n };\n\n // opening a checkpoint.\n let db: SnapshotDb | void;\n // first check if it's already open\n db = SnapshotDb.tryFindByKey(CheckpointManager.getKey(checkpoint));\n if (db) {\n Logger.logTrace(loggerCategory, \"Checkpoint was already open\", tokenProps);\n return db;\n }\n\n try {\n // now try V2 checkpoint\n db = await SnapshotDb.openCheckpointFromRpc(checkpoint);\n Logger.logTrace(loggerCategory, \"using V2 checkpoint\", tokenProps);\n } catch (e) {\n Logger.logTrace(loggerCategory, \"unable to open V2 checkpoint - falling back to V1 checkpoint\", { error: BentleyError.getErrorProps(e), ...tokenProps });\n\n // this isn't a v2 checkpoint. Set up a race between the specified timeout period and the open. Throw an RpcPendingResponse exception if the timeout happens first.\n const request = {\n checkpoint,\n localFile: V1CheckpointManager.getFileName(checkpoint),\n aliasFiles: [],\n };\n db = await BeDuration.race(timeout, V1CheckpointManager.getCheckpointDb(request));\n\n if (db === undefined) {\n Logger.logTrace(loggerCategory, \"Open V1 checkpoint - pending\", tokenProps);\n throw new RpcPendingResponse(); // eslint-disable-line @typescript-eslint/only-throw-error\n }\n Logger.logTrace(loggerCategory, \"Opened V1 checkpoint\", tokenProps);\n }\n\n return db;\n }\n\n public static async openWithTimeout(activity: RpcActivity, tokenProps: IModelRpcOpenProps, syncMode: SyncMode.FixedVersion, timeout?: number): Promise<IModelConnectionProps>;\n /**\n * @deprecated in 4.4.0 - only `SyncMode.FixedVersion` should be used in RPC backends\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- these are separate to explicitly deprecate some SyncMode members.\n public static async openWithTimeout(activity: RpcActivity, tokenProps: IModelRpcOpenProps, syncMode: Exclude<SyncMode, \"FixedVersion\">, timeout?: number): Promise<IModelConnectionProps>;\n public static async openWithTimeout(activity: RpcActivity, tokenProps: IModelRpcOpenProps, syncMode: SyncMode, timeout: number = 1000): Promise<IModelConnectionProps> {\n if (tokenProps.iModelId)\n await IModelHost.tileStorage?.initialize(tokenProps.iModelId);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return (await this.open({ activity, tokenProps, syncMode, timeout })).toJSON();\n }\n\n}\n"]}
1
+ {"version":3,"file":"RpcBriefcaseUtility.js","sourceRoot":"","sources":["../../../src/rpc-impl/RpcBriefcaseUtility.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAe,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EACkC,WAAW,EAAsC,aAAa,EAAe,kBAAkB,EAAE,QAAQ,GACjJ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAA0B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,cAAc,GAAW,qBAAqB,CAAC,QAAQ,CAAC;AAW9D;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAEtB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAyB;QAC5D,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACzC,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,IAAI,cAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACxC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;QACvD,CAAC;aAAM,CAAC;YACN,4EAA4E;YAC5E,cAAc,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzF,gFAAgF;QAChF,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,KAAK,MAAM,WAAW,IAAI,cAAc,EAAE,CAAC;oBACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACrD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACpC,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBACzD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;4BAC9B,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC;gCAChC,OAAO,WAAW,CAAC;4BACrB,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,wCAAwC,CAAC,CAAC;4BAC5F,CAAC;wBACH,CAAC;wBACD,IAAI,CAAC;4BACH,IAAI,IAAI,CAAC,aAAa;gCACpB,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,sBAAsB;4BAC3C,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;4BAChD,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC;gCACjD,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC;gCAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK;oCACzC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gCACzJ,MAAM,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;4BAC9E,CAAC;4BACD,OAAO,EAAE,CAAC;wBACZ,CAAC;wBAAC,OAAO,KAAU,EAAE,CAAC;4BACpB,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,CAAC;gCACnD,yFAAyF;gCACzF,MAAM,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBACvE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,OAAO,GAA2B;YACtC,WAAW;YACX,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,wDAAwD;SAC3H,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,MAAM,CAAC,kBAAkB,GAAsC,IAAI,GAAG,EAAE,CAAC;IACzE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAyB;QAC1D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChI,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,aAAa;YACf,OAAO,aAAa,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,8FAA8F;YACnJ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YACnD,OAAO,MAAM,gBAAgB,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,oCAAoC;QAC5E,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,WAAwB,EAAE,MAAsB;QACjF,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhD,sJAAsJ;QACtJ,MAAM,QAAQ,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAQD;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAyB;QAChD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,0BAA0B,EAAE,UAAU,CAAC,CAAC;QAExE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QACrC,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAE7E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,0BAA0B,EAAE,UAAU,CAAC,CAAC;gBACxE,MAAM,IAAI,kBAAkB,EAAE,CAAC,CAAC,0DAA0D;YAC5F,CAAC;YACD,qFAAqF;YACrF,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS;YACtE,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC;QAEF,wBAAwB;QACxB,IAAI,EAAqB,CAAC;QAC1B,mCAAmC;QACnC,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACnE,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,6BAA6B,EAAE,UAAU,CAAC,CAAC;YAC3E,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,wBAAwB;QACxB,EAAE,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;QAEnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAQM,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,QAAqB,EAAE,UAA8B,EAAE,QAAkB,EAAE,UAAkB,IAAI;QACnI,IAAI,UAAU,CAAC,QAAQ;YACrB,MAAM,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChE,4DAA4D;QAC5D,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjF,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/** @packageDocumentation\n * @module RpcInterface\n */\n\nimport { AccessToken, assert, BeDuration, IModelStatus, Logger } from \"@itwin/core-bentley\";\nimport {\n BriefcaseProps, IModelConnectionProps, IModelError, IModelRpcOpenProps, IModelRpcProps, IModelVersion, RpcActivity, RpcPendingResponse, SyncMode,\n} from \"@itwin/core-common\";\nimport { BackendLoggerCategory } from \"../BackendLoggerCategory\";\nimport { BriefcaseManager, RequestNewBriefcaseArg } from \"../BriefcaseManager\";\nimport { CheckpointManager } from \"../CheckpointManager\";\nimport { BriefcaseDb, IModelDb, SnapshotDb } from \"../IModelDb\";\nimport { IModelHost } from \"../IModelHost\";\nimport { IModelJsFs } from \"../IModelJsFs\";\nimport { _hubAccess } from \"../internal/Symbols\";\n\nconst loggerCategory: string = BackendLoggerCategory.IModelDb;\n\n/** @internal */\nexport interface DownloadAndOpenArgs {\n activity: RpcActivity;\n tokenProps: IModelRpcOpenProps;\n syncMode: SyncMode;\n fileNameResolvers?: ((arg: BriefcaseProps) => string)[];\n timeout?: number;\n forceDownload?: boolean;\n}\n/**\n * Utility to open the iModel for RPC interfaces\n * @internal\n */\nexport class RpcBriefcaseUtility {\n\n private static async downloadAndOpen(args: DownloadAndOpenArgs): Promise<BriefcaseDb> {\n const { activity, tokenProps } = args;\n const accessToken = activity.accessToken;\n assert(undefined !== tokenProps.iModelId);\n\n const iModelId = tokenProps.iModelId;\n let myBriefcaseIds: number[];\n if (args.syncMode === SyncMode.PullOnly) {\n myBriefcaseIds = [0]; // PullOnly means briefcaseId 0\n } else {\n // check with iModelHub and see if we already have acquired any briefcaseIds\n myBriefcaseIds = await IModelHost[_hubAccess].getMyBriefcaseIds({ accessToken, iModelId });\n }\n\n const resolvers = args.fileNameResolvers ?? [(arg) => BriefcaseManager.getFileName(arg)];\n\n // see if we can open any of the briefcaseIds we already acquired from iModelHub\n if (resolvers) {\n for (const resolver of resolvers) {\n for (const briefcaseId of myBriefcaseIds) {\n const fileName = resolver({ briefcaseId, iModelId });\n if (IModelJsFs.existsSync(fileName)) {\n const briefcaseDb = BriefcaseDb.findByFilename(fileName);\n if (briefcaseDb !== undefined) {\n if (briefcaseDb.isBriefcaseDb()) {\n return briefcaseDb;\n } else {\n throw new IModelError(IModelStatus.AlreadyOpen, \"iModel is already open as a SnapshotDb\");\n }\n }\n try {\n if (args.forceDownload)\n throw new Error(); // causes delete below\n const db = await BriefcaseDb.open({ fileName });\n if (db.changeset.id !== tokenProps.changeset?.id) {\n assert(undefined !== tokenProps.changeset);\n const toIndex = tokenProps.changeset?.index ??\n (await IModelHost[_hubAccess].getChangesetFromVersion({ accessToken, iModelId, version: IModelVersion.asOfChangeSet(tokenProps.changeset.id) })).index;\n await BriefcaseManager.pullAndApplyChangesets(db, { accessToken, toIndex });\n }\n return db;\n } catch (error: any) {\n if (!(error.errorNumber === IModelStatus.AlreadyOpen))\n // somehow we have this briefcaseId and the file exists, but we can't open it. Delete it.\n await BriefcaseManager.deleteBriefcaseFiles(fileName, accessToken);\n }\n }\n }\n }\n }\n\n // no local briefcase available. Download one and open it.\n assert(undefined !== tokenProps.iTwinId);\n const request: RequestNewBriefcaseArg = {\n accessToken,\n iTwinId: tokenProps.iTwinId,\n iModelId,\n briefcaseId: args.syncMode === SyncMode.PullOnly ? 0 : undefined, // if briefcaseId is undefined, we'll acquire a new one.\n };\n\n const props = await BriefcaseManager.downloadBriefcase(request);\n return BriefcaseDb.open(props);\n }\n\n private static _briefcasePromises: Map<string, Promise<BriefcaseDb>> = new Map();\n private static async openBriefcase(args: DownloadAndOpenArgs): Promise<BriefcaseDb> {\n const key = `${args.tokenProps.iModelId}:${args.tokenProps.changeset?.id}:${args.tokenProps.changeset?.index}:${args.syncMode}`;\n const cachedPromise = this._briefcasePromises.get(key);\n if (cachedPromise)\n return cachedPromise;\n\n try {\n const briefcasePromise = this.downloadAndOpen(args); // save the fact that we're working on downloading so if we timeout, we'll reuse this request.\n this._briefcasePromises.set(key, briefcasePromise);\n return await briefcasePromise;\n } finally {\n this._briefcasePromises.delete(key); // the download and open is now done\n }\n }\n\n /** find a previously opened iModel for RPC.\n * @param accessToken necessary (only) for V2 checkpoints to refresh access token in daemon if it has expired. We use the accessToken of the current RPC request\n * to refresh the daemon, even though it will be used for all authorized users.\n * @param the IModelRpcProps to locate the opened iModel.\n */\n public static async findOpenIModel(accessToken: AccessToken, iModel: IModelRpcProps) {\n const iModelDb = IModelDb.findByKey(iModel.key);\n\n // call refreshContainer, just in case this is a V2 checkpoint whose sasToken is about to expire, or its default transaction is about to be restarted.\n await iModelDb.refreshContainerForRpc(accessToken);\n return iModelDb;\n }\n\n public static async open(args: DownloadAndOpenArgs & { syncMode: SyncMode.FixedVersion }): Promise<IModelDb>;\n /**\n * @deprecated in 4.4.0 - only `SyncMode.FixedVersion` should be used in RPC backends\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- these are separate to explicitly deprecate some SyncMode members.\n public static async open(args: DownloadAndOpenArgs & { syncMode: Exclude<SyncMode, \"FixedVersion\"> }): Promise<IModelDb>;\n /**\n * Download and open a checkpoint or briefcase, ensuring the operation completes within a default timeout. If the time to open exceeds the timeout period,\n * a RpcPendingResponse exception is thrown\n */\n public static async open(args: DownloadAndOpenArgs): Promise<IModelDb> {\n const { activity, tokenProps, syncMode } = args;\n Logger.logTrace(loggerCategory, \"RpcBriefcaseUtility.open\", tokenProps);\n\n const timeout = args.timeout ?? 1000;\n if (syncMode === SyncMode.PullOnly || syncMode === SyncMode.PullAndPush) {\n const briefcaseDb = await BeDuration.race(timeout, this.openBriefcase(args));\n\n if (briefcaseDb === undefined) {\n Logger.logTrace(loggerCategory, \"Open briefcase - pending\", tokenProps);\n throw new RpcPendingResponse(); // eslint-disable-line @typescript-eslint/only-throw-error\n }\n // note: usage is logged in the function BriefcaseManager.downloadNewBriefcaseAndOpen\n return briefcaseDb;\n }\n if (!tokenProps.iModelId || !tokenProps.iTwinId || !tokenProps.changeset)\n throw new IModelError(IModelStatus.BadArg, \"invalid arguments\");\n\n const checkpoint = {\n iModelId: tokenProps.iModelId,\n iTwinId: tokenProps.iTwinId,\n changeset: tokenProps.changeset,\n accessToken: activity.accessToken,\n };\n\n // opening a checkpoint.\n let db: SnapshotDb | void;\n // first check if it's already open\n db = SnapshotDb.tryFindByKey(CheckpointManager.getKey(checkpoint));\n if (db) {\n Logger.logTrace(loggerCategory, \"Checkpoint was already open\", tokenProps);\n return db;\n }\n\n // now try V2 checkpoint\n db = await SnapshotDb.openCheckpointFromRpc(checkpoint);\n Logger.logTrace(loggerCategory, \"using V2 checkpoint\", tokenProps);\n\n return db;\n }\n\n public static async openWithTimeout(activity: RpcActivity, tokenProps: IModelRpcOpenProps, syncMode: SyncMode.FixedVersion, timeout?: number): Promise<IModelConnectionProps>;\n /**\n * @deprecated in 4.4.0 - only `SyncMode.FixedVersion` should be used in RPC backends\n */\n // eslint-disable-next-line @typescript-eslint/unified-signatures -- these are separate to explicitly deprecate some SyncMode members.\n public static async openWithTimeout(activity: RpcActivity, tokenProps: IModelRpcOpenProps, syncMode: Exclude<SyncMode, \"FixedVersion\">, timeout?: number): Promise<IModelConnectionProps>;\n public static async openWithTimeout(activity: RpcActivity, tokenProps: IModelRpcOpenProps, syncMode: SyncMode, timeout: number = 1000): Promise<IModelConnectionProps> {\n if (tokenProps.iModelId)\n await IModelHost.tileStorage?.initialize(tokenProps.iModelId);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return (await this.open({ activity, tokenProps, syncMode, timeout })).toJSON();\n }\n\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { CloudSqlite } from "../CloudSqlite";
2
+ export declare class CloudContainerMock {
3
+ isConnected: boolean;
4
+ createArgs: any;
5
+ containerId: string;
6
+ private _cloudCache?;
7
+ constructor(createArgs: any);
8
+ connect(cache: CloudSqlite.CloudCache): void;
9
+ disconnect(_args?: {
10
+ detach?: boolean;
11
+ }): void;
12
+ downloadCheckpoint(fileName: string): void;
13
+ checkForChanges(): void;
14
+ queryDatabase(): undefined;
15
+ attach(): {
16
+ dbName: string;
17
+ container: CloudSqlite.CloudContainer | undefined;
18
+ };
19
+ }
20
+ /**
21
+ * Mocks the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]].
22
+ * @internal
23
+ */
24
+ export declare class CloudSqliteMock {
25
+ private static _stubs;
26
+ /**
27
+ * Begin mocking the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]]. This uses [[HubMock]] to
28
+ * copy a local file to the target file. Call [[shutdown]] to stop the mocking.
29
+ */
30
+ static startup(): void;
31
+ /**
32
+ * Stop the CloudSqliteMock that was started in [[startup]].
33
+ * Note: This throws an exception if [[startup]] was not called first.
34
+ */
35
+ static shutdown(): void;
36
+ }
37
+ //# sourceMappingURL=CloudSqliteMock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudSqliteMock.d.ts","sourceRoot":"","sources":["../../../src/test/CloudSqliteMock.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW7C,qBAAa,kBAAkB;IACtB,WAAW,UAAS;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,SAAqB;IACvC,OAAO,CAAC,WAAW,CAAC,CAAyB;gBAEjC,UAAU,EAAE,GAAG;IAGpB,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU;IAKrC,UAAU,CAAC,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;IAIvC,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAInC,eAAe;IACf,aAAa;IAGb,MAAM,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,WAAW,CAAC,cAAc,GAAG,SAAS,CAAA;KAAE;CAKvF;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyB;IAE9C;;;OAGG;WACW,OAAO;IA4CrB;;;OAGG;WACW,QAAQ;CAQvB"}
@@ -0,0 +1,117 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import * as sinon from "sinon";
6
+ import { CloudSqlite } from "../CloudSqlite";
7
+ import { HubMock } from "../HubMock";
8
+ import * as path from "path";
9
+ import { BriefcaseManager } from "../BriefcaseManager";
10
+ import { V2CheckpointManager } from "../CheckpointManager";
11
+ import { IModelHost } from "../IModelHost";
12
+ import { _hubAccess } from "../internal/Symbols";
13
+ import { IModelError } from "@itwin/core-common";
14
+ import { IModelStatus } from "@itwin/core-bentley";
15
+ export class CloudContainerMock {
16
+ isConnected = false;
17
+ createArgs;
18
+ containerId = "MockContainerId";
19
+ _cloudCache;
20
+ constructor(createArgs) {
21
+ this.createArgs = createArgs;
22
+ }
23
+ connect(cache) {
24
+ this._cloudCache = cache;
25
+ this.downloadCheckpoint(path.join(cache.rootDir, this.createArgs.checkpoint.iModelId, this.createArgs.dbName));
26
+ this.isConnected = true;
27
+ }
28
+ disconnect(_args) {
29
+ this.isConnected = false;
30
+ this._cloudCache = undefined;
31
+ }
32
+ downloadCheckpoint(fileName) {
33
+ const checkpoint = this.createArgs.checkpoint;
34
+ HubMock.findLocalHub(checkpoint.iModelId).downloadCheckpoint({ changeset: checkpoint.changeset, targetFile: fileName });
35
+ }
36
+ checkForChanges() { }
37
+ queryDatabase() {
38
+ return undefined;
39
+ }
40
+ attach() {
41
+ const dbName = path.join(BriefcaseManager.getBriefcaseBasePath(this.createArgs.checkpoint.iModelId), this.createArgs.dbName);
42
+ this.downloadCheckpoint(dbName);
43
+ return { dbName, container: undefined };
44
+ }
45
+ }
46
+ /**
47
+ * Mocks the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]].
48
+ * @internal
49
+ */
50
+ export class CloudSqliteMock {
51
+ static _stubs = [];
52
+ /**
53
+ * Begin mocking the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]]. This uses [[HubMock]] to
54
+ * copy a local file to the target file. Call [[shutdown]] to stop the mocking.
55
+ */
56
+ static startup() {
57
+ if (this._stubs.length > 0) {
58
+ throw new Error("CloudSqliteMock.startup called twice without calling shutdown");
59
+ }
60
+ const origCreateCloudContainer = CloudSqlite.createCloudContainer;
61
+ const origTransferDb = CloudSqlite.transferDb;
62
+ this._stubs.push(sinon.stub(CloudSqlite, "createCloudContainer").callsFake((args) => {
63
+ if (args.isMock) {
64
+ return new CloudContainerMock(args);
65
+ }
66
+ else {
67
+ return origCreateCloudContainer(args);
68
+ }
69
+ }));
70
+ this._stubs.push(sinon.stub(CloudSqlite, "transferDb").callsFake(async (direction, container, props) => {
71
+ if (container instanceof CloudContainerMock) {
72
+ if (direction === "download") {
73
+ container.downloadCheckpoint(props.localFileName);
74
+ }
75
+ else {
76
+ throw new Error("Mock transferDb only supports download");
77
+ }
78
+ }
79
+ else {
80
+ return origTransferDb(direction, container, props);
81
+ }
82
+ }));
83
+ this._stubs.push(sinon.stub(V2CheckpointManager, "attach").callsFake(async (checkpoint) => {
84
+ console.log("CloudSqliteMock attach called"); // eslint-disable-line no-console
85
+ let v2props;
86
+ try {
87
+ v2props = await IModelHost[_hubAccess].queryV2Checkpoint(checkpoint);
88
+ if (!v2props)
89
+ throw new Error("no checkpoint");
90
+ }
91
+ catch (err) {
92
+ throw new IModelError(IModelStatus.NotFound, `V2 checkpoint not found: err: ${err.message}`);
93
+ }
94
+ const container = V2CheckpointManager.getContainer(v2props, checkpoint);
95
+ if (container instanceof CloudContainerMock) {
96
+ return container.attach();
97
+ }
98
+ else {
99
+ throw new Error("Mock attach only supports CloudContainerMock");
100
+ }
101
+ }));
102
+ }
103
+ /**
104
+ * Stop the CloudSqliteMock that was started in [[startup]].
105
+ * Note: This throws an exception if [[startup]] was not called first.
106
+ */
107
+ static shutdown() {
108
+ if (this._stubs.length > 0) {
109
+ this._stubs.forEach((stub) => stub.restore());
110
+ this._stubs = [];
111
+ }
112
+ else {
113
+ throw new Error("CloudSqliteMock.shutdown called before startup");
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=CloudSqliteMock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudSqliteMock.js","sourceRoot":"","sources":["../../../src/test/CloudSqliteMock.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 * as sinon from \"sinon\";\nimport { CloudSqlite } from \"../CloudSqlite\";\nimport { HubMock } from \"../HubMock\";\nimport * as path from \"path\";\nimport { BriefcaseManager } from \"../BriefcaseManager\";\nimport { CheckpointProps, V2CheckpointManager } from \"../CheckpointManager\";\nimport { V2CheckpointAccessProps } from \"../BackendHubAccess\";\nimport { IModelHost } from \"../IModelHost\";\nimport { _hubAccess } from \"../internal/Symbols\";\nimport { IModelError } from \"@itwin/core-common\";\nimport { IModelStatus } from \"@itwin/core-bentley\";\n\nexport class CloudContainerMock {\n public isConnected = false;\n public createArgs: any;\n public containerId = \"MockContainerId\";\n private _cloudCache?: CloudSqlite.CloudCache;\n\n constructor(createArgs: any) {\n this.createArgs = createArgs;\n }\n public connect(cache: CloudSqlite.CloudCache) {\n this._cloudCache = cache;\n this.downloadCheckpoint(path.join(cache.rootDir, this.createArgs.checkpoint.iModelId, this.createArgs.dbName));\n this.isConnected = true;\n }\n public disconnect(_args?: { detach?: boolean }) {\n this.isConnected = false;\n this._cloudCache = undefined;\n }\n public downloadCheckpoint(fileName: string) {\n const checkpoint = this.createArgs.checkpoint;\n HubMock.findLocalHub(checkpoint.iModelId).downloadCheckpoint({ changeset: checkpoint.changeset, targetFile: fileName });\n }\n public checkForChanges() {}\n public queryDatabase() {\n return undefined;\n }\n public attach(): { dbName: string, container: CloudSqlite.CloudContainer | undefined } {\n const dbName = path.join(BriefcaseManager.getBriefcaseBasePath(this.createArgs.checkpoint.iModelId), this.createArgs.dbName);\n this.downloadCheckpoint(dbName);\n return { dbName, container: undefined };\n }\n}\n\n/**\n * Mocks the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]].\n * @internal\n */\nexport class CloudSqliteMock {\n private static _stubs: sinon.SinonStub[] = [];\n\n /**\n * Begin mocking the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]]. This uses [[HubMock]] to\n * copy a local file to the target file. Call [[shutdown]] to stop the mocking.\n */\n public static startup() {\n if (this._stubs.length > 0) {\n throw new Error(\"CloudSqliteMock.startup called twice without calling shutdown\");\n }\n const origCreateCloudContainer = CloudSqlite.createCloudContainer;\n const origTransferDb = CloudSqlite.transferDb;\n this._stubs.push(sinon.stub(CloudSqlite, \"createCloudContainer\").callsFake((args) => {\n if ((args as any).isMock) {\n return new CloudContainerMock(args) as any as CloudSqlite.CloudContainer;\n } else {\n return origCreateCloudContainer(args);\n }\n }));\n this._stubs.push(sinon.stub(CloudSqlite, \"transferDb\").callsFake(async (direction, container: any, props) => {\n if (container instanceof CloudContainerMock) {\n if (direction === \"download\") {\n container.downloadCheckpoint(props.localFileName);\n } else {\n throw new Error(\"Mock transferDb only supports download\");\n }\n } else {\n return origTransferDb(direction, container, props);\n }\n }));\n this._stubs.push(sinon.stub(V2CheckpointManager, \"attach\").callsFake(async (checkpoint: CheckpointProps): Promise<{ dbName: string, container: CloudSqlite.CloudContainer | undefined }> => {\n console.log(\"CloudSqliteMock attach called\"); // eslint-disable-line no-console\n let v2props: V2CheckpointAccessProps | undefined;\n try {\n v2props = await IModelHost[_hubAccess].queryV2Checkpoint(checkpoint);\n if (!v2props)\n throw new Error(\"no checkpoint\");\n } catch (err: any) {\n throw new IModelError(IModelStatus.NotFound, `V2 checkpoint not found: err: ${err.message}`);\n }\n\n const container = V2CheckpointManager.getContainer(v2props, checkpoint);\n if (container instanceof CloudContainerMock) {\n return container.attach();\n } else {\n throw new Error(\"Mock attach only supports CloudContainerMock\");\n }\n }));\n }\n\n /**\n * Stop the CloudSqliteMock that was started in [[startup]].\n * Note: This throws an exception if [[startup]] was not called first.\n */\n public static shutdown() {\n if (this._stubs.length > 0) {\n this._stubs.forEach((stub) => stub.restore());\n this._stubs = [];\n } else {\n throw new Error(\"CloudSqliteMock.shutdown called before startup\");\n }\n }\n}\n"]}
@@ -71,7 +71,7 @@ export declare class HubWrappers {
71
71
  accessToken: AccessToken;
72
72
  deleteFirst?: boolean;
73
73
  }): Promise<BriefcaseDb>;
74
- /** Downloads and opens a v1 checkpoint */
74
+ /** Downloads and opens a checkpoint */
75
75
  static downloadAndOpenCheckpoint(args: {
76
76
  accessToken: AccessToken;
77
77
  iTwinId: GuidString;
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/IModelTestUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelTestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/IModelTestUtils.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import * as path from "path";
10
10
  import { BeEvent, DbResult, Guid, Id64, IModelStatus, omit } from "@itwin/core-bentley";
11
11
  import { Base64EncodedString, Code, CodeScopeSpec, ColorDef, Environment, FontType, GeometryParams, GeometryStreamBuilder, ImageSourceFormat, IModel, IModelError, IModelReadRpcInterface, IModelVersion, PlanProjectionSettings, RelatedElement, RpcConfiguration, RpcManager, RpcPendingResponse, SkyBoxImageType, SubCategoryAppearance, SubCategoryOverride, SyncMode, } from "@itwin/core-common";
12
12
  import { Box, Cone, LineString3d, Point2d, Point3d, Range2d, Range3d, StandardViewIndex, Vector3d, YawPitchRollAngles } from "@itwin/core-geometry";
13
- import { V1CheckpointManager } from "../CheckpointManager";
13
+ import { V2CheckpointManager } from "../CheckpointManager";
14
14
  import { ClassRegistry } from "../ClassRegistry";
15
15
  import { _nativeDb, AuxCoordSystem2d, BriefcaseDb, BriefcaseLocalValue, BriefcaseManager, CategorySelector, ChannelControl, DisplayStyle2d, DisplayStyle3d, DrawingCategory, DrawingViewDefinition, Element, ElementOwnsChildElements, ElementOwnsMultiAspects, ElementOwnsUniqueAspect, ExternalSource, ExternalSourceIsInRepository, FunctionalModel, FunctionalSchema, GroupModel, IModelDb, IModelHost, IModelJsFs, InformationPartitionElement, Model, ModelSelector, OrthographicViewDefinition, PhysicalModel, PhysicalObject, PhysicalPartition, RenderMaterialElement, SnapshotDb, SpatialCategory, SubCategory, SubjectOwnsPartitionElements, Texture, ViewDefinition, } from "../core-backend";
16
16
  import { DefinitionPartition, Drawing, DrawingGraphic, GeometryPart, LinkElement, PhysicalElement, RepositoryLink, Subject } from "../Element";
@@ -20,7 +20,7 @@ import { RpcBriefcaseUtility } from "../rpc-impl/RpcBriefcaseUtility";
20
20
  import { Schema, Schemas } from "../Schema";
21
21
  import { HubMock } from "../HubMock";
22
22
  import { KnownTestLocations } from "./KnownTestLocations";
23
- import { _hubAccess } from "../internal/Symbols";
23
+ import { _getCheckpointDb, _hubAccess } from "../internal/Symbols";
24
24
  chai.use(chaiAsPromised);
25
25
  /* eslint-disable @typescript-eslint/explicit-member-accessibility */
26
26
  RpcConfiguration.developmentMode = true;
@@ -136,7 +136,7 @@ export class HubWrappers {
136
136
  }
137
137
  }
138
138
  }
139
- /** Downloads and opens a v1 checkpoint */
139
+ /** Downloads and opens a checkpoint */
140
140
  static async downloadAndOpenCheckpoint(args) {
141
141
  if (undefined === args.asOf)
142
142
  args.asOf = IModelVersion.latest().toJSON();
@@ -146,7 +146,9 @@ export class HubWrappers {
146
146
  accessToken: args.accessToken,
147
147
  changeset: (await IModelHost[_hubAccess].getChangesetFromVersion({ accessToken: args.accessToken, version: IModelVersion.fromJSON(args.asOf), iModelId: args.iModelId })),
148
148
  };
149
- return V1CheckpointManager.getCheckpointDb({ checkpoint, localFile: V1CheckpointManager.getFileName(checkpoint) });
149
+ const folder = path.join(V2CheckpointManager.getFolder(), checkpoint.iModelId);
150
+ const filename = path.join(folder, `${checkpoint.changeset.id ?? "first"}.bim`);
151
+ return V2CheckpointManager[_getCheckpointDb]({ checkpoint, localFile: filename });
150
152
  }
151
153
  /** Opens the specific Checkpoint iModel, `SyncMode.FixedVersion`, through the same workflow the IModelReadRpc.getConnectionProps method will use. Replicates the way a frontend would open the iModel. */
152
154
  static async openCheckpointUsingRpc(args) {