@itwin/core-backend 4.8.0-dev.3 → 4.8.0-dev.32

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 (249) hide show
  1. package/CHANGELOG.md +57 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +18 -16
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js +16 -15
  5. package/lib/cjs/BackendHubAccess.js.map +1 -1
  6. package/lib/cjs/BackendLoggerCategory.d.ts +3 -1
  7. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.js +2 -0
  9. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  10. package/lib/cjs/BlobContainerService.d.ts +3 -3
  11. package/lib/cjs/BlobContainerService.d.ts.map +1 -1
  12. package/lib/cjs/BlobContainerService.js.map +1 -1
  13. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  14. package/lib/cjs/BriefcaseManager.js +19 -11
  15. package/lib/cjs/BriefcaseManager.js.map +1 -1
  16. package/lib/cjs/Category.d.ts +0 -6
  17. package/lib/cjs/Category.d.ts.map +1 -1
  18. package/lib/cjs/Category.js +0 -6
  19. package/lib/cjs/Category.js.map +1 -1
  20. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  21. package/lib/cjs/ChangeSummaryManager.js +11 -9
  22. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  23. package/lib/cjs/ChangedElementsDb.d.ts +1 -0
  24. package/lib/cjs/ChangedElementsDb.d.ts.map +1 -1
  25. package/lib/cjs/ChangedElementsDb.js +6 -4
  26. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  27. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  28. package/lib/cjs/ChangesetECAdaptor.js +26 -21
  29. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  30. package/lib/cjs/ChannelControl.d.ts +4 -26
  31. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  32. package/lib/cjs/ChannelControl.js +2 -101
  33. package/lib/cjs/ChannelControl.js.map +1 -1
  34. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  35. package/lib/cjs/CheckpointManager.js +5 -3
  36. package/lib/cjs/CheckpointManager.js.map +1 -1
  37. package/lib/cjs/ClassRegistry.d.ts.map +1 -1
  38. package/lib/cjs/ClassRegistry.js +3 -2
  39. package/lib/cjs/ClassRegistry.js.map +1 -1
  40. package/lib/cjs/CloudSqlite.d.ts +49 -24
  41. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  42. package/lib/cjs/CloudSqlite.js +66 -7
  43. package/lib/cjs/CloudSqlite.js.map +1 -1
  44. package/lib/cjs/CodeService.d.ts +4 -4
  45. package/lib/cjs/CodeService.d.ts.map +1 -1
  46. package/lib/cjs/CodeService.js.map +1 -1
  47. package/lib/cjs/DevTools.d.ts.map +1 -1
  48. package/lib/cjs/DevTools.js +2 -1
  49. package/lib/cjs/DevTools.js.map +1 -1
  50. package/lib/cjs/DisplayStyle.d.ts +0 -3
  51. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  52. package/lib/cjs/DisplayStyle.js +0 -3
  53. package/lib/cjs/DisplayStyle.js.map +1 -1
  54. package/lib/cjs/ECDb.d.ts +6 -1
  55. package/lib/cjs/ECDb.d.ts.map +1 -1
  56. package/lib/cjs/ECDb.js +19 -14
  57. package/lib/cjs/ECDb.js.map +1 -1
  58. package/lib/cjs/ECSchemaXmlContext.js +2 -2
  59. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  60. package/lib/cjs/ECSqlStatement.d.ts +6 -3
  61. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  62. package/lib/cjs/ECSqlStatement.js +3 -3
  63. package/lib/cjs/ECSqlStatement.js.map +1 -1
  64. package/lib/cjs/Element.d.ts +3 -60
  65. package/lib/cjs/Element.d.ts.map +1 -1
  66. package/lib/cjs/Element.js +8 -64
  67. package/lib/cjs/Element.js.map +1 -1
  68. package/lib/cjs/ElementAspect.d.ts +0 -5
  69. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  70. package/lib/cjs/ElementAspect.js +4 -8
  71. package/lib/cjs/ElementAspect.js.map +1 -1
  72. package/lib/cjs/ElementGraphics.d.ts.map +1 -1
  73. package/lib/cjs/ElementGraphics.js +2 -1
  74. package/lib/cjs/ElementGraphics.js.map +1 -1
  75. package/lib/cjs/GeoCoordConfig.d.ts +10 -0
  76. package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
  77. package/lib/cjs/GeoCoordConfig.js +22 -24
  78. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  79. package/lib/cjs/GeographicCRSServices.js +2 -2
  80. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  81. package/lib/cjs/GeometrySummary.d.ts.map +1 -1
  82. package/lib/cjs/GeometrySummary.js +2 -1
  83. package/lib/cjs/GeometrySummary.js.map +1 -1
  84. package/lib/cjs/IModelDb.d.ts +33 -98
  85. package/lib/cjs/IModelDb.d.ts.map +1 -1
  86. package/lib/cjs/IModelDb.js +242 -156
  87. package/lib/cjs/IModelDb.js.map +1 -1
  88. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  89. package/lib/cjs/IModelElementCloneContext.js +5 -4
  90. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  91. package/lib/cjs/IModelHost.d.ts +13 -4
  92. package/lib/cjs/IModelHost.d.ts.map +1 -1
  93. package/lib/cjs/IModelHost.js +39 -32
  94. package/lib/cjs/IModelHost.js.map +1 -1
  95. package/lib/cjs/IpcHost.d.ts.map +1 -1
  96. package/lib/cjs/IpcHost.js +15 -13
  97. package/lib/cjs/IpcHost.js.map +1 -1
  98. package/lib/cjs/LocalHub.d.ts +2 -2
  99. package/lib/cjs/LocalHub.d.ts.map +1 -1
  100. package/lib/cjs/LocalHub.js +17 -17
  101. package/lib/cjs/LocalHub.js.map +1 -1
  102. package/lib/cjs/LockControl.d.ts +73 -0
  103. package/lib/cjs/LockControl.d.ts.map +1 -0
  104. package/lib/cjs/LockControl.js +11 -0
  105. package/lib/cjs/LockControl.js.map +1 -0
  106. package/lib/cjs/Material.d.ts +2 -5
  107. package/lib/cjs/Material.d.ts.map +1 -1
  108. package/lib/cjs/Material.js +6 -4
  109. package/lib/cjs/Material.js.map +1 -1
  110. package/lib/cjs/Model.d.ts +0 -22
  111. package/lib/cjs/Model.d.ts.map +1 -1
  112. package/lib/cjs/Model.js +5 -26
  113. package/lib/cjs/Model.js.map +1 -1
  114. package/lib/cjs/PropertyStore.d.ts +17 -7
  115. package/lib/cjs/PropertyStore.d.ts.map +1 -1
  116. package/lib/cjs/PropertyStore.js +11 -5
  117. package/lib/cjs/PropertyStore.js.map +1 -1
  118. package/lib/cjs/Relationship.d.ts +0 -12
  119. package/lib/cjs/Relationship.d.ts.map +1 -1
  120. package/lib/cjs/Relationship.js +5 -16
  121. package/lib/cjs/Relationship.js.map +1 -1
  122. package/lib/cjs/SQLiteDb.d.ts +8 -4
  123. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  124. package/lib/cjs/SQLiteDb.js +25 -19
  125. package/lib/cjs/SQLiteDb.js.map +1 -1
  126. package/lib/cjs/SchemaSync.d.ts +4 -1
  127. package/lib/cjs/SchemaSync.d.ts.map +1 -1
  128. package/lib/cjs/SchemaSync.js +24 -11
  129. package/lib/cjs/SchemaSync.js.map +1 -1
  130. package/lib/cjs/SchemaUtils.js +3 -3
  131. package/lib/cjs/SchemaUtils.js.map +1 -1
  132. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  133. package/lib/cjs/SqliteChangesetReader.js +2 -2
  134. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  135. package/lib/cjs/SqliteStatement.js +2 -2
  136. package/lib/cjs/SqliteStatement.js.map +1 -1
  137. package/lib/cjs/TextAnnotationGeometry.d.ts +5 -1
  138. package/lib/cjs/TextAnnotationGeometry.d.ts.map +1 -1
  139. package/lib/cjs/TextAnnotationGeometry.js +11 -8
  140. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  141. package/lib/cjs/TextAnnotationLayout.d.ts +21 -13
  142. package/lib/cjs/TextAnnotationLayout.d.ts.map +1 -1
  143. package/lib/cjs/TextAnnotationLayout.js +134 -92
  144. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  145. package/lib/cjs/TxnManager.d.ts +2 -1
  146. package/lib/cjs/TxnManager.d.ts.map +1 -1
  147. package/lib/cjs/TxnManager.js +4 -2
  148. package/lib/cjs/TxnManager.js.map +1 -1
  149. package/lib/cjs/ViewDefinition.d.ts +1 -18
  150. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  151. package/lib/cjs/ViewDefinition.js +1 -18
  152. package/lib/cjs/ViewDefinition.js.map +1 -1
  153. package/lib/cjs/ViewStore.d.ts +16 -2
  154. package/lib/cjs/ViewStore.d.ts.map +1 -1
  155. package/lib/cjs/ViewStore.js +20 -6
  156. package/lib/cjs/ViewStore.js.map +1 -1
  157. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +33 -0
  158. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +17 -21
  159. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +80 -38
  160. package/lib/cjs/assets/Settings/backend.setting.json5 +8 -119
  161. package/lib/cjs/core-backend.d.ts +4 -2
  162. package/lib/cjs/core-backend.d.ts.map +1 -1
  163. package/lib/cjs/core-backend.js +5 -6
  164. package/lib/cjs/core-backend.js.map +1 -1
  165. package/lib/cjs/domains/FunctionalElements.d.ts +0 -10
  166. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  167. package/lib/cjs/domains/FunctionalElements.js +0 -10
  168. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  169. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -1
  170. package/lib/cjs/domains/FunctionalSchema.js +2 -1
  171. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  172. package/lib/cjs/domains/GenericElements.d.ts +0 -18
  173. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  174. package/lib/cjs/domains/GenericElements.js +0 -18
  175. package/lib/cjs/domains/GenericElements.js.map +1 -1
  176. package/lib/cjs/internal/ChangesetConflictArgs.d.ts +24 -0
  177. package/lib/cjs/internal/ChangesetConflictArgs.d.ts.map +1 -0
  178. package/lib/cjs/internal/ChangesetConflictArgs.js +7 -0
  179. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -0
  180. package/lib/cjs/internal/ChannelAdmin.d.ts +34 -0
  181. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -0
  182. package/lib/cjs/internal/ChannelAdmin.js +117 -0
  183. package/lib/cjs/internal/ChannelAdmin.js.map +1 -0
  184. package/lib/cjs/internal/NativePlatform.d.ts +15 -0
  185. package/lib/cjs/internal/NativePlatform.d.ts.map +1 -0
  186. package/lib/cjs/internal/NativePlatform.js +49 -0
  187. package/lib/cjs/internal/NativePlatform.js.map +1 -0
  188. package/lib/cjs/internal/NoLocks.d.ts +6 -0
  189. package/lib/cjs/internal/NoLocks.d.ts.map +1 -0
  190. package/lib/cjs/internal/NoLocks.js +31 -0
  191. package/lib/cjs/internal/NoLocks.js.map +1 -0
  192. package/lib/cjs/{ServerBasedLocks.d.ts → internal/ServerBasedLocks.d.ts} +10 -16
  193. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -0
  194. package/lib/cjs/{ServerBasedLocks.js → internal/ServerBasedLocks.js} +29 -18
  195. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -0
  196. package/lib/cjs/internal/Symbols.d.ts +11 -0
  197. package/lib/cjs/internal/Symbols.d.ts.map +1 -0
  198. package/lib/cjs/internal/Symbols.js +21 -0
  199. package/lib/cjs/internal/Symbols.js.map +1 -0
  200. package/lib/cjs/internal/cross-package.d.ts +4 -0
  201. package/lib/cjs/internal/cross-package.d.ts.map +1 -0
  202. package/lib/cjs/internal/cross-package.js +16 -0
  203. package/lib/cjs/internal/cross-package.js.map +1 -0
  204. package/lib/cjs/internal/workspace/SettingsImpl.d.ts +43 -0
  205. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -0
  206. package/lib/cjs/internal/workspace/SettingsImpl.js +161 -0
  207. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -0
  208. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts +6 -0
  209. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -0
  210. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +276 -0
  211. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -0
  212. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +41 -0
  213. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -0
  214. package/lib/cjs/internal/workspace/WorkspaceImpl.js +696 -0
  215. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -0
  216. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.d.ts +10 -0
  217. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.d.ts.map +1 -0
  218. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js +42 -0
  219. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -0
  220. package/lib/cjs/rpc/tracing.d.ts.map +1 -1
  221. package/lib/cjs/rpc/tracing.js +5 -2
  222. package/lib/cjs/rpc/tracing.js.map +1 -1
  223. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -0
  224. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  225. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +10 -6
  226. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  227. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
  228. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +5 -3
  229. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  230. package/lib/cjs/workspace/Settings.d.ts +167 -138
  231. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  232. package/lib/cjs/workspace/Settings.js +68 -138
  233. package/lib/cjs/workspace/Settings.js.map +1 -1
  234. package/lib/cjs/workspace/SettingsSchemas.d.ts +112 -48
  235. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
  236. package/lib/cjs/workspace/SettingsSchemas.js +1 -172
  237. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  238. package/lib/cjs/workspace/Workspace.d.ts +411 -277
  239. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  240. package/lib/cjs/workspace/Workspace.js +76 -457
  241. package/lib/cjs/workspace/Workspace.js.map +1 -1
  242. package/lib/cjs/workspace/WorkspaceEditor.d.ts +245 -0
  243. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -0
  244. package/lib/cjs/workspace/WorkspaceEditor.js +34 -0
  245. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -0
  246. package/package.json +15 -14
  247. package/lib/cjs/ServerBasedLocks.d.ts.map +0 -1
  248. package/lib/cjs/ServerBasedLocks.js.map +0 -1
  249. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +0 -45
@@ -11,13 +11,13 @@ exports.ExternalSourceAspect = exports.ChannelRootAspect = exports.ElementMultiA
11
11
  const core_common_1 = require("@itwin/core-common");
12
12
  const Entity_1 = require("./Entity");
13
13
  const core_bentley_1 = require("@itwin/core-bentley");
14
+ const Symbols_1 = require("./internal/Symbols");
14
15
  /** An Element Aspect is a class that defines a set of properties that are related to (and owned by) a single element.
15
16
  * Semantically, an ElementAspect can be considered part of the Element. Thus, an ElementAspect is deleted if its owning Element is deleted.
16
17
  * BIS Guideline: Subclass ElementUniqueAspect or ElementMultiAspect rather than subclassing ElementAspect directly.
17
18
  * @public
18
19
  */
19
20
  class ElementAspect extends Entity_1.Entity {
20
- /** @internal */
21
21
  static get className() { return "ElementAspect"; }
22
22
  /** Construct an aspect from its JSON representation and its containing iModel. */
23
23
  constructor(props, iModel) {
@@ -36,7 +36,7 @@ class ElementAspect extends Entity_1.Entity {
36
36
  */
37
37
  static onInsert(arg) {
38
38
  const { props, iModel } = arg;
39
- iModel.channels.verifyChannel(arg.model);
39
+ iModel.channels[Symbols_1._verifyChannel](arg.model);
40
40
  iModel.locks.checkExclusiveLock(props.element.id, "element", "insert aspect");
41
41
  }
42
42
  /** Called after a new ElementAspect was inserted.
@@ -51,7 +51,7 @@ class ElementAspect extends Entity_1.Entity {
51
51
  */
52
52
  static onUpdate(arg) {
53
53
  const { props, iModel } = arg;
54
- iModel.channels.verifyChannel(arg.model);
54
+ iModel.channels[Symbols_1._verifyChannel](arg.model);
55
55
  iModel.locks.checkExclusiveLock(props.element.id, "element", "update aspect");
56
56
  }
57
57
  /** Called after an ElementAspect was updated.
@@ -66,7 +66,7 @@ class ElementAspect extends Entity_1.Entity {
66
66
  */
67
67
  static onDelete(arg) {
68
68
  const { aspectId, iModel } = arg;
69
- iModel.channels.verifyChannel(arg.model);
69
+ iModel.channels[Symbols_1._verifyChannel](arg.model);
70
70
  const { element } = iModel.elements.getAspect(aspectId);
71
71
  iModel.locks.checkExclusiveLock(element.id, "element", "delete aspect");
72
72
  }
@@ -81,7 +81,6 @@ exports.ElementAspect = ElementAspect;
81
81
  * @public
82
82
  */
83
83
  class ElementUniqueAspect extends ElementAspect {
84
- /** @internal */
85
84
  static get className() { return "ElementUniqueAspect"; }
86
85
  }
87
86
  exports.ElementUniqueAspect = ElementUniqueAspect;
@@ -89,7 +88,6 @@ exports.ElementUniqueAspect = ElementUniqueAspect;
89
88
  * @public
90
89
  */
91
90
  class ElementMultiAspect extends ElementAspect {
92
- /** @internal */
93
91
  static get className() { return "ElementMultiAspect"; }
94
92
  }
95
93
  exports.ElementMultiAspect = ElementMultiAspect;
@@ -97,7 +95,6 @@ exports.ElementMultiAspect = ElementMultiAspect;
97
95
  * @public
98
96
  */
99
97
  class ChannelRootAspect extends ElementUniqueAspect {
100
- /** @internal */
101
98
  static get className() { return "ChannelRootAspect"; }
102
99
  /** Insert a ChannelRootAspect on the specified element.
103
100
  * @deprecated in 4.0 use [[ChannelControl.makeChannelRoot]]. This method does not enforce the rule that channels may not nest and is therefore dangerous.
@@ -113,7 +110,6 @@ exports.ChannelRootAspect = ChannelRootAspect;
113
110
  * @public
114
111
  */
115
112
  class ExternalSourceAspect extends ElementMultiAspect {
116
- /** @internal */
117
113
  static get className() { return "ExternalSourceAspect"; }
118
114
  /** Construct an aspect from its JSON representation and its containing iModel. */
119
115
  constructor(props, iModel) {
@@ -1 +1 @@
1
- {"version":3,"file":"ElementAspect.js","sourceRoot":"","sources":["../../src/ElementAspect.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 ElementAspects\r\n */\r\n\r\nimport { ChannelRootAspectProps, ElementAspectProps, EntityReferenceSet, ExternalSourceAspectProps, RelatedElement } from \"@itwin/core-common\";\r\nimport { Entity } from \"./Entity\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { ECSqlStatement } from \"./ECSqlStatement\";\r\nimport { DbResult, Id64String } from \"@itwin/core-bentley\";\r\n\r\n/** Argument for the `ElementAspect.onXxx` static methods\r\n * @beta\r\n */\r\nexport interface OnAspectArg {\r\n /** The iModel for the aspect affected by this event. */\r\n iModel: IModelDb;\r\n /** The model for the aspect affected by this event */\r\n model: Id64String;\r\n}\r\n/** Argument for the `ElementAspect.onXxx` static methods that supply the properties of an aspect to be inserted or updated.\r\n * @beta\r\n */\r\nexport interface OnAspectPropsArg extends OnAspectArg {\r\n /** The new properties of the aspect affected by this event. */\r\n props: Readonly<ElementAspectProps>;\r\n}\r\n/** Argument for the `ElementAspect.onXxx` static methods that only supply the Id of the affected aspect.\r\n * @beta\r\n */\r\nexport interface OnAspectIdArg extends OnAspectArg {\r\n /** The Id of the aspect affected by this event */\r\n aspectId: Id64String;\r\n}\r\n\r\n/** An Element Aspect is a class that defines a set of properties that are related to (and owned by) a single element.\r\n * Semantically, an ElementAspect can be considered part of the Element. Thus, an ElementAspect is deleted if its owning Element is deleted.\r\n * BIS Guideline: Subclass ElementUniqueAspect or ElementMultiAspect rather than subclassing ElementAspect directly.\r\n * @public\r\n */\r\nexport class ElementAspect extends Entity {\r\n /** @internal */\r\n public static override get className(): string { return \"ElementAspect\"; }\r\n public element: RelatedElement;\r\n\r\n /** Construct an aspect from its JSON representation and its containing iModel. */\r\n constructor(props: ElementAspectProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.element = RelatedElement.fromJSON(props.element)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\r\n }\r\n\r\n public override toJSON(): ElementAspectProps {\r\n const val = super.toJSON() as ElementAspectProps;\r\n val.element = this.element;\r\n return val;\r\n }\r\n\r\n /** Called before a new ElementAspect is inserted.\r\n * @note throw an exception to disallow the insert\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onInsert(arg: OnAspectPropsArg): void {\r\n const { props, iModel } = arg;\r\n iModel.channels.verifyChannel(arg.model);\r\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"insert aspect\");\r\n }\r\n\r\n /** Called after a new ElementAspect was inserted.\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onInserted(_arg: OnAspectPropsArg): void { }\r\n\r\n /** Called before an ElementAspect is updated.\r\n * @note throw an exception to disallow the update\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onUpdate(arg: OnAspectPropsArg): void {\r\n const { props, iModel } = arg;\r\n iModel.channels.verifyChannel(arg.model);\r\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"update aspect\");\r\n }\r\n\r\n /** Called after an ElementAspect was updated.\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onUpdated(_arg: OnAspectPropsArg): void { }\r\n\r\n /** Called before an ElementAspect is deleted.\r\n * @note throw an exception to disallow the delete\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onDelete(arg: OnAspectIdArg): void {\r\n const { aspectId, iModel } = arg;\r\n iModel.channels.verifyChannel(arg.model);\r\n const { element } = iModel.elements.getAspect(aspectId);\r\n iModel.locks.checkExclusiveLock(element.id, \"element\", \"delete aspect\");\r\n }\r\n\r\n /** Called after an ElementAspect was deleted.\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onDeleted(_arg: OnAspectIdArg): void { }\r\n}\r\n/** An Element Unique Aspect is an ElementAspect where there can be only zero or one instance of the Element Aspect class per Element.\r\n * @public\r\n */\r\nexport class ElementUniqueAspect extends ElementAspect {\r\n /** @internal */\r\n public static override get className(): string { return \"ElementUniqueAspect\"; }\r\n}\r\n\r\n/** An Element Multi-Aspect is an ElementAspect where there can be **n** instances of the Element Aspect class per Element.\r\n * @public\r\n */\r\nexport class ElementMultiAspect extends ElementAspect {\r\n /** @internal */\r\n public static override get className(): string { return \"ElementMultiAspect\"; }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class ChannelRootAspect extends ElementUniqueAspect {\r\n /** @internal */\r\n public static override get className(): string { return \"ChannelRootAspect\"; }\r\n /** Insert a ChannelRootAspect on the specified element.\r\n * @deprecated in 4.0 use [[ChannelControl.makeChannelRoot]]. This method does not enforce the rule that channels may not nest and is therefore dangerous.\r\n */\r\n public static insert(iModel: IModelDb, ownerId: Id64String, channelName: string) {\r\n const props: ChannelRootAspectProps = { classFullName: this.classFullName, element: { id: ownerId }, owner: channelName };\r\n iModel.elements.insertAspect(props);\r\n }\r\n}\r\n\r\n/** An ElementMultiAspect that stores synchronization information for an Element originating from an external source.\r\n * @note The associated ECClass was added to the BisCore schema in version 1.0.2\r\n * @public\r\n */\r\nexport class ExternalSourceAspect extends ElementMultiAspect {\r\n /** @internal */\r\n public static override get className(): string { return \"ExternalSourceAspect\"; }\r\n\r\n /** An element that scopes the combination of `kind` and `identifier` to uniquely identify the object from the external source.\r\n * @note Warning: in a future major release the `scope` property will be optional, since the scope is intended to be potentially invalid.\r\n * all references should treat it as potentially undefined, but we cannot change the type yet since that is a breaking change.\r\n */\r\n public scope: RelatedElement;\r\n /** The identifier of the object in the source repository. */\r\n public identifier: string;\r\n /** The kind of object within the source repository. */\r\n public kind: string;\r\n /** The cryptographic hash (any algorithm) of the source object's content. If defined, it must be guaranteed to change when the source object's content changes. */\r\n public checksum?: string;\r\n /** An optional value that is typically a version number or a pseudo version number like last modified time.\r\n * It will be used by the synchronization process to detect that a source object is unchanged so that computing a cryptographic hash can be avoided.\r\n * If present, this value must be guaranteed to change when any of the source object's content changes.\r\n */\r\n public version?: string;\r\n /** A place where additional JSON properties can be stored. For example, provenance information or properties relating to the synchronization process.\r\n * @note Warning: in a future major release, the type of `jsonProperties` will be changed to object, and itwin.js will automatically stringify it when writing to the iModel.\r\n * This will be a breaking change, since application code will have to change from supplying a string to supplying an object.\r\n */\r\n public jsonProperties?: string;\r\n /** The source of the imported/synchronized object. Should point to an instance of [ExternalSource]($backend). */\r\n public source?: RelatedElement;\r\n\r\n /** Construct an aspect from its JSON representation and its containing iModel. */\r\n constructor(props: ExternalSourceAspectProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.scope = RelatedElement.fromJSON(props.scope)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\r\n this.source = RelatedElement.fromJSON(props.source);\r\n this.identifier = props.identifier;\r\n this.kind = props.kind;\r\n this.checksum = props.checksum;\r\n this.version = props.version;\r\n this.jsonProperties = props.jsonProperties;\r\n }\r\n\r\n /** @deprecated in 3.x. findAllBySource */\r\n public static findBySource(iModelDb: IModelDb, scope: Id64String, kind: string, identifier: string): { elementId?: Id64String, aspectId?: Id64String } {\r\n const sql = `SELECT Element.Id, ECInstanceId FROM ${ExternalSourceAspect.classFullName} WHERE (Scope.Id=:scope AND Kind=:kind AND Identifier=:identifier)`;\r\n let elementId: Id64String | undefined;\r\n let aspectId: Id64String | undefined;\r\n iModelDb.withPreparedStatement(sql, (statement: ECSqlStatement) => {\r\n statement.bindId(\"scope\", scope);\r\n statement.bindString(\"kind\", kind);\r\n statement.bindString(\"identifier\", identifier);\r\n if (DbResult.BE_SQLITE_ROW === statement.step()) {\r\n elementId = statement.getValue(0).getId();\r\n aspectId = statement.getValue(1).getId();\r\n }\r\n });\r\n return { elementId, aspectId };\r\n }\r\n\r\n /** Look up the elements that contain one or more ExternalSourceAspect with the specified Scope, Kind, and Identifier.\r\n * The result of this function is an array of all of the ExternalSourceAspects that were found, each associated with the owning element.\r\n * A given element could have more than one ExternalSourceAspect with the given scope, kind, and identifier.\r\n * Also, many elements could have ExternalSourceAspect with the same scope, kind, and identifier.\r\n * Therefore, the result array could have more than one entry with the same elementId.\r\n * Aspects are never shared. Each aspect has its own unique ECInstanceId.\r\n * @param iModelDb The iModel to query\r\n * @param scope The scope of the ExternalSourceAspects to find\r\n * @param kind The kind of the ExternalSourceAspects to find\r\n * @param identifier The identifier of the ExternalSourceAspects to find\r\n * @returns the query results\r\n */\r\n public static findAllBySource(iModelDb: IModelDb, scope: Id64String, kind: string, identifier: string): Array<{ elementId: Id64String, aspectId: Id64String }> {\r\n const sql = `SELECT Element.Id, ECInstanceId FROM ${ExternalSourceAspect.classFullName} WHERE (Scope.Id=:scope AND Kind=:kind AND Identifier=:identifier)`;\r\n const found: Array<{ elementId: Id64String, aspectId: Id64String }> = [];\r\n iModelDb.withPreparedStatement(sql, (statement: ECSqlStatement) => {\r\n statement.bindId(\"scope\", scope);\r\n statement.bindString(\"kind\", kind);\r\n statement.bindString(\"identifier\", identifier);\r\n while (DbResult.BE_SQLITE_ROW === statement.step()) {\r\n found.push({ elementId: statement.getValue(0).getId(), aspectId: statement.getValue(1).getId() });\r\n }\r\n });\r\n return found;\r\n }\r\n\r\n public override toJSON(): ExternalSourceAspectProps {\r\n const val = super.toJSON() as ExternalSourceAspectProps;\r\n val.scope = this.scope;\r\n val.source = this.source;\r\n val.identifier = this.identifier;\r\n val.kind = this.kind;\r\n val.checksum = this.checksum;\r\n val.version = this.version;\r\n val.jsonProperties = this.jsonProperties;\r\n return val;\r\n }\r\n\r\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\r\n super.collectReferenceIds(referenceIds);\r\n if (this.scope)\r\n referenceIds.addElement(this.scope.id);\r\n referenceIds.addElement(this.element.id);\r\n if (this.source)\r\n referenceIds.addElement(this.source.id);\r\n }\r\n}\r\n\r\n/** @public */\r\nexport namespace ExternalSourceAspect { // eslint-disable-line no-redeclare\r\n /** Standard values for the `Kind` property of `ExternalSourceAspect`.\r\n * @public\r\n */\r\n export enum Kind {\r\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Element]] provenance */\r\n Element = \"Element\",\r\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Relationship]] provenance */\r\n Relationship = \"Relationship\",\r\n /** Indicates that the [[ExternalSourceAspect]] is storing *scope* provenance\r\n * @see [[ExternalSourceAspect.scope]]\r\n */\r\n Scope = \"Scope\",\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ElementAspect.js","sourceRoot":"","sources":["../../src/ElementAspect.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 ElementAspects\r\n */\r\n\r\nimport { ChannelRootAspectProps, ElementAspectProps, EntityReferenceSet, ExternalSourceAspectProps, RelatedElement } from \"@itwin/core-common\";\r\nimport { Entity } from \"./Entity\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { ECSqlStatement } from \"./ECSqlStatement\";\r\nimport { DbResult, Id64String } from \"@itwin/core-bentley\";\r\nimport { _verifyChannel } from \"./internal/Symbols\";\r\n\r\n/** Argument for the `ElementAspect.onXxx` static methods\r\n * @beta\r\n */\r\nexport interface OnAspectArg {\r\n /** The iModel for the aspect affected by this event. */\r\n iModel: IModelDb;\r\n /** The model for the aspect affected by this event */\r\n model: Id64String;\r\n}\r\n/** Argument for the `ElementAspect.onXxx` static methods that supply the properties of an aspect to be inserted or updated.\r\n * @beta\r\n */\r\nexport interface OnAspectPropsArg extends OnAspectArg {\r\n /** The new properties of the aspect affected by this event. */\r\n props: Readonly<ElementAspectProps>;\r\n}\r\n/** Argument for the `ElementAspect.onXxx` static methods that only supply the Id of the affected aspect.\r\n * @beta\r\n */\r\nexport interface OnAspectIdArg extends OnAspectArg {\r\n /** The Id of the aspect affected by this event */\r\n aspectId: Id64String;\r\n}\r\n\r\n/** An Element Aspect is a class that defines a set of properties that are related to (and owned by) a single element.\r\n * Semantically, an ElementAspect can be considered part of the Element. Thus, an ElementAspect is deleted if its owning Element is deleted.\r\n * BIS Guideline: Subclass ElementUniqueAspect or ElementMultiAspect rather than subclassing ElementAspect directly.\r\n * @public\r\n */\r\nexport class ElementAspect extends Entity {\r\n public static override get className(): string { return \"ElementAspect\"; }\r\n public element: RelatedElement;\r\n\r\n /** Construct an aspect from its JSON representation and its containing iModel. */\r\n constructor(props: ElementAspectProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.element = RelatedElement.fromJSON(props.element)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\r\n }\r\n\r\n public override toJSON(): ElementAspectProps {\r\n const val = super.toJSON() as ElementAspectProps;\r\n val.element = this.element;\r\n return val;\r\n }\r\n\r\n /** Called before a new ElementAspect is inserted.\r\n * @note throw an exception to disallow the insert\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onInsert(arg: OnAspectPropsArg): void {\r\n const { props, iModel } = arg;\r\n iModel.channels[_verifyChannel](arg.model);\r\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"insert aspect\");\r\n }\r\n\r\n /** Called after a new ElementAspect was inserted.\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onInserted(_arg: OnAspectPropsArg): void { }\r\n\r\n /** Called before an ElementAspect is updated.\r\n * @note throw an exception to disallow the update\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onUpdate(arg: OnAspectPropsArg): void {\r\n const { props, iModel } = arg;\r\n iModel.channels[_verifyChannel](arg.model);\r\n iModel.locks.checkExclusiveLock(props.element.id, \"element\", \"update aspect\");\r\n }\r\n\r\n /** Called after an ElementAspect was updated.\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onUpdated(_arg: OnAspectPropsArg): void { }\r\n\r\n /** Called before an ElementAspect is deleted.\r\n * @note throw an exception to disallow the delete\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onDelete(arg: OnAspectIdArg): void {\r\n const { aspectId, iModel } = arg;\r\n iModel.channels[_verifyChannel](arg.model);\r\n const { element } = iModel.elements.getAspect(aspectId);\r\n iModel.locks.checkExclusiveLock(element.id, \"element\", \"delete aspect\");\r\n }\r\n\r\n /** Called after an ElementAspect was deleted.\r\n * @note If you override this method, you must call super.\r\n * @beta\r\n */\r\n protected static onDeleted(_arg: OnAspectIdArg): void { }\r\n}\r\n/** An Element Unique Aspect is an ElementAspect where there can be only zero or one instance of the Element Aspect class per Element.\r\n * @public\r\n */\r\nexport class ElementUniqueAspect extends ElementAspect {\r\n public static override get className(): string { return \"ElementUniqueAspect\"; }\r\n}\r\n\r\n/** An Element Multi-Aspect is an ElementAspect where there can be **n** instances of the Element Aspect class per Element.\r\n * @public\r\n */\r\nexport class ElementMultiAspect extends ElementAspect {\r\n public static override get className(): string { return \"ElementMultiAspect\"; }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class ChannelRootAspect extends ElementUniqueAspect {\r\n public static override get className(): string { return \"ChannelRootAspect\"; }\r\n /** Insert a ChannelRootAspect on the specified element.\r\n * @deprecated in 4.0 use [[ChannelControl.makeChannelRoot]]. This method does not enforce the rule that channels may not nest and is therefore dangerous.\r\n */\r\n public static insert(iModel: IModelDb, ownerId: Id64String, channelName: string) {\r\n const props: ChannelRootAspectProps = { classFullName: this.classFullName, element: { id: ownerId }, owner: channelName };\r\n iModel.elements.insertAspect(props);\r\n }\r\n}\r\n\r\n/** An ElementMultiAspect that stores synchronization information for an Element originating from an external source.\r\n * @note The associated ECClass was added to the BisCore schema in version 1.0.2\r\n * @public\r\n */\r\nexport class ExternalSourceAspect extends ElementMultiAspect {\r\n public static override get className(): string { return \"ExternalSourceAspect\"; }\r\n\r\n /** An element that scopes the combination of `kind` and `identifier` to uniquely identify the object from the external source.\r\n * @note Warning: in a future major release the `scope` property will be optional, since the scope is intended to be potentially invalid.\r\n * all references should treat it as potentially undefined, but we cannot change the type yet since that is a breaking change.\r\n */\r\n public scope: RelatedElement;\r\n /** The identifier of the object in the source repository. */\r\n public identifier: string;\r\n /** The kind of object within the source repository. */\r\n public kind: string;\r\n /** The cryptographic hash (any algorithm) of the source object's content. If defined, it must be guaranteed to change when the source object's content changes. */\r\n public checksum?: string;\r\n /** An optional value that is typically a version number or a pseudo version number like last modified time.\r\n * It will be used by the synchronization process to detect that a source object is unchanged so that computing a cryptographic hash can be avoided.\r\n * If present, this value must be guaranteed to change when any of the source object's content changes.\r\n */\r\n public version?: string;\r\n /** A place where additional JSON properties can be stored. For example, provenance information or properties relating to the synchronization process.\r\n * @note Warning: in a future major release, the type of `jsonProperties` will be changed to object, and itwin.js will automatically stringify it when writing to the iModel.\r\n * This will be a breaking change, since application code will have to change from supplying a string to supplying an object.\r\n */\r\n public jsonProperties?: string;\r\n /** The source of the imported/synchronized object. Should point to an instance of [ExternalSource]($backend). */\r\n public source?: RelatedElement;\r\n\r\n /** Construct an aspect from its JSON representation and its containing iModel. */\r\n constructor(props: ExternalSourceAspectProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.scope = RelatedElement.fromJSON(props.scope)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\r\n this.source = RelatedElement.fromJSON(props.source);\r\n this.identifier = props.identifier;\r\n this.kind = props.kind;\r\n this.checksum = props.checksum;\r\n this.version = props.version;\r\n this.jsonProperties = props.jsonProperties;\r\n }\r\n\r\n /** @deprecated in 3.x. findAllBySource */\r\n public static findBySource(iModelDb: IModelDb, scope: Id64String, kind: string, identifier: string): { elementId?: Id64String, aspectId?: Id64String } {\r\n const sql = `SELECT Element.Id, ECInstanceId FROM ${ExternalSourceAspect.classFullName} WHERE (Scope.Id=:scope AND Kind=:kind AND Identifier=:identifier)`;\r\n let elementId: Id64String | undefined;\r\n let aspectId: Id64String | undefined;\r\n iModelDb.withPreparedStatement(sql, (statement: ECSqlStatement) => {\r\n statement.bindId(\"scope\", scope);\r\n statement.bindString(\"kind\", kind);\r\n statement.bindString(\"identifier\", identifier);\r\n if (DbResult.BE_SQLITE_ROW === statement.step()) {\r\n elementId = statement.getValue(0).getId();\r\n aspectId = statement.getValue(1).getId();\r\n }\r\n });\r\n return { elementId, aspectId };\r\n }\r\n\r\n /** Look up the elements that contain one or more ExternalSourceAspect with the specified Scope, Kind, and Identifier.\r\n * The result of this function is an array of all of the ExternalSourceAspects that were found, each associated with the owning element.\r\n * A given element could have more than one ExternalSourceAspect with the given scope, kind, and identifier.\r\n * Also, many elements could have ExternalSourceAspect with the same scope, kind, and identifier.\r\n * Therefore, the result array could have more than one entry with the same elementId.\r\n * Aspects are never shared. Each aspect has its own unique ECInstanceId.\r\n * @param iModelDb The iModel to query\r\n * @param scope The scope of the ExternalSourceAspects to find\r\n * @param kind The kind of the ExternalSourceAspects to find\r\n * @param identifier The identifier of the ExternalSourceAspects to find\r\n * @returns the query results\r\n */\r\n public static findAllBySource(iModelDb: IModelDb, scope: Id64String, kind: string, identifier: string): Array<{ elementId: Id64String, aspectId: Id64String }> {\r\n const sql = `SELECT Element.Id, ECInstanceId FROM ${ExternalSourceAspect.classFullName} WHERE (Scope.Id=:scope AND Kind=:kind AND Identifier=:identifier)`;\r\n const found: Array<{ elementId: Id64String, aspectId: Id64String }> = [];\r\n iModelDb.withPreparedStatement(sql, (statement: ECSqlStatement) => {\r\n statement.bindId(\"scope\", scope);\r\n statement.bindString(\"kind\", kind);\r\n statement.bindString(\"identifier\", identifier);\r\n while (DbResult.BE_SQLITE_ROW === statement.step()) {\r\n found.push({ elementId: statement.getValue(0).getId(), aspectId: statement.getValue(1).getId() });\r\n }\r\n });\r\n return found;\r\n }\r\n\r\n public override toJSON(): ExternalSourceAspectProps {\r\n const val = super.toJSON() as ExternalSourceAspectProps;\r\n val.scope = this.scope;\r\n val.source = this.source;\r\n val.identifier = this.identifier;\r\n val.kind = this.kind;\r\n val.checksum = this.checksum;\r\n val.version = this.version;\r\n val.jsonProperties = this.jsonProperties;\r\n return val;\r\n }\r\n\r\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\r\n super.collectReferenceIds(referenceIds);\r\n if (this.scope)\r\n referenceIds.addElement(this.scope.id);\r\n referenceIds.addElement(this.element.id);\r\n if (this.source)\r\n referenceIds.addElement(this.source.id);\r\n }\r\n}\r\n\r\n/** @public */\r\nexport namespace ExternalSourceAspect { // eslint-disable-line no-redeclare\r\n /** Standard values for the `Kind` property of `ExternalSourceAspect`.\r\n * @public\r\n */\r\n export enum Kind {\r\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Element]] provenance */\r\n Element = \"Element\",\r\n /** Indicates that the [[ExternalSourceAspect]] is storing [[Relationship]] provenance */\r\n Relationship = \"Relationship\",\r\n /** Indicates that the [[ExternalSourceAspect]] is storing *scope* provenance\r\n * @see [[ExternalSourceAspect.scope]]\r\n */\r\n Scope = \"Scope\",\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementGraphics.d.ts","sourceRoot":"","sources":["../../src/ElementGraphics.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,EAAe,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA0BrI"}
1
+ {"version":3,"file":"ElementGraphics.d.ts","sourceRoot":"","sources":["../../src/ElementGraphics.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,EAAe,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA0BrI"}
@@ -7,11 +7,12 @@ exports.generateElementGraphics = void 0;
7
7
  *--------------------------------------------------------------------------------------------*/
8
8
  const core_bentley_1 = require("@itwin/core-bentley");
9
9
  const core_common_1 = require("@itwin/core-common");
10
+ const Symbols_1 = require("./internal/Symbols");
10
11
  /** See [[IModelDb.generateElementGraphics]] and IModelTileRpcImpl.requestElementGraphics.
11
12
  * @internal
12
13
  */
13
14
  async function generateElementGraphics(request, iModel) {
14
- const result = await iModel.nativeDb.generateElementGraphics(request); // ###TODO update package versions in addon
15
+ const result = await iModel[Symbols_1._nativeDb].generateElementGraphics(request); // ###TODO update package versions in addon
15
16
  let error;
16
17
  switch (result.status) {
17
18
  case 2 /* ElementGraphicsStatus.NoGeometry */:
@@ -1 +1 @@
1
- {"version":3,"file":"ElementGraphics.js","sourceRoot":"","sources":["../../src/ElementGraphics.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,sDAA2D;AAC3D,oDAA8E;AAI9E;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,OAAoC,EAAE,MAAgB;IAClG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,OAAc,CAAC,CAAC,CAAC,2CAA2C;IAEzH,IAAI,KAAyB,CAAC;IAC9B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,8CAAsC;QACtC;YACE,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB;YACE,KAAK,GAAG,cAAc,CAAC;YACvB,MAAM;QACR;YACE,KAAK,GAAG,8BAA8B,CAAC;YACvC,MAAM;QACR;YACE,KAAK,GAAG,cAAc,OAAO,CAAC,SAAS,YAAY,CAAC;YACpD,MAAM;QACR;YACE,KAAK,GAAG,yBAAyB,OAAO,CAAC,EAAE,GAAG,CAAC;YAC/C,MAAM;IACV,CAAC;IAED,IAAA,qBAAM,EAAC,SAAS,KAAK,KAAK,CAAC,CAAC;IAC5B,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AA1BD,0DA0BC","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\nimport { assert, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { ElementGraphicsRequestProps, IModelError } from \"@itwin/core-common\";\r\nimport { ElementGraphicsStatus } from \"@bentley/imodeljs-native\";\r\nimport { IModelDb } from \"./IModelDb\";\r\n\r\n/** See [[IModelDb.generateElementGraphics]] and IModelTileRpcImpl.requestElementGraphics.\r\n * @internal\r\n */\r\nexport async function generateElementGraphics(request: ElementGraphicsRequestProps, iModel: IModelDb): Promise<Uint8Array | undefined> {\r\n const result = await iModel.nativeDb.generateElementGraphics(request as any); // ###TODO update package versions in addon\r\n\r\n let error: string | undefined;\r\n switch (result.status) {\r\n case ElementGraphicsStatus.NoGeometry:\r\n case ElementGraphicsStatus.Canceled:\r\n return undefined;\r\n case ElementGraphicsStatus.Success:\r\n return result.content;\r\n case ElementGraphicsStatus.InvalidJson:\r\n error = \"Invalid JSON\";\r\n break;\r\n case ElementGraphicsStatus.UnknownMajorFormatVersion:\r\n error = \"Unknown major format version\";\r\n break;\r\n case ElementGraphicsStatus.ElementNotFound:\r\n error = `Element Id ${request.elementId} not found`;\r\n break;\r\n case ElementGraphicsStatus.DuplicateRequestId:\r\n error = `Duplicate request Id \"${request.id}\"`;\r\n break;\r\n }\r\n\r\n assert(undefined !== error);\r\n throw new IModelError(IModelStatus.BadRequest, error);\r\n}\r\n"]}
1
+ {"version":3,"file":"ElementGraphics.js","sourceRoot":"","sources":["../../src/ElementGraphics.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,sDAA2D;AAC3D,oDAA8E;AAG9E,gDAA+C;AAE/C;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,OAAoC,EAAE,MAAgB;IAClG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAS,CAAC,CAAC,uBAAuB,CAAC,OAAc,CAAC,CAAC,CAAC,2CAA2C;IAE3H,IAAI,KAAyB,CAAC;IAC9B,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,8CAAsC;QACtC;YACE,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB;YACE,KAAK,GAAG,cAAc,CAAC;YACvB,MAAM;QACR;YACE,KAAK,GAAG,8BAA8B,CAAC;YACvC,MAAM;QACR;YACE,KAAK,GAAG,cAAc,OAAO,CAAC,SAAS,YAAY,CAAC;YACpD,MAAM;QACR;YACE,KAAK,GAAG,yBAAyB,OAAO,CAAC,EAAE,GAAG,CAAC;YAC/C,MAAM;IACV,CAAC;IAED,IAAA,qBAAM,EAAC,SAAS,KAAK,KAAK,CAAC,CAAC;IAC5B,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AA1BD,0DA0BC","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\nimport { assert, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { ElementGraphicsRequestProps, IModelError } from \"@itwin/core-common\";\r\nimport { ElementGraphicsStatus } from \"@bentley/imodeljs-native\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { _nativeDb } from \"./internal/Symbols\";\r\n\r\n/** See [[IModelDb.generateElementGraphics]] and IModelTileRpcImpl.requestElementGraphics.\r\n * @internal\r\n */\r\nexport async function generateElementGraphics(request: ElementGraphicsRequestProps, iModel: IModelDb): Promise<Uint8Array | undefined> {\r\n const result = await iModel[_nativeDb].generateElementGraphics(request as any); // ###TODO update package versions in addon\r\n\r\n let error: string | undefined;\r\n switch (result.status) {\r\n case ElementGraphicsStatus.NoGeometry:\r\n case ElementGraphicsStatus.Canceled:\r\n return undefined;\r\n case ElementGraphicsStatus.Success:\r\n return result.content;\r\n case ElementGraphicsStatus.InvalidJson:\r\n error = \"Invalid JSON\";\r\n break;\r\n case ElementGraphicsStatus.UnknownMajorFormatVersion:\r\n error = \"Unknown major format version\";\r\n break;\r\n case ElementGraphicsStatus.ElementNotFound:\r\n error = `Element Id ${request.elementId} not found`;\r\n break;\r\n case ElementGraphicsStatus.DuplicateRequestId:\r\n error = `Duplicate request Id \"${request.id}\"`;\r\n break;\r\n }\r\n\r\n assert(undefined !== error);\r\n throw new IModelError(IModelStatus.BadRequest, error);\r\n}\r\n"]}
@@ -3,6 +3,11 @@
3
3
  */
4
4
  import { CloudSqlite } from "./CloudSqlite";
5
5
  import { Settings } from "./workspace/Settings";
6
+ import { WorkspaceDbCloudProps } from "./workspace/Workspace";
7
+ /** @internal */
8
+ export interface GcsDbProps extends WorkspaceDbCloudProps {
9
+ priority?: number;
10
+ }
6
11
  /**
7
12
  * Internal class to configure and load the gcs workspaces for an iModel.
8
13
  * @internal
@@ -10,6 +15,11 @@ import { Settings } from "./workspace/Settings";
10
15
  export declare class GeoCoordConfig {
11
16
  /** array of cloud prefetch tasks that may be awaited to permit offline usage */
12
17
  static readonly prefetches: CloudSqlite.CloudPrefetch[];
18
+ static readonly settingName: {
19
+ databases: string;
20
+ defaultDatabases: string;
21
+ disableWorkspaces: string;
22
+ };
13
23
  private static addGcsWorkspace;
14
24
  private static loadAll;
15
25
  private static _defaultDbsLoaded;
@@ -1 +1 @@
1
- {"version":3,"file":"GeoCoordConfig.d.ts","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAUhD;;;GAGG;AACH,qBAAa,cAAc;IACzB,gFAAgF;IAChF,gBAAuB,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE,CAAM;IAEpE,OAAO,CAAC,MAAM,CAAC,eAAe;IAyC9B,OAAO,CAAC,MAAM,CAAC,OAAO;IAYtB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;WAC3B,SAAS;WAKT,oBAAoB,IAAI,IAAI;WAO5B,aAAa,CAAC,QAAQ,EAAE,QAAQ;CAI/C"}
1
+ {"version":3,"file":"GeoCoordConfig.d.ts","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,gBAAgB;AAChB,MAAM,WAAW,UAAW,SAAQ,qBAAqB;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD;;;GAGG;AACH,qBAAa,cAAc;IACzB,gFAAgF;IAChF,gBAAuB,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE,CAAM;IACpE,gBAAuB,WAAW;;;;MAIhC;IAEF,OAAO,CAAC,MAAM,CAAC,eAAe;IAkC9B,OAAO,CAAC,MAAM,CAAC,OAAO;IAStB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;WAC3B,SAAS;WAKT,oBAAoB,IAAI,IAAI;WAO5B,aAAa,CAAC,QAAQ,EAAE,QAAQ;CAI/C"}
@@ -11,56 +11,49 @@ exports.GeoCoordConfig = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const CloudSqlite_1 = require("./CloudSqlite");
13
13
  const IModelHost_1 = require("./IModelHost");
14
+ const NativePlatform_1 = require("./internal/NativePlatform");
14
15
  const loggerCat = "GeoCoord";
16
+ const makeSettingName = (name) => `${"itwin/core/gcs"}/${name}`;
15
17
  /**
16
18
  * Internal class to configure and load the gcs workspaces for an iModel.
17
19
  * @internal
18
20
  */
19
21
  class GeoCoordConfig {
20
- static addGcsWorkspace(gcsDbAlias) {
22
+ static addGcsWorkspace(dbProps) {
21
23
  // override to disable loading GCS data from workspaces
22
- if (IModelHost_1.IModelHost.appWorkspace.settings.getBoolean("gcs/disableWorkspaces", false))
24
+ if (IModelHost_1.IModelHost.appWorkspace.settings.getBoolean(GeoCoordConfig.settingName.disableWorkspaces, false))
23
25
  return;
24
- let containerProps;
25
26
  try {
26
27
  const ws = IModelHost_1.IModelHost.appWorkspace;
27
- const dbProps = ws.resolveDatabase(gcsDbAlias);
28
- containerProps = ws.resolveContainer(dbProps.containerName);
29
- const container = ws.getContainer(containerProps);
28
+ const container = ws.getContainer({ ...dbProps, accessToken: "" }); // all gcs containers are public so no accessToken is required
30
29
  const cloudContainer = container.cloudContainer;
31
30
  if (!cloudContainer?.isConnected) {
32
- core_bentley_1.Logger.logError("GeoCoord", `could not load gcs database "${gcsDbAlias}"`);
31
+ core_bentley_1.Logger.logError("GeoCoord", `could not load gcs database "${dbProps.dbName}"`);
33
32
  return;
34
33
  }
35
34
  const gcsDbName = container.resolveDbFileName(dbProps);
36
35
  const gcsDbProps = cloudContainer.queryDatabase(gcsDbName);
37
36
  if (undefined === gcsDbProps)
38
- throw new Error(`database "${gcsDbName}" not found in container "${containerProps.containerId}"`);
39
- if (!IModelHost_1.IModelHost.platform.addGcsWorkspaceDb(gcsDbName, cloudContainer, dbProps.priority))
37
+ throw new Error(`database "${gcsDbName}" not found in container "${dbProps.containerId}"`);
38
+ if (!NativePlatform_1.IModelNative.platform.addGcsWorkspaceDb(gcsDbName, cloudContainer, dbProps.priority))
40
39
  return; // already had this db
41
- if (IModelHost_1.IModelHost.appWorkspace.settings.getBoolean("gcs/noLocalData", false))
42
- IModelHost_1.IModelHost.platform.enableLocalGcsFiles(false);
43
- core_bentley_1.Logger.logInfo(loggerCat, `loaded gcsDb "${gcsDbName}", from "${containerProps.baseUri}/${containerProps.containerId}" size=${gcsDbProps.totalBlocks}, local=${gcsDbProps.localBlocks}`);
40
+ core_bentley_1.Logger.logInfo(loggerCat, `loaded gcsDb "${gcsDbName}", from "${dbProps.baseUri}/${dbProps.containerId}" size=${gcsDbProps.totalBlocks}, local=${gcsDbProps.localBlocks}`);
44
41
  if (true === dbProps.prefetch)
45
42
  this.prefetches.push(CloudSqlite_1.CloudSqlite.startCloudPrefetch(cloudContainer, gcsDbName));
46
43
  }
47
44
  catch (e) {
48
45
  let msg = `Cannot load GCS workspace (${e.errorNumber}): ${core_bentley_1.BentleyError.getErrorMessage(e)}`;
49
- if (containerProps)
50
- msg += `,container=${containerProps.baseUri}/${containerProps.containerId}, storage=${containerProps.storageType}, public=${containerProps.isPublic}, cacheDir=${IModelHost_1.IModelHost.cacheDir}`;
46
+ msg += `,container=${dbProps.baseUri}/${dbProps.containerId}, storage=${dbProps.storageType}, public=${dbProps.isPublic}, cacheDir=${IModelHost_1.IModelHost.cacheDir}`;
51
47
  core_bentley_1.Logger.logError(loggerCat, msg);
52
48
  }
53
49
  }
54
50
  static loadAll(settings, settingName) {
55
- settings.resolveSetting(settingName, (val) => {
56
- if (Array.isArray(val)) {
57
- for (const entry of val) {
58
- if (typeof entry === "string")
59
- this.addGcsWorkspace(entry);
60
- }
51
+ const dbProps = settings.getArray(settingName);
52
+ if (dbProps) {
53
+ for (const entry of dbProps) {
54
+ this.addGcsWorkspace(entry);
61
55
  }
62
- return undefined; // keep going through all dictionaries
63
- });
56
+ }
64
57
  }
65
58
  static onStartup() {
66
59
  this._defaultDbsLoaded = false;
@@ -69,16 +62,21 @@ class GeoCoordConfig {
69
62
  static loadDefaultDatabases() {
70
63
  if (!this._defaultDbsLoaded) {
71
64
  this._defaultDbsLoaded = true;
72
- this.loadAll(IModelHost_1.IModelHost.appWorkspace.settings, "gcs/default/databases");
65
+ this.loadAll(IModelHost_1.IModelHost.appWorkspace.settings, this.settingName.defaultDatabases);
73
66
  }
74
67
  }
75
68
  static loadForImodel(settings) {
76
69
  this.loadDefaultDatabases();
77
- this.loadAll(settings, "gcs/databases");
70
+ this.loadAll(settings, this.settingName.databases);
78
71
  }
79
72
  }
80
73
  exports.GeoCoordConfig = GeoCoordConfig;
81
74
  /** array of cloud prefetch tasks that may be awaited to permit offline usage */
82
75
  GeoCoordConfig.prefetches = [];
76
+ GeoCoordConfig.settingName = {
77
+ databases: makeSettingName("databases"),
78
+ defaultDatabases: makeSettingName("default/databases"),
79
+ disableWorkspaces: makeSettingName("disableWorkspaces"),
80
+ };
83
81
  GeoCoordConfig._defaultDbsLoaded = false;
84
82
  //# sourceMappingURL=GeoCoordConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeoCoordConfig.js","sourceRoot":"","sources":["../../src/GeoCoordConfig.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\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\r\nimport { CloudSqlite } from \"./CloudSqlite\";\r\nimport { IModelHost } from \"./IModelHost\";\r\nimport { Settings } from \"./workspace/Settings\";\r\nimport { WorkspaceContainer, WorkspaceDb } from \"./workspace/Workspace\";\r\n\r\nconst loggerCat = \"GeoCoord\";\r\n\r\ninterface GcsDbProps extends WorkspaceDb.Props, WorkspaceContainer.Alias {\r\n prefetch?: boolean;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * Internal class to configure and load the gcs workspaces for an iModel.\r\n * @internal\r\n */\r\nexport class GeoCoordConfig {\r\n /** array of cloud prefetch tasks that may be awaited to permit offline usage */\r\n public static readonly prefetches: CloudSqlite.CloudPrefetch[] = [];\r\n\r\n private static addGcsWorkspace(gcsDbAlias: string) {\r\n // override to disable loading GCS data from workspaces\r\n if (IModelHost.appWorkspace.settings.getBoolean(\"gcs/disableWorkspaces\", false))\r\n return;\r\n\r\n let containerProps: WorkspaceContainer.Props | undefined;\r\n try {\r\n const ws = IModelHost.appWorkspace;\r\n const dbProps = ws.resolveDatabase(gcsDbAlias) as GcsDbProps;\r\n containerProps = ws.resolveContainer(dbProps.containerName);\r\n const container = ws.getContainer(containerProps);\r\n const cloudContainer = container.cloudContainer;\r\n if (!cloudContainer?.isConnected) {\r\n Logger.logError(\"GeoCoord\", `could not load gcs database \"${gcsDbAlias}\"`);\r\n return;\r\n }\r\n\r\n const gcsDbName = container.resolveDbFileName(dbProps);\r\n const gcsDbProps = cloudContainer.queryDatabase(gcsDbName);\r\n if (undefined === gcsDbProps)\r\n throw new Error(`database \"${gcsDbName}\" not found in container \"${containerProps.containerId}\"`);\r\n\r\n if (!IModelHost.platform.addGcsWorkspaceDb(gcsDbName, cloudContainer, dbProps.priority))\r\n return; // already had this db\r\n\r\n if (IModelHost.appWorkspace.settings.getBoolean(\"gcs/noLocalData\", false))\r\n IModelHost.platform.enableLocalGcsFiles(false);\r\n\r\n Logger.logInfo(loggerCat, `loaded gcsDb \"${gcsDbName}\", from \"${containerProps.baseUri}/${containerProps.containerId}\" size=${gcsDbProps.totalBlocks}, local=${gcsDbProps.localBlocks}`);\r\n\r\n if (true === dbProps.prefetch)\r\n this.prefetches.push(CloudSqlite.startCloudPrefetch(cloudContainer, gcsDbName));\r\n\r\n } catch (e: any) {\r\n let msg = `Cannot load GCS workspace (${e.errorNumber}): ${BentleyError.getErrorMessage(e)}`;\r\n if (containerProps)\r\n msg += `,container=${containerProps.baseUri}/${containerProps.containerId}, storage=${containerProps.storageType}, public=${containerProps.isPublic}, cacheDir=${IModelHost.cacheDir}`;\r\n Logger.logError(loggerCat, msg);\r\n }\r\n }\r\n\r\n private static loadAll(settings: Settings, settingName: string) {\r\n settings.resolveSetting(settingName, (val) => {\r\n if (Array.isArray(val)) {\r\n for (const entry of val) {\r\n if (typeof entry === \"string\")\r\n this.addGcsWorkspace(entry);\r\n }\r\n }\r\n return undefined; // keep going through all dictionaries\r\n });\r\n }\r\n\r\n private static _defaultDbsLoaded = false;\r\n public static onStartup() {\r\n this._defaultDbsLoaded = false;\r\n this.prefetches.length = 0;\r\n }\r\n\r\n public static loadDefaultDatabases(): void {\r\n if (!this._defaultDbsLoaded) {\r\n this._defaultDbsLoaded = true;\r\n this.loadAll(IModelHost.appWorkspace.settings, \"gcs/default/databases\");\r\n }\r\n }\r\n\r\n public static loadForImodel(settings: Settings) {\r\n this.loadDefaultDatabases();\r\n this.loadAll(settings, \"gcs/databases\");\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GeoCoordConfig.js","sourceRoot":"","sources":["../../src/GeoCoordConfig.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\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\r\nimport { CloudSqlite } from \"./CloudSqlite\";\r\nimport { IModelHost } from \"./IModelHost\";\r\nimport { Settings } from \"./workspace/Settings\";\r\nimport { WorkspaceDbCloudProps } from \"./workspace/Workspace\";\r\nimport { IModelNative } from \"./internal/NativePlatform\";\r\n\r\nconst loggerCat = \"GeoCoord\";\r\n\r\n/** @internal */\r\nexport interface GcsDbProps extends WorkspaceDbCloudProps {\r\n priority?: number;\r\n}\r\nconst makeSettingName = (name: string) => `${\"itwin/core/gcs\"}/${name}`;\r\n\r\n/**\r\n * Internal class to configure and load the gcs workspaces for an iModel.\r\n * @internal\r\n */\r\nexport class GeoCoordConfig {\r\n /** array of cloud prefetch tasks that may be awaited to permit offline usage */\r\n public static readonly prefetches: CloudSqlite.CloudPrefetch[] = [];\r\n public static readonly settingName = {\r\n databases: makeSettingName(\"databases\"),\r\n defaultDatabases: makeSettingName(\"default/databases\"),\r\n disableWorkspaces: makeSettingName(\"disableWorkspaces\"),\r\n };\r\n\r\n private static addGcsWorkspace(dbProps: GcsDbProps) {\r\n // override to disable loading GCS data from workspaces\r\n if (IModelHost.appWorkspace.settings.getBoolean(GeoCoordConfig.settingName.disableWorkspaces, false))\r\n return;\r\n\r\n try {\r\n const ws = IModelHost.appWorkspace;\r\n const container = ws.getContainer({ ...dbProps, accessToken: \"\" }); // all gcs containers are public so no accessToken is required\r\n const cloudContainer = container.cloudContainer;\r\n if (!cloudContainer?.isConnected) {\r\n Logger.logError(\"GeoCoord\", `could not load gcs database \"${dbProps.dbName}\"`);\r\n return;\r\n }\r\n\r\n const gcsDbName = container.resolveDbFileName(dbProps);\r\n const gcsDbProps = cloudContainer.queryDatabase(gcsDbName);\r\n if (undefined === gcsDbProps)\r\n throw new Error(`database \"${gcsDbName}\" not found in container \"${dbProps.containerId}\"`);\r\n\r\n if (!IModelNative.platform.addGcsWorkspaceDb(gcsDbName, cloudContainer, dbProps.priority))\r\n return; // already had this db\r\n\r\n Logger.logInfo(loggerCat, `loaded gcsDb \"${gcsDbName}\", from \"${dbProps.baseUri}/${dbProps.containerId}\" size=${gcsDbProps.totalBlocks}, local=${gcsDbProps.localBlocks}`);\r\n\r\n if (true === dbProps.prefetch)\r\n this.prefetches.push(CloudSqlite.startCloudPrefetch(cloudContainer, gcsDbName));\r\n\r\n } catch (e: any) {\r\n let msg = `Cannot load GCS workspace (${e.errorNumber}): ${BentleyError.getErrorMessage(e)}`;\r\n msg += `,container=${dbProps.baseUri}/${dbProps.containerId}, storage=${dbProps.storageType}, public=${dbProps.isPublic}, cacheDir=${IModelHost.cacheDir}`;\r\n Logger.logError(loggerCat, msg);\r\n }\r\n }\r\n\r\n private static loadAll(settings: Settings, settingName: string) {\r\n const dbProps = settings.getArray<GcsDbProps>(settingName);\r\n if (dbProps) {\r\n for (const entry of dbProps) {\r\n this.addGcsWorkspace(entry);\r\n }\r\n }\r\n }\r\n\r\n private static _defaultDbsLoaded = false;\r\n public static onStartup() {\r\n this._defaultDbsLoaded = false;\r\n this.prefetches.length = 0;\r\n }\r\n\r\n public static loadDefaultDatabases(): void {\r\n if (!this._defaultDbsLoaded) {\r\n this._defaultDbsLoaded = true;\r\n this.loadAll(IModelHost.appWorkspace.settings, this.settingName.defaultDatabases);\r\n }\r\n }\r\n\r\n public static loadForImodel(settings: Settings) {\r\n this.loadDefaultDatabases();\r\n this.loadAll(settings, this.settingName.databases);\r\n }\r\n}\r\n"]}
@@ -8,14 +8,14 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.getAvailableCoordinateReferenceSystems = void 0;
11
- const IModelHost_1 = require("./IModelHost");
11
+ const NativePlatform_1 = require("./internal/NativePlatform");
12
12
  /** Get a list of Geographic Coordinate Reference Systems.
13
13
  * @param options Specifies the parameters to filter the returned list.
14
14
  * @returns The list of Geographic Coordinate Reference Systems, according to the supplied parameters.
15
15
  * @beta
16
16
  */
17
17
  async function getAvailableCoordinateReferenceSystems(args) {
18
- return IModelHost_1.IModelHost.platform.GeoServices.getListOfCRS(args.extent);
18
+ return NativePlatform_1.IModelNative.platform.GeoServices.getListOfCRS(args.extent);
19
19
  }
20
20
  exports.getAvailableCoordinateReferenceSystems = getAvailableCoordinateReferenceSystems;
21
21
  //# sourceMappingURL=GeographicCRSServices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeographicCRSServices.js","sourceRoot":"","sources":["../../src/GeographicCRSServices.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,6CAA0C;AAiC1C;;;;GAIG;AACI,KAAK,UAAU,sCAAsC,CAAC,IAAgD;IAC3G,OAAO,uBAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAFD,wFAEC","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\nimport { Range2dProps } from \"@itwin/core-geometry\";\r\nimport { IModelHost } from \"./IModelHost\";\r\n\r\n/** Describes a geographic coordinate reference system produced by [[getAvailableCoordinateReferenceSystems]].\r\n * @beta\r\n */\r\nexport interface AvailableCoordinateReferenceSystemProps {\r\n /** The name of the coordinate reference system. It can be presented to the user in the UI as an identifier for the coordinate reference system. */\r\n name: string;\r\n /** The description of the coordinate reference system. It can be presented to the user in the UI as extra information for the coordinate reference system. */\r\n description: string;\r\n /** Indicate if the coordinate reference system is deprecated. A coordinate reference system is deprecated if it is no longer recommended for use.\r\n * A deprecated coordinate reference system can usually be substituted by a more accurate one. It is possible that an existing project uses a deprecated coordinate reference system.\r\n * However, for new projects, it is recommended to use a non-deprecated coordinate reference system.\r\n */\r\n deprecated: boolean;\r\n /** Extent of the coordinate reference system. This is the area where the coordinate reference system can be used.\r\n * Outside of this area, the coordinate reference system may not be accurate. The extent is defined by a range of longitude and latitude values.\r\n * Minimum longitude and latitude correspond to crsExtent.low.x and crsExtent.low.y, respectively.\r\n * Maximum longitude and latitude correspond to crsExtent.high.x and crsExtent.high.y, respectively.\r\n */\r\n crsExtent: Range2dProps;\r\n}\r\n\r\n/** Arguments supplied to [[getAvailableCoordinateReferenceSystems]].\r\n * @beta\r\n */\r\nexport interface GetAvailableCoordinateReferenceSystemsArgs {\r\n /** If provided, only return CRS's that contain the given extent. Minimum longitude and latitude correspond to extent.low.x and extent.low.y, respectively.\r\n * Maximum longitude and latitude correspond to extent.high.x and extent.high.y, respectively.\r\n */\r\n extent?: Range2dProps;\r\n}\r\n\r\n/** Get a list of Geographic Coordinate Reference Systems.\r\n * @param options Specifies the parameters to filter the returned list.\r\n * @returns The list of Geographic Coordinate Reference Systems, according to the supplied parameters.\r\n * @beta\r\n */\r\nexport async function getAvailableCoordinateReferenceSystems(args: GetAvailableCoordinateReferenceSystemsArgs): Promise<AvailableCoordinateReferenceSystemProps[]> {\r\n return IModelHost.platform.GeoServices.getListOfCRS(args.extent);\r\n}\r\n"]}
1
+ {"version":3,"file":"GeographicCRSServices.js","sourceRoot":"","sources":["../../src/GeographicCRSServices.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,8DAAyD;AAiCzD;;;;GAIG;AACI,KAAK,UAAU,sCAAsC,CAAC,IAAgD;IAC3G,OAAO,6BAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAFD,wFAEC","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\nimport { Range2dProps } from \"@itwin/core-geometry\";\r\nimport { IModelNative } from \"./internal/NativePlatform\";\r\n\r\n/** Describes a geographic coordinate reference system produced by [[getAvailableCoordinateReferenceSystems]].\r\n * @beta\r\n */\r\nexport interface AvailableCoordinateReferenceSystemProps {\r\n /** The name of the coordinate reference system. It can be presented to the user in the UI as an identifier for the coordinate reference system. */\r\n name: string;\r\n /** The description of the coordinate reference system. It can be presented to the user in the UI as extra information for the coordinate reference system. */\r\n description: string;\r\n /** Indicate if the coordinate reference system is deprecated. A coordinate reference system is deprecated if it is no longer recommended for use.\r\n * A deprecated coordinate reference system can usually be substituted by a more accurate one. It is possible that an existing project uses a deprecated coordinate reference system.\r\n * However, for new projects, it is recommended to use a non-deprecated coordinate reference system.\r\n */\r\n deprecated: boolean;\r\n /** Extent of the coordinate reference system. This is the area where the coordinate reference system can be used.\r\n * Outside of this area, the coordinate reference system may not be accurate. The extent is defined by a range of longitude and latitude values.\r\n * Minimum longitude and latitude correspond to crsExtent.low.x and crsExtent.low.y, respectively.\r\n * Maximum longitude and latitude correspond to crsExtent.high.x and crsExtent.high.y, respectively.\r\n */\r\n crsExtent: Range2dProps;\r\n}\r\n\r\n/** Arguments supplied to [[getAvailableCoordinateReferenceSystems]].\r\n * @beta\r\n */\r\nexport interface GetAvailableCoordinateReferenceSystemsArgs {\r\n /** If provided, only return CRS's that contain the given extent. Minimum longitude and latitude correspond to extent.low.x and extent.low.y, respectively.\r\n * Maximum longitude and latitude correspond to extent.high.x and extent.high.y, respectively.\r\n */\r\n extent?: Range2dProps;\r\n}\r\n\r\n/** Get a list of Geographic Coordinate Reference Systems.\r\n * @param options Specifies the parameters to filter the returned list.\r\n * @returns The list of Geographic Coordinate Reference Systems, according to the supplied parameters.\r\n * @beta\r\n */\r\nexport async function getAvailableCoordinateReferenceSystems(args: GetAvailableCoordinateReferenceSystemsArgs): Promise<AvailableCoordinateReferenceSystemProps[]> {\r\n return IModelNative.platform.GeoServices.getListOfCRS(args.extent);\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GeometrySummary.d.ts","sourceRoot":"","sources":["../../src/GeometrySummary.ts"],"names":[],"mappings":"AAYA,OAAO,EAC+C,2BAA2B,EAEhF,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAuZtC,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,CAGxG"}
1
+ {"version":3,"file":"GeometrySummary.d.ts","sourceRoot":"","sources":["../../src/GeometrySummary.ts"],"names":[],"mappings":"AAYA,OAAO,EAC+C,2BAA2B,EAEhF,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAwZtC,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,CAGxG"}
@@ -9,6 +9,7 @@ const core_bentley_1 = require("@itwin/core-bentley");
9
9
  const core_geometry_1 = require("@itwin/core-geometry");
10
10
  const core_common_1 = require("@itwin/core-common");
11
11
  const Element_1 = require("./Element");
12
+ const Symbols_1 = require("./internal/Symbols");
12
13
  // cspell:ignore earlin
13
14
  /** Generates an array of GeometryStreamResponseProps. */
14
15
  class ResponseGenerator {
@@ -89,7 +90,7 @@ class ResponseGenerator {
89
90
  return lines.join("\n");
90
91
  }
91
92
  summarizePartReferences(id, is2d) {
92
- const refIds = this.iModel.nativeDb.findGeometryPartReferences([id], is2d);
93
+ const refIds = this.iModel[Symbols_1._nativeDb].findGeometryPartReferences([id], is2d);
93
94
  return `Part references (${refIds.length}): ${refIds.join()}`;
94
95
  }
95
96
  getElementGeom(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"GeometrySummary.js","sourceRoot":"","sources":["../../src/GeometrySummary.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\r\nimport { assert, BentleyError, Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport {\r\n AkimaCurve3d, AnyGeometryQuery, Arc3d, BezierCurveBase, Box, BSplineCurve3d, Cone, CurveChainWithDistanceIndex, CurveCollection, CurvePrimitive, IModelJson,\r\n InterpolationCurve3d,\r\n LinearSweep, LineSegment3d, LineString3d, Loop, Path, Range3d, RotationalSweep, RuledSweep, SolidPrimitive, Sphere, TorusPipe, Transform,\r\n TransitionSpiral3d, UVSelect,\r\n} from \"@itwin/core-geometry\";\r\nimport {\r\n BRepEntity, GeometryParams, GeometryStreamIterator, GeometrySummaryRequestProps, GeometrySummaryVerbosity, ImagePrimitive,\r\n IModelError, TextStringPrimitive,\r\n} from \"@itwin/core-common\";\r\nimport { Element, GeometricElement, GeometryPart } from \"./Element\";\r\nimport { IModelDb } from \"./IModelDb\";\r\n\r\ninterface ElementGeom {\r\n iterator: GeometryStreamIterator;\r\n geometricElement?: GeometricElement;\r\n}\r\n\r\n// cspell:ignore earlin\r\n\r\n/** Generates an array of GeometryStreamResponseProps. */\r\nclass ResponseGenerator {\r\n public verbosity = GeometrySummaryVerbosity.Basic;\r\n public includePlacement = false;\r\n public includePartReferences?: \"2d\" | \"3d\";\r\n public verboseSymbology = false;\r\n public elementIds: Id64Array;\r\n public iModel: IModelDb;\r\n\r\n public get wantSquish() { return GeometrySummaryVerbosity.Full !== this.verbosity; }\r\n\r\n public constructor(request: GeometrySummaryRequestProps, iModel: IModelDb) {\r\n this.elementIds = request.elementIds;\r\n this.iModel = iModel;\r\n const opts = request.options;\r\n if (undefined !== opts) {\r\n this.verbosity = undefined !== opts.geometryVerbosity ? opts.geometryVerbosity : GeometrySummaryVerbosity.Basic;\r\n this.includePlacement = true === opts.includePlacement;\r\n this.includePartReferences = opts.includePartReferences;\r\n this.verboseSymbology = true === opts.verboseSymbology;\r\n }\r\n }\r\n\r\n public generateSummaries(): string {\r\n const summaries: string[] = [];\r\n for (const elementId of this.elementIds)\r\n summaries.push(this.generateSummary(elementId));\r\n\r\n return summaries.join(\"\\n\");\r\n }\r\n\r\n public generateSummary(id: Id64String): string {\r\n let lines = [`[Geometry Summary for Element ${id}]`];\r\n try {\r\n const geom = this.getElementGeom(id);\r\n if (undefined === geom)\r\n throw new IModelError(IModelStatus.NoGeometry, \"Element is neither a geometric element nor a geometry part\");\r\n\r\n if (undefined !== geom.geometricElement)\r\n lines.push(this.summarizeElement(geom.geometricElement));\r\n else if (undefined !== this.includePartReferences)\r\n lines.push(this.summarizePartReferences(id, \"2d\" === this.includePartReferences)); // NB: Hideously inefficient if more than one element's summary was requested.\r\n\r\n let curGeomParams: GeometryParams | undefined;\r\n let curLocalRange: Range3d | undefined;\r\n for (const entry of geom.iterator) {\r\n if (this.verboseSymbology && (undefined === curGeomParams || !curGeomParams.isEquivalent(entry.geomParams))) {\r\n lines.push(`Symbology: ${this.stringify(entry.geomParams)}`);\r\n curGeomParams = entry.geomParams.clone();\r\n }\r\n\r\n if (undefined !== entry.localRange && (undefined === curLocalRange || !curLocalRange.isAlmostEqual(entry.localRange))) {\r\n lines.push(this.summarizeRange3d(entry.localRange));\r\n curLocalRange = entry.localRange;\r\n }\r\n\r\n const prim = entry.primitive;\r\n switch (prim.type) {\r\n case \"textString\":\r\n case \"image\":\r\n this.summarizePrimitive(lines, prim);\r\n break;\r\n case \"brep\":\r\n this.summarizeBRep(lines, prim.brep);\r\n break;\r\n case \"geometryQuery\":\r\n this.summarizeGeometryQuery(lines, prim.geometry);\r\n break;\r\n case \"partReference\":\r\n lines.push(this.summarizePartReference(prim.part.id, prim.part.toLocal));\r\n break;\r\n }\r\n }\r\n } catch (err) {\r\n lines = lines.slice(0, 1);\r\n lines.push(`ERROR: ${BentleyError.getErrorMessage(err)}`);\r\n }\r\n\r\n return lines.filter((line) => line !== \"\").join(\"\\n\");\r\n }\r\n\r\n public summarizeElement(elem: GeometricElement): string {\r\n const lines: string[] = [];\r\n lines.push(`(${elem.is2d() ? \"2D\" : \"3D\"}) Category: ${elem.category}`);\r\n lines.push(`Model: ${elem.model}`);\r\n if (this.includePlacement) {\r\n lines.push(`Range: ${this.stringify(elem.calculateRange3d())}`);\r\n lines.push(`Transform: ${this.stringify(elem.getPlacementTransform())}`);\r\n }\r\n\r\n return lines.join(\"\\n\");\r\n }\r\n\r\n public summarizePartReferences(id: Id64String, is2d: boolean): string {\r\n const refIds = this.iModel.nativeDb.findGeometryPartReferences([id], is2d);\r\n return `Part references (${refIds.length}): ${refIds.join()}`;\r\n }\r\n\r\n public getElementGeom(id: Id64String): ElementGeom | undefined {\r\n const elem = this.iModel.elements.getElement<Element>({ id, wantGeometry: true });\r\n let iterator: GeometryStreamIterator | undefined;\r\n let geometricElement: GeometricElement | undefined;\r\n if (elem instanceof GeometricElement) {\r\n geometricElement = elem;\r\n if (geometricElement.is2d()) {\r\n iterator = GeometryStreamIterator.fromGeometricElement2d(geometricElement);\r\n } else {\r\n assert(geometricElement.is3d());\r\n iterator = GeometryStreamIterator.fromGeometricElement3d(geometricElement);\r\n }\r\n } else if (elem instanceof GeometryPart) {\r\n iterator = GeometryStreamIterator.fromGeometryPart(elem);\r\n }\r\n\r\n return undefined !== iterator ? { iterator, geometricElement } : undefined;\r\n }\r\n\r\n public summarizeRange3d(range: Range3d): string {\r\n return `SubGraphicRange: ${this.stringify(range)}`;\r\n }\r\n\r\n public summarizePrimitive(lines: string[], primitive: TextStringPrimitive | ImagePrimitive): void {\r\n const summary = primitive.type;\r\n if (GeometrySummaryVerbosity.Basic >= this.verbosity) {\r\n lines.push(summary);\r\n return;\r\n }\r\n\r\n const json = this.stringify(primitive.type === \"textString\" ? primitive.textString : primitive.image);\r\n if (GeometrySummaryVerbosity.Detailed >= this.verbosity) {\r\n lines.push(`${summary}: ${json}`);\r\n return;\r\n }\r\n\r\n lines.push(`${summary}:`);\r\n lines.push(json);\r\n }\r\n\r\n public summarizeBRep(lines: string[], brep: BRepEntity.DataProps): void {\r\n const summary = \"brep\";\r\n if (GeometrySummaryVerbosity.Basic >= this.verbosity) {\r\n lines.push(summary);\r\n return;\r\n }\r\n\r\n const json = this.stringify({ type: brep.type, transform: brep.transform, faceSymbology: brep.faceSymbology });\r\n if (GeometrySummaryVerbosity.Detailed >= this.verbosity) {\r\n lines.push(`${summary}: ${json}`);\r\n return;\r\n }\r\n\r\n lines.push(`${summary}:`);\r\n lines.push(json);\r\n }\r\n\r\n public summarizePartReference(partId: string, partToLocal?: Transform): string {\r\n let line = `part id: ${partId}`;\r\n if (undefined !== partToLocal)\r\n line = `${line} transform: ${this.stringify(partToLocal)}`;\r\n\r\n return line;\r\n }\r\n\r\n public summarizeGeometryQuery(lines: string[], query: AnyGeometryQuery): void {\r\n switch (this.verbosity) {\r\n case GeometrySummaryVerbosity.Detailed:\r\n lines.push(this.summarizeGeometryQueryDetailed(query));\r\n break;\r\n case GeometrySummaryVerbosity.Full:\r\n lines.push(this.summarizeGeometryQueryFull(query));\r\n break;\r\n default:\r\n lines.push(this.summarizeGeometryQueryBasic(query));\r\n break;\r\n }\r\n }\r\n\r\n public summarizeGeometryQueryBasic(query: AnyGeometryQuery): string {\r\n switch (query.geometryCategory) {\r\n case \"solid\":\r\n return query.solidPrimitiveType;\r\n case \"curvePrimitive\":\r\n return query.curvePrimitiveType;\r\n case \"curveCollection\":\r\n return query.curveCollectionType;\r\n default:\r\n return query.geometryCategory;\r\n }\r\n }\r\n\r\n public summarizeGeometryQueryFull(query: AnyGeometryQuery): string {\r\n return this.geometryQueryToJson(query);\r\n }\r\n\r\n public geometryQueryToJson(query: AnyGeometryQuery): string {\r\n try {\r\n const json = IModelJson.Writer.toIModelJson(query);\r\n const str = JSON.stringify(json);\r\n return this.wantSquish ? this.squish(str) : str;\r\n } catch (err) {\r\n return BentleyError.getErrorMessage(err);\r\n }\r\n }\r\n\r\n // Earlin likes to put tons of whitespace + newlines into his JSON. Remove it.\r\n public squish(str: string): string {\r\n return str.replace(/\\s+/g, \"\");\r\n }\r\n\r\n public stringify(obj: object): string {\r\n const json = JSON.stringify(obj);\r\n return this.wantSquish ? this.squish(json) : json;\r\n }\r\n\r\n public summarizeGeometryQueryDetailed(query: AnyGeometryQuery): string {\r\n let summary = `${this.summarizeGeometryQueryBasic(query)}: `;\r\n switch (query.geometryCategory) {\r\n case \"solid\":\r\n return summary + this.summarizeSolidPrimitive(query);\r\n case \"curvePrimitive\":\r\n return summary + this.summarizeCurvePrimitive(query);\r\n case \"curveCollection\":\r\n return summary + this.summarizeCurveCollection(query);\r\n case \"pointCollection\":\r\n return `${summary} numPoints: ${query.points.length}`;\r\n case \"bsurf\":\r\n return `${summary}'\r\n ' poleDimension: ${query.poleDimension}'\r\n ' numPolesTotal: ${query.numPolesTotal()}'\r\n ' degree[U,V]: ${JSON.stringify([query.degreeUV(UVSelect.uDirection), query.degreeUV(UVSelect.vDirection)])}'\r\n ' order[U,V]: ${JSON.stringify([query.orderUV(UVSelect.uDirection), query.orderUV(UVSelect.vDirection)])}'\r\n ' numSpan[U,V]: ${JSON.stringify([query.numSpanUV(UVSelect.uDirection), query.numSpanUV(UVSelect.vDirection)])}'\r\n ' numPoles[U,V]: ${JSON.stringify([query.numPolesUV(UVSelect.uDirection), query.numPolesUV(UVSelect.vDirection)])}'\r\n ' poleStep[U,V]: ${JSON.stringify([query.poleStepUV(UVSelect.uDirection), query.poleStepUV(UVSelect.vDirection)])}`;\r\n case \"polyface\": {\r\n const data = query.data;\r\n summary = `${summary} pointCount: ${data.point.length}'\r\n ' pointIndexCount: ${data.pointIndex.length}`;\r\n if (query.twoSided)\r\n summary = `${summary} (two-sided)`;\r\n if (undefined !== data.normal)\r\n summary = `${summary} normalCount: ${data.normal.length}`;\r\n if (undefined !== data.param)\r\n summary = `${summary} paramCount: ${data.param.length}`;\r\n if (undefined !== data.color)\r\n summary = `${summary} colorCount: ${data.color.length}`;\r\n\r\n return summary;\r\n }\r\n case \"point\":\r\n return summary + this.geometryQueryToJson(query);\r\n }\r\n }\r\n\r\n public summarizeSolidPrimitive(solid: SolidPrimitive): string {\r\n const summary: string = solid.capped ? \" capped\" : \" uncapped\";\r\n switch (solid.solidPrimitiveType) {\r\n case \"box\":\r\n const box: Box = (solid as Box);\r\n return `${summary}'\r\n ' origin: ${JSON.stringify(box.getBaseOrigin().toJSON())}'\r\n ' topOrigin: ${JSON.stringify(box.getTopOrigin().toJSON())}'\r\n ' baseX: ${box.getBaseX()}'\r\n ' baseY: ${box.getBaseY()}`;\r\n case \"cone\":\r\n const cone: Cone = solid as Cone;\r\n return `${summary}'\r\n ' baseCenterPoint: ${JSON.stringify(cone.getCenterA())}'\r\n ' topCenterPoint: ${JSON.stringify(cone.getCenterB())}'\r\n ' baseCenterRadius: ${JSON.stringify(cone.getRadiusA())}'\r\n ' topCenterRadius: ${JSON.stringify(cone.getRadiusB())}`;\r\n case \"sphere\":\r\n const sphere: Sphere = solid as Sphere;\r\n return `${summary}'\r\n ' centerPoint: ${JSON.stringify(sphere.cloneCenter().toJSON())}'\r\n ' radius: ${JSON.stringify(sphere.trueSphereRadius())}`;\r\n case \"linearSweep\":\r\n const linearSweep: LinearSweep = solid as LinearSweep;\r\n return `${summary}'\r\n ' vector: ${JSON.stringify(linearSweep.cloneSweepVector().toJSON())}'\r\n ' curves${this.summarizeCurveCollection(linearSweep.getCurvesRef())}`;\r\n case \"rotationalSweep\":\r\n const rotationalSweep: RotationalSweep = solid as RotationalSweep;\r\n const axis = rotationalSweep.cloneAxisRay();\r\n return `${summary}'\r\n ' center: ${JSON.stringify(axis.origin.toJSON())}'\r\n ' axis: ${JSON.stringify(axis.direction.toJSON())}'\r\n ' sweepAngle: ${rotationalSweep.getSweep().degrees}`;\r\n case \"ruledSweep\":\r\n const ruledSweep: RuledSweep = solid as RuledSweep;\r\n const summarizedCollection = ruledSweep.cloneContours().map((curveCollection) => this.summarizeCurveCollection(curveCollection));\r\n return `${summary}'\r\n ' isClosedVolume${ruledSweep.isClosedVolume}'\r\n ' contours: ${JSON.stringify(summarizedCollection)}`;\r\n case \"torusPipe\":\r\n const torusPipe: TorusPipe = solid as TorusPipe;\r\n const vectorX = torusPipe.cloneVectorX();\r\n const vectorY = torusPipe.cloneVectorY();\r\n const sweep = torusPipe.getSweepAngle();\r\n if (torusPipe.getIsReversed()) {\r\n vectorY.scaleInPlace(-1.0);\r\n sweep.setRadians(-sweep.radians);\r\n }\r\n return `${summary}'\r\n ' center: ${JSON.stringify(torusPipe.cloneCenter().toJSON())}'\r\n ' xyVectors: ${JSON.stringify([vectorX.toJSON(), vectorY.toJSON()])}'\r\n ' majorRadius: ${torusPipe.getMajorRadius()}'\r\n ' minorRadius: ${torusPipe.getMinorRadius()}'\r\n ' sweepAngle: ${sweep.degrees}`;\r\n }\r\n }\r\n\r\n public summarizeCurvePrimitive(curve: CurvePrimitive): string {\r\n let summary: string = \"\";\r\n const writer = new IModelJson.Writer();\r\n switch (curve.curvePrimitiveType) {\r\n case \"arc\":\r\n const arc: Arc3d = curve as Arc3d;\r\n summary = `${summary} center: ${JSON.stringify(arc.center.toJSON())}`;\r\n if (undefined !== arc.circularRadius)\r\n summary = `${summary} radius: ${arc.circularRadius()}`;\r\n summary = `${summary}'\r\n ' vectorX:${JSON.stringify(arc.vector0.toJSON())}'\r\n ' vectorY:${JSON.stringify(arc.vector90.toJSON())}'\r\n ' sweepStartEnd [${arc.sweep.startDegrees}, ${arc.sweep.endDegrees}]`\r\n + ` curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"lineSegment\":\r\n const lineSegment: LineSegment3d = curve as LineSegment3d;\r\n summary = `${summary} points: ${JSON.stringify(lineSegment.toJSON())}`;\r\n summary = `${summary} curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"lineString\":\r\n const lineString: LineString3d = curve as LineString3d;\r\n summary = `${summary} pointCount: ${lineString.numPoints()}'\r\n ' curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"bsplineCurve\":\r\n const bsplineCurve: BSplineCurve3d = curve as BSplineCurve3d;\r\n summary = `${summary}'\r\n ' curveOrder: ${bsplineCurve.order}'\r\n ' controlPointsCount: ${bsplineCurve.numPoles}'\r\n ' curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"interpolationCurve\":\r\n const interpolationCurve: InterpolationCurve3d = curve as InterpolationCurve3d;\r\n const interpolationProps = interpolationCurve.cloneProps();\r\n summary = `${summary}'\r\n ' curveOrder: ${interpolationProps.order}'\r\n ' controlPointsCount: ${interpolationProps.fitPoints.length}`;\r\n return summary;\r\n case \"akimaCurve\":\r\n const akimaCurve: AkimaCurve3d = curve as AkimaCurve3d;\r\n const akimaProps = akimaCurve.cloneProps();\r\n summary = `${summary}'\r\n ' controlPointsCount: ${akimaProps.fitPoints.length}`;\r\n return summary;\r\n case \"bezierCurve\":\r\n const bezierCurve: BezierCurveBase = curve as BezierCurveBase;\r\n summary = `${summary}'\r\n ' curveOrder: ${bezierCurve.order}'\r\n ' controlPointsCount: ${bezierCurve.numPoles}'\r\n ' curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"transitionSpiral\":\r\n const transitionSpiral: TransitionSpiral3d = curve as TransitionSpiral3d;\r\n const json = writer.handleTransitionSpiral(transitionSpiral);\r\n summary = summary + JSON.stringify(json);\r\n return summary;\r\n case \"curveChainWithDistanceIndex\":\r\n const curveChainWithDistanceIndex: CurveChainWithDistanceIndex = curve as CurveChainWithDistanceIndex;\r\n const path = curveChainWithDistanceIndex.path;\r\n summary = `${summary}'\r\n ' curveLength: ${curve.curveLength()}'\r\n ' isOpen: ${path.isOpenPath}`;\r\n return summary;\r\n }\r\n }\r\n\r\n public summarizeCurveCollection(curves: CurveCollection): string {\r\n let summary: string = \"\";\r\n switch (curves.curveCollectionType) {\r\n case \"loop\":\r\n const loop: Loop = curves as Loop;\r\n summary = `${summary} isInner: ${loop.isInner}`;\r\n break;\r\n case \"path\":\r\n const path: Path = curves as Path;\r\n summary = `${summary} isOpen: ${path.isOpenPath}`;\r\n break;\r\n }\r\n\r\n return `${summary}'\r\n ' numCurves: ${curves.collectCurvePrimitives().length}'\r\n ' boundary: ${curves.dgnBoundaryType()}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function generateGeometrySummaries(request: GeometrySummaryRequestProps, iModel: IModelDb): string {\r\n const generator = new ResponseGenerator(request, iModel);\r\n return generator.generateSummaries();\r\n}\r\n"]}
1
+ {"version":3,"file":"GeometrySummary.js","sourceRoot":"","sources":["../../src/GeometrySummary.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\r\nimport { assert, BentleyError, Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport {\r\n AkimaCurve3d, AnyGeometryQuery, Arc3d, BezierCurveBase, Box, BSplineCurve3d, Cone, CurveChainWithDistanceIndex, CurveCollection, CurvePrimitive, IModelJson,\r\n InterpolationCurve3d,\r\n LinearSweep, LineSegment3d, LineString3d, Loop, Path, Range3d, RotationalSweep, RuledSweep, SolidPrimitive, Sphere, TorusPipe, Transform,\r\n TransitionSpiral3d, UVSelect,\r\n} from \"@itwin/core-geometry\";\r\nimport {\r\n BRepEntity, GeometryParams, GeometryStreamIterator, GeometrySummaryRequestProps, GeometrySummaryVerbosity, ImagePrimitive,\r\n IModelError, TextStringPrimitive,\r\n} from \"@itwin/core-common\";\r\nimport { Element, GeometricElement, GeometryPart } from \"./Element\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { _nativeDb } from \"./internal/Symbols\";\r\n\r\ninterface ElementGeom {\r\n iterator: GeometryStreamIterator;\r\n geometricElement?: GeometricElement;\r\n}\r\n\r\n// cspell:ignore earlin\r\n\r\n/** Generates an array of GeometryStreamResponseProps. */\r\nclass ResponseGenerator {\r\n public verbosity = GeometrySummaryVerbosity.Basic;\r\n public includePlacement = false;\r\n public includePartReferences?: \"2d\" | \"3d\";\r\n public verboseSymbology = false;\r\n public elementIds: Id64Array;\r\n public iModel: IModelDb;\r\n\r\n public get wantSquish() { return GeometrySummaryVerbosity.Full !== this.verbosity; }\r\n\r\n public constructor(request: GeometrySummaryRequestProps, iModel: IModelDb) {\r\n this.elementIds = request.elementIds;\r\n this.iModel = iModel;\r\n const opts = request.options;\r\n if (undefined !== opts) {\r\n this.verbosity = undefined !== opts.geometryVerbosity ? opts.geometryVerbosity : GeometrySummaryVerbosity.Basic;\r\n this.includePlacement = true === opts.includePlacement;\r\n this.includePartReferences = opts.includePartReferences;\r\n this.verboseSymbology = true === opts.verboseSymbology;\r\n }\r\n }\r\n\r\n public generateSummaries(): string {\r\n const summaries: string[] = [];\r\n for (const elementId of this.elementIds)\r\n summaries.push(this.generateSummary(elementId));\r\n\r\n return summaries.join(\"\\n\");\r\n }\r\n\r\n public generateSummary(id: Id64String): string {\r\n let lines = [`[Geometry Summary for Element ${id}]`];\r\n try {\r\n const geom = this.getElementGeom(id);\r\n if (undefined === geom)\r\n throw new IModelError(IModelStatus.NoGeometry, \"Element is neither a geometric element nor a geometry part\");\r\n\r\n if (undefined !== geom.geometricElement)\r\n lines.push(this.summarizeElement(geom.geometricElement));\r\n else if (undefined !== this.includePartReferences)\r\n lines.push(this.summarizePartReferences(id, \"2d\" === this.includePartReferences)); // NB: Hideously inefficient if more than one element's summary was requested.\r\n\r\n let curGeomParams: GeometryParams | undefined;\r\n let curLocalRange: Range3d | undefined;\r\n for (const entry of geom.iterator) {\r\n if (this.verboseSymbology && (undefined === curGeomParams || !curGeomParams.isEquivalent(entry.geomParams))) {\r\n lines.push(`Symbology: ${this.stringify(entry.geomParams)}`);\r\n curGeomParams = entry.geomParams.clone();\r\n }\r\n\r\n if (undefined !== entry.localRange && (undefined === curLocalRange || !curLocalRange.isAlmostEqual(entry.localRange))) {\r\n lines.push(this.summarizeRange3d(entry.localRange));\r\n curLocalRange = entry.localRange;\r\n }\r\n\r\n const prim = entry.primitive;\r\n switch (prim.type) {\r\n case \"textString\":\r\n case \"image\":\r\n this.summarizePrimitive(lines, prim);\r\n break;\r\n case \"brep\":\r\n this.summarizeBRep(lines, prim.brep);\r\n break;\r\n case \"geometryQuery\":\r\n this.summarizeGeometryQuery(lines, prim.geometry);\r\n break;\r\n case \"partReference\":\r\n lines.push(this.summarizePartReference(prim.part.id, prim.part.toLocal));\r\n break;\r\n }\r\n }\r\n } catch (err) {\r\n lines = lines.slice(0, 1);\r\n lines.push(`ERROR: ${BentleyError.getErrorMessage(err)}`);\r\n }\r\n\r\n return lines.filter((line) => line !== \"\").join(\"\\n\");\r\n }\r\n\r\n public summarizeElement(elem: GeometricElement): string {\r\n const lines: string[] = [];\r\n lines.push(`(${elem.is2d() ? \"2D\" : \"3D\"}) Category: ${elem.category}`);\r\n lines.push(`Model: ${elem.model}`);\r\n if (this.includePlacement) {\r\n lines.push(`Range: ${this.stringify(elem.calculateRange3d())}`);\r\n lines.push(`Transform: ${this.stringify(elem.getPlacementTransform())}`);\r\n }\r\n\r\n return lines.join(\"\\n\");\r\n }\r\n\r\n public summarizePartReferences(id: Id64String, is2d: boolean): string {\r\n const refIds = this.iModel[_nativeDb].findGeometryPartReferences([id], is2d);\r\n return `Part references (${refIds.length}): ${refIds.join()}`;\r\n }\r\n\r\n public getElementGeom(id: Id64String): ElementGeom | undefined {\r\n const elem = this.iModel.elements.getElement<Element>({ id, wantGeometry: true });\r\n let iterator: GeometryStreamIterator | undefined;\r\n let geometricElement: GeometricElement | undefined;\r\n if (elem instanceof GeometricElement) {\r\n geometricElement = elem;\r\n if (geometricElement.is2d()) {\r\n iterator = GeometryStreamIterator.fromGeometricElement2d(geometricElement);\r\n } else {\r\n assert(geometricElement.is3d());\r\n iterator = GeometryStreamIterator.fromGeometricElement3d(geometricElement);\r\n }\r\n } else if (elem instanceof GeometryPart) {\r\n iterator = GeometryStreamIterator.fromGeometryPart(elem);\r\n }\r\n\r\n return undefined !== iterator ? { iterator, geometricElement } : undefined;\r\n }\r\n\r\n public summarizeRange3d(range: Range3d): string {\r\n return `SubGraphicRange: ${this.stringify(range)}`;\r\n }\r\n\r\n public summarizePrimitive(lines: string[], primitive: TextStringPrimitive | ImagePrimitive): void {\r\n const summary = primitive.type;\r\n if (GeometrySummaryVerbosity.Basic >= this.verbosity) {\r\n lines.push(summary);\r\n return;\r\n }\r\n\r\n const json = this.stringify(primitive.type === \"textString\" ? primitive.textString : primitive.image);\r\n if (GeometrySummaryVerbosity.Detailed >= this.verbosity) {\r\n lines.push(`${summary}: ${json}`);\r\n return;\r\n }\r\n\r\n lines.push(`${summary}:`);\r\n lines.push(json);\r\n }\r\n\r\n public summarizeBRep(lines: string[], brep: BRepEntity.DataProps): void {\r\n const summary = \"brep\";\r\n if (GeometrySummaryVerbosity.Basic >= this.verbosity) {\r\n lines.push(summary);\r\n return;\r\n }\r\n\r\n const json = this.stringify({ type: brep.type, transform: brep.transform, faceSymbology: brep.faceSymbology });\r\n if (GeometrySummaryVerbosity.Detailed >= this.verbosity) {\r\n lines.push(`${summary}: ${json}`);\r\n return;\r\n }\r\n\r\n lines.push(`${summary}:`);\r\n lines.push(json);\r\n }\r\n\r\n public summarizePartReference(partId: string, partToLocal?: Transform): string {\r\n let line = `part id: ${partId}`;\r\n if (undefined !== partToLocal)\r\n line = `${line} transform: ${this.stringify(partToLocal)}`;\r\n\r\n return line;\r\n }\r\n\r\n public summarizeGeometryQuery(lines: string[], query: AnyGeometryQuery): void {\r\n switch (this.verbosity) {\r\n case GeometrySummaryVerbosity.Detailed:\r\n lines.push(this.summarizeGeometryQueryDetailed(query));\r\n break;\r\n case GeometrySummaryVerbosity.Full:\r\n lines.push(this.summarizeGeometryQueryFull(query));\r\n break;\r\n default:\r\n lines.push(this.summarizeGeometryQueryBasic(query));\r\n break;\r\n }\r\n }\r\n\r\n public summarizeGeometryQueryBasic(query: AnyGeometryQuery): string {\r\n switch (query.geometryCategory) {\r\n case \"solid\":\r\n return query.solidPrimitiveType;\r\n case \"curvePrimitive\":\r\n return query.curvePrimitiveType;\r\n case \"curveCollection\":\r\n return query.curveCollectionType;\r\n default:\r\n return query.geometryCategory;\r\n }\r\n }\r\n\r\n public summarizeGeometryQueryFull(query: AnyGeometryQuery): string {\r\n return this.geometryQueryToJson(query);\r\n }\r\n\r\n public geometryQueryToJson(query: AnyGeometryQuery): string {\r\n try {\r\n const json = IModelJson.Writer.toIModelJson(query);\r\n const str = JSON.stringify(json);\r\n return this.wantSquish ? this.squish(str) : str;\r\n } catch (err) {\r\n return BentleyError.getErrorMessage(err);\r\n }\r\n }\r\n\r\n // Earlin likes to put tons of whitespace + newlines into his JSON. Remove it.\r\n public squish(str: string): string {\r\n return str.replace(/\\s+/g, \"\");\r\n }\r\n\r\n public stringify(obj: object): string {\r\n const json = JSON.stringify(obj);\r\n return this.wantSquish ? this.squish(json) : json;\r\n }\r\n\r\n public summarizeGeometryQueryDetailed(query: AnyGeometryQuery): string {\r\n let summary = `${this.summarizeGeometryQueryBasic(query)}: `;\r\n switch (query.geometryCategory) {\r\n case \"solid\":\r\n return summary + this.summarizeSolidPrimitive(query);\r\n case \"curvePrimitive\":\r\n return summary + this.summarizeCurvePrimitive(query);\r\n case \"curveCollection\":\r\n return summary + this.summarizeCurveCollection(query);\r\n case \"pointCollection\":\r\n return `${summary} numPoints: ${query.points.length}`;\r\n case \"bsurf\":\r\n return `${summary}'\r\n ' poleDimension: ${query.poleDimension}'\r\n ' numPolesTotal: ${query.numPolesTotal()}'\r\n ' degree[U,V]: ${JSON.stringify([query.degreeUV(UVSelect.uDirection), query.degreeUV(UVSelect.vDirection)])}'\r\n ' order[U,V]: ${JSON.stringify([query.orderUV(UVSelect.uDirection), query.orderUV(UVSelect.vDirection)])}'\r\n ' numSpan[U,V]: ${JSON.stringify([query.numSpanUV(UVSelect.uDirection), query.numSpanUV(UVSelect.vDirection)])}'\r\n ' numPoles[U,V]: ${JSON.stringify([query.numPolesUV(UVSelect.uDirection), query.numPolesUV(UVSelect.vDirection)])}'\r\n ' poleStep[U,V]: ${JSON.stringify([query.poleStepUV(UVSelect.uDirection), query.poleStepUV(UVSelect.vDirection)])}`;\r\n case \"polyface\": {\r\n const data = query.data;\r\n summary = `${summary} pointCount: ${data.point.length}'\r\n ' pointIndexCount: ${data.pointIndex.length}`;\r\n if (query.twoSided)\r\n summary = `${summary} (two-sided)`;\r\n if (undefined !== data.normal)\r\n summary = `${summary} normalCount: ${data.normal.length}`;\r\n if (undefined !== data.param)\r\n summary = `${summary} paramCount: ${data.param.length}`;\r\n if (undefined !== data.color)\r\n summary = `${summary} colorCount: ${data.color.length}`;\r\n\r\n return summary;\r\n }\r\n case \"point\":\r\n return summary + this.geometryQueryToJson(query);\r\n }\r\n }\r\n\r\n public summarizeSolidPrimitive(solid: SolidPrimitive): string {\r\n const summary: string = solid.capped ? \" capped\" : \" uncapped\";\r\n switch (solid.solidPrimitiveType) {\r\n case \"box\":\r\n const box: Box = (solid as Box);\r\n return `${summary}'\r\n ' origin: ${JSON.stringify(box.getBaseOrigin().toJSON())}'\r\n ' topOrigin: ${JSON.stringify(box.getTopOrigin().toJSON())}'\r\n ' baseX: ${box.getBaseX()}'\r\n ' baseY: ${box.getBaseY()}`;\r\n case \"cone\":\r\n const cone: Cone = solid as Cone;\r\n return `${summary}'\r\n ' baseCenterPoint: ${JSON.stringify(cone.getCenterA())}'\r\n ' topCenterPoint: ${JSON.stringify(cone.getCenterB())}'\r\n ' baseCenterRadius: ${JSON.stringify(cone.getRadiusA())}'\r\n ' topCenterRadius: ${JSON.stringify(cone.getRadiusB())}`;\r\n case \"sphere\":\r\n const sphere: Sphere = solid as Sphere;\r\n return `${summary}'\r\n ' centerPoint: ${JSON.stringify(sphere.cloneCenter().toJSON())}'\r\n ' radius: ${JSON.stringify(sphere.trueSphereRadius())}`;\r\n case \"linearSweep\":\r\n const linearSweep: LinearSweep = solid as LinearSweep;\r\n return `${summary}'\r\n ' vector: ${JSON.stringify(linearSweep.cloneSweepVector().toJSON())}'\r\n ' curves${this.summarizeCurveCollection(linearSweep.getCurvesRef())}`;\r\n case \"rotationalSweep\":\r\n const rotationalSweep: RotationalSweep = solid as RotationalSweep;\r\n const axis = rotationalSweep.cloneAxisRay();\r\n return `${summary}'\r\n ' center: ${JSON.stringify(axis.origin.toJSON())}'\r\n ' axis: ${JSON.stringify(axis.direction.toJSON())}'\r\n ' sweepAngle: ${rotationalSweep.getSweep().degrees}`;\r\n case \"ruledSweep\":\r\n const ruledSweep: RuledSweep = solid as RuledSweep;\r\n const summarizedCollection = ruledSweep.cloneContours().map((curveCollection) => this.summarizeCurveCollection(curveCollection));\r\n return `${summary}'\r\n ' isClosedVolume${ruledSweep.isClosedVolume}'\r\n ' contours: ${JSON.stringify(summarizedCollection)}`;\r\n case \"torusPipe\":\r\n const torusPipe: TorusPipe = solid as TorusPipe;\r\n const vectorX = torusPipe.cloneVectorX();\r\n const vectorY = torusPipe.cloneVectorY();\r\n const sweep = torusPipe.getSweepAngle();\r\n if (torusPipe.getIsReversed()) {\r\n vectorY.scaleInPlace(-1.0);\r\n sweep.setRadians(-sweep.radians);\r\n }\r\n return `${summary}'\r\n ' center: ${JSON.stringify(torusPipe.cloneCenter().toJSON())}'\r\n ' xyVectors: ${JSON.stringify([vectorX.toJSON(), vectorY.toJSON()])}'\r\n ' majorRadius: ${torusPipe.getMajorRadius()}'\r\n ' minorRadius: ${torusPipe.getMinorRadius()}'\r\n ' sweepAngle: ${sweep.degrees}`;\r\n }\r\n }\r\n\r\n public summarizeCurvePrimitive(curve: CurvePrimitive): string {\r\n let summary: string = \"\";\r\n const writer = new IModelJson.Writer();\r\n switch (curve.curvePrimitiveType) {\r\n case \"arc\":\r\n const arc: Arc3d = curve as Arc3d;\r\n summary = `${summary} center: ${JSON.stringify(arc.center.toJSON())}`;\r\n if (undefined !== arc.circularRadius)\r\n summary = `${summary} radius: ${arc.circularRadius()}`;\r\n summary = `${summary}'\r\n ' vectorX:${JSON.stringify(arc.vector0.toJSON())}'\r\n ' vectorY:${JSON.stringify(arc.vector90.toJSON())}'\r\n ' sweepStartEnd [${arc.sweep.startDegrees}, ${arc.sweep.endDegrees}]`\r\n + ` curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"lineSegment\":\r\n const lineSegment: LineSegment3d = curve as LineSegment3d;\r\n summary = `${summary} points: ${JSON.stringify(lineSegment.toJSON())}`;\r\n summary = `${summary} curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"lineString\":\r\n const lineString: LineString3d = curve as LineString3d;\r\n summary = `${summary} pointCount: ${lineString.numPoints()}'\r\n ' curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"bsplineCurve\":\r\n const bsplineCurve: BSplineCurve3d = curve as BSplineCurve3d;\r\n summary = `${summary}'\r\n ' curveOrder: ${bsplineCurve.order}'\r\n ' controlPointsCount: ${bsplineCurve.numPoles}'\r\n ' curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"interpolationCurve\":\r\n const interpolationCurve: InterpolationCurve3d = curve as InterpolationCurve3d;\r\n const interpolationProps = interpolationCurve.cloneProps();\r\n summary = `${summary}'\r\n ' curveOrder: ${interpolationProps.order}'\r\n ' controlPointsCount: ${interpolationProps.fitPoints.length}`;\r\n return summary;\r\n case \"akimaCurve\":\r\n const akimaCurve: AkimaCurve3d = curve as AkimaCurve3d;\r\n const akimaProps = akimaCurve.cloneProps();\r\n summary = `${summary}'\r\n ' controlPointsCount: ${akimaProps.fitPoints.length}`;\r\n return summary;\r\n case \"bezierCurve\":\r\n const bezierCurve: BezierCurveBase = curve as BezierCurveBase;\r\n summary = `${summary}'\r\n ' curveOrder: ${bezierCurve.order}'\r\n ' controlPointsCount: ${bezierCurve.numPoles}'\r\n ' curveLength: ${curve.curveLength()}`;\r\n return summary;\r\n case \"transitionSpiral\":\r\n const transitionSpiral: TransitionSpiral3d = curve as TransitionSpiral3d;\r\n const json = writer.handleTransitionSpiral(transitionSpiral);\r\n summary = summary + JSON.stringify(json);\r\n return summary;\r\n case \"curveChainWithDistanceIndex\":\r\n const curveChainWithDistanceIndex: CurveChainWithDistanceIndex = curve as CurveChainWithDistanceIndex;\r\n const path = curveChainWithDistanceIndex.path;\r\n summary = `${summary}'\r\n ' curveLength: ${curve.curveLength()}'\r\n ' isOpen: ${path.isOpenPath}`;\r\n return summary;\r\n }\r\n }\r\n\r\n public summarizeCurveCollection(curves: CurveCollection): string {\r\n let summary: string = \"\";\r\n switch (curves.curveCollectionType) {\r\n case \"loop\":\r\n const loop: Loop = curves as Loop;\r\n summary = `${summary} isInner: ${loop.isInner}`;\r\n break;\r\n case \"path\":\r\n const path: Path = curves as Path;\r\n summary = `${summary} isOpen: ${path.isOpenPath}`;\r\n break;\r\n }\r\n\r\n return `${summary}'\r\n ' numCurves: ${curves.collectCurvePrimitives().length}'\r\n ' boundary: ${curves.dgnBoundaryType()}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function generateGeometrySummaries(request: GeometrySummaryRequestProps, iModel: IModelDb): string {\r\n const generator = new ResponseGenerator(request, iModel);\r\n return generator.generateSummaries();\r\n}\r\n"]}