@itwin/core-backend 4.0.0-dev.10 → 4.0.0-dev.101

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 (295) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +226 -224
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js +41 -41
  5. package/lib/cjs/BackendHubAccess.js.map +1 -1
  6. package/lib/cjs/BackendLoggerCategory.d.ts +90 -91
  7. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.js +98 -99
  9. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  10. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  11. package/lib/cjs/BisCoreSchema.js +60 -60
  12. package/lib/cjs/BisCoreSchema.js.map +1 -1
  13. package/lib/cjs/BlobContainerService.d.ts +120 -0
  14. package/lib/cjs/BlobContainerService.d.ts.map +1 -0
  15. package/lib/cjs/BlobContainerService.js +18 -0
  16. package/lib/cjs/BlobContainerService.js.map +1 -0
  17. package/lib/cjs/BriefcaseManager.d.ts +184 -170
  18. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  19. package/lib/cjs/BriefcaseManager.js +421 -414
  20. package/lib/cjs/BriefcaseManager.js.map +1 -1
  21. package/lib/cjs/Category.d.ts +153 -153
  22. package/lib/cjs/Category.js +243 -243
  23. package/lib/cjs/Category.js.map +1 -1
  24. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  25. package/lib/cjs/ChangeSummaryManager.js +446 -447
  26. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  27. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  28. package/lib/cjs/ChangedElementsDb.js +165 -165
  29. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  30. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  31. package/lib/cjs/ChangedElementsManager.js +88 -88
  32. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  33. package/lib/cjs/ChannelControl.d.ts +70 -0
  34. package/lib/cjs/ChannelControl.d.ts.map +1 -0
  35. package/lib/cjs/ChannelControl.js +89 -0
  36. package/lib/cjs/ChannelControl.js.map +1 -0
  37. package/lib/cjs/CheckpointManager.d.ts +121 -121
  38. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  39. package/lib/cjs/CheckpointManager.js +351 -349
  40. package/lib/cjs/CheckpointManager.js.map +1 -1
  41. package/lib/cjs/ClassRegistry.d.ts +79 -79
  42. package/lib/cjs/ClassRegistry.js +254 -250
  43. package/lib/cjs/ClassRegistry.js.map +1 -1
  44. package/lib/cjs/CloudSqlite.d.ts +572 -350
  45. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  46. package/lib/cjs/CloudSqlite.js +374 -153
  47. package/lib/cjs/CloudSqlite.js.map +1 -1
  48. package/lib/cjs/CodeService.d.ts +399 -396
  49. package/lib/cjs/CodeService.d.ts.map +1 -1
  50. package/lib/cjs/CodeService.js +63 -63
  51. package/lib/cjs/CodeService.js.map +1 -1
  52. package/lib/cjs/CodeSpecs.d.ts +58 -55
  53. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  54. package/lib/cjs/CodeSpecs.js +154 -124
  55. package/lib/cjs/CodeSpecs.js.map +1 -1
  56. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  57. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  58. package/lib/cjs/ConcurrentQuery.js +36 -36
  59. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  60. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  61. package/lib/cjs/CustomViewState3dCreator.d.ts.map +1 -1
  62. package/lib/cjs/CustomViewState3dCreator.js +80 -81
  63. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  64. package/lib/cjs/DevTools.d.ts +74 -71
  65. package/lib/cjs/DevTools.d.ts.map +1 -1
  66. package/lib/cjs/DevTools.js +156 -154
  67. package/lib/cjs/DevTools.js.map +1 -1
  68. package/lib/cjs/DisplayStyle.d.ts +104 -106
  69. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  70. package/lib/cjs/DisplayStyle.js +251 -256
  71. package/lib/cjs/DisplayStyle.js.map +1 -1
  72. package/lib/cjs/ECDb.d.ts +194 -191
  73. package/lib/cjs/ECDb.d.ts.map +1 -1
  74. package/lib/cjs/ECDb.js +351 -350
  75. package/lib/cjs/ECDb.js.map +1 -1
  76. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  77. package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -1
  78. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  79. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  80. package/lib/cjs/ECSqlStatement.d.ts +473 -473
  81. package/lib/cjs/ECSqlStatement.js +791 -791
  82. package/lib/cjs/ECSqlStatement.js.map +1 -1
  83. package/lib/cjs/Element.d.ts +1105 -1109
  84. package/lib/cjs/Element.d.ts.map +1 -1
  85. package/lib/cjs/Element.js +1416 -1427
  86. package/lib/cjs/Element.js.map +1 -1
  87. package/lib/cjs/ElementAspect.d.ts +175 -179
  88. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  89. package/lib/cjs/ElementAspect.js +202 -211
  90. package/lib/cjs/ElementAspect.js.map +1 -1
  91. package/lib/cjs/ElementGraphics.d.ts +9 -9
  92. package/lib/cjs/ElementGraphics.js +41 -41
  93. package/lib/cjs/ElementGraphics.js.map +1 -1
  94. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  95. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  96. package/lib/cjs/ElementTreeWalker.js +409 -409
  97. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  98. package/lib/cjs/Entity.d.ts +102 -106
  99. package/lib/cjs/Entity.d.ts.map +1 -1
  100. package/lib/cjs/Entity.js +118 -134
  101. package/lib/cjs/Entity.js.map +1 -1
  102. package/lib/cjs/EntityReferences.d.ts +49 -49
  103. package/lib/cjs/EntityReferences.d.ts.map +1 -1
  104. package/lib/cjs/EntityReferences.js +95 -95
  105. package/lib/cjs/EntityReferences.js.map +1 -1
  106. package/lib/cjs/ExportGraphics.d.ts +317 -317
  107. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  108. package/lib/cjs/ExportGraphics.js +208 -208
  109. package/lib/cjs/ExportGraphics.js.map +1 -1
  110. package/lib/cjs/ExternalSource.d.ts +95 -96
  111. package/lib/cjs/ExternalSource.d.ts.map +1 -1
  112. package/lib/cjs/ExternalSource.js +130 -131
  113. package/lib/cjs/ExternalSource.js.map +1 -1
  114. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  115. package/lib/cjs/GeoCoordConfig.js +85 -85
  116. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  117. package/lib/cjs/GeometrySummary.d.ts +4 -4
  118. package/lib/cjs/GeometrySummary.js +380 -380
  119. package/lib/cjs/GeometrySummary.js.map +1 -1
  120. package/lib/cjs/HubMock.d.ts +94 -94
  121. package/lib/cjs/HubMock.js +220 -222
  122. package/lib/cjs/HubMock.js.map +1 -1
  123. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  124. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  125. package/lib/cjs/IModelCloneContext.js +15 -15
  126. package/lib/cjs/IModelCloneContext.js.map +1 -1
  127. package/lib/cjs/IModelDb.d.ts +1222 -1196
  128. package/lib/cjs/IModelDb.d.ts.map +1 -1
  129. package/lib/cjs/IModelDb.js +2389 -2392
  130. package/lib/cjs/IModelDb.js.map +1 -1
  131. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  132. package/lib/cjs/IModelElementCloneContext.js +159 -159
  133. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  134. package/lib/cjs/IModelHost.d.ts +370 -369
  135. package/lib/cjs/IModelHost.d.ts.map +1 -1
  136. package/lib/cjs/IModelHost.js +476 -496
  137. package/lib/cjs/IModelHost.js.map +1 -1
  138. package/lib/cjs/IModelJsFs.d.ts +62 -62
  139. package/lib/cjs/IModelJsFs.js +139 -140
  140. package/lib/cjs/IModelJsFs.js.map +1 -1
  141. package/lib/cjs/IpcHost.d.ts +104 -104
  142. package/lib/cjs/IpcHost.js +276 -278
  143. package/lib/cjs/IpcHost.js.map +1 -1
  144. package/lib/cjs/LineStyle.d.ts +311 -311
  145. package/lib/cjs/LineStyle.js +295 -295
  146. package/lib/cjs/LineStyle.js.map +1 -1
  147. package/lib/cjs/LocalHub.d.ts +162 -162
  148. package/lib/cjs/LocalHub.d.ts.map +1 -1
  149. package/lib/cjs/LocalHub.js +580 -585
  150. package/lib/cjs/LocalHub.js.map +1 -1
  151. package/lib/cjs/LocalhostIpcHost.d.ts +21 -20
  152. package/lib/cjs/LocalhostIpcHost.d.ts.map +1 -1
  153. package/lib/cjs/LocalhostIpcHost.js +79 -81
  154. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  155. package/lib/cjs/Material.d.ts +131 -131
  156. package/lib/cjs/Material.d.ts.map +1 -1
  157. package/lib/cjs/Material.js +185 -181
  158. package/lib/cjs/Material.js.map +1 -1
  159. package/lib/cjs/Model.d.ts +391 -392
  160. package/lib/cjs/Model.d.ts.map +1 -1
  161. package/lib/cjs/Model.js +487 -485
  162. package/lib/cjs/Model.js.map +1 -1
  163. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  164. package/lib/cjs/NativeAppStorage.js +202 -202
  165. package/lib/cjs/NativeAppStorage.js.map +1 -1
  166. package/lib/cjs/NativeHost.d.ts +52 -52
  167. package/lib/cjs/NativeHost.d.ts.map +1 -1
  168. package/lib/cjs/NativeHost.js +158 -163
  169. package/lib/cjs/NativeHost.js.map +1 -1
  170. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  171. package/lib/cjs/NavigationRelationship.js +225 -225
  172. package/lib/cjs/NavigationRelationship.js.map +1 -1
  173. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  174. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
  175. package/lib/cjs/PromiseMemoizer.js +101 -101
  176. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  177. package/lib/cjs/PropertyStore.d.ts +123 -132
  178. package/lib/cjs/PropertyStore.d.ts.map +1 -1
  179. package/lib/cjs/PropertyStore.js +179 -11
  180. package/lib/cjs/PropertyStore.js.map +1 -1
  181. package/lib/cjs/Relationship.d.ts +413 -416
  182. package/lib/cjs/Relationship.d.ts.map +1 -1
  183. package/lib/cjs/Relationship.js +491 -494
  184. package/lib/cjs/Relationship.js.map +1 -1
  185. package/lib/cjs/RpcBackend.d.ts +5 -5
  186. package/lib/cjs/RpcBackend.js +32 -32
  187. package/lib/cjs/RpcBackend.js.map +1 -1
  188. package/lib/cjs/SQLiteDb.d.ts +317 -219
  189. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  190. package/lib/cjs/SQLiteDb.js +318 -214
  191. package/lib/cjs/SQLiteDb.js.map +1 -1
  192. package/lib/cjs/Schema.d.ts +55 -55
  193. package/lib/cjs/Schema.js +83 -83
  194. package/lib/cjs/Schema.js.map +1 -1
  195. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  196. package/lib/cjs/ServerBasedLocks.js +168 -168
  197. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  198. package/lib/cjs/SqliteStatement.d.ts +360 -360
  199. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  200. package/lib/cjs/SqliteStatement.js +586 -586
  201. package/lib/cjs/SqliteStatement.js.map +1 -1
  202. package/lib/cjs/Texture.d.ts +58 -58
  203. package/lib/cjs/Texture.js +82 -82
  204. package/lib/cjs/Texture.js.map +1 -1
  205. package/lib/cjs/TileStorage.d.ts +44 -18
  206. package/lib/cjs/TileStorage.d.ts.map +1 -1
  207. package/lib/cjs/TileStorage.js +109 -90
  208. package/lib/cjs/TileStorage.js.map +1 -1
  209. package/lib/cjs/TxnManager.d.ts +202 -202
  210. package/lib/cjs/TxnManager.d.ts.map +1 -1
  211. package/lib/cjs/TxnManager.js +356 -356
  212. package/lib/cjs/TxnManager.js.map +1 -1
  213. package/lib/cjs/ViewDefinition.d.ts +429 -439
  214. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  215. package/lib/cjs/ViewDefinition.js +640 -646
  216. package/lib/cjs/ViewDefinition.js.map +1 -1
  217. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  218. package/lib/cjs/ViewStateHydrator.js +103 -103
  219. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  220. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  221. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  222. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  223. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  224. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  225. package/lib/cjs/core-backend.d.ts +181 -184
  226. package/lib/cjs/core-backend.d.ts.map +1 -1
  227. package/lib/cjs/core-backend.js +205 -204
  228. package/lib/cjs/core-backend.js.map +1 -1
  229. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  230. package/lib/cjs/domains/FunctionalElements.js +145 -145
  231. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  232. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  233. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -1
  234. package/lib/cjs/domains/FunctionalSchema.js +39 -40
  235. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  236. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  237. package/lib/cjs/domains/GenericElements.js +263 -263
  238. package/lib/cjs/domains/GenericElements.js.map +1 -1
  239. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  240. package/lib/cjs/domains/GenericSchema.js +28 -28
  241. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  242. package/lib/cjs/rpc/multipart.d.ts +11 -11
  243. package/lib/cjs/rpc/multipart.js +71 -71
  244. package/lib/cjs/rpc/multipart.js.map +1 -1
  245. package/lib/cjs/rpc/tracing.d.ts +28 -28
  246. package/lib/cjs/rpc/tracing.js +73 -74
  247. package/lib/cjs/rpc/tracing.js.map +1 -1
  248. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  249. package/lib/cjs/rpc/web/logging.js +43 -43
  250. package/lib/cjs/rpc/web/logging.js.map +1 -1
  251. package/lib/cjs/rpc/web/request.d.ts +6 -6
  252. package/lib/cjs/rpc/web/request.js +73 -74
  253. package/lib/cjs/rpc/web/request.js.map +1 -1
  254. package/lib/cjs/rpc/web/response.d.ts +6 -6
  255. package/lib/cjs/rpc/web/response.js +105 -106
  256. package/lib/cjs/rpc/web/response.js.map +1 -1
  257. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  258. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  259. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  260. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  261. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -294
  262. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  263. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +20 -22
  264. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
  265. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +193 -205
  266. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  267. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  268. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -168
  269. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  270. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  271. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -43
  272. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  273. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  274. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  275. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  276. package/lib/cjs/workspace/Settings.d.ts +186 -186
  277. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  278. package/lib/cjs/workspace/Settings.js +155 -155
  279. package/lib/cjs/workspace/Settings.js.map +1 -1
  280. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  281. package/lib/cjs/workspace/SettingsSchemas.js +190 -191
  282. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  283. package/lib/cjs/workspace/Workspace.d.ts +411 -414
  284. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  285. package/lib/cjs/workspace/Workspace.js +521 -543
  286. package/lib/cjs/workspace/Workspace.js.map +1 -1
  287. package/package.json +25 -28
  288. package/lib/cjs/AliCloudStorageService.d.ts +0 -24
  289. package/lib/cjs/AliCloudStorageService.d.ts.map +0 -1
  290. package/lib/cjs/AliCloudStorageService.js +0 -72
  291. package/lib/cjs/AliCloudStorageService.js.map +0 -1
  292. package/lib/cjs/CloudStorageBackend.d.ts +0 -59
  293. package/lib/cjs/CloudStorageBackend.d.ts.map +0 -1
  294. package/lib/cjs/CloudStorageBackend.js +0 -174
  295. package/lib/cjs/CloudStorageBackend.js.map +0 -1
@@ -1,251 +1,255 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module Schema
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.MetaDataRegistry = exports.ClassRegistry = void 0;
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_common_1 = require("@itwin/core-common");
13
- const Entity_1 = require("./Entity");
14
- const Schema_1 = require("./Schema");
15
- const EntityReferences_1 = require("./EntityReferences");
16
- const assert = require("assert");
17
- const isGeneratedClassTag = Symbol("isGeneratedClassTag");
18
- /** The mapping between a BIS class name (in the form "schema:class") and its JavaScript constructor function
19
- * @public
20
- */
21
- class ClassRegistry {
22
- /** @internal */
23
- static isNotFoundError(err) { return (err instanceof core_common_1.IModelError) && (err.errorNumber === core_bentley_1.IModelStatus.NotFound); }
24
- /** @internal */
25
- static makeMetaDataNotFoundError(className) { return new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `metadata not found for ${className}`); }
26
- /** @internal */
27
- static register(entityClass, schema) {
28
- entityClass.schema = schema;
29
- const key = (`${schema.schemaName}:${entityClass.className}`).toLowerCase();
30
- if (this._classMap.has(key)) {
31
- const errMsg = `Class ${key} is already registered. Make sure static className member is correct on JavaScript class ${entityClass.name}`;
32
- core_bentley_1.Logger.logError("core-frontend.classRegistry", errMsg);
33
- throw new Error(errMsg);
34
- }
35
- this._classMap.set(key, entityClass);
36
- }
37
- /** Generate a proxy Schema for a domain that has not been registered. */
38
- static generateProxySchema(domain, iModel) {
39
- const hasBehavior = iModel.withPreparedSqliteStatement(`
40
- SELECT NULL FROM [ec_CustomAttribute] [c]
41
- JOIN [ec_schema] [s] ON [s].[Id] = [c].[ContainerId]
42
- JOIN [ec_class] [e] ON [e].[Id] = [c].[ClassId]
43
- JOIN [ec_schema] [b] ON [e].[SchemaId] = [b].[Id]
44
- WHERE [c].[ContainerType] = 1 AND [s].[Name] = ? AND [b].[Name] || '.' || [e].[name] = ?`, (stmt) => {
45
- stmt.bindString(1, domain);
46
- stmt.bindString(2, "BisCore.SchemaHasBehavior");
47
- return stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW;
48
- });
49
- const schemaClass = class extends Schema_1.Schema {
50
- static get schemaName() { return domain; }
51
- static get missingRequiredBehavior() { return hasBehavior; }
52
- };
53
- Schema_1.Schemas.registerSchema(schemaClass); // register the class before we return it.
54
- return schemaClass;
55
- }
56
- /** First, finds the root BisCore entity class for an entity, by traversing base classes and mixin targets (AppliesTo).
57
- * Then, gets its metadata and returns that.
58
- * @param iModel - iModel containing the metadata for this type
59
- * @param ecTypeQualifier - a full name of an ECEntityClass to find the root of
60
- * @returns the qualified full name of an ECEntityClass
61
- * @internal public for testing only
62
- */
63
- static getRootEntity(iModel, ecTypeQualifier) {
64
- var _a;
65
- const [classSchema, className] = ecTypeQualifier.split(".");
66
- const schemaItemJson = iModel.nativeDb.getSchemaItem(classSchema, className);
67
- if (schemaItemJson.error)
68
- throw new core_common_1.IModelError(schemaItemJson.error.status, `failed to get schema item '${ecTypeQualifier}'`);
69
- assert(undefined !== schemaItemJson.result);
70
- const schemaItem = JSON.parse(schemaItemJson.result);
71
- if (!("appliesTo" in schemaItem) && schemaItem.baseClass === undefined) {
72
- return ecTypeQualifier;
73
- }
74
- // typescript doesn't understand that the inverse of the above condition is
75
- // ("appliesTo" in rootclassMetaData || rootClassMetaData.baseClass !== undefined)
76
- const parentItemQualifier = (_a = schemaItem.appliesTo) !== null && _a !== void 0 ? _a : schemaItem.baseClass;
77
- return this.getRootEntity(iModel, parentItemQualifier);
78
- }
79
- /** Generate a JavaScript class from Entity metadata.
80
- * @param entityMetaData The Entity metadata that defines the class
81
- */
82
- static generateClassForEntity(entityMetaData, iModel) {
83
- var _a, _b;
84
- const name = entityMetaData.ecclass.split(":");
85
- const domainName = name[0];
86
- const className = name[1];
87
- if (0 === entityMetaData.baseClasses.length) // metadata must contain a superclass
88
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `class ${name} has no superclass`);
89
- // make sure schema exists
90
- let schema = Schema_1.Schemas.getRegisteredSchema(domainName);
91
- if (undefined === schema)
92
- schema = this.generateProxySchema(domainName, iModel); // no schema found, create it too
93
- const superclass = this._classMap.get(entityMetaData.baseClasses[0].toLowerCase());
94
- if (undefined === superclass)
95
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `cannot find superclass for class ${name}`);
96
- // user defined class hierarchies may skip a class in the hierarchy, and therefore their JS base class cannot
97
- // be used to tell if there are any generated classes in the hierarchy
98
- let generatedClassHasNonGeneratedNonCoreAncestor = false;
99
- let currentSuperclass = superclass;
100
- const MAX_ITERS = 1000;
101
- for (let i = 0; i < MAX_ITERS; ++i) {
102
- if (currentSuperclass.schema.schemaName === "BisCore")
103
- break;
104
- if (!currentSuperclass.isGeneratedClass) {
105
- generatedClassHasNonGeneratedNonCoreAncestor = true;
106
- break;
107
- }
108
- const superclassMetaData = iModel.classMetaDataRegistry.find(currentSuperclass.classFullName);
109
- if (superclassMetaData === undefined)
110
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadSchema, `could not find the metadata for class '${currentSuperclass.name}', class metadata should be loaded by now`);
111
- const maybeNextSuperclass = this.getClass(superclassMetaData.baseClasses[0], iModel);
112
- if (maybeNextSuperclass === undefined)
113
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadSchema, `could not find the base class of '${currentSuperclass.name}', all generated classes must have a base class`);
114
- currentSuperclass = maybeNextSuperclass;
115
- }
116
- const generatedClass = (_b = class extends superclass {
117
- static get className() { return className; }
118
- static get isGeneratedClass() { return this.hasOwnProperty(isGeneratedClassTag); }
119
- },
120
- _a = isGeneratedClassTag,
121
- _b[_a] = true,
122
- _b);
123
- // the above creates an anonymous class. For help debugging, set the "constructor.name" property to be the same as the bisClassName.
124
- Object.defineProperty(generatedClass, "name", { get: () => className }); // this is the (only) way to change that readonly property.
125
- // a class only gets an automatic `collectReferenceConcreteIds` implementation if:
126
- // - it is not in the `BisCore` schema
127
- // - there are no ancestors with manually registered JS implementations, (excluding BisCore base classes)
128
- if (!generatedClassHasNonGeneratedNonCoreAncestor) {
129
- const navigationProps = Object.entries(entityMetaData.properties)
130
- .filter(([_name, prop]) => prop.isNavigation)
131
- // eslint-disable-next-line @typescript-eslint/no-shadow
132
- .map(([name, prop]) => {
133
- assert(prop.relationshipClass);
134
- const maybeMetaData = iModel.nativeDb.getSchemaItem(...prop.relationshipClass.split(":"));
135
- assert(maybeMetaData.result !== undefined, "The nav props relationship metadata was not found");
136
- const relMetaData = JSON.parse(maybeMetaData.result);
137
- const rootClassMetaData = ClassRegistry.getRootEntity(iModel, relMetaData.target.constraintClasses[0]);
138
- // root class must be in BisCore so should be loaded since biscore classes will never get this
139
- // generated implementation
140
- const normalizeClassName = (clsName) => clsName.replace(".", ":");
141
- const rootClass = ClassRegistry.findRegisteredClass(normalizeClassName(rootClassMetaData));
142
- assert(rootClass, `The root class for ${prop.relationshipClass} was not in BisCore.`);
143
- return { name, concreteEntityType: EntityReferences_1.EntityReferences.typeFromClass(rootClass) };
144
- });
145
- Object.defineProperty(generatedClass.prototype, "collectReferenceConcreteIds", {
146
- value(referenceIds) {
147
- // eslint-disable-next-line @typescript-eslint/dot-notation
148
- const superImpl = superclass.prototype["collectReferenceConcreteIds"];
149
- superImpl.call(this, referenceIds);
150
- for (const navProp of navigationProps) {
151
- const relatedElem = this[navProp.name]; // cast to any since subclass can have any extensions
152
- if (!relatedElem || !core_bentley_1.Id64.isValid(relatedElem.id))
153
- continue;
154
- const referenceId = EntityReferences_1.EntityReferences.fromEntityType(relatedElem.id, navProp.concreteEntityType);
155
- referenceIds.add(referenceId);
156
- }
157
- },
158
- // defaults for methods on a prototype (required for sinon to stub out methods on tests)
159
- writable: true,
160
- configurable: true,
161
- });
162
- }
163
- // if the schema is a proxy for a domain with behavior, throw exceptions for all protected operations
164
- if (schema.missingRequiredBehavior) {
165
- const throwError = () => {
166
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.WrongHandler, `Schema [${domainName}] not registered, but is marked with SchemaHasBehavior`);
167
- };
168
- superclass.protectedOperations.forEach((operation) => generatedClass[operation] = throwError);
169
- }
170
- this.register(generatedClass, schema); // register it before returning
171
- return generatedClass;
172
- }
173
- /** Register all of the classes found in the given module that derive from Entity. See the example in [[Schema]]
174
- * @param moduleObj The module to search for subclasses of Entity
175
- * @param schema The schema for all found classes
176
- */
177
- static registerModule(moduleObj, schema) {
178
- for (const thisMember in moduleObj) { // eslint-disable-line guard-for-in
179
- const thisClass = moduleObj[thisMember];
180
- if (thisClass.prototype instanceof Entity_1.Entity)
181
- this.register(thisClass, schema);
182
- }
183
- }
184
- /**
185
- * This function fetches the specified Entity from the imodel, generates a JavaScript class for it, and registers the generated
186
- * class. This function also ensures that all of the base classes of the Entity exist and are registered.
187
- */
188
- static generateClass(classFullName, iModel) {
189
- const metadata = iModel.classMetaDataRegistry.find(classFullName);
190
- if (metadata === undefined || metadata.ecclass === undefined)
191
- throw this.makeMetaDataNotFoundError(classFullName);
192
- // Make sure we have all base classes registered.
193
- if (metadata.baseClasses && (0 !== metadata.baseClasses.length))
194
- this.getClass(metadata.baseClasses[0], iModel);
195
- // Now we can generate the class from the classDef.
196
- return this.generateClassForEntity(metadata, iModel);
197
- }
198
- /** Find a registered class by classFullName.
199
- * @param classFullName class to find
200
- * @param iModel The IModel that contains the class definitions
201
- * @returns The Entity class or undefined
202
- */
203
- static findRegisteredClass(classFullName) {
204
- return this._classMap.get(classFullName.toLowerCase());
205
- }
206
- /** Get the Entity class for the specified Entity className.
207
- * @param classFullName The full BIS class name of the Entity
208
- * @param iModel The IModel that contains the class definitions
209
- * @returns The Entity class
210
- */
211
- static getClass(classFullName, iModel) {
212
- const key = classFullName.toLowerCase();
213
- const ctor = this._classMap.get(key);
214
- return ctor ? ctor : this.generateClass(key, iModel);
215
- }
216
- /** Unregister a class, by name, if one is already registered.
217
- * This function is not normally needed, but is useful for cases where a generated *proxy* class needs to be replaced by the *real* class.
218
- * @param classFullName Name of the class to unregister
219
- * @return true if the class was unregistered
220
- * @internal
221
- */
222
- static unregisterCLass(classFullName) { return this._classMap.delete(classFullName.toLowerCase()); }
223
- /** Unregister all classes from a schema.
224
- * This function is not normally needed, but is useful for cases where a generated *proxy* schema needs to be replaced by the *real* schema.
225
- * @param schema Name of the schema to unregister
226
- * @internal
227
- */
228
- static unregisterClassesFrom(schema) {
229
- for (const entry of Array.from(this._classMap)) {
230
- if (entry[1].schema === schema)
231
- this.unregisterCLass(entry[0]);
232
- }
233
- }
234
- }
235
- exports.ClassRegistry = ClassRegistry;
236
- ClassRegistry._classMap = new Map();
237
- /**
238
- * A cache that records the mapping between class names and class metadata
239
- * @internal
240
- */
241
- class MetaDataRegistry {
242
- constructor() {
243
- this._registry = new Map();
244
- }
245
- /** Get the specified Entity metadata */
246
- find(classFullName) { return this._registry.get(classFullName.toLowerCase()); }
247
- /** Add metadata to the cache */
248
- add(classFullName, metaData) { this._registry.set(classFullName.toLowerCase(), metaData); }
249
- }
250
- exports.MetaDataRegistry = MetaDataRegistry;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module Schema
8
+ */
9
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
10
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
11
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.MetaDataRegistry = exports.ClassRegistry = void 0;
15
+ const core_bentley_1 = require("@itwin/core-bentley");
16
+ const core_common_1 = require("@itwin/core-common");
17
+ const Entity_1 = require("./Entity");
18
+ const Schema_1 = require("./Schema");
19
+ const EntityReferences_1 = require("./EntityReferences");
20
+ const assert = require("assert");
21
+ const isGeneratedClassTag = Symbol("isGeneratedClassTag");
22
+ /** The mapping between a BIS class name (in the form "schema:class") and its JavaScript constructor function
23
+ * @public
24
+ */
25
+ class ClassRegistry {
26
+ /** @internal */
27
+ static isNotFoundError(err) { return (err instanceof core_common_1.IModelError) && (err.errorNumber === core_bentley_1.IModelStatus.NotFound); }
28
+ /** @internal */
29
+ static makeMetaDataNotFoundError(className) { return new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `metadata not found for ${className}`); }
30
+ /** @internal */
31
+ static register(entityClass, schema) {
32
+ entityClass.schema = schema;
33
+ const key = (`${schema.schemaName}:${entityClass.className}`).toLowerCase();
34
+ if (this._classMap.has(key)) {
35
+ const errMsg = `Class ${key} is already registered. Make sure static className member is correct on JavaScript class ${entityClass.name}`;
36
+ core_bentley_1.Logger.logError("core-frontend.classRegistry", errMsg);
37
+ throw new Error(errMsg);
38
+ }
39
+ this._classMap.set(key, entityClass);
40
+ }
41
+ /** Generate a proxy Schema for a domain that has not been registered. */
42
+ static generateProxySchema(domain, iModel) {
43
+ const hasBehavior = iModel.withPreparedSqliteStatement(`
44
+ SELECT NULL FROM [ec_CustomAttribute] [c]
45
+ JOIN [ec_schema] [s] ON [s].[Id] = [c].[ContainerId]
46
+ JOIN [ec_class] [e] ON [e].[Id] = [c].[ClassId]
47
+ JOIN [ec_schema] [b] ON [e].[SchemaId] = [b].[Id]
48
+ WHERE [c].[ContainerType] = 1 AND [s].[Name] = ? AND [b].[Name] || '.' || [e].[name] = ?`, (stmt) => {
49
+ stmt.bindString(1, domain);
50
+ stmt.bindString(2, "BisCore.SchemaHasBehavior");
51
+ return stmt.step() === core_bentley_1.DbResult.BE_SQLITE_ROW;
52
+ });
53
+ const schemaClass = class extends Schema_1.Schema {
54
+ static get schemaName() { return domain; }
55
+ static get missingRequiredBehavior() { return hasBehavior; }
56
+ };
57
+ Schema_1.Schemas.registerSchema(schemaClass); // register the class before we return it.
58
+ return schemaClass;
59
+ }
60
+ /** First, finds the root BisCore entity class for an entity, by traversing base classes and mixin targets (AppliesTo).
61
+ * Then, gets its metadata and returns that.
62
+ * @param iModel - iModel containing the metadata for this type
63
+ * @param ecTypeQualifier - a full name of an ECEntityClass to find the root of
64
+ * @returns the qualified full name of an ECEntityClass
65
+ * @internal public for testing only
66
+ */
67
+ static getRootEntity(iModel, ecTypeQualifier) {
68
+ const [classSchema, className] = ecTypeQualifier.split(".");
69
+ const schemaItemJson = iModel.nativeDb.getSchemaItem(classSchema, className);
70
+ if (schemaItemJson.error)
71
+ throw new core_common_1.IModelError(schemaItemJson.error.status, `failed to get schema item '${ecTypeQualifier}'`);
72
+ assert(undefined !== schemaItemJson.result);
73
+ const schemaItem = JSON.parse(schemaItemJson.result);
74
+ if (!("appliesTo" in schemaItem) && schemaItem.baseClass === undefined) {
75
+ return ecTypeQualifier;
76
+ }
77
+ // typescript doesn't understand that the inverse of the above condition is
78
+ // ("appliesTo" in rootclassMetaData || rootClassMetaData.baseClass !== undefined)
79
+ const parentItemQualifier = schemaItem.appliesTo ?? schemaItem.baseClass;
80
+ return this.getRootEntity(iModel, parentItemQualifier);
81
+ }
82
+ /** Generate a JavaScript class from Entity metadata.
83
+ * @param entityMetaData The Entity metadata that defines the class
84
+ */
85
+ static generateClassForEntity(entityMetaData, iModel) {
86
+ var _a, _b;
87
+ const name = entityMetaData.ecclass.split(":");
88
+ const domainName = name[0];
89
+ const className = name[1];
90
+ if (0 === entityMetaData.baseClasses.length) // metadata must contain a superclass
91
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadArg, `class ${name} has no superclass`);
92
+ // make sure schema exists
93
+ let schema = Schema_1.Schemas.getRegisteredSchema(domainName);
94
+ if (undefined === schema)
95
+ schema = this.generateProxySchema(domainName, iModel); // no schema found, create it too
96
+ const superclass = this._classMap.get(entityMetaData.baseClasses[0].toLowerCase());
97
+ if (undefined === superclass)
98
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `cannot find superclass for class ${name}`);
99
+ // user defined class hierarchies may skip a class in the hierarchy, and therefore their JS base class cannot
100
+ // be used to tell if there are any generated classes in the hierarchy
101
+ let generatedClassHasNonGeneratedNonCoreAncestor = false;
102
+ let currentSuperclass = superclass;
103
+ const MAX_ITERS = 1000;
104
+ for (let i = 0; i < MAX_ITERS; ++i) {
105
+ if (currentSuperclass.schema.schemaName === "BisCore")
106
+ break;
107
+ if (!currentSuperclass.isGeneratedClass) {
108
+ generatedClassHasNonGeneratedNonCoreAncestor = true;
109
+ break;
110
+ }
111
+ const superclassMetaData = iModel.classMetaDataRegistry.find(currentSuperclass.classFullName);
112
+ if (superclassMetaData === undefined)
113
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadSchema, `could not find the metadata for class '${currentSuperclass.name}', class metadata should be loaded by now`);
114
+ const maybeNextSuperclass = this.getClass(superclassMetaData.baseClasses[0], iModel);
115
+ if (maybeNextSuperclass === undefined)
116
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadSchema, `could not find the base class of '${currentSuperclass.name}', all generated classes must have a base class`);
117
+ currentSuperclass = maybeNextSuperclass;
118
+ }
119
+ const generatedClass = (_b = class extends superclass {
120
+ static get className() { return className; }
121
+ static get isGeneratedClass() { return this.hasOwnProperty(isGeneratedClassTag); }
122
+ },
123
+ _a = isGeneratedClassTag,
124
+ __setFunctionName(_b, "generatedClass"),
125
+ _b[_a] = true,
126
+ _b);
127
+ // the above creates an anonymous class. For help debugging, set the "constructor.name" property to be the same as the bisClassName.
128
+ Object.defineProperty(generatedClass, "name", { get: () => className }); // this is the (only) way to change that readonly property.
129
+ // a class only gets an automatic `collectReferenceIds` implementation if:
130
+ // - it is not in the `BisCore` schema
131
+ // - there are no ancestors with manually registered JS implementations, (excluding BisCore base classes)
132
+ if (!generatedClassHasNonGeneratedNonCoreAncestor) {
133
+ const navigationProps = Object.entries(entityMetaData.properties)
134
+ .filter(([_name, prop]) => prop.isNavigation)
135
+ // eslint-disable-next-line @typescript-eslint/no-shadow
136
+ .map(([name, prop]) => {
137
+ assert(prop.relationshipClass);
138
+ const maybeMetaData = iModel.nativeDb.getSchemaItem(...prop.relationshipClass.split(":"));
139
+ assert(maybeMetaData.result !== undefined, "The nav props relationship metadata was not found");
140
+ const relMetaData = JSON.parse(maybeMetaData.result);
141
+ const rootClassMetaData = ClassRegistry.getRootEntity(iModel, relMetaData.target.constraintClasses[0]);
142
+ // root class must be in BisCore so should be loaded since biscore classes will never get this
143
+ // generated implementation
144
+ const normalizeClassName = (clsName) => clsName.replace(".", ":");
145
+ const rootClass = ClassRegistry.findRegisteredClass(normalizeClassName(rootClassMetaData));
146
+ assert(rootClass, `The root class for ${prop.relationshipClass} was not in BisCore.`);
147
+ return { name, concreteEntityType: EntityReferences_1.EntityReferences.typeFromClass(rootClass) };
148
+ });
149
+ Object.defineProperty(generatedClass.prototype, "collectReferenceIds", {
150
+ value(referenceIds) {
151
+ // eslint-disable-next-line @typescript-eslint/dot-notation
152
+ const superImpl = superclass.prototype["collectReferenceIds"];
153
+ superImpl.call(this, referenceIds);
154
+ for (const navProp of navigationProps) {
155
+ const relatedElem = this[navProp.name]; // cast to any since subclass can have any extensions
156
+ if (!relatedElem || !core_bentley_1.Id64.isValid(relatedElem.id))
157
+ continue;
158
+ const referenceId = EntityReferences_1.EntityReferences.fromEntityType(relatedElem.id, navProp.concreteEntityType);
159
+ referenceIds.add(referenceId);
160
+ }
161
+ },
162
+ // defaults for methods on a prototype (required for sinon to stub out methods on tests)
163
+ writable: true,
164
+ configurable: true,
165
+ });
166
+ }
167
+ // if the schema is a proxy for a domain with behavior, throw exceptions for all protected operations
168
+ if (schema.missingRequiredBehavior) {
169
+ const throwError = () => {
170
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.WrongHandler, `Schema [${domainName}] not registered, but is marked with SchemaHasBehavior`);
171
+ };
172
+ superclass.protectedOperations.forEach((operation) => generatedClass[operation] = throwError);
173
+ }
174
+ this.register(generatedClass, schema); // register it before returning
175
+ return generatedClass;
176
+ }
177
+ /** Register all of the classes found in the given module that derive from Entity. See the example in [[Schema]]
178
+ * @param moduleObj The module to search for subclasses of Entity
179
+ * @param schema The schema for all found classes
180
+ */
181
+ static registerModule(moduleObj, schema) {
182
+ for (const thisMember in moduleObj) { // eslint-disable-line guard-for-in
183
+ const thisClass = moduleObj[thisMember];
184
+ if (thisClass.prototype instanceof Entity_1.Entity)
185
+ this.register(thisClass, schema);
186
+ }
187
+ }
188
+ /**
189
+ * This function fetches the specified Entity from the imodel, generates a JavaScript class for it, and registers the generated
190
+ * class. This function also ensures that all of the base classes of the Entity exist and are registered.
191
+ */
192
+ static generateClass(classFullName, iModel) {
193
+ const metadata = iModel.classMetaDataRegistry.find(classFullName);
194
+ if (metadata === undefined || metadata.ecclass === undefined)
195
+ throw this.makeMetaDataNotFoundError(classFullName);
196
+ // Make sure we have all base classes registered.
197
+ if (metadata.baseClasses && (0 !== metadata.baseClasses.length))
198
+ this.getClass(metadata.baseClasses[0], iModel);
199
+ // Now we can generate the class from the classDef.
200
+ return this.generateClassForEntity(metadata, iModel);
201
+ }
202
+ /** Find a registered class by classFullName.
203
+ * @param classFullName class to find
204
+ * @param iModel The IModel that contains the class definitions
205
+ * @returns The Entity class or undefined
206
+ */
207
+ static findRegisteredClass(classFullName) {
208
+ return this._classMap.get(classFullName.toLowerCase());
209
+ }
210
+ /** Get the Entity class for the specified Entity className.
211
+ * @param classFullName The full BIS class name of the Entity
212
+ * @param iModel The IModel that contains the class definitions
213
+ * @returns The Entity class
214
+ */
215
+ static getClass(classFullName, iModel) {
216
+ const key = classFullName.toLowerCase();
217
+ const ctor = this._classMap.get(key);
218
+ return ctor ? ctor : this.generateClass(key, iModel);
219
+ }
220
+ /** Unregister a class, by name, if one is already registered.
221
+ * This function is not normally needed, but is useful for cases where a generated *proxy* class needs to be replaced by the *real* class.
222
+ * @param classFullName Name of the class to unregister
223
+ * @return true if the class was unregistered
224
+ * @internal
225
+ */
226
+ static unregisterCLass(classFullName) { return this._classMap.delete(classFullName.toLowerCase()); }
227
+ /** Unregister all classes from a schema.
228
+ * This function is not normally needed, but is useful for cases where a generated *proxy* schema needs to be replaced by the *real* schema.
229
+ * @param schema Name of the schema to unregister
230
+ * @internal
231
+ */
232
+ static unregisterClassesFrom(schema) {
233
+ for (const entry of Array.from(this._classMap)) {
234
+ if (entry[1].schema === schema)
235
+ this.unregisterCLass(entry[0]);
236
+ }
237
+ }
238
+ }
239
+ ClassRegistry._classMap = new Map();
240
+ exports.ClassRegistry = ClassRegistry;
241
+ /**
242
+ * A cache that records the mapping between class names and class metadata
243
+ * @internal
244
+ */
245
+ class MetaDataRegistry {
246
+ constructor() {
247
+ this._registry = new Map();
248
+ }
249
+ /** Get the specified Entity metadata */
250
+ find(classFullName) { return this._registry.get(classFullName.toLowerCase()); }
251
+ /** Add metadata to the cache */
252
+ add(classFullName, metaData) { this._registry.set(classFullName.toLowerCase(), metaData); }
253
+ }
254
+ exports.MetaDataRegistry = MetaDataRegistry;
251
255
  //# sourceMappingURL=ClassRegistry.js.map