@itwin/core-backend 5.0.0-dev.56 → 5.0.0-dev.57

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 (145) hide show
  1. package/lib/cjs/BackendHubAccess.js +2 -0
  2. package/lib/cjs/BackendHubAccess.js.map +1 -1
  3. package/lib/cjs/BriefcaseManager.js +3 -1
  4. package/lib/cjs/BriefcaseManager.js.map +1 -1
  5. package/lib/cjs/Category.js +6 -1
  6. package/lib/cjs/Category.js.map +1 -1
  7. package/lib/cjs/ChangeSummaryManager.js +1 -1
  8. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  9. package/lib/cjs/ChangedElementsDb.js +1 -0
  10. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  11. package/lib/cjs/ChangesetECAdaptor.js +30 -18
  12. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  13. package/lib/cjs/CheckpointManager.js +6 -5
  14. package/lib/cjs/CheckpointManager.js.map +1 -1
  15. package/lib/cjs/ClassRegistry.js +4 -8
  16. package/lib/cjs/ClassRegistry.js.map +1 -1
  17. package/lib/cjs/CloudSqlite.js +15 -8
  18. package/lib/cjs/CloudSqlite.js.map +1 -1
  19. package/lib/cjs/CodeService.js +4 -0
  20. package/lib/cjs/CodeService.js.map +1 -1
  21. package/lib/cjs/CodeSpecs.js +3 -2
  22. package/lib/cjs/CodeSpecs.js.map +1 -1
  23. package/lib/cjs/CustomViewState3dCreator.js +7 -6
  24. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  25. package/lib/cjs/DevTools.js +6 -6
  26. package/lib/cjs/DevTools.js.map +1 -1
  27. package/lib/cjs/DisplayStyle.js +2 -0
  28. package/lib/cjs/DisplayStyle.js.map +1 -1
  29. package/lib/cjs/ECDb.js +3 -2
  30. package/lib/cjs/ECDb.js.map +1 -1
  31. package/lib/cjs/ECSchemaXmlContext.js +1 -0
  32. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  33. package/lib/cjs/ECSqlStatement.js +8 -3
  34. package/lib/cjs/ECSqlStatement.js.map +1 -1
  35. package/lib/cjs/Element.d.ts +1 -9
  36. package/lib/cjs/Element.d.ts.map +1 -1
  37. package/lib/cjs/Element.js +105 -12
  38. package/lib/cjs/Element.js.map +1 -1
  39. package/lib/cjs/ElementAspect.js +24 -0
  40. package/lib/cjs/ElementAspect.js.map +1 -1
  41. package/lib/cjs/ElementTreeWalker.js +13 -12
  42. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  43. package/lib/cjs/Entity.js +22 -16
  44. package/lib/cjs/Entity.js.map +1 -1
  45. package/lib/cjs/ExportGraphics.js +4 -0
  46. package/lib/cjs/ExportGraphics.js.map +1 -1
  47. package/lib/cjs/ExternalSource.js +22 -0
  48. package/lib/cjs/ExternalSource.js.map +1 -1
  49. package/lib/cjs/GeoCoordConfig.js +4 -4
  50. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  51. package/lib/cjs/GeometrySummary.js +6 -3
  52. package/lib/cjs/GeometrySummary.js.map +1 -1
  53. package/lib/cjs/HubMock.js +4 -1
  54. package/lib/cjs/HubMock.js.map +1 -1
  55. package/lib/cjs/IModelDb.js +65 -35
  56. package/lib/cjs/IModelDb.js.map +1 -1
  57. package/lib/cjs/IModelElementCloneContext.js +6 -0
  58. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  59. package/lib/cjs/IModelHost.js +49 -22
  60. package/lib/cjs/IModelHost.js.map +1 -1
  61. package/lib/cjs/IModelJsFs.js +9 -0
  62. package/lib/cjs/IModelJsFs.js.map +1 -1
  63. package/lib/cjs/IpcHost.js +3 -5
  64. package/lib/cjs/IpcHost.js.map +1 -1
  65. package/lib/cjs/LocalHub.js +8 -2
  66. package/lib/cjs/LocalHub.js.map +1 -1
  67. package/lib/cjs/LocalhostIpcHost.js +5 -6
  68. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  69. package/lib/cjs/Material.js +40 -0
  70. package/lib/cjs/Material.js.map +1 -1
  71. package/lib/cjs/Model.d.ts +1 -1
  72. package/lib/cjs/Model.d.ts.map +1 -1
  73. package/lib/cjs/Model.js +27 -2
  74. package/lib/cjs/Model.js.map +1 -1
  75. package/lib/cjs/NativeAppStorage.js +5 -3
  76. package/lib/cjs/NativeAppStorage.js.map +1 -1
  77. package/lib/cjs/NativeHost.js +5 -2
  78. package/lib/cjs/NativeHost.js.map +1 -1
  79. package/lib/cjs/NavigationRelationship.js +25 -25
  80. package/lib/cjs/NavigationRelationship.js.map +1 -1
  81. package/lib/cjs/PromiseMemoizer.js +11 -4
  82. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  83. package/lib/cjs/PropertyStore.js +1 -4
  84. package/lib/cjs/PropertyStore.js.map +1 -1
  85. package/lib/cjs/Relationship.js +12 -0
  86. package/lib/cjs/Relationship.js.map +1 -1
  87. package/lib/cjs/SQLiteDb.js +4 -8
  88. package/lib/cjs/SQLiteDb.js.map +1 -1
  89. package/lib/cjs/Schema.js +1 -1
  90. package/lib/cjs/Schema.js.map +1 -1
  91. package/lib/cjs/SchemaSync.js +1 -4
  92. package/lib/cjs/SchemaSync.js.map +1 -1
  93. package/lib/cjs/SheetIndex.js +6 -0
  94. package/lib/cjs/SheetIndex.js.map +1 -1
  95. package/lib/cjs/SqliteChangesetReader.js +5 -4
  96. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  97. package/lib/cjs/SqliteStatement.js +8 -0
  98. package/lib/cjs/SqliteStatement.js.map +1 -1
  99. package/lib/cjs/TextAnnotationLayout.js +25 -8
  100. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  101. package/lib/cjs/Texture.js +3 -0
  102. package/lib/cjs/Texture.js.map +1 -1
  103. package/lib/cjs/TileStorage.js +6 -1
  104. package/lib/cjs/TileStorage.js.map +1 -1
  105. package/lib/cjs/TxnManager.js +67 -58
  106. package/lib/cjs/TxnManager.js.map +1 -1
  107. package/lib/cjs/ViewDefinition.d.ts +6 -6
  108. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  109. package/lib/cjs/ViewDefinition.js +68 -10
  110. package/lib/cjs/ViewDefinition.js.map +1 -1
  111. package/lib/cjs/ViewStateHydrator.js +1 -0
  112. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  113. package/lib/cjs/ViewStore.js +3 -1
  114. package/lib/cjs/ViewStore.js.map +1 -1
  115. package/lib/cjs/domains/FunctionalElements.js +1 -1
  116. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  117. package/lib/cjs/internal/ChangesetConflictArgs.js +2 -0
  118. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  119. package/lib/cjs/internal/ChannelAdmin.js +7 -7
  120. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  121. package/lib/cjs/internal/FontFileImpl.js +4 -3
  122. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  123. package/lib/cjs/internal/IModelDbFontsImpl.js +1 -3
  124. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  125. package/lib/cjs/internal/NoLocks.js +2 -5
  126. package/lib/cjs/internal/NoLocks.js.map +1 -1
  127. package/lib/cjs/internal/ServerBasedLocks.js +4 -4
  128. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  129. package/lib/cjs/internal/workspace/SettingsImpl.js +6 -9
  130. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  131. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +8 -12
  132. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  133. package/lib/cjs/internal/workspace/WorkspaceImpl.js +22 -17
  134. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  135. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js +1 -4
  136. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  137. package/lib/cjs/rpc/tracing.js +1 -1
  138. package/lib/cjs/rpc/tracing.js.map +1 -1
  139. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -0
  140. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  141. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +3 -1
  142. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  143. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +1 -1
  144. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  145. package/package.json +9 -9
@@ -86,10 +86,32 @@ class IModelSettings extends SettingsImpl_1.SettingsImpl {
86
86
  * @public
87
87
  */
88
88
  class IModelDb extends core_common_1.IModel {
89
+ _initialized = false;
89
90
  /** Keep track of open imodels to support `tryFind` for RPC purposes */
90
- static { this._openDbs = new Map(); }
91
- static { this.defaultLimit = 1000; } // default limit for batching queries
92
- static { this.maxLimit = 10000; } // maximum limit for batching queries
91
+ static _openDbs = new Map();
92
+ static defaultLimit = 1000; // default limit for batching queries
93
+ static maxLimit = 10000; // maximum limit for batching queries
94
+ models = new IModelDb.Models(this);
95
+ elements = new IModelDb.Elements(this);
96
+ views = new IModelDb.Views(this);
97
+ tiles = new IModelDb.Tiles(this);
98
+ /** @beta */
99
+ channels = (0, ChannelAdmin_1.createChannelControl)(this);
100
+ _relationships;
101
+ _statementCache = new SqliteStatement_1.StatementCache();
102
+ _sqliteStatementCache = new SqliteStatement_1.StatementCache();
103
+ _codeSpecs;
104
+ _classMetaDataRegistry;
105
+ /** @deprecated in 5.0.0. Use [[fonts]]. */
106
+ _fontMap; // eslint-disable-line @typescript-eslint/no-deprecated
107
+ _fonts = (0, IModelDbFontsImpl_1.createIModelDbFonts)(this);
108
+ _workspace;
109
+ _snaps = new Map();
110
+ static _shutdownListener; // so we only register listener once
111
+ /** @internal */
112
+ _locks = (0, NoLocks_1.createNoOpLockControl)();
113
+ /** @internal */
114
+ _codeService;
93
115
  /** @alpha */
94
116
  get codeService() { return this._codeService; }
95
117
  /** The [[LockControl]] that orchestrates [concurrent editing]($docs/learning/backend/ConcurrencyControl.md) of this iModel. */
@@ -118,6 +140,8 @@ class IModelDb extends core_common_1.IModel {
118
140
  get holdsSchemaLock() {
119
141
  return this.locks.holdsExclusiveLock(core_common_1.IModel.repositoryModelId);
120
142
  }
143
+ /** Event called after a changeset is applied to this IModelDb. */
144
+ onChangesetApplied = new core_bentley_1.BeEvent();
121
145
  /** @internal */
122
146
  notifyChangesetApplied() {
123
147
  this.changeset = this[Symbols_1._nativeDb].getCurrentChangeset();
@@ -143,6 +167,8 @@ class IModelDb extends core_common_1.IModel {
143
167
  (0, core_bentley_1.assert)(undefined !== super.iModelId);
144
168
  return super.iModelId;
145
169
  } // GuidString | undefined for the IModel superclass, but required for all IModelDb subclasses
170
+ /** @internal*/
171
+ [Symbols_1._nativeDb];
146
172
  /** Get the full path fileName of this iModelDb
147
173
  * @note this member is only valid while the iModel is opened.
148
174
  */
@@ -158,23 +184,6 @@ class IModelDb extends core_common_1.IModel {
158
184
  /** @internal */
159
185
  constructor(args) {
160
186
  super({ ...args, iTwinId: args.nativeDb.getITwinId(), iModelId: args.nativeDb.getIModelId() });
161
- this._initialized = false;
162
- this.models = new IModelDb.Models(this);
163
- this.elements = new IModelDb.Elements(this);
164
- this.views = new IModelDb.Views(this);
165
- this.tiles = new IModelDb.Tiles(this);
166
- /** @beta */
167
- this.channels = (0, ChannelAdmin_1.createChannelControl)(this);
168
- this._statementCache = new SqliteStatement_1.StatementCache();
169
- this._sqliteStatementCache = new SqliteStatement_1.StatementCache();
170
- this._fonts = (0, IModelDbFontsImpl_1.createIModelDbFonts)(this);
171
- this._snaps = new Map();
172
- /** @internal */
173
- this._locks = (0, NoLocks_1.createNoOpLockControl)();
174
- /** Event called after a changeset is applied to this IModelDb. */
175
- this.onChangesetApplied = new core_bentley_1.BeEvent();
176
- /** Event called when the iModel is about to be closed. */
177
- this.onBeforeClose = new core_bentley_1.BeEvent();
178
187
  this[Symbols_1._nativeDb] = args.nativeDb;
179
188
  // it is illegal to create an IModelDb unless the nativeDb has been opened. Throw otherwise.
180
189
  if (!this.isOpen)
@@ -221,6 +230,8 @@ class IModelDb extends core_common_1.IModel {
221
230
  }
222
231
  /** @internal */
223
232
  async refreshContainerForRpc(_userAccessToken) { }
233
+ /** Event called when the iModel is about to be closed. */
234
+ onBeforeClose = new core_bentley_1.BeEvent();
224
235
  /**
225
236
  * Called by derived classes before closing the connection
226
237
  * @internal
@@ -1187,7 +1198,7 @@ class IModelDb extends core_common_1.IModel {
1187
1198
  async generateElementGraphics(request) {
1188
1199
  return (0, ElementGraphics_1.generateElementGraphics)(request, this);
1189
1200
  }
1190
- static { this._settingPropNamespace = "settings"; }
1201
+ static _settingPropNamespace = "settings";
1191
1202
  /** Save a `SettingDictionary` in this iModel that will be loaded into [[workspace.settings]] every time this iModel is opened in future sessions.
1192
1203
  * @param name The name for the SettingDictionary. If a dictionary by that name already exists in the iModel, its value is replaced.
1193
1204
  * @param dict The SettingDictionary object to stringify and save.
@@ -1334,6 +1345,7 @@ function processSchemaWriteStatus(status) {
1334
1345
  * @public
1335
1346
  */
1336
1347
  class Models {
1348
+ _iModel;
1337
1349
  /** @internal */
1338
1350
  constructor(_iModel) {
1339
1351
  this._iModel = _iModel;
@@ -1541,6 +1553,7 @@ function processSchemaWriteStatus(status) {
1541
1553
  * @public
1542
1554
  */
1543
1555
  class Elements {
1556
+ _iModel;
1544
1557
  /** @internal */
1545
1558
  constructor(_iModel) {
1546
1559
  this._iModel = _iModel;
@@ -1930,7 +1943,7 @@ function processSchemaWriteStatus(status) {
1930
1943
  }
1931
1944
  return this._queryAspect(aspectInstanceId, aspectClassFullName);
1932
1945
  }
1933
- static { this.classMap = new Map(); }
1946
+ static classMap = new Map();
1934
1947
  runInstanceQuery(sql, elementId, excludedClassFullNames) {
1935
1948
  return this._iModel.withPreparedStatement(sql, (statement) => {
1936
1949
  statement.bindId("elementId", elementId);
@@ -2052,11 +2065,13 @@ function processSchemaWriteStatus(status) {
2052
2065
  * @public
2053
2066
  */
2054
2067
  class Views {
2068
+ _iModel;
2055
2069
  /** @internal */
2056
2070
  constructor(_iModel) {
2057
2071
  this._iModel = _iModel;
2058
2072
  }
2059
- static { this.viewStoreProperty = { namespace: "itwinjs", name: "DefaultViewStore" }; }
2073
+ static viewStoreProperty = { namespace: "itwinjs", name: "DefaultViewStore" };
2074
+ _viewStore;
2060
2075
  get hasViewStore() { return undefined !== this._viewStore; }
2061
2076
  /** @beta */
2062
2077
  get viewStore() {
@@ -2109,7 +2124,7 @@ function processSchemaWriteStatus(status) {
2109
2124
  return props;
2110
2125
  }
2111
2126
  /** Default parameters for iterating/querying ViewDefinitions. Includes all subclasses of ViewDefinition, excluding only those marked 'private'. */
2112
- static { this.defaultQueryParams = { from: "BisCore.ViewDefinition", where: "IsPrivate=FALSE" }; }
2127
+ static defaultQueryParams = { from: "BisCore.ViewDefinition", where: "IsPrivate=FALSE" };
2113
2128
  /** Iterate all ViewDefinitions matching the supplied query.
2114
2129
  * @param params Specifies the query by which views are selected.
2115
2130
  * @param callback Function invoked for each ViewDefinition matching the query. Return false to terminate iteration, true to continue.
@@ -2259,6 +2274,7 @@ function processSchemaWriteStatus(status) {
2259
2274
  })(TileContentState = IModelDb.TileContentState || (IModelDb.TileContentState = {}));
2260
2275
  /** @internal */
2261
2276
  class Tiles {
2277
+ _iModel;
2262
2278
  /** @internal */
2263
2279
  constructor(_iModel) {
2264
2280
  this._iModel = _iModel;
@@ -2333,8 +2349,13 @@ function processSchemaWriteStatus(status) {
2333
2349
  * @public
2334
2350
  */
2335
2351
  class BriefcaseDb extends IModelDb {
2352
+ /** Manages local changes to this briefcase. */
2353
+ txns = new TxnManager_1.TxnManager(this);
2336
2354
  /** override superclass method */
2337
2355
  get isBriefcase() { return true; }
2356
+ /* the BriefcaseId of the briefcase opened with this BriefcaseDb */
2357
+ briefcaseId;
2358
+ _skipSyncSchemasOnPullAndPush;
2338
2359
  /** @internal */
2339
2360
  get skipSyncSchemasOnPullAndPush() { return this._skipSyncSchemasOnPullAndPush ?? false; }
2340
2361
  /**
@@ -2346,7 +2367,7 @@ class BriefcaseDb extends IModelDb {
2346
2367
  * [[include:BriefcaseDb.onOpen]]
2347
2368
  * ```
2348
2369
  */
2349
- static { this.onOpen = new core_bentley_1.BeEvent(); }
2370
+ static onOpen = new core_bentley_1.BeEvent();
2350
2371
  /**
2351
2372
  * Event raised just after a BriefcaseDb is opened. Supplies the newly opened BriefcaseDb and the arguments that were used to open it.
2352
2373
  *
@@ -2355,9 +2376,11 @@ class BriefcaseDb extends IModelDb {
2355
2376
  * [[include:BriefcaseDb.onOpened]]
2356
2377
  * ```
2357
2378
  */
2358
- static { this.onOpened = new core_bentley_1.BeEvent(); }
2379
+ static onOpened = new core_bentley_1.BeEvent();
2380
+ /** Event raised after a BriefcaseDb has been closed. */
2381
+ onClosed = new core_bentley_1.BeEvent();
2359
2382
  /** @alpha */
2360
- static { this.onCodeServiceCreated = new core_bentley_1.BeEvent(); }
2383
+ static onCodeServiceCreated = new core_bentley_1.BeEvent();
2361
2384
  static findByKey(key) {
2362
2385
  return super.findByKey(key);
2363
2386
  }
@@ -2387,10 +2410,6 @@ class BriefcaseDb extends IModelDb {
2387
2410
  }
2388
2411
  constructor(args) {
2389
2412
  super({ ...args, changeset: args.nativeDb.getCurrentChangeset() });
2390
- /** Manages local changes to this briefcase. */
2391
- this.txns = new TxnManager_1.TxnManager(this);
2392
- /** Event raised after a BriefcaseDb has been closed. */
2393
- this.onClosed = new core_bentley_1.BeEvent();
2394
2413
  this._openMode = args.openMode;
2395
2414
  this.briefcaseId = args.briefcaseId;
2396
2415
  this.makeLockControl();
@@ -2818,9 +2837,13 @@ exports.BriefcaseDb = BriefcaseDb;
2818
2837
  * @note Reattach only happens if the previous access token either has expired or is about to expire within an application-supplied safety duration.
2819
2838
  */
2820
2839
  class RefreshV2CheckpointSas {
2840
+ /** the time at which the current token should be refreshed (its expiry minus safetySeconds) */
2841
+ _timestamp = 0;
2842
+ /** while a refresh is happening, all callers get this promise. */
2843
+ _promise;
2844
+ /** Time, in seconds, before the current token expires to obtain a new token. Default is 1 hour. */
2845
+ _safetySeconds;
2821
2846
  constructor(sasToken, safetySeconds) {
2822
- /** the time at which the current token should be refreshed (its expiry minus safetySeconds) */
2823
- this._timestamp = 0;
2824
2847
  this._safetySeconds = safetySeconds ?? 60 * 60; // default to 1 hour
2825
2848
  this.setTimestamp(sasToken);
2826
2849
  }
@@ -2867,8 +2890,15 @@ class RefreshV2CheckpointSas {
2867
2890
  */
2868
2891
  class SnapshotDb extends IModelDb {
2869
2892
  get isSnapshot() { return true; }
2870
- static { this.onOpen = new core_bentley_1.BeEvent(); }
2871
- static { this.onOpened = new core_bentley_1.BeEvent(); }
2893
+ _refreshSas;
2894
+ /** Timer used to restart the default txn on the SnapshotDb after some inactivity. This is only used for checkpoints.
2895
+ * Restarting the default txn lets CloudSqlite know that any blocks that may have been read may now be ejected.
2896
+ * Without restarting the default txn, CloudSQLite can get into a state where it can not evict any blocks to make space for more blocks.
2897
+ */
2898
+ _restartDefaultTxnTimer;
2899
+ _createClassViewsOnClose;
2900
+ static onOpen = new core_bentley_1.BeEvent();
2901
+ static onOpened = new core_bentley_1.BeEvent();
2872
2902
  constructor(nativeDb, key) {
2873
2903
  super({ nativeDb, key, changeset: nativeDb.getCurrentChangeset() });
2874
2904
  this._openMode = nativeDb.isReadonly() ? core_bentley_1.OpenMode.Readonly : core_bentley_1.OpenMode.ReadWrite;