@itwin/core-backend 3.3.0-dev.40 → 3.3.0-dev.43

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 (79) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +2 -7
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BisCoreSchema.d.ts +1 -1
  6. package/lib/cjs/BisCoreSchema.js +1 -1
  7. package/lib/cjs/BisCoreSchema.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.d.ts +10 -11
  9. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseManager.js +10 -11
  11. package/lib/cjs/BriefcaseManager.js.map +1 -1
  12. package/lib/cjs/CheckpointManager.d.ts +14 -4
  13. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  14. package/lib/cjs/CheckpointManager.js +91 -19
  15. package/lib/cjs/CheckpointManager.js.map +1 -1
  16. package/lib/cjs/CodeSpecs.d.ts +1 -1
  17. package/lib/cjs/CodeSpecs.js +1 -1
  18. package/lib/cjs/CodeSpecs.js.map +1 -1
  19. package/lib/cjs/Element.d.ts +8 -8
  20. package/lib/cjs/Element.d.ts.map +1 -1
  21. package/lib/cjs/Element.js +3 -3
  22. package/lib/cjs/Element.js.map +1 -1
  23. package/lib/cjs/GeoCoordConfig.d.ts +14 -0
  24. package/lib/cjs/GeoCoordConfig.d.ts.map +1 -0
  25. package/lib/cjs/GeoCoordConfig.js +73 -0
  26. package/lib/cjs/GeoCoordConfig.js.map +1 -0
  27. package/lib/cjs/HubMock.d.ts.map +1 -1
  28. package/lib/cjs/HubMock.js +0 -2
  29. package/lib/cjs/HubMock.js.map +1 -1
  30. package/lib/cjs/IModelDb.d.ts +25 -15
  31. package/lib/cjs/IModelDb.d.ts.map +1 -1
  32. package/lib/cjs/IModelDb.js +43 -34
  33. package/lib/cjs/IModelDb.js.map +1 -1
  34. package/lib/cjs/IModelHost.d.ts +10 -1
  35. package/lib/cjs/IModelHost.d.ts.map +1 -1
  36. package/lib/cjs/IModelHost.js +30 -14
  37. package/lib/cjs/IModelHost.js.map +1 -1
  38. package/lib/cjs/LocalHub.d.ts +5 -3
  39. package/lib/cjs/LocalHub.d.ts.map +1 -1
  40. package/lib/cjs/LocalHub.js +1 -1
  41. package/lib/cjs/LocalHub.js.map +1 -1
  42. package/lib/cjs/SQLiteDb.d.ts +4 -3
  43. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  44. package/lib/cjs/SQLiteDb.js +5 -4
  45. package/lib/cjs/SQLiteDb.js.map +1 -1
  46. package/lib/cjs/SqliteStatement.d.ts +4 -0
  47. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  48. package/lib/cjs/SqliteStatement.js +4 -0
  49. package/lib/cjs/SqliteStatement.js.map +1 -1
  50. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +68 -0
  51. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +22 -0
  52. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +53 -0
  53. package/lib/cjs/assets/Settings/backend.setting.json5 +139 -0
  54. package/lib/cjs/core-backend.d.ts +7 -7
  55. package/lib/cjs/core-backend.d.ts.map +1 -1
  56. package/lib/cjs/core-backend.js +7 -7
  57. package/lib/cjs/core-backend.js.map +1 -1
  58. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +1 -1
  59. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -1
  60. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +8 -12
  61. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  62. package/lib/cjs/workspace/Settings.d.ts +8 -3
  63. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  64. package/lib/cjs/workspace/Settings.js +9 -0
  65. package/lib/cjs/workspace/Settings.js.map +1 -1
  66. package/lib/cjs/workspace/SettingsSchemas.d.ts +76 -0
  67. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -0
  68. package/lib/cjs/workspace/SettingsSchemas.js +192 -0
  69. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -0
  70. package/lib/cjs/workspace/Workspace.d.ts +241 -146
  71. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  72. package/lib/cjs/workspace/Workspace.js +260 -96
  73. package/lib/cjs/workspace/Workspace.js.map +1 -1
  74. package/package.json +20 -13
  75. package/lib/cjs/assets/Settings.schema.json +0 -25
  76. package/lib/cjs/workspace/SettingsSpecRegistry.d.ts +0 -68
  77. package/lib/cjs/workspace/SettingsSpecRegistry.d.ts.map +0 -1
  78. package/lib/cjs/workspace/SettingsSpecRegistry.js +0 -122
  79. package/lib/cjs/workspace/SettingsSpecRegistry.js.map +0 -1
@@ -46,39 +46,109 @@ class Downloads {
46
46
  }
47
47
  exports.Downloads = Downloads;
48
48
  Downloads._active = new Map();
49
- /** Utility class for attaching to Daemon, opening V2 checkpoints, and downloading them.
49
+ /**
50
+ * Utility class for opening V2 checkpoints from cloud containers, and also for downloading them.
50
51
  * @internal
51
52
  */
52
53
  class V2CheckpointManager {
53
- static async getCommandArgs(checkpoint) {
54
+ static getFolder() {
55
+ const cloudCachePath = path.join(BriefcaseManager_1.BriefcaseManager.cacheDir, V2CheckpointManager.cloudCacheName);
56
+ if (!(IModelJsFs_1.IModelJsFs.existsSync(cloudCachePath))) {
57
+ IModelJsFs_1.IModelJsFs.recursiveMkDirSync(cloudCachePath);
58
+ }
59
+ return cloudCachePath;
60
+ }
61
+ /* only used by tests that reset the state of the v2checkpointmanager. all dbs should be closed before calling this function. */
62
+ static cleanup() {
63
+ var _a;
64
+ for (const [_, value] of this.containers.entries()) {
65
+ if (value.isConnected)
66
+ value.detach();
67
+ }
68
+ (_a = this._cloudCache) === null || _a === void 0 ? void 0 : _a.destroy();
69
+ this._cloudCache = undefined;
70
+ this.containers.clear();
71
+ }
72
+ static getFileName(checkpoint) {
73
+ const changesetId = checkpoint.changeset.id || "first";
74
+ return path.join(this.getFolder(), `${changesetId}.bim`);
75
+ }
76
+ static get cloudCache() {
77
+ if (!this._cloudCache) {
78
+ let rootDir = process.env.BLOCKCACHE_DIR;
79
+ if (!rootDir) {
80
+ rootDir = this.getFolder();
81
+ core_bentley_1.Logger.logWarning(loggerCategory, `No BLOCKCACHE_DIR found in process.env, using ${rootDir} instead.`);
82
+ }
83
+ else {
84
+ // Make sure the blockcache_dir has an iTwinDaemon specific file in it, otherwise fall back to other directory.
85
+ if (!(IModelJsFs_1.IModelJsFs.existsSync(path.join(rootDir, "portnumber.bcv")))) {
86
+ rootDir = this.getFolder();
87
+ core_bentley_1.Logger.logWarning(loggerCategory, `No evidence of the iTwinDaemon in provided BLOCKCACHE_DIR: ${process.env.BLOCKCACHE_DIR}, using ${rootDir} instead.`);
88
+ }
89
+ }
90
+ this._cloudCache = new IModelHost_1.IModelHost.platform.CloudCache({ name: this.cloudCacheName, rootDir });
91
+ // Its fine if its not a daemon, but lets just log an info message
92
+ if (!this._cloudCache.isDaemon)
93
+ core_bentley_1.Logger.logInfo(loggerCategory, "V2Checkpoint manager running with no iTwinDaemon.");
94
+ }
95
+ return this._cloudCache;
96
+ }
97
+ /** Member names differ slightly between the V2Checkpoint api and the CloudSqlite api. Add aliases `accessName` for `accountName` and `accessToken` for `sasToken` */
98
+ static toCloudContainerProps(from) {
99
+ return { ...from, accessName: from.accountName, accessToken: from.sasToken };
100
+ }
101
+ static getContainer(v2Props) {
102
+ let container = this.containers.get(v2Props.containerId);
103
+ if (!container) {
104
+ container = new IModelHost_1.IModelHost.platform.CloudContainer(this.toCloudContainerProps(v2Props));
105
+ this.containers.set(v2Props.containerId, container);
106
+ }
107
+ return container;
108
+ }
109
+ static async attach(checkpoint) {
110
+ let v2props;
54
111
  try {
55
- const v2props = await IModelHost_1.IModelHost.hubAccess.queryV2Checkpoint(checkpoint);
112
+ v2props = await IModelHost_1.IModelHost.hubAccess.queryV2Checkpoint(checkpoint);
56
113
  if (!v2props)
57
114
  throw new Error("no checkpoint");
58
- return { ...v2props, daemonDir: process.env.BLOCKCACHE_DIR, writeable: false };
59
115
  }
60
116
  catch (err) {
61
117
  throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `V2 checkpoint not found: err: ${err.message}`);
62
118
  }
63
- }
64
- static async attach(checkpoint) {
65
- const args = await this.getCommandArgs(checkpoint);
66
- if (undefined === args.daemonDir || args.daemonDir === "")
67
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "Invalid config: BLOCKCACHE_DIR is not set");
68
- // We can assume that a BCVDaemon process is already started if BLOCKCACHE_DIR was set, so we need to just tell the daemon to attach to the Storage Container
69
- const attachResult = await imodeljs_native_1.CloudSqlite.Daemon.command("attach", args);
70
- if (attachResult.result !== core_bentley_1.DbResult.BE_SQLITE_OK) {
71
- const error = `Daemon attach failed: ${attachResult.errMsg}`;
119
+ try {
120
+ const container = this.getContainer(v2props);
121
+ const dbName = v2props.dbName;
122
+ if (!container.isConnected)
123
+ container.connect(this.cloudCache);
124
+ if (IModelHost_1.IModelHost.appWorkspace.settings.getBoolean("Checkpoints/prefetch", true)) {
125
+ const logPrefetch = async (prefetch) => {
126
+ const stopwatch = new core_bentley_1.StopWatch(`[${container.containerId}/${dbName}]`, true);
127
+ core_bentley_1.Logger.logInfo(loggerCategory, `Starting prefetch of ${stopwatch.description}`);
128
+ const done = await prefetch.promise;
129
+ core_bentley_1.Logger.logInfo(loggerCategory, `Prefetch of ${stopwatch.description} complete=${done} (${stopwatch.elapsedSeconds} seconds)`);
130
+ };
131
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
132
+ logPrefetch(new IModelHost_1.IModelHost.platform.CloudPrefetch(container, dbName));
133
+ }
134
+ return { dbName, container };
135
+ }
136
+ catch (e) {
137
+ const error = `Cloud cache connect failed: ${e.message}`;
72
138
  if (checkpoint.expectV2)
73
139
  core_bentley_1.Logger.logError(loggerCategory, error);
74
- throw new core_common_1.IModelError(attachResult.result, error);
140
+ throw new core_common_1.IModelError(e.errorNumber, error);
75
141
  }
76
- const sasTokenExpiry = new URLSearchParams(args.sasToken).get("se");
77
- return { filePath: imodeljs_native_1.CloudSqlite.Daemon.getDbFileName(args), expiryTimestamp: sasTokenExpiry ? Date.parse(sasTokenExpiry) : 0 };
78
142
  }
79
143
  static async performDownload(job) {
144
+ const request = job.request;
145
+ const v2props = await IModelHost_1.IModelHost.hubAccess.queryV2Checkpoint(request.checkpoint);
146
+ if (!v2props)
147
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, "V2 checkpoint not found");
80
148
  CheckpointManager.onDownloadV2.raiseEvent(job);
81
- return (await IModelHost_1.IModelHost.hubAccess.downloadV2Checkpoint(job.request)).id;
149
+ const container = new IModelHost_1.IModelHost.platform.CloudContainer(this.toCloudContainerProps(v2props));
150
+ await imodeljs_native_1.CloudSqlite.transferDb("download", container, { dbName: v2props.dbName, localFileName: request.localFile, onProgress: request.onProgress });
151
+ return request.checkpoint.changeset.id;
82
152
  }
83
153
  /** Fully download a V2 checkpoint to a local file that can be used to create a briefcase or to work offline.
84
154
  * @returns a Promise that is resolved when the download completes with the changesetId of the downloaded checkpoint (which will
@@ -89,6 +159,8 @@ class V2CheckpointManager {
89
159
  }
90
160
  }
91
161
  exports.V2CheckpointManager = V2CheckpointManager;
162
+ V2CheckpointManager.cloudCacheName = "v2Checkpoints";
163
+ V2CheckpointManager.containers = new Map();
92
164
  /** Utility class to deal with downloading V1 checkpoints from iModelHub.
93
165
  * @internal
94
166
  */
@@ -136,9 +208,9 @@ class CheckpointManager {
136
208
  return changesetId;
137
209
  }
138
210
  catch (error) {
139
- if (error instanceof core_common_1.IModelError && error.errorNumber === core_bentley_1.IModelStatus.NotFound) // No V2 checkpoint available, try a v1 checkpoint
211
+ if (error.errorNumber === core_bentley_1.IModelStatus.NotFound) // No V2 checkpoint available, try a v1 checkpoint
140
212
  return V1CheckpointManager.downloadCheckpoint(request);
141
- throw (error); // most likely, was aborted
213
+ throw error; // most likely, was aborted
142
214
  }
143
215
  }
144
216
  static async updateToRequestedVersion(request) {
@@ -1 +1 @@
1
- {"version":3,"file":"CheckpointManager.js","sourceRoot":"","sources":["../../src/CheckpointManager.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,2BAA2B;AAE3B,6BAA6B;AAC7B,sDAAoI;AACpI,oDAAuK;AACvK,8DAAuE;AACvE,mEAAgE;AAChE,yDAAsD;AACtD,yCAAkD;AAClD,6CAA0C;AAC1C,6CAA0C;AAE1C,MAAM,cAAc,GAAG,6CAAqB,CAAC,QAAQ,CAAC;AAuDtD,gBAAgB;AAChB,MAAa,SAAS;IAGZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAI,GAAgB,EAAE,EAAoC;QACpF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,gDAAgD;QACvF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI;YACF,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;SACtB;gBAAS;YACR,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,QAAuB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAI,OAAwB,EAAE,UAA4C;QACpG,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,GAAG;YACnB,OAAO,GAAG,CAAC,OAAO,CAAC;QAErB,uBAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;;AA1BH,8BA2BC;AA1BgB,iBAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;AA4B1D;;EAEE;AACF,MAAa,mBAAmB;IACtB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,UAA2B;QAC7D,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,uBAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO;gBACV,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YAEnC,OAAO,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SAChF;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,QAAQ,EAAE,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9F;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAA2B;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE;YACvD,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,UAAU,EAAE,2CAA2C,CAAC,CAAC;QAE9F,6JAA6J;QAC7J,MAAM,YAAY,GAAG,MAAM,6BAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,YAAY,CAAC,MAAM,KAAK,uBAAQ,CAAC,YAAY,EAAE;YACjD,MAAM,KAAK,GAAG,yBAAyB,YAAY,CAAC,MAAM,EAAE,CAAC;YAC7D,IAAI,UAAU,CAAC,QAAQ;gBACrB,qBAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAEzC,MAAM,IAAI,yBAAW,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACnD;QACD,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEpE,OAAO,EAAE,QAAQ,EAAE,6BAAW,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChI,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAgB;QACnD,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,uBAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAwB;QAC7D,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;CACF;AA5CD,kDA4CC;AAED;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,SAAS,CAAC,QAAoB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,mCAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC;IAC5E,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,UAA2B;QACnD,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,OAAO,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG,WAAW,MAAM,CAAC,CAAC;IAC9E,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAwB;QAC1D,MAAM,EAAE,GAAG,qBAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,+BAA+B;IACxB,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAwB;QAC7D,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,GAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAgB;QACnD,MAAM,EAAE,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,iBAAiB,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,qBAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpF,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAgB;QACnD,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,uBAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,CAAC;CACF;AAjCD,kDAiCC;AAED,iBAAiB;AACjB,MAAa,iBAAiB;IAGrB,MAAM,CAAC,MAAM,CAAC,UAA2B,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAEzG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAwB;QACtD,IAAI;YACF,kDAAkD;YAClD,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC1E,IAAI,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;gBACjD,qBAAM,CAAC,OAAO,CAAC,cAAc,EAAE,4DAA4D,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,mCAAmC,OAAO,CAAC,UAAU,CAAC,QAAQ,eAAe,WAAW,EAAE,CAAC,CAAC;;gBAEtN,qBAAM,CAAC,OAAO,CAAC,cAAc,EAAE,oCAAoC,OAAO,CAAC,UAAU,CAAC,QAAQ,eAAe,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;YAClJ,OAAO,WAAW,CAAC;SACpB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,yBAAW,IAAI,KAAK,CAAC,WAAW,KAAK,2BAAY,CAAC,QAAQ,EAAE,kDAAkD;gBACjI,OAAO,mBAAmB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEzD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B;SAC3C;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAwB;;QACnE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC;QAClH,IAAI;YACF,4BAA4B;YAC5B,MAAM,EAAE,GAAG,qBAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YAE7B,IAAI;gBACF,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE;oBAC7B,qBAAM,CAAC,UAAU,CAAC,cAAc,EAAE,4CAA4C,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBACjG,QAAQ,CAAC,aAAa,EAAE,CAAC;iBAC1B;gBAED,IAAI,QAAQ,CAAC,cAAc,EAAE,KAAK,8BAAgB,CAAC,UAAU;oBAC3D,QAAQ,CAAC,gBAAgB,CAAC,8BAAgB,CAAC,UAAU,CAAC,CAAC;gBAEzD,iBAAiB,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAChE,iCAAiC;gBACjC,MAAM,gBAAgB,GAAiC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBACtF,IAAI,gBAAgB,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE;oBACnD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;oBAC3C,MAAM,OAAO,GAAG,MAAA,UAAU,CAAC,SAAS,CAAC,KAAK,mCACxC,CAAC,MAAM,uBAAU,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,2BAAa,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC5K,MAAM,mCAAgB,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;iBAC7E;qBAAM;oBACL,2FAA2F;oBAC3F,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,KAAM,CAAC,CAAC,+DAA+D;oBACrH,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;iBAC9E;aACF;oBAAS;gBACR,EAAE,CAAC,WAAW,EAAE,CAAC;gBACjB,EAAE,CAAC,KAAK,EAAE,CAAC;aACZ;SACF;QAAC,OAAO,KAAU,EAAE;YAEnB,qBAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,4CAA4C,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/F,uBAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAElC,IAAI,KAAK,CAAC,WAAW,KAAK,8BAAe,CAAC,qBAAqB,IAAI,KAAK,CAAC,WAAW,KAAK,8BAAe,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,8BAAe,CAAC,cAAc,EAAE;gBAC1K,qBAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,+EAA+E,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAClI,mCAAgB,CAAC,6BAA6B,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACrE;YACD,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAED,uGAAuG;IAChG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAwB;QAC7D,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC;YAC9D,OAAO;QAET,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;oBACpD,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC1B,OAAO;iBACR;aACF;SACF;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,6FAA6F;IACtF,MAAM,CAAC,uBAAuB,CAAC,UAA2B,EAAE,QAA8B;QAC/F,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEjF,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,mBAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,QAAQ,KAAK,mBAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YACpD,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACvB,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,gBAAgB,EAAE,mDAAmD,CAAC,CAAC;YAE5G,qBAAM,CAAC,UAAU,CAAC,cAAc,EAAE,gGAAgG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YAChL,QAAQ,CAAC,WAAW,CAAC,mBAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1D,wEAAwE;YACxE,QAAQ,CAAC,cAAc,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,SAAS,KAAK,WAAW,CAAC,KAAK;gBACjC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;SAC3E;QAED,MAAM,OAAO,GAAG,mBAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,mBAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YAChD,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,gBAAgB,EAAE,mDAAmD,CAAC,CAAC;IAC9G,CAAC;IAED,4DAA4D;IACrD,MAAM,CAAC,gBAAgB,CAAC,UAA2B,EAAE,QAAuB;QACjF,IAAI,CAAC,uBAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;YAClC,OAAO,KAAK,CAAC;QAEf,MAAM,QAAQ,GAAG,IAAI,uBAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI;YACF,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,uBAAQ,CAAC,QAAQ,CAAC,CAAC;SAClD;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAChI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO;YACV,uBAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAElC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uEAAuE;IAChE,MAAM,CAAC,gBAAgB,CAAC,OAAwB;QACrD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC;YACtD,OAAO,qBAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEpE,iHAAiH;QACjH,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;oBAC5C,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC1B,OAAO,qBAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACvD;aACF;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;;AAnJH,8CAoJC;AAnJwB,8BAAY,GAAG,IAAI,sBAAO,EAA8B,CAAC;AACzD,8BAAY,GAAG,IAAI,sBAAO,EAA8B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\n// cspell:ignore BLOCKCACHE\r\n\r\nimport * as path from \"path\";\r\nimport { BeEvent, ChangeSetStatus, DbResult, Guid, GuidString, IModelStatus, Logger, Mutable, OpenMode } from \"@itwin/core-bentley\";\r\nimport { BriefcaseIdValue, ChangesetId, ChangesetIdWithIndex, ChangesetIndexAndId, IModelError, IModelVersion, LocalDirName, LocalFileName } from \"@itwin/core-common\";\r\nimport { CloudSqlite, IModelJsNative } from \"@bentley/imodeljs-native\";\r\nimport { BackendLoggerCategory } from \"./BackendLoggerCategory\";\r\nimport { BriefcaseManager } from \"./BriefcaseManager\";\r\nimport { SnapshotDb, TokenArg } from \"./IModelDb\";\r\nimport { IModelHost } from \"./IModelHost\";\r\nimport { IModelJsFs } from \"./IModelJsFs\";\r\n\r\nconst loggerCategory = BackendLoggerCategory.IModelDb;\r\n\r\n/**\r\n * Properties of a checkpoint\r\n * @public\r\n */\r\nexport interface CheckpointProps extends TokenArg {\r\n readonly expectV2?: boolean;\r\n\r\n /** iTwin that the iModel belongs to */\r\n readonly iTwinId: GuidString;\r\n\r\n /** Id of the iModel */\r\n readonly iModelId: GuidString;\r\n\r\n /** changeset for the checkpoint */\r\n readonly changeset: ChangesetIdWithIndex;\r\n\r\n /** The number of seconds before the current token expires to attempt to reacquire a new token. Default is 1 hour. */\r\n readonly reattachSafetySeconds?: number;\r\n}\r\n\r\n/** Called to show progress during a download. If this function returns non-zero, the download is aborted.\r\n * @public\r\n */\r\nexport type ProgressFunction = (loaded: number, total: number) => number;\r\n\r\n/** The parameters that specify a request to download a checkpoint file from iModelHub.\r\n * @internal\r\n */\r\nexport interface DownloadRequest {\r\n /** name of local file to hold the downloaded data. */\r\n localFile: LocalFileName;\r\n\r\n /** A list of full fileName paths to test before downloading. If a valid file exists by one of these names,\r\n * no download is performed and `localFile` is updated to reflect the fact that the file exists with that name.\r\n * This can be used, for example, to look for checkpoints from previous versions if the naming strategy changes.\r\n */\r\n readonly aliasFiles?: ReadonlyArray<string>;\r\n\r\n /** Properties of the checkpoint to be downloaded */\r\n readonly checkpoint: CheckpointProps;\r\n\r\n /** If present, this function will be called to indicate progress as the briefcase is downloaded. If this\r\n * function returns a non-zero value, the download is aborted.\r\n */\r\n readonly onProgress?: ProgressFunction;\r\n}\r\n\r\n/** @internal */\r\nexport interface DownloadJob {\r\n request: DownloadRequest;\r\n promise?: Promise<any>;\r\n}\r\n\r\n/** @internal */\r\nexport class Downloads {\r\n private static _active = new Map<string, DownloadJob>();\r\n\r\n private static async process<T>(job: DownloadJob, fn: (job: DownloadJob) => Promise<T>) {\r\n const jobName = job.request.localFile; // save this, it can change inside call to `fn`!\r\n this._active.set(jobName, job);\r\n try {\r\n return await fn(job);\r\n } finally {\r\n this._active.delete(jobName);\r\n }\r\n }\r\n\r\n public static isInProgress(pathName: LocalFileName): DownloadJob | undefined {\r\n return this._active.get(pathName);\r\n }\r\n\r\n public static async download<T>(request: DownloadRequest, downloadFn: (job: DownloadJob) => Promise<T>) {\r\n const pathName = request.localFile;\r\n let job = this.isInProgress(pathName);\r\n if (undefined !== job)\r\n return job.promise;\r\n\r\n IModelJsFs.recursiveMkDirSync(path.dirname(pathName));\r\n job = { request };\r\n return job.promise = this.process(job, downloadFn);\r\n }\r\n}\r\n\r\n/** Utility class for attaching to Daemon, opening V2 checkpoints, and downloading them.\r\n * @internal\r\n*/\r\nexport class V2CheckpointManager {\r\n private static async getCommandArgs(checkpoint: CheckpointProps): Promise<CloudSqlite.DaemonCommandArg> {\r\n try {\r\n const v2props = await IModelHost.hubAccess.queryV2Checkpoint(checkpoint);\r\n if (!v2props)\r\n throw new Error(\"no checkpoint\");\r\n\r\n return { ...v2props, daemonDir: process.env.BLOCKCACHE_DIR, writeable: false };\r\n } catch (err: any) {\r\n throw new IModelError(IModelStatus.NotFound, `V2 checkpoint not found: err: ${err.message}`);\r\n }\r\n }\r\n\r\n public static async attach(checkpoint: CheckpointProps): Promise<{ filePath: LocalFileName, expiryTimestamp: number }> {\r\n const args = await this.getCommandArgs(checkpoint);\r\n if (undefined === args.daemonDir || args.daemonDir === \"\")\r\n throw new IModelError(IModelStatus.BadRequest, \"Invalid config: BLOCKCACHE_DIR is not set\");\r\n\r\n // We can assume that a BCVDaemon process is already started if BLOCKCACHE_DIR was set, so we need to just tell the daemon to attach to the Storage Container\r\n const attachResult = await CloudSqlite.Daemon.command(\"attach\", args);\r\n if (attachResult.result !== DbResult.BE_SQLITE_OK) {\r\n const error = `Daemon attach failed: ${attachResult.errMsg}`;\r\n if (checkpoint.expectV2)\r\n Logger.logError(loggerCategory, error);\r\n\r\n throw new IModelError(attachResult.result, error);\r\n }\r\n const sasTokenExpiry = new URLSearchParams(args.sasToken).get(\"se\");\r\n\r\n return { filePath: CloudSqlite.Daemon.getDbFileName(args), expiryTimestamp: sasTokenExpiry ? Date.parse(sasTokenExpiry) : 0 };\r\n }\r\n\r\n private static async performDownload(job: DownloadJob): Promise<ChangesetId> {\r\n CheckpointManager.onDownloadV2.raiseEvent(job);\r\n return (await IModelHost.hubAccess.downloadV2Checkpoint(job.request)).id;\r\n }\r\n\r\n /** Fully download a V2 checkpoint to a local file that can be used to create a briefcase or to work offline.\r\n * @returns a Promise that is resolved when the download completes with the changesetId of the downloaded checkpoint (which will\r\n * be the same as the requested changesetId or the most recent checkpoint before it.)\r\n */\r\n public static async downloadCheckpoint(request: DownloadRequest): Promise<ChangesetId> {\r\n return Downloads.download(request, async (job: DownloadJob) => this.performDownload(job));\r\n }\r\n}\r\n\r\n/** Utility class to deal with downloading V1 checkpoints from iModelHub.\r\n * @internal\r\n */\r\nexport class V1CheckpointManager {\r\n public static getFolder(iModelId: GuidString): LocalDirName {\r\n return path.join(BriefcaseManager.getIModelPath(iModelId), \"checkpoints\");\r\n }\r\n\r\n public static getFileName(checkpoint: CheckpointProps): LocalFileName {\r\n const changesetId = checkpoint.changeset.id || \"first\";\r\n return path.join(this.getFolder(checkpoint.iModelId), `${changesetId}.bim`);\r\n }\r\n\r\n public static async getCheckpointDb(request: DownloadRequest): Promise<SnapshotDb> {\r\n const db = SnapshotDb.tryFindByKey(CheckpointManager.getKey(request.checkpoint));\r\n return (undefined !== db) ? db : Downloads.download(request, async (job: DownloadJob) => this.downloadAndOpen(job));\r\n }\r\n\r\n /** Download a V1 checkpoint */\r\n public static async downloadCheckpoint(request: DownloadRequest): Promise<ChangesetId> {\r\n return Downloads.download(request, async (job: DownloadJob) => this.performDownload(job));\r\n }\r\n\r\n private static async downloadAndOpen(job: DownloadJob) {\r\n const db = CheckpointManager.tryOpenLocalFile(job.request);\r\n if (db)\r\n return db;\r\n await this.performDownload(job);\r\n await CheckpointManager.updateToRequestedVersion(job.request);\r\n return SnapshotDb.openCheckpointV1(job.request.localFile, job.request.checkpoint);\r\n }\r\n\r\n private static async performDownload(job: DownloadJob): Promise<ChangesetId> {\r\n CheckpointManager.onDownloadV1.raiseEvent(job);\r\n return (await IModelHost.hubAccess.downloadV1Checkpoint(job.request)).id;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class CheckpointManager {\r\n public static readonly onDownloadV1 = new BeEvent<(job: DownloadJob) => void>();\r\n public static readonly onDownloadV2 = new BeEvent<(job: DownloadJob) => void>();\r\n public static getKey(checkpoint: CheckpointProps) { return `${checkpoint.iModelId}:${checkpoint.changeset.id}`; }\r\n\r\n private static async doDownload(request: DownloadRequest): Promise<ChangesetId> {\r\n try {\r\n // first see if there's a V2 checkpoint available.\r\n const changesetId = await V2CheckpointManager.downloadCheckpoint(request);\r\n if (changesetId !== request.checkpoint.changeset.id)\r\n Logger.logInfo(loggerCategory, `Downloaded previous v2 checkpoint because checkpoint for ${request.checkpoint.changeset.id} not found. Downloaded: IModel=${request.checkpoint.iModelId}, changeset=${changesetId}`);\r\n else\r\n Logger.logInfo(loggerCategory, `Downloaded v2 checkpoint: IModel=${request.checkpoint.iModelId}, changeset=${request.checkpoint.changeset.id}`);\r\n return changesetId;\r\n } catch (error) {\r\n if (error instanceof IModelError && error.errorNumber === IModelStatus.NotFound) // No V2 checkpoint available, try a v1 checkpoint\r\n return V1CheckpointManager.downloadCheckpoint(request);\r\n\r\n throw (error); // most likely, was aborted\r\n }\r\n }\r\n\r\n public static async updateToRequestedVersion(request: DownloadRequest) {\r\n const checkpoint = request.checkpoint;\r\n const targetFile = request.localFile;\r\n const traceInfo = { iTwinId: checkpoint.iTwinId, iModelId: checkpoint.iModelId, changeset: checkpoint.changeset };\r\n try {\r\n // Open checkpoint for write\r\n const db = SnapshotDb.openForApplyChangesets(targetFile);\r\n const nativeDb = db.nativeDb;\r\n\r\n try {\r\n if (nativeDb.hasPendingTxns()) {\r\n Logger.logWarning(loggerCategory, \"Checkpoint with Txns found - deleting them\", () => traceInfo);\r\n nativeDb.deleteAllTxns();\r\n }\r\n\r\n if (nativeDb.getBriefcaseId() !== BriefcaseIdValue.Unassigned)\r\n nativeDb.resetBriefcaseId(BriefcaseIdValue.Unassigned);\r\n\r\n CheckpointManager.validateCheckpointGuids(checkpoint, nativeDb);\r\n // Apply change sets if necessary\r\n const currentChangeset: Mutable<ChangesetIndexAndId> = nativeDb.getCurrentChangeset();\r\n if (currentChangeset.id !== checkpoint.changeset.id) {\r\n const accessToken = checkpoint.accessToken;\r\n const toIndex = checkpoint.changeset.index ??\r\n (await IModelHost.hubAccess.getChangesetFromVersion({ accessToken, iModelId: checkpoint.iModelId, version: IModelVersion.asOfChangeSet(checkpoint.changeset.id) })).index;\r\n await BriefcaseManager.pullAndApplyChangesets(db, { accessToken, toIndex });\r\n } else {\r\n // make sure the parent changeset index is saved in the file - old versions didn't have it.\r\n currentChangeset.index = checkpoint.changeset.index!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\r\n nativeDb.saveLocalValue(\"parentChangeSet\", JSON.stringify(currentChangeset));\r\n }\r\n } finally {\r\n db.saveChanges();\r\n db.close();\r\n }\r\n } catch (error: any) {\r\n\r\n Logger.logError(loggerCategory, \"Error downloading checkpoint - deleting it\", () => traceInfo);\r\n IModelJsFs.removeSync(targetFile);\r\n\r\n if (error.errorNumber === ChangeSetStatus.CorruptedChangeStream || error.errorNumber === ChangeSetStatus.InvalidId || error.errorNumber === ChangeSetStatus.InvalidVersion) {\r\n Logger.logError(loggerCategory, \"Detected potential corruption of change sets. Deleting them to enable retries\", () => traceInfo);\r\n BriefcaseManager.deleteChangeSetsFromLocalDisk(checkpoint.iModelId);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /** Download a checkpoint file from iModelHub into a local file specified in the request parameters. */\r\n public static async downloadCheckpoint(request: DownloadRequest): Promise<void> {\r\n if (this.verifyCheckpoint(request.checkpoint, request.localFile))\r\n return;\r\n\r\n if (request.aliasFiles) {\r\n for (const alias of request.aliasFiles) {\r\n if (this.verifyCheckpoint(request.checkpoint, alias)) {\r\n request.localFile = alias;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n await this.doDownload(request);\r\n return this.updateToRequestedVersion(request);\r\n }\r\n\r\n /** checks a file's dbGuid & iTwinId for consistency, and updates the dbGuid when possible */\r\n public static validateCheckpointGuids(checkpoint: CheckpointProps, nativeDb: IModelJsNative.DgnDb) {\r\n const traceInfo = { iTwinId: checkpoint.iTwinId, iModelId: checkpoint.iModelId };\r\n\r\n const dbChangeset = nativeDb.getCurrentChangeset();\r\n const iModelId = Guid.normalize(nativeDb.getIModelId());\r\n if (iModelId !== Guid.normalize(checkpoint.iModelId)) {\r\n if (nativeDb.isReadonly())\r\n throw new IModelError(IModelStatus.ValidationFailed, \"iModelId is not properly set up in the checkpoint\");\r\n\r\n Logger.logWarning(loggerCategory, \"iModelId is not properly set up in the checkpoint. Updated checkpoint to the correct iModelId.\", () => ({ ...traceInfo, dbGuid: iModelId }));\r\n nativeDb.setIModelId(Guid.normalize(checkpoint.iModelId));\r\n // Required to reset the ChangeSetId because setDbGuid clears the value.\r\n nativeDb.saveLocalValue(\"ParentChangeSetId\", dbChangeset.id);\r\n if (undefined !== dbChangeset.index)\r\n nativeDb.saveLocalValue(\"parentChangeSet\", JSON.stringify(dbChangeset));\r\n }\r\n\r\n const iTwinId = Guid.normalize(nativeDb.getITwinId());\r\n if (iTwinId !== Guid.normalize(checkpoint.iTwinId))\r\n throw new IModelError(IModelStatus.ValidationFailed, \"iTwinId was not properly set up in the checkpoint\");\r\n }\r\n\r\n /** @returns true if the file is the checkpoint requested */\r\n public static verifyCheckpoint(checkpoint: CheckpointProps, fileName: LocalFileName): boolean {\r\n if (!IModelJsFs.existsSync(fileName))\r\n return false;\r\n\r\n const nativeDb = new IModelHost.platform.DgnDb();\r\n try {\r\n nativeDb.openIModel(fileName, OpenMode.Readonly);\r\n } catch (error) {\r\n return false;\r\n }\r\n\r\n const isValid = checkpoint.iModelId === nativeDb.getIModelId() && checkpoint.changeset.id === nativeDb.getCurrentChangeset().id;\r\n nativeDb.closeIModel();\r\n if (!isValid)\r\n IModelJsFs.removeSync(fileName);\r\n\r\n return isValid;\r\n }\r\n\r\n /** try to open an existing local file to satisfy a download request */\r\n public static tryOpenLocalFile(request: DownloadRequest): SnapshotDb | undefined {\r\n const checkpoint = request.checkpoint;\r\n if (this.verifyCheckpoint(checkpoint, request.localFile))\r\n return SnapshotDb.openCheckpointV1(request.localFile, checkpoint);\r\n\r\n // check a list of aliases for finding checkpoints downloaded to non-default locations (e.g. from older versions)\r\n if (request.aliasFiles) {\r\n for (const alias of request.aliasFiles) {\r\n if (this.verifyCheckpoint(checkpoint, alias)) {\r\n request.localFile = alias;\r\n return SnapshotDb.openCheckpointV1(alias, checkpoint);\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CheckpointManager.js","sourceRoot":"","sources":["../../src/CheckpointManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\n// cspell:ignore BLOCKCACHE\r\n\r\nimport * as path from \"path\";\r\nimport { BeEvent, ChangeSetStatus, Guid, GuidString, IModelStatus, Logger, Mutable, OpenMode, StopWatch } from \"@itwin/core-bentley\";\r\nimport { BriefcaseIdValue, ChangesetId, ChangesetIdWithIndex, ChangesetIndexAndId, IModelError, IModelVersion, LocalDirName, LocalFileName } from \"@itwin/core-common\";\r\nimport { CloudSqlite, IModelJsNative } from \"@bentley/imodeljs-native\";\r\nimport { BackendLoggerCategory } from \"./BackendLoggerCategory\";\r\nimport { BriefcaseManager } from \"./BriefcaseManager\";\r\nimport { SnapshotDb, TokenArg } from \"./IModelDb\";\r\nimport { IModelHost } from \"./IModelHost\";\r\nimport { IModelJsFs } from \"./IModelJsFs\";\r\nimport { V2CheckpointAccessProps } from \"./BackendHubAccess\";\r\n\r\nconst loggerCategory = BackendLoggerCategory.IModelDb;\r\n\r\n/**\r\n * Properties of a checkpoint\r\n * @public\r\n */\r\nexport interface CheckpointProps extends TokenArg {\r\n readonly expectV2?: boolean;\r\n\r\n /** iTwin that the iModel belongs to */\r\n readonly iTwinId: GuidString;\r\n\r\n /** Id of the iModel */\r\n readonly iModelId: GuidString;\r\n\r\n /** changeset for the checkpoint */\r\n readonly changeset: ChangesetIdWithIndex;\r\n\r\n /** The number of seconds before the current token expires to attempt to reacquire a new token. Default is 1 hour. */\r\n readonly reattachSafetySeconds?: number;\r\n}\r\n\r\n/** Called to show progress during a download. If this function returns non-zero, the download is aborted.\r\n * @public\r\n */\r\nexport type ProgressFunction = (loaded: number, total: number) => number;\r\n\r\n/** The parameters that specify a request to download a checkpoint file from iModelHub.\r\n * @internal\r\n */\r\nexport interface DownloadRequest {\r\n /** name of local file to hold the downloaded data. */\r\n localFile: LocalFileName;\r\n\r\n /** A list of full fileName paths to test before downloading. If a valid file exists by one of these names,\r\n * no download is performed and `localFile` is updated to reflect the fact that the file exists with that name.\r\n * This can be used, for example, to look for checkpoints from previous versions if the naming strategy changes.\r\n */\r\n readonly aliasFiles?: ReadonlyArray<string>;\r\n\r\n /** Properties of the checkpoint to be downloaded */\r\n readonly checkpoint: CheckpointProps;\r\n\r\n /** If present, this function will be called to indicate progress as the briefcase is downloaded. If this\r\n * function returns a non-zero value, the download is aborted.\r\n */\r\n readonly onProgress?: ProgressFunction;\r\n}\r\n\r\n/** @internal */\r\nexport interface DownloadJob {\r\n request: DownloadRequest;\r\n promise?: Promise<any>;\r\n}\r\n\r\n/** @internal */\r\nexport class Downloads {\r\n private static _active = new Map<string, DownloadJob>();\r\n\r\n private static async process<T>(job: DownloadJob, fn: (job: DownloadJob) => Promise<T>) {\r\n const jobName = job.request.localFile; // save this, it can change inside call to `fn`!\r\n this._active.set(jobName, job);\r\n try {\r\n return await fn(job);\r\n } finally {\r\n this._active.delete(jobName);\r\n }\r\n }\r\n\r\n public static isInProgress(pathName: LocalFileName): DownloadJob | undefined {\r\n return this._active.get(pathName);\r\n }\r\n\r\n public static async download<T>(request: DownloadRequest, downloadFn: (job: DownloadJob) => Promise<T>) {\r\n const pathName = request.localFile;\r\n let job = this.isInProgress(pathName);\r\n if (undefined !== job)\r\n return job.promise;\r\n\r\n IModelJsFs.recursiveMkDirSync(path.dirname(pathName));\r\n job = { request };\r\n return job.promise = this.process(job, downloadFn);\r\n }\r\n}\r\n\r\n/**\r\n * Utility class for opening V2 checkpoints from cloud containers, and also for downloading them.\r\n * @internal\r\n*/\r\nexport class V2CheckpointManager {\r\n public static readonly cloudCacheName = \"v2Checkpoints\";\r\n private static _cloudCache?: IModelJsNative.CloudCache;\r\n private static containers = new Map<string, IModelJsNative.CloudContainer>();\r\n\r\n public static getFolder(): LocalDirName {\r\n const cloudCachePath = path.join(BriefcaseManager.cacheDir, V2CheckpointManager.cloudCacheName);\r\n if (!(IModelJsFs.existsSync(cloudCachePath))) {\r\n IModelJsFs.recursiveMkDirSync(cloudCachePath);\r\n }\r\n return cloudCachePath;\r\n }\r\n\r\n /* only used by tests that reset the state of the v2checkpointmanager. all dbs should be closed before calling this function. */\r\n public static cleanup(): void {\r\n for (const [_, value] of this.containers.entries()) {\r\n if (value.isConnected)\r\n value.detach();\r\n }\r\n this._cloudCache?.destroy();\r\n this._cloudCache = undefined;\r\n this.containers.clear();\r\n }\r\n\r\n public static getFileName(checkpoint: CheckpointProps): LocalFileName {\r\n const changesetId = checkpoint.changeset.id || \"first\";\r\n return path.join(this.getFolder(), `${changesetId}.bim`);\r\n }\r\n\r\n private static get cloudCache(): IModelJsNative.CloudCache {\r\n if (!this._cloudCache) {\r\n let rootDir = process.env.BLOCKCACHE_DIR;\r\n if (!rootDir) {\r\n rootDir = this.getFolder();\r\n Logger.logWarning(loggerCategory, `No BLOCKCACHE_DIR found in process.env, using ${rootDir} instead.`);\r\n } else {\r\n // Make sure the blockcache_dir has an iTwinDaemon specific file in it, otherwise fall back to other directory.\r\n if (!(IModelJsFs.existsSync(path.join(rootDir, \"portnumber.bcv\")))) {\r\n rootDir = this.getFolder();\r\n Logger.logWarning(loggerCategory, `No evidence of the iTwinDaemon in provided BLOCKCACHE_DIR: ${process.env.BLOCKCACHE_DIR}, using ${rootDir} instead.`);\r\n }\r\n }\r\n\r\n this._cloudCache = new IModelHost.platform.CloudCache({ name: this.cloudCacheName, rootDir });\r\n\r\n // Its fine if its not a daemon, but lets just log an info message\r\n if (!this._cloudCache.isDaemon)\r\n Logger.logInfo(loggerCategory, \"V2Checkpoint manager running with no iTwinDaemon.\");\r\n }\r\n return this._cloudCache;\r\n }\r\n\r\n /** Member names differ slightly between the V2Checkpoint api and the CloudSqlite api. Add aliases `accessName` for `accountName` and `accessToken` for `sasToken` */\r\n private static toCloudContainerProps(from: V2CheckpointAccessProps): CloudSqlite.ContainerAccessProps {\r\n return { ...from, accessName: from.accountName, accessToken: from.sasToken };\r\n }\r\n\r\n private static getContainer(v2Props: V2CheckpointAccessProps) {\r\n let container = this.containers.get(v2Props.containerId);\r\n if (!container) {\r\n container = new IModelHost.platform.CloudContainer(this.toCloudContainerProps(v2Props));\r\n this.containers.set(v2Props.containerId, container);\r\n }\r\n return container;\r\n }\r\n\r\n public static async attach(checkpoint: CheckpointProps): Promise<{ dbName: string, container: IModelJsNative.CloudContainer }> {\r\n let v2props: V2CheckpointAccessProps | undefined;\r\n try {\r\n v2props = await IModelHost.hubAccess.queryV2Checkpoint(checkpoint);\r\n if (!v2props)\r\n throw new Error(\"no checkpoint\");\r\n } catch (err: any) {\r\n throw new IModelError(IModelStatus.NotFound, `V2 checkpoint not found: err: ${err.message}`);\r\n }\r\n\r\n try {\r\n const container = this.getContainer(v2props);\r\n const dbName = v2props.dbName;\r\n if (!container.isConnected)\r\n container.connect(this.cloudCache);\r\n if (IModelHost.appWorkspace.settings.getBoolean(\"Checkpoints/prefetch\", true)) {\r\n const logPrefetch = async (prefetch: IModelJsNative.CloudPrefetch) => {\r\n const stopwatch = new StopWatch(`[${container.containerId}/${dbName}]`, true);\r\n Logger.logInfo(loggerCategory, `Starting prefetch of ${stopwatch.description}`);\r\n const done = await prefetch.promise;\r\n Logger.logInfo(loggerCategory, `Prefetch of ${stopwatch.description} complete=${done} (${stopwatch.elapsedSeconds} seconds)`);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n logPrefetch(new IModelHost.platform.CloudPrefetch(container, dbName));\r\n }\r\n return { dbName, container };\r\n } catch (e: any) {\r\n const error = `Cloud cache connect failed: ${e.message}`;\r\n if (checkpoint.expectV2)\r\n Logger.logError(loggerCategory, error);\r\n\r\n throw new IModelError(e.errorNumber, error);\r\n }\r\n }\r\n\r\n private static async performDownload(job: DownloadJob): Promise<ChangesetId> {\r\n const request = job.request;\r\n const v2props = await IModelHost.hubAccess.queryV2Checkpoint(request.checkpoint);\r\n if (!v2props)\r\n throw new IModelError(IModelStatus.NotFound, \"V2 checkpoint not found\");\r\n\r\n CheckpointManager.onDownloadV2.raiseEvent(job);\r\n const container = new IModelHost.platform.CloudContainer(this.toCloudContainerProps(v2props));\r\n await CloudSqlite.transferDb(\"download\", container, { dbName: v2props.dbName, localFileName: request.localFile, onProgress: request.onProgress });\r\n return request.checkpoint.changeset.id;\r\n }\r\n\r\n /** Fully download a V2 checkpoint to a local file that can be used to create a briefcase or to work offline.\r\n * @returns a Promise that is resolved when the download completes with the changesetId of the downloaded checkpoint (which will\r\n * be the same as the requested changesetId or the most recent checkpoint before it.)\r\n */\r\n public static async downloadCheckpoint(request: DownloadRequest): Promise<ChangesetId> {\r\n return Downloads.download(request, async (job: DownloadJob) => this.performDownload(job));\r\n }\r\n}\r\n\r\n/** Utility class to deal with downloading V1 checkpoints from iModelHub.\r\n * @internal\r\n */\r\nexport class V1CheckpointManager {\r\n public static getFolder(iModelId: GuidString): LocalDirName {\r\n return path.join(BriefcaseManager.getIModelPath(iModelId), \"checkpoints\");\r\n }\r\n\r\n public static getFileName(checkpoint: CheckpointProps): LocalFileName {\r\n const changesetId = checkpoint.changeset.id || \"first\";\r\n return path.join(this.getFolder(checkpoint.iModelId), `${changesetId}.bim`);\r\n }\r\n\r\n public static async getCheckpointDb(request: DownloadRequest): Promise<SnapshotDb> {\r\n const db = SnapshotDb.tryFindByKey(CheckpointManager.getKey(request.checkpoint));\r\n return (undefined !== db) ? db : Downloads.download(request, async (job: DownloadJob) => this.downloadAndOpen(job));\r\n }\r\n\r\n /** Download a V1 checkpoint */\r\n public static async downloadCheckpoint(request: DownloadRequest): Promise<ChangesetId> {\r\n return Downloads.download(request, async (job: DownloadJob) => this.performDownload(job));\r\n }\r\n\r\n private static async downloadAndOpen(job: DownloadJob) {\r\n const db = CheckpointManager.tryOpenLocalFile(job.request);\r\n if (db)\r\n return db;\r\n await this.performDownload(job);\r\n await CheckpointManager.updateToRequestedVersion(job.request);\r\n return SnapshotDb.openCheckpointV1(job.request.localFile, job.request.checkpoint);\r\n }\r\n\r\n private static async performDownload(job: DownloadJob): Promise<ChangesetId> {\r\n CheckpointManager.onDownloadV1.raiseEvent(job);\r\n return (await IModelHost.hubAccess.downloadV1Checkpoint(job.request)).id;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class CheckpointManager {\r\n public static readonly onDownloadV1 = new BeEvent<(job: DownloadJob) => void>();\r\n public static readonly onDownloadV2 = new BeEvent<(job: DownloadJob) => void>();\r\n public static getKey(checkpoint: CheckpointProps) { return `${checkpoint.iModelId}:${checkpoint.changeset.id}`; }\r\n\r\n private static async doDownload(request: DownloadRequest): Promise<ChangesetId> {\r\n try {\r\n // first see if there's a V2 checkpoint available.\r\n const changesetId = await V2CheckpointManager.downloadCheckpoint(request);\r\n if (changesetId !== request.checkpoint.changeset.id)\r\n Logger.logInfo(loggerCategory, `Downloaded previous v2 checkpoint because checkpoint for ${request.checkpoint.changeset.id} not found. Downloaded: IModel=${request.checkpoint.iModelId}, changeset=${changesetId}`);\r\n else\r\n Logger.logInfo(loggerCategory, `Downloaded v2 checkpoint: IModel=${request.checkpoint.iModelId}, changeset=${request.checkpoint.changeset.id}`);\r\n return changesetId;\r\n } catch (error: any) {\r\n if (error.errorNumber === IModelStatus.NotFound) // No V2 checkpoint available, try a v1 checkpoint\r\n return V1CheckpointManager.downloadCheckpoint(request);\r\n\r\n throw error; // most likely, was aborted\r\n }\r\n }\r\n\r\n public static async updateToRequestedVersion(request: DownloadRequest) {\r\n const checkpoint = request.checkpoint;\r\n const targetFile = request.localFile;\r\n const traceInfo = { iTwinId: checkpoint.iTwinId, iModelId: checkpoint.iModelId, changeset: checkpoint.changeset };\r\n try {\r\n // Open checkpoint for write\r\n const db = SnapshotDb.openForApplyChangesets(targetFile);\r\n const nativeDb = db.nativeDb;\r\n try {\r\n\r\n if (nativeDb.hasPendingTxns()) {\r\n Logger.logWarning(loggerCategory, \"Checkpoint with Txns found - deleting them\", () => traceInfo);\r\n nativeDb.deleteAllTxns();\r\n }\r\n\r\n if (nativeDb.getBriefcaseId() !== BriefcaseIdValue.Unassigned)\r\n nativeDb.resetBriefcaseId(BriefcaseIdValue.Unassigned);\r\n\r\n CheckpointManager.validateCheckpointGuids(checkpoint, nativeDb);\r\n // Apply change sets if necessary\r\n const currentChangeset: Mutable<ChangesetIndexAndId> = nativeDb.getCurrentChangeset();\r\n if (currentChangeset.id !== checkpoint.changeset.id) {\r\n const accessToken = checkpoint.accessToken;\r\n const toIndex = checkpoint.changeset.index ??\r\n (await IModelHost.hubAccess.getChangesetFromVersion({ accessToken, iModelId: checkpoint.iModelId, version: IModelVersion.asOfChangeSet(checkpoint.changeset.id) })).index;\r\n await BriefcaseManager.pullAndApplyChangesets(db, { accessToken, toIndex });\r\n } else {\r\n // make sure the parent changeset index is saved in the file - old versions didn't have it.\r\n currentChangeset.index = checkpoint.changeset.index!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\r\n nativeDb.saveLocalValue(\"parentChangeSet\", JSON.stringify(currentChangeset));\r\n }\r\n } finally {\r\n db.saveChanges();\r\n db.close();\r\n }\r\n } catch (error: any) {\r\n\r\n Logger.logError(loggerCategory, \"Error downloading checkpoint - deleting it\", () => traceInfo);\r\n IModelJsFs.removeSync(targetFile);\r\n\r\n if (error.errorNumber === ChangeSetStatus.CorruptedChangeStream || error.errorNumber === ChangeSetStatus.InvalidId || error.errorNumber === ChangeSetStatus.InvalidVersion) {\r\n Logger.logError(loggerCategory, \"Detected potential corruption of change sets. Deleting them to enable retries\", () => traceInfo);\r\n BriefcaseManager.deleteChangeSetsFromLocalDisk(checkpoint.iModelId);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /** Download a checkpoint file from iModelHub into a local file specified in the request parameters. */\r\n public static async downloadCheckpoint(request: DownloadRequest): Promise<void> {\r\n if (this.verifyCheckpoint(request.checkpoint, request.localFile))\r\n return;\r\n\r\n if (request.aliasFiles) {\r\n for (const alias of request.aliasFiles) {\r\n if (this.verifyCheckpoint(request.checkpoint, alias)) {\r\n request.localFile = alias;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n await this.doDownload(request);\r\n return this.updateToRequestedVersion(request);\r\n }\r\n\r\n /** checks a file's dbGuid & iTwinId for consistency, and updates the dbGuid when possible */\r\n public static validateCheckpointGuids(checkpoint: CheckpointProps, nativeDb: IModelJsNative.DgnDb) {\r\n const traceInfo = { iTwinId: checkpoint.iTwinId, iModelId: checkpoint.iModelId };\r\n\r\n const dbChangeset = nativeDb.getCurrentChangeset();\r\n const iModelId = Guid.normalize(nativeDb.getIModelId());\r\n if (iModelId !== Guid.normalize(checkpoint.iModelId)) {\r\n if (nativeDb.isReadonly())\r\n throw new IModelError(IModelStatus.ValidationFailed, \"iModelId is not properly set up in the checkpoint\");\r\n\r\n Logger.logWarning(loggerCategory, \"iModelId is not properly set up in the checkpoint. Updated checkpoint to the correct iModelId.\", () => ({ ...traceInfo, dbGuid: iModelId }));\r\n nativeDb.setIModelId(Guid.normalize(checkpoint.iModelId));\r\n // Required to reset the ChangeSetId because setDbGuid clears the value.\r\n nativeDb.saveLocalValue(\"ParentChangeSetId\", dbChangeset.id);\r\n if (undefined !== dbChangeset.index)\r\n nativeDb.saveLocalValue(\"parentChangeSet\", JSON.stringify(dbChangeset));\r\n }\r\n\r\n const iTwinId = Guid.normalize(nativeDb.getITwinId());\r\n if (iTwinId !== Guid.normalize(checkpoint.iTwinId))\r\n throw new IModelError(IModelStatus.ValidationFailed, \"iTwinId was not properly set up in the checkpoint\");\r\n }\r\n\r\n /** @returns true if the file is the checkpoint requested */\r\n public static verifyCheckpoint(checkpoint: CheckpointProps, fileName: LocalFileName): boolean {\r\n if (!IModelJsFs.existsSync(fileName))\r\n return false;\r\n\r\n const nativeDb = new IModelHost.platform.DgnDb();\r\n try {\r\n nativeDb.openIModel(fileName, OpenMode.Readonly);\r\n } catch (error) {\r\n return false;\r\n }\r\n\r\n const isValid = checkpoint.iModelId === nativeDb.getIModelId() && checkpoint.changeset.id === nativeDb.getCurrentChangeset().id;\r\n nativeDb.closeIModel();\r\n if (!isValid)\r\n IModelJsFs.removeSync(fileName);\r\n\r\n return isValid;\r\n }\r\n\r\n /** try to open an existing local file to satisfy a download request */\r\n public static tryOpenLocalFile(request: DownloadRequest): SnapshotDb | undefined {\r\n const checkpoint = request.checkpoint;\r\n if (this.verifyCheckpoint(checkpoint, request.localFile))\r\n return SnapshotDb.openCheckpointV1(request.localFile, checkpoint);\r\n\r\n // check a list of aliases for finding checkpoints downloaded to non-default locations (e.g. from older versions)\r\n if (request.aliasFiles) {\r\n for (const alias of request.aliasFiles) {\r\n if (this.verifyCheckpoint(checkpoint, alias)) {\r\n request.localFile = alias;\r\n return SnapshotDb.openCheckpointV1(alias, checkpoint);\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n"]}
@@ -4,7 +4,7 @@
4
4
  import { Id64String } from "@itwin/core-bentley";
5
5
  import { CodeScopeSpec, CodeSpec } from "@itwin/core-common";
6
6
  import { IModelDb } from "./IModelDb";
7
- /** Manages [CodeSpecs]($docs/BIS/intro/element-fundamentals.md#codespec) within an [[IModelDb]]
7
+ /** Manages [CodeSpecs]($docs/BIS/guide/fundamentals/element-fundamentals.md#codespec) within an [[IModelDb]]
8
8
  * @public
9
9
  */
10
10
  export declare class CodeSpecs {
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.CodeSpecs = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_common_1 = require("@itwin/core-common");
13
- /** Manages [CodeSpecs]($docs/BIS/intro/element-fundamentals.md#codespec) within an [[IModelDb]]
13
+ /** Manages [CodeSpecs]($docs/BIS/guide/fundamentals/element-fundamentals.md#codespec) within an [[IModelDb]]
14
14
  * @public
15
15
  */
16
16
  class CodeSpecs {
@@ -1 +1 @@
1
- {"version":3,"file":"CodeSpecs.js","sourceRoot":"","sources":["../../src/CodeSpecs.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA+E;AAC/E,oDAA0E;AAI1E;;GAEG;AACH,MAAa,SAAS;IAIpB,YAAY,MAAgB;QAFpB,qBAAgB,GAAe,EAAE,CAAC;QAGxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;YAC1B,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC/E;IACH,CAAC;IAED,8DAA8D;IACvD,OAAO,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,4DAA4D,EAAE,CAAC,IAAoB,EAAE,EAAE;YAC/H,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,uBAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,EAAE;gBACxC,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,UAAsB;QACnC,IAAI,mBAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAC5B,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAEtE,wEAAwE;QACxE,MAAM,KAAK,GAAyB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACzG,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,KAAK,CAAC;QAEf,0BAA0B;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,uEAAuE;IAChE,KAAK,CAAC,UAAsB;QACjC,IAAI;YACF,OAAO,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC/C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,IAAY;QAC3B,wEAAwE;QACxE,MAAM,KAAK,GAAyB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACrG,IAAI,KAAK,KAAK,SAAS;YACrB,OAAO,KAAK,CAAC;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,UAAU,KAAK,SAAS;YAC1B,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,yEAAyE;IAClE,OAAO,CAAC,IAAY;QACzB,IAAI;YACF,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC3C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAgBM,MAAM,CAAC,cAAiC,EAAE,SAA8B;QAC7E,IAAI,cAAc,YAAY,sBAAQ,EAAE;YACtC,MAAM,QAAQ,GAAG,cAAc,CAAC;YAChC,MAAM,EAAE,GAAe,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC7D,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;SACX;QACD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;YACtC,MAAM,IAAI,GAAG,cAAc,CAAC;YAC5B,IAAI,SAAS;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,sBAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;SACtF;QACD,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,EAAc;QACxB,IAAI,mBAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,uEAAuE,EAAE,CAAC,IAAoB,EAAE,EAAE;YAC1I,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnB,IAAI,uBAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,EAAE;gBACxC,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YAEtE,MAAM,GAAG,GAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,sBAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxHD,8BAwHC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Codes\r\n */\r\n\r\nimport { DbResult, Id64, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { CodeScopeSpec, CodeSpec, IModelError } from \"@itwin/core-common\";\r\nimport { ECSqlStatement } from \"./ECSqlStatement\";\r\nimport { IModelDb } from \"./IModelDb\";\r\n\r\n/** Manages [CodeSpecs]($docs/BIS/intro/element-fundamentals.md#codespec) within an [[IModelDb]]\r\n * @public\r\n */\r\nexport class CodeSpecs {\r\n private _imodel: IModelDb;\r\n private _loadedCodeSpecs: CodeSpec[] = [];\r\n\r\n constructor(imodel: IModelDb) {\r\n this._imodel = imodel;\r\n if (imodel.isBriefcaseDb()) {\r\n imodel.onChangesetApplied.addListener(() => this._loadedCodeSpecs.length = 0);\r\n }\r\n }\r\n\r\n /** Look up the Id of the CodeSpec with the specified name. */\r\n public queryId(name: string): Id64String {\r\n return this._imodel.withPreparedStatement(\"SELECT ECInstanceId FROM BisCore.CodeSpec WHERE Name=:name\", (stmt: ECSqlStatement) => {\r\n stmt.bindString(\"name\", name);\r\n if (DbResult.BE_SQLITE_ROW !== stmt.step())\r\n throw new IModelError(IModelStatus.NotFound, \"CodeSpec not found\", () => ({ name }));\r\n return stmt.getValue(0).getId();\r\n });\r\n }\r\n\r\n /** Look up a CodeSpec by Id. The CodeSpec will be loaded from the database if necessary.\r\n * @param codeSpecId The Id of the CodeSpec to load\r\n * @returns The CodeSpec with the specified Id\r\n * @throws [[IModelError]] if the Id is invalid or if no CodeSpec with that Id could be found.\r\n */\r\n public getById(codeSpecId: Id64String): CodeSpec {\r\n if (Id64.isInvalid(codeSpecId))\r\n throw new IModelError(IModelStatus.InvalidId, \"Invalid codeSpecId\");\r\n\r\n // good chance it is already loaded - check there before running a query\r\n const found: CodeSpec | undefined = this._loadedCodeSpecs.find((codeSpec) => codeSpec.id === codeSpecId);\r\n if (found !== undefined)\r\n return found;\r\n\r\n // must load this codespec\r\n const loadedCodeSpec = this.load(codeSpecId);\r\n this._loadedCodeSpecs.push(loadedCodeSpec);\r\n return loadedCodeSpec;\r\n }\r\n\r\n /** Returns true if the IModelDb has a CodeSpec of the specified Id. */\r\n public hasId(codeSpecId: Id64String): boolean {\r\n try {\r\n return undefined !== this.getById(codeSpecId);\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n\r\n /** Look up a CodeSpec by name. The CodeSpec will be loaded from the database if necessary.\r\n * @param name The name of the CodeSpec to load\r\n * @returns The CodeSpec with the specified name\r\n * @throws [[IModelError]] if no CodeSpec with the specified name could be found.\r\n */\r\n public getByName(name: string): CodeSpec {\r\n // good chance it is already loaded - check there before running a query\r\n const found: CodeSpec | undefined = this._loadedCodeSpecs.find((codeSpec) => codeSpec.name === name);\r\n if (found !== undefined)\r\n return found;\r\n const codeSpecId = this.queryId(name);\r\n if (codeSpecId === undefined)\r\n throw new IModelError(IModelStatus.NotFound, \"CodeSpec not found\", () => ({ name }));\r\n return this.getById(codeSpecId);\r\n }\r\n\r\n /** Returns true if the IModelDb has a CodeSpec of the specified name. */\r\n public hasName(name: string): boolean {\r\n try {\r\n return undefined !== this.getByName(name);\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n\r\n /** Add a new CodeSpec to the iModel.\r\n * @param codeSpec The CodeSpec to insert\r\n * @returns The Id of the persistent CodeSpec.\r\n * @note If successful, this method will assign a valid CodeSpecId to the supplied CodeSpec\r\n * @throws IModelError if the insertion fails\r\n */\r\n public insert(codeSpec: CodeSpec): Id64String;\r\n /** Add a new CodeSpec to the IModelDb.\r\n * @param name The name for the new CodeSpec.\r\n * @param scopeType The scope type\r\n * @returns The Id of the persistent CodeSpec.\r\n * @throws IModelError if the insertion fails\r\n */\r\n public insert(name: string, scopeType: CodeScopeSpec.Type): Id64String;\r\n public insert(codeSpecOrName: CodeSpec | string, scopeType?: CodeScopeSpec.Type): Id64String {\r\n if (codeSpecOrName instanceof CodeSpec) {\r\n const codeSpec = codeSpecOrName;\r\n const id: Id64String = this._imodel.insertCodeSpec(codeSpec);\r\n codeSpec.id = id;\r\n return id;\r\n }\r\n if (typeof codeSpecOrName === \"string\") {\r\n const name = codeSpecOrName;\r\n if (scopeType)\r\n return this._imodel.insertCodeSpec(CodeSpec.create(this._imodel, name, scopeType));\r\n }\r\n throw new IModelError(IModelStatus.BadArg, \"Invalid argument\");\r\n }\r\n\r\n /** Load a CodeSpec from the iModel\r\n * @param id The persistent Id of the CodeSpec to load\r\n */\r\n public load(id: Id64String): CodeSpec {\r\n if (Id64.isInvalid(id))\r\n throw new IModelError(IModelStatus.InvalidId, \"Invalid codeSpecId\");\r\n\r\n return this._imodel.withPreparedStatement(\"SELECT name,jsonProperties FROM BisCore.CodeSpec WHERE ECInstanceId=?\", (stmt: ECSqlStatement) => {\r\n stmt.bindId(1, id);\r\n if (DbResult.BE_SQLITE_ROW !== stmt.step())\r\n throw new IModelError(IModelStatus.InvalidId, \"Invalid codeSpecId\");\r\n\r\n const row: any = stmt.getRow();\r\n return CodeSpec.createFromJson(this._imodel, id, row.name, JSON.parse(row.jsonProperties));\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CodeSpecs.js","sourceRoot":"","sources":["../../src/CodeSpecs.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Codes\r\n */\r\n\r\nimport { DbResult, Id64, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { CodeScopeSpec, CodeSpec, IModelError } from \"@itwin/core-common\";\r\nimport { ECSqlStatement } from \"./ECSqlStatement\";\r\nimport { IModelDb } from \"./IModelDb\";\r\n\r\n/** Manages [CodeSpecs]($docs/BIS/guide/fundamentals/element-fundamentals.md#codespec) within an [[IModelDb]]\r\n * @public\r\n */\r\nexport class CodeSpecs {\r\n private _imodel: IModelDb;\r\n private _loadedCodeSpecs: CodeSpec[] = [];\r\n\r\n constructor(imodel: IModelDb) {\r\n this._imodel = imodel;\r\n if (imodel.isBriefcaseDb()) {\r\n imodel.onChangesetApplied.addListener(() => this._loadedCodeSpecs.length = 0);\r\n }\r\n }\r\n\r\n /** Look up the Id of the CodeSpec with the specified name. */\r\n public queryId(name: string): Id64String {\r\n return this._imodel.withPreparedStatement(\"SELECT ECInstanceId FROM BisCore.CodeSpec WHERE Name=:name\", (stmt: ECSqlStatement) => {\r\n stmt.bindString(\"name\", name);\r\n if (DbResult.BE_SQLITE_ROW !== stmt.step())\r\n throw new IModelError(IModelStatus.NotFound, \"CodeSpec not found\", () => ({ name }));\r\n return stmt.getValue(0).getId();\r\n });\r\n }\r\n\r\n /** Look up a CodeSpec by Id. The CodeSpec will be loaded from the database if necessary.\r\n * @param codeSpecId The Id of the CodeSpec to load\r\n * @returns The CodeSpec with the specified Id\r\n * @throws [[IModelError]] if the Id is invalid or if no CodeSpec with that Id could be found.\r\n */\r\n public getById(codeSpecId: Id64String): CodeSpec {\r\n if (Id64.isInvalid(codeSpecId))\r\n throw new IModelError(IModelStatus.InvalidId, \"Invalid codeSpecId\");\r\n\r\n // good chance it is already loaded - check there before running a query\r\n const found: CodeSpec | undefined = this._loadedCodeSpecs.find((codeSpec) => codeSpec.id === codeSpecId);\r\n if (found !== undefined)\r\n return found;\r\n\r\n // must load this codespec\r\n const loadedCodeSpec = this.load(codeSpecId);\r\n this._loadedCodeSpecs.push(loadedCodeSpec);\r\n return loadedCodeSpec;\r\n }\r\n\r\n /** Returns true if the IModelDb has a CodeSpec of the specified Id. */\r\n public hasId(codeSpecId: Id64String): boolean {\r\n try {\r\n return undefined !== this.getById(codeSpecId);\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n\r\n /** Look up a CodeSpec by name. The CodeSpec will be loaded from the database if necessary.\r\n * @param name The name of the CodeSpec to load\r\n * @returns The CodeSpec with the specified name\r\n * @throws [[IModelError]] if no CodeSpec with the specified name could be found.\r\n */\r\n public getByName(name: string): CodeSpec {\r\n // good chance it is already loaded - check there before running a query\r\n const found: CodeSpec | undefined = this._loadedCodeSpecs.find((codeSpec) => codeSpec.name === name);\r\n if (found !== undefined)\r\n return found;\r\n const codeSpecId = this.queryId(name);\r\n if (codeSpecId === undefined)\r\n throw new IModelError(IModelStatus.NotFound, \"CodeSpec not found\", () => ({ name }));\r\n return this.getById(codeSpecId);\r\n }\r\n\r\n /** Returns true if the IModelDb has a CodeSpec of the specified name. */\r\n public hasName(name: string): boolean {\r\n try {\r\n return undefined !== this.getByName(name);\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n\r\n /** Add a new CodeSpec to the iModel.\r\n * @param codeSpec The CodeSpec to insert\r\n * @returns The Id of the persistent CodeSpec.\r\n * @note If successful, this method will assign a valid CodeSpecId to the supplied CodeSpec\r\n * @throws IModelError if the insertion fails\r\n */\r\n public insert(codeSpec: CodeSpec): Id64String;\r\n /** Add a new CodeSpec to the IModelDb.\r\n * @param name The name for the new CodeSpec.\r\n * @param scopeType The scope type\r\n * @returns The Id of the persistent CodeSpec.\r\n * @throws IModelError if the insertion fails\r\n */\r\n public insert(name: string, scopeType: CodeScopeSpec.Type): Id64String;\r\n public insert(codeSpecOrName: CodeSpec | string, scopeType?: CodeScopeSpec.Type): Id64String {\r\n if (codeSpecOrName instanceof CodeSpec) {\r\n const codeSpec = codeSpecOrName;\r\n const id: Id64String = this._imodel.insertCodeSpec(codeSpec);\r\n codeSpec.id = id;\r\n return id;\r\n }\r\n if (typeof codeSpecOrName === \"string\") {\r\n const name = codeSpecOrName;\r\n if (scopeType)\r\n return this._imodel.insertCodeSpec(CodeSpec.create(this._imodel, name, scopeType));\r\n }\r\n throw new IModelError(IModelStatus.BadArg, \"Invalid argument\");\r\n }\r\n\r\n /** Load a CodeSpec from the iModel\r\n * @param id The persistent Id of the CodeSpec to load\r\n */\r\n public load(id: Id64String): CodeSpec {\r\n if (Id64.isInvalid(id))\r\n throw new IModelError(IModelStatus.InvalidId, \"Invalid codeSpecId\");\r\n\r\n return this._imodel.withPreparedStatement(\"SELECT name,jsonProperties FROM BisCore.CodeSpec WHERE ECInstanceId=?\", (stmt: ECSqlStatement) => {\r\n stmt.bindId(1, id);\r\n if (DbResult.BE_SQLITE_ROW !== stmt.step())\r\n throw new IModelError(IModelStatus.InvalidId, \"Invalid codeSpecId\");\r\n\r\n const row: any = stmt.getRow();\r\n return CodeSpec.createFromJson(this._imodel, id, row.name, JSON.parse(row.jsonProperties));\r\n });\r\n }\r\n}\r\n"]}
@@ -2,8 +2,8 @@
2
2
  * @module Elements
3
3
  */
4
4
  import { GuidString, Id64Set, Id64String } from "@itwin/core-bentley";
5
- import { ClipVector, Transform } from "@itwin/core-geometry";
6
5
  import { AxisAlignedBox3d, Code, CodeScopeProps, DefinitionElementProps, ElementAlignedBox3d, ElementGeometryBuilderParams, ElementGeometryBuilderParamsForPart, ElementProps, EntityMetaData, GeometricElement2dProps, GeometricElement3dProps, GeometricElementProps, GeometryPartProps, GeometryStreamProps, InformationPartitionElementProps, LineStyleProps, ModelProps, PhysicalElementProps, PhysicalTypeProps, Placement2d, Placement3d, RelatedElement, RenderSchedule, RenderTimelineProps, RepositoryLinkProps, SectionDrawingLocationProps, SectionDrawingProps, SectionType, SheetBorderTemplateProps, SheetProps, SheetTemplateProps, SubjectProps, TypeDefinition, TypeDefinitionElementProps, UrlLinkProps } from "@itwin/core-common";
6
+ import { ClipVector, Transform } from "@itwin/core-geometry";
7
7
  import { Entity } from "./Entity";
8
8
  import { IModelCloneContext } from "./IModelCloneContext";
9
9
  import { IModelDb } from "./IModelDb";
@@ -76,7 +76,7 @@ export interface OnSubModelIdArg extends OnElementArg {
76
76
  * uniqueness of id, code, and federationGuid.
77
77
  *
78
78
  * See:
79
- * * [Element Fundamentals]($docs/bis/intro/element-fundamentals.md)
79
+ * * [Element Fundamentals]($docs/bis/guide/fundamentals/element-fundamentals.md)
80
80
  * * [Working with schemas and elements in TypeScript]($docs/learning/backend/SchemasAndElementsInTypeScript.md)
81
81
  * * [Creating elements]($docs/learning/backend/CreateElements.md)
82
82
  * @public
@@ -86,17 +86,17 @@ export declare class Element extends Entity {
86
86
  static get className(): string;
87
87
  /** @internal */
88
88
  static get protectedOperations(): string[];
89
- /** The ModelId of the [Model]($docs/bis/intro/model-fundamentals.md) containing this element */
89
+ /** The ModelId of the [Model]($docs/bis/guide/fundamentals/model-fundamentals.md) containing this element */
90
90
  readonly model: Id64String;
91
- /** The [Code]($docs/bis/intro/codes.md) for this element */
91
+ /** The [Code]($docs/bis/guide/fundamentals/codes.md) for this element */
92
92
  code: Code;
93
93
  /** The parent element, if present, of this element. */
94
94
  parent?: RelatedElement;
95
- /** A [FederationGuid]($docs/bis/intro/element-fundamentals.md#federationguid) assigned to this element by some other federated database */
95
+ /** A [FederationGuid]($docs/bis/guide/fundamentals/element-fundamentals.md#federationguid) assigned to this element by some other federated database */
96
96
  federationGuid?: GuidString;
97
- /** A [user-assigned label]($docs/bis/intro/element-fundamentals.md#userlabel) for this element. */
97
+ /** A [user-assigned label]($docs/bis/guide/fundamentals/element-fundamentals.md#userlabel) for this element. */
98
98
  userLabel?: string;
99
- /** Optional [json properties]($docs/bis/intro/element-fundamentals.md#jsonproperties) of this element. */
99
+ /** Optional [json properties]($docs/bis/guide/fundamentals/element-fundamentals.md#jsonproperties) of this element. */
100
100
  readonly jsonProperties: {
101
101
  [key: string]: any;
102
102
  };
@@ -865,7 +865,7 @@ export declare class TemplateRecipe2d extends RecipeDefinitionElement {
865
865
  }
866
866
  /** An abstract base class for elements that establishes a particular modeling perspective for its parent Subject.
867
867
  * Instances are always sub-modeled by a specialization of Model of the appropriate modeling perspective.
868
- * @see [iModel Information Hierarchy]($docs/bis/intro/top-of-the-world), [[Subject]], [[Model]]
868
+ * @see [iModel Information Hierarchy]($docs/bis/guide/data-organization/top-of-the-world), [[Subject]], [[Model]]
869
869
  * @public
870
870
  */
871
871
  export declare abstract class InformationPartitionElement extends InformationContentElement {
@@ -1 +1 @@
1
- {"version":3,"file":"Element.d.ts","sourceRoot":"","sources":["../../src/Element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Element.d.ts","sourceRoot":"","sources":["../../src/Element.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.FolderLink = exports.UrlLink = exports.LinkElement = exports.GroupInformationElement = exports.SpatialLocationPartition = exports.PhysicalPartition = exports.LinkPartition = exports.InformationRecordPartition = exports.GraphicalPartition3d = exports.GroupInformationPartition = exports.DocumentPartition = exports.DefinitionPartition = exports.InformationPartitionElement = exports.TemplateRecipe2d = exports.GraphicalType2d = exports.TemplateRecipe3d = exports.SpatialLocationType = exports.PhysicalType = exports.RecipeDefinitionElement = exports.TypeDefinitionElement = exports.DefinitionGroup = exports.DefinitionContainer = exports.DefinitionSet = exports.DefinitionElement = exports.InformationRecordElement = exports.Sheet = exports.SheetTemplate = exports.SheetBorderTemplate = exports.SectionDrawing = exports.Drawing = exports.Document = exports.Subject = exports.InformationReferenceElement = exports.DriverBundleElement = exports.InformationContentElement = exports.SectionDrawingLocation = exports.VolumeElement = exports.SpatialLocationElement = exports.PhysicalElement = exports.SpatialElement = exports.TextAnnotation3d = exports.TextAnnotation2d = exports.DrawingGraphic = exports.AnnotationElement2d = exports.GraphicalElement2d = exports.GeometricElement2d = exports.GraphicalElement3d = exports.GeometricElement3d = exports.GeometricElement = exports.Element = void 0;
12
12
  exports.RenderTimeline = exports.LineStyle = exports.GeometryPart = exports.RoleElement = exports.EmbeddedFileLink = exports.RepositoryLink = void 0;
13
13
  const core_bentley_1 = require("@itwin/core-bentley");
14
- const core_geometry_1 = require("@itwin/core-geometry");
15
14
  const core_common_1 = require("@itwin/core-common");
15
+ const core_geometry_1 = require("@itwin/core-geometry");
16
16
  const Entity_1 = require("./Entity");
17
17
  const Model_1 = require("./Model");
18
18
  const NavigationRelationship_1 = require("./NavigationRelationship");
@@ -28,7 +28,7 @@ const NavigationRelationship_1 = require("./NavigationRelationship");
28
28
  * uniqueness of id, code, and federationGuid.
29
29
  *
30
30
  * See:
31
- * * [Element Fundamentals]($docs/bis/intro/element-fundamentals.md)
31
+ * * [Element Fundamentals]($docs/bis/guide/fundamentals/element-fundamentals.md)
32
32
  * * [Working with schemas and elements in TypeScript]($docs/learning/backend/SchemasAndElementsInTypeScript.md)
33
33
  * * [Creating elements]($docs/learning/backend/CreateElements.md)
34
34
  * @public
@@ -1081,7 +1081,7 @@ class TemplateRecipe2d extends RecipeDefinitionElement {
1081
1081
  exports.TemplateRecipe2d = TemplateRecipe2d;
1082
1082
  /** An abstract base class for elements that establishes a particular modeling perspective for its parent Subject.
1083
1083
  * Instances are always sub-modeled by a specialization of Model of the appropriate modeling perspective.
1084
- * @see [iModel Information Hierarchy]($docs/bis/intro/top-of-the-world), [[Subject]], [[Model]]
1084
+ * @see [iModel Information Hierarchy]($docs/bis/guide/data-organization/top-of-the-world), [[Subject]], [[Model]]
1085
1085
  * @public
1086
1086
  */
1087
1087
  class InformationPartitionElement extends InformationContentElement {