@itwin/core-backend 3.0.0-dev.100

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 (245) hide show
  1. package/CHANGELOG.md +1525 -0
  2. package/LICENSE.md +9 -0
  3. package/README.md +11 -0
  4. package/lib/cjs/AliCloudStorageService.d.ts +12 -0
  5. package/lib/cjs/AliCloudStorageService.d.ts.map +1 -0
  6. package/lib/cjs/AliCloudStorageService.js +70 -0
  7. package/lib/cjs/AliCloudStorageService.js.map +1 -0
  8. package/lib/cjs/BackendHubAccess.d.ts +208 -0
  9. package/lib/cjs/BackendHubAccess.d.ts.map +1 -0
  10. package/lib/cjs/BackendHubAccess.js +42 -0
  11. package/lib/cjs/BackendHubAccess.js.map +1 -0
  12. package/lib/cjs/BackendLoggerCategory.d.ts +83 -0
  13. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -0
  14. package/lib/cjs/BackendLoggerCategory.js +91 -0
  15. package/lib/cjs/BackendLoggerCategory.js.map +1 -0
  16. package/lib/cjs/BisCoreSchema.d.ts +22 -0
  17. package/lib/cjs/BisCoreSchema.d.ts.map +1 -0
  18. package/lib/cjs/BisCoreSchema.js +61 -0
  19. package/lib/cjs/BisCoreSchema.js.map +1 -0
  20. package/lib/cjs/BriefcaseManager.d.ts +167 -0
  21. package/lib/cjs/BriefcaseManager.d.ts.map +1 -0
  22. package/lib/cjs/BriefcaseManager.js +406 -0
  23. package/lib/cjs/BriefcaseManager.js.map +1 -0
  24. package/lib/cjs/Category.d.ts +154 -0
  25. package/lib/cjs/Category.d.ts.map +1 -0
  26. package/lib/cjs/Category.js +244 -0
  27. package/lib/cjs/Category.js.map +1 -0
  28. package/lib/cjs/ChangeSummaryManager.d.ts +188 -0
  29. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -0
  30. package/lib/cjs/ChangeSummaryManager.js +444 -0
  31. package/lib/cjs/ChangeSummaryManager.js.map +1 -0
  32. package/lib/cjs/ChangedElementsDb.d.ts +97 -0
  33. package/lib/cjs/ChangedElementsDb.d.ts.map +1 -0
  34. package/lib/cjs/ChangedElementsDb.js +166 -0
  35. package/lib/cjs/ChangedElementsDb.js.map +1 -0
  36. package/lib/cjs/ChangedElementsManager.d.ts +40 -0
  37. package/lib/cjs/ChangedElementsManager.d.ts.map +1 -0
  38. package/lib/cjs/ChangedElementsManager.js +89 -0
  39. package/lib/cjs/ChangedElementsManager.js.map +1 -0
  40. package/lib/cjs/CheckpointManager.d.ts +101 -0
  41. package/lib/cjs/CheckpointManager.d.ts.map +1 -0
  42. package/lib/cjs/CheckpointManager.js +257 -0
  43. package/lib/cjs/CheckpointManager.js.map +1 -0
  44. package/lib/cjs/ClassRegistry.d.ts +72 -0
  45. package/lib/cjs/ClassRegistry.d.ts.map +1 -0
  46. package/lib/cjs/ClassRegistry.js +154 -0
  47. package/lib/cjs/ClassRegistry.js.map +1 -0
  48. package/lib/cjs/CloudStorageBackend.d.ts +46 -0
  49. package/lib/cjs/CloudStorageBackend.d.ts.map +1 -0
  50. package/lib/cjs/CloudStorageBackend.js +157 -0
  51. package/lib/cjs/CloudStorageBackend.js.map +1 -0
  52. package/lib/cjs/CodeSpecs.d.ts +51 -0
  53. package/lib/cjs/CodeSpecs.d.ts.map +1 -0
  54. package/lib/cjs/CodeSpecs.js +113 -0
  55. package/lib/cjs/CodeSpecs.js.map +1 -0
  56. package/lib/cjs/ConcurrentQuery.d.ts +12 -0
  57. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -0
  58. package/lib/cjs/ConcurrentQuery.js +24 -0
  59. package/lib/cjs/ConcurrentQuery.js.map +1 -0
  60. package/lib/cjs/DevTools.d.ts +72 -0
  61. package/lib/cjs/DevTools.d.ts.map +1 -0
  62. package/lib/cjs/DevTools.js +155 -0
  63. package/lib/cjs/DevTools.js.map +1 -0
  64. package/lib/cjs/DisplayStyle.d.ts +107 -0
  65. package/lib/cjs/DisplayStyle.d.ts.map +1 -0
  66. package/lib/cjs/DisplayStyle.js +292 -0
  67. package/lib/cjs/DisplayStyle.js.map +1 -0
  68. package/lib/cjs/ECDb.d.ts +196 -0
  69. package/lib/cjs/ECDb.d.ts.map +1 -0
  70. package/lib/cjs/ECDb.js +354 -0
  71. package/lib/cjs/ECDb.js.map +1 -0
  72. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -0
  73. package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -0
  74. package/lib/cjs/ECSchemaXmlContext.js +36 -0
  75. package/lib/cjs/ECSchemaXmlContext.js.map +1 -0
  76. package/lib/cjs/ECSqlStatement.d.ts +467 -0
  77. package/lib/cjs/ECSqlStatement.d.ts.map +1 -0
  78. package/lib/cjs/ECSqlStatement.js +783 -0
  79. package/lib/cjs/ECSqlStatement.js.map +1 -0
  80. package/lib/cjs/Element.d.ts +1082 -0
  81. package/lib/cjs/Element.d.ts.map +1 -0
  82. package/lib/cjs/Element.js +1392 -0
  83. package/lib/cjs/Element.js.map +1 -0
  84. package/lib/cjs/ElementAspect.d.ts +157 -0
  85. package/lib/cjs/ElementAspect.d.ts.map +1 -0
  86. package/lib/cjs/ElementAspect.js +179 -0
  87. package/lib/cjs/ElementAspect.js.map +1 -0
  88. package/lib/cjs/ElementGraphics.d.ts +10 -0
  89. package/lib/cjs/ElementGraphics.d.ts.map +1 -0
  90. package/lib/cjs/ElementGraphics.js +42 -0
  91. package/lib/cjs/ElementGraphics.js.map +1 -0
  92. package/lib/cjs/Entity.d.ts +57 -0
  93. package/lib/cjs/Entity.d.ts.map +1 -0
  94. package/lib/cjs/Entity.js +63 -0
  95. package/lib/cjs/Entity.js.map +1 -0
  96. package/lib/cjs/ExportGraphics.d.ts +302 -0
  97. package/lib/cjs/ExportGraphics.d.ts.map +1 -0
  98. package/lib/cjs/ExportGraphics.js +206 -0
  99. package/lib/cjs/ExportGraphics.js.map +1 -0
  100. package/lib/cjs/ExternalSource.d.ts +95 -0
  101. package/lib/cjs/ExternalSource.d.ts.map +1 -0
  102. package/lib/cjs/ExternalSource.js +126 -0
  103. package/lib/cjs/ExternalSource.js.map +1 -0
  104. package/lib/cjs/GeometrySummary.d.ts +5 -0
  105. package/lib/cjs/GeometrySummary.d.ts.map +1 -0
  106. package/lib/cjs/GeometrySummary.js +378 -0
  107. package/lib/cjs/GeometrySummary.js.map +1 -0
  108. package/lib/cjs/IModelCloneContext.d.ts +74 -0
  109. package/lib/cjs/IModelCloneContext.d.ts.map +1 -0
  110. package/lib/cjs/IModelCloneContext.js +130 -0
  111. package/lib/cjs/IModelCloneContext.js.map +1 -0
  112. package/lib/cjs/IModelDb.d.ts +1107 -0
  113. package/lib/cjs/IModelDb.d.ts.map +1 -0
  114. package/lib/cjs/IModelDb.js +2161 -0
  115. package/lib/cjs/IModelDb.js.map +1 -0
  116. package/lib/cjs/IModelHost.d.ts +284 -0
  117. package/lib/cjs/IModelHost.d.ts.map +1 -0
  118. package/lib/cjs/IModelHost.js +411 -0
  119. package/lib/cjs/IModelHost.js.map +1 -0
  120. package/lib/cjs/IModelJsFs.d.ts +63 -0
  121. package/lib/cjs/IModelJsFs.d.ts.map +1 -0
  122. package/lib/cjs/IModelJsFs.js +141 -0
  123. package/lib/cjs/IModelJsFs.js.map +1 -0
  124. package/lib/cjs/IModelSchemaLoader.d.ts +26 -0
  125. package/lib/cjs/IModelSchemaLoader.d.ts.map +1 -0
  126. package/lib/cjs/IModelSchemaLoader.js +95 -0
  127. package/lib/cjs/IModelSchemaLoader.js.map +1 -0
  128. package/lib/cjs/IpcHost.d.ts +99 -0
  129. package/lib/cjs/IpcHost.d.ts.map +1 -0
  130. package/lib/cjs/IpcHost.js +234 -0
  131. package/lib/cjs/IpcHost.js.map +1 -0
  132. package/lib/cjs/LineStyle.d.ts +312 -0
  133. package/lib/cjs/LineStyle.d.ts.map +1 -0
  134. package/lib/cjs/LineStyle.js +296 -0
  135. package/lib/cjs/LineStyle.js.map +1 -0
  136. package/lib/cjs/LocalhostIpcHost.d.ts +19 -0
  137. package/lib/cjs/LocalhostIpcHost.d.ts.map +1 -0
  138. package/lib/cjs/LocalhostIpcHost.js +52 -0
  139. package/lib/cjs/LocalhostIpcHost.js.map +1 -0
  140. package/lib/cjs/Material.d.ts +102 -0
  141. package/lib/cjs/Material.d.ts.map +1 -0
  142. package/lib/cjs/Material.js +146 -0
  143. package/lib/cjs/Material.js.map +1 -0
  144. package/lib/cjs/Model.d.ts +387 -0
  145. package/lib/cjs/Model.d.ts.map +1 -0
  146. package/lib/cjs/Model.js +469 -0
  147. package/lib/cjs/Model.js.map +1 -0
  148. package/lib/cjs/NativeAppStorage.d.ts +52 -0
  149. package/lib/cjs/NativeAppStorage.d.ts.map +1 -0
  150. package/lib/cjs/NativeAppStorage.js +203 -0
  151. package/lib/cjs/NativeAppStorage.js.map +1 -0
  152. package/lib/cjs/NativeHost.d.ts +71 -0
  153. package/lib/cjs/NativeHost.d.ts.map +1 -0
  154. package/lib/cjs/NativeHost.js +221 -0
  155. package/lib/cjs/NativeHost.js.map +1 -0
  156. package/lib/cjs/NavigationRelationship.d.ts +157 -0
  157. package/lib/cjs/NavigationRelationship.d.ts.map +1 -0
  158. package/lib/cjs/NavigationRelationship.js +226 -0
  159. package/lib/cjs/NavigationRelationship.js.map +1 -0
  160. package/lib/cjs/PromiseMemoizer.d.ts +52 -0
  161. package/lib/cjs/PromiseMemoizer.d.ts.map +1 -0
  162. package/lib/cjs/PromiseMemoizer.js +93 -0
  163. package/lib/cjs/PromiseMemoizer.js.map +1 -0
  164. package/lib/cjs/Relationship.d.ts +400 -0
  165. package/lib/cjs/Relationship.d.ts.map +1 -0
  166. package/lib/cjs/Relationship.js +460 -0
  167. package/lib/cjs/Relationship.js.map +1 -0
  168. package/lib/cjs/RpcBackend.d.ts +23 -0
  169. package/lib/cjs/RpcBackend.d.ts.map +1 -0
  170. package/lib/cjs/RpcBackend.js +94 -0
  171. package/lib/cjs/RpcBackend.js.map +1 -0
  172. package/lib/cjs/SQLiteDb.d.ts +66 -0
  173. package/lib/cjs/SQLiteDb.d.ts.map +1 -0
  174. package/lib/cjs/SQLiteDb.js +140 -0
  175. package/lib/cjs/SQLiteDb.js.map +1 -0
  176. package/lib/cjs/Schema.d.ts +56 -0
  177. package/lib/cjs/Schema.d.ts.map +1 -0
  178. package/lib/cjs/Schema.js +84 -0
  179. package/lib/cjs/Schema.js.map +1 -0
  180. package/lib/cjs/ServerBasedLocks.d.ts +64 -0
  181. package/lib/cjs/ServerBasedLocks.d.ts.map +1 -0
  182. package/lib/cjs/ServerBasedLocks.js +177 -0
  183. package/lib/cjs/ServerBasedLocks.js.map +1 -0
  184. package/lib/cjs/SqliteStatement.d.ts +264 -0
  185. package/lib/cjs/SqliteStatement.d.ts.map +1 -0
  186. package/lib/cjs/SqliteStatement.js +417 -0
  187. package/lib/cjs/SqliteStatement.js.map +1 -0
  188. package/lib/cjs/Texture.d.ts +59 -0
  189. package/lib/cjs/Texture.d.ts.map +1 -0
  190. package/lib/cjs/Texture.js +83 -0
  191. package/lib/cjs/Texture.js.map +1 -0
  192. package/lib/cjs/TxnManager.d.ts +203 -0
  193. package/lib/cjs/TxnManager.d.ts.map +1 -0
  194. package/lib/cjs/TxnManager.js +354 -0
  195. package/lib/cjs/TxnManager.js.map +1 -0
  196. package/lib/cjs/ViewDefinition.d.ts +432 -0
  197. package/lib/cjs/ViewDefinition.d.ts.map +1 -0
  198. package/lib/cjs/ViewDefinition.js +623 -0
  199. package/lib/cjs/ViewDefinition.js.map +1 -0
  200. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -0
  201. package/lib/cjs/core-backend.d.ts +162 -0
  202. package/lib/cjs/core-backend.d.ts.map +1 -0
  203. package/lib/cjs/core-backend.js +181 -0
  204. package/lib/cjs/core-backend.js.map +1 -0
  205. package/lib/cjs/domains/FunctionalElements.d.ts +102 -0
  206. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -0
  207. package/lib/cjs/domains/FunctionalElements.js +146 -0
  208. package/lib/cjs/domains/FunctionalElements.js.map +1 -0
  209. package/lib/cjs/domains/FunctionalSchema.d.ts +14 -0
  210. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -0
  211. package/lib/cjs/domains/FunctionalSchema.js +41 -0
  212. package/lib/cjs/domains/FunctionalSchema.js.map +1 -0
  213. package/lib/cjs/domains/GenericElements.d.ts +178 -0
  214. package/lib/cjs/domains/GenericElements.d.ts.map +1 -0
  215. package/lib/cjs/domains/GenericElements.js +264 -0
  216. package/lib/cjs/domains/GenericElements.js.map +1 -0
  217. package/lib/cjs/domains/GenericSchema.d.ts +11 -0
  218. package/lib/cjs/domains/GenericSchema.d.ts.map +1 -0
  219. package/lib/cjs/domains/GenericSchema.js +29 -0
  220. package/lib/cjs/domains/GenericSchema.js.map +1 -0
  221. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +16 -0
  222. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts.map +1 -0
  223. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +33 -0
  224. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -0
  225. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +40 -0
  226. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -0
  227. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +207 -0
  228. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -0
  229. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +21 -0
  230. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -0
  231. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +193 -0
  232. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -0
  233. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +37 -0
  234. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts.map +1 -0
  235. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +162 -0
  236. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -0
  237. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +17 -0
  238. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts.map +1 -0
  239. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +44 -0
  240. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -0
  241. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +16 -0
  242. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts.map +1 -0
  243. package/lib/cjs/rpc-impl/WipRpcImpl.js +35 -0
  244. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -0
  245. package/package.json +101 -0
@@ -0,0 +1,157 @@
1
+ /** @packageDocumentation
2
+ * @module Relationships
3
+ */
4
+ import { Id64String } from "@itwin/core-bentley";
5
+ import { RelatedElement, TypeDefinition } from "@itwin/core-common";
6
+ /** Relates a parent Element to child Elements which represent parts of the Entity modeled by the parent Element.
7
+ * @public
8
+ */
9
+ export declare class ElementOwnsChildElements extends RelatedElement {
10
+ static classFullName: string;
11
+ constructor(parentId: Id64String, relClassName?: string);
12
+ }
13
+ /** Relates a parent [[Subject]] to [[Subject]] child elements.
14
+ * @public
15
+ */
16
+ export declare class SubjectOwnsSubjects extends ElementOwnsChildElements {
17
+ static classFullName: string;
18
+ constructor(parentId: Id64String, relClassName?: string);
19
+ }
20
+ /** Relates a parent [[Subject]] to [[InformationPartitionElement]] child elements.
21
+ * @public
22
+ */
23
+ export declare class SubjectOwnsPartitionElements extends ElementOwnsChildElements {
24
+ static classFullName: string;
25
+ constructor(parentId: Id64String, relClassName?: string);
26
+ }
27
+ /** Relates a parent [[Category]] to [[SubCategory]] child elements.
28
+ * @public
29
+ */
30
+ export declare class CategoryOwnsSubCategories extends ElementOwnsChildElements {
31
+ static classFullName: string;
32
+ constructor(parentId: Id64String, relClassName?: string);
33
+ }
34
+ /** Relates a parent [[RenderMaterial]] to [[RenderMaterial]] child elements.
35
+ * @public
36
+ */
37
+ export declare class RenderMaterialOwnsRenderMaterials extends ElementOwnsChildElements {
38
+ static classFullName: string;
39
+ constructor(parentId: Id64String, relClassName?: string);
40
+ }
41
+ /** Relates a parent Element to child Elements which represent **hidden** parts of the Entity.
42
+ * @public
43
+ */
44
+ export declare class ElementEncapsulatesElements extends ElementOwnsChildElements {
45
+ static classFullName: string;
46
+ constructor(parentId: Id64String, relClassName?: string);
47
+ }
48
+ /** Relates a parent [[PhysicalElement]] to [[PhysicalElement]] children that it assembles.
49
+ * @public
50
+ */
51
+ export declare class PhysicalElementAssemblesElements extends ElementOwnsChildElements {
52
+ static classFullName: string;
53
+ constructor(parentId: Id64String, relClassName?: string);
54
+ }
55
+ /** Relates a parent [[ExternalSource]] to its [[ExternalSourceAttachment]] children.
56
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
57
+ * @beta
58
+ */
59
+ export declare class ExternalSourceOwnsAttachments extends ElementOwnsChildElements {
60
+ static classFullName: string;
61
+ constructor(parentId: Id64String, relClassName?: string);
62
+ }
63
+ /** Relates a parent [[FolderLink]] to its [[RepositoryLink]] children.
64
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
65
+ * @beta
66
+ */
67
+ export declare class FolderContainsRepositories extends ElementOwnsChildElements {
68
+ static classFullName: string;
69
+ constructor(parentId: Id64String, relClassName?: string);
70
+ }
71
+ /** Relates a [[GeometricElement2d]] to its [[TypeDefinitionElement]]
72
+ * @public
73
+ */
74
+ export declare class GeometricElement2dHasTypeDefinition extends TypeDefinition {
75
+ static classFullName: string;
76
+ constructor(id: Id64String, relClassName?: string);
77
+ }
78
+ /** Relates a [[GraphicalElement2d]] to its [[GraphicalType2d]]
79
+ * @public
80
+ */
81
+ export declare class GraphicalElement2dIsOfType extends GeometricElement2dHasTypeDefinition {
82
+ static classFullName: string;
83
+ constructor(id: Id64String, relClassName?: string);
84
+ }
85
+ /** Relates a [[GeometricElement3d]] to its [[TypeDefinitionElement]]
86
+ * @public
87
+ */
88
+ export declare class GeometricElement3dHasTypeDefinition extends TypeDefinition {
89
+ static classFullName: string;
90
+ constructor(id: Id64String, relClassName?: string);
91
+ }
92
+ /** Relates a [[SpatialLocationElement]] to its [[SpatialLocationType]]
93
+ * @public
94
+ */
95
+ export declare class SpatialLocationIsOfType extends GeometricElement3dHasTypeDefinition {
96
+ static classFullName: string;
97
+ constructor(id: Id64String, relClassName?: string);
98
+ }
99
+ /** Relates a [[PhysicalElement]] to its [[PhysicalType]]
100
+ * @public
101
+ */
102
+ export declare class PhysicalElementIsOfType extends GeometricElement3dHasTypeDefinition {
103
+ static classFullName: string;
104
+ constructor(id: Id64String, relClassName?: string);
105
+ }
106
+ /** Relates a [[PhysicalElement]] to its [[PhysicalMaterial]]
107
+ * @public
108
+ */
109
+ export declare class PhysicalElementIsOfPhysicalMaterial extends RelatedElement {
110
+ static classFullName: string;
111
+ constructor(id: Id64String);
112
+ }
113
+ /** Relates a [[PhysicalType]] to its [[PhysicalMaterial]]
114
+ * @public
115
+ */
116
+ export declare class PhysicalTypeIsOfPhysicalMaterial extends RelatedElement {
117
+ static classFullName: string;
118
+ constructor(id: Id64String);
119
+ }
120
+ /** Relates an [[Element]] and an [[ElementUniqueAspect]] that it owns.
121
+ * @public
122
+ */
123
+ export declare class ElementOwnsUniqueAspect extends RelatedElement {
124
+ static classFullName: string;
125
+ constructor(elementId: Id64String, relClassName?: string);
126
+ }
127
+ /** Relates an [[Element]] and an [[ElementMultiAspect]] that it owns.
128
+ * @public
129
+ */
130
+ export declare class ElementOwnsMultiAspects extends RelatedElement {
131
+ static classFullName: string;
132
+ constructor(elementId: Id64String, relClassName?: string);
133
+ }
134
+ /** Relates an [[Element]] and an [[ExternalSourceAspect]] that it owns.
135
+ * @public
136
+ */
137
+ export declare class ElementOwnsExternalSourceAspects extends ElementOwnsMultiAspects {
138
+ static classFullName: string;
139
+ constructor(elementId: Id64String, relClassName?: string);
140
+ }
141
+ /** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.
142
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
143
+ * @beta
144
+ */
145
+ export declare class ExternalSourceIsInRepository extends RelatedElement {
146
+ static classFullName: string;
147
+ constructor(repositoryId: Id64String, relClassName?: string);
148
+ }
149
+ /** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.
150
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
151
+ * @beta
152
+ */
153
+ export declare class ExternalSourceAttachmentAttachesSource extends RelatedElement {
154
+ static classFullName: string;
155
+ constructor(externalSourceId: Id64String, relClassName?: string);
156
+ }
157
+ //# sourceMappingURL=NavigationRelationship.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationRelationship.d.ts","sourceRoot":"","sources":["../../src/NavigationRelationship.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module Relationships
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ExternalSourceAttachmentAttachesSource = exports.ExternalSourceIsInRepository = exports.ElementOwnsExternalSourceAspects = exports.ElementOwnsMultiAspects = exports.ElementOwnsUniqueAspect = exports.PhysicalTypeIsOfPhysicalMaterial = exports.PhysicalElementIsOfPhysicalMaterial = exports.PhysicalElementIsOfType = exports.SpatialLocationIsOfType = exports.GeometricElement3dHasTypeDefinition = exports.GraphicalElement2dIsOfType = exports.GeometricElement2dHasTypeDefinition = exports.FolderContainsRepositories = exports.ExternalSourceOwnsAttachments = exports.PhysicalElementAssemblesElements = exports.ElementEncapsulatesElements = exports.RenderMaterialOwnsRenderMaterials = exports.CategoryOwnsSubCategories = exports.SubjectOwnsPartitionElements = exports.SubjectOwnsSubjects = exports.ElementOwnsChildElements = void 0;
11
+ const core_common_1 = require("@itwin/core-common");
12
+ /** Relates a parent Element to child Elements which represent parts of the Entity modeled by the parent Element.
13
+ * @public
14
+ */
15
+ class ElementOwnsChildElements extends core_common_1.RelatedElement {
16
+ constructor(parentId, relClassName = ElementOwnsChildElements.classFullName) {
17
+ super({ id: parentId, relClassName });
18
+ }
19
+ }
20
+ exports.ElementOwnsChildElements = ElementOwnsChildElements;
21
+ ElementOwnsChildElements.classFullName = "BisCore:ElementOwnsChildElements";
22
+ /** Relates a parent [[Subject]] to [[Subject]] child elements.
23
+ * @public
24
+ */
25
+ class SubjectOwnsSubjects extends ElementOwnsChildElements {
26
+ constructor(parentId, relClassName = SubjectOwnsSubjects.classFullName) {
27
+ super(parentId, relClassName);
28
+ }
29
+ }
30
+ exports.SubjectOwnsSubjects = SubjectOwnsSubjects;
31
+ SubjectOwnsSubjects.classFullName = "BisCore:SubjectOwnsSubjects";
32
+ /** Relates a parent [[Subject]] to [[InformationPartitionElement]] child elements.
33
+ * @public
34
+ */
35
+ class SubjectOwnsPartitionElements extends ElementOwnsChildElements {
36
+ constructor(parentId, relClassName = SubjectOwnsPartitionElements.classFullName) {
37
+ super(parentId, relClassName);
38
+ }
39
+ }
40
+ exports.SubjectOwnsPartitionElements = SubjectOwnsPartitionElements;
41
+ SubjectOwnsPartitionElements.classFullName = "BisCore:SubjectOwnsPartitionElements";
42
+ /** Relates a parent [[Category]] to [[SubCategory]] child elements.
43
+ * @public
44
+ */
45
+ class CategoryOwnsSubCategories extends ElementOwnsChildElements {
46
+ constructor(parentId, relClassName = CategoryOwnsSubCategories.classFullName) {
47
+ super(parentId, relClassName);
48
+ }
49
+ }
50
+ exports.CategoryOwnsSubCategories = CategoryOwnsSubCategories;
51
+ CategoryOwnsSubCategories.classFullName = "BisCore:CategoryOwnsSubCategories";
52
+ /** Relates a parent [[RenderMaterial]] to [[RenderMaterial]] child elements.
53
+ * @public
54
+ */
55
+ class RenderMaterialOwnsRenderMaterials extends ElementOwnsChildElements {
56
+ constructor(parentId, relClassName = RenderMaterialOwnsRenderMaterials.classFullName) {
57
+ super(parentId, relClassName);
58
+ }
59
+ }
60
+ exports.RenderMaterialOwnsRenderMaterials = RenderMaterialOwnsRenderMaterials;
61
+ RenderMaterialOwnsRenderMaterials.classFullName = "BisCore:RenderMaterialOwnsRenderMaterials";
62
+ /** Relates a parent Element to child Elements which represent **hidden** parts of the Entity.
63
+ * @public
64
+ */
65
+ class ElementEncapsulatesElements extends ElementOwnsChildElements {
66
+ constructor(parentId, relClassName = ElementEncapsulatesElements.classFullName) {
67
+ super(parentId, relClassName);
68
+ }
69
+ }
70
+ exports.ElementEncapsulatesElements = ElementEncapsulatesElements;
71
+ ElementEncapsulatesElements.classFullName = "BisCore:ElementEncapsulatesElements";
72
+ /** Relates a parent [[PhysicalElement]] to [[PhysicalElement]] children that it assembles.
73
+ * @public
74
+ */
75
+ class PhysicalElementAssemblesElements extends ElementOwnsChildElements {
76
+ constructor(parentId, relClassName = PhysicalElementAssemblesElements.classFullName) {
77
+ super(parentId, relClassName);
78
+ }
79
+ }
80
+ exports.PhysicalElementAssemblesElements = PhysicalElementAssemblesElements;
81
+ PhysicalElementAssemblesElements.classFullName = "BisCore:PhysicalElementAssemblesElements";
82
+ /** Relates a parent [[ExternalSource]] to its [[ExternalSourceAttachment]] children.
83
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
84
+ * @beta
85
+ */
86
+ class ExternalSourceOwnsAttachments extends ElementOwnsChildElements {
87
+ constructor(parentId, relClassName = ExternalSourceOwnsAttachments.classFullName) {
88
+ super(parentId, relClassName);
89
+ }
90
+ }
91
+ exports.ExternalSourceOwnsAttachments = ExternalSourceOwnsAttachments;
92
+ ExternalSourceOwnsAttachments.classFullName = "BisCore:ExternalSourceOwnsAttachments";
93
+ /** Relates a parent [[FolderLink]] to its [[RepositoryLink]] children.
94
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
95
+ * @beta
96
+ */
97
+ class FolderContainsRepositories extends ElementOwnsChildElements {
98
+ constructor(parentId, relClassName = FolderContainsRepositories.classFullName) {
99
+ super(parentId, relClassName);
100
+ }
101
+ }
102
+ exports.FolderContainsRepositories = FolderContainsRepositories;
103
+ FolderContainsRepositories.classFullName = "BisCore:FolderContainsRepositories";
104
+ /** Relates a [[GeometricElement2d]] to its [[TypeDefinitionElement]]
105
+ * @public
106
+ */
107
+ class GeometricElement2dHasTypeDefinition extends core_common_1.TypeDefinition {
108
+ constructor(id, relClassName = GeometricElement2dHasTypeDefinition.classFullName) {
109
+ super({ id, relClassName });
110
+ }
111
+ }
112
+ exports.GeometricElement2dHasTypeDefinition = GeometricElement2dHasTypeDefinition;
113
+ GeometricElement2dHasTypeDefinition.classFullName = "BisCore:GeometricElement2dHasTypeDefinition";
114
+ /** Relates a [[GraphicalElement2d]] to its [[GraphicalType2d]]
115
+ * @public
116
+ */
117
+ class GraphicalElement2dIsOfType extends GeometricElement2dHasTypeDefinition {
118
+ constructor(id, relClassName = GraphicalElement2dIsOfType.classFullName) {
119
+ super(id, relClassName);
120
+ }
121
+ }
122
+ exports.GraphicalElement2dIsOfType = GraphicalElement2dIsOfType;
123
+ GraphicalElement2dIsOfType.classFullName = "BisCore:GraphicalElement2dIsOfType";
124
+ /** Relates a [[GeometricElement3d]] to its [[TypeDefinitionElement]]
125
+ * @public
126
+ */
127
+ class GeometricElement3dHasTypeDefinition extends core_common_1.TypeDefinition {
128
+ constructor(id, relClassName = GeometricElement3dHasTypeDefinition.classFullName) {
129
+ super({ id, relClassName });
130
+ }
131
+ }
132
+ exports.GeometricElement3dHasTypeDefinition = GeometricElement3dHasTypeDefinition;
133
+ GeometricElement3dHasTypeDefinition.classFullName = "BisCore:GeometricElement3dHasTypeDefinition";
134
+ /** Relates a [[SpatialLocationElement]] to its [[SpatialLocationType]]
135
+ * @public
136
+ */
137
+ class SpatialLocationIsOfType extends GeometricElement3dHasTypeDefinition {
138
+ constructor(id, relClassName = SpatialLocationIsOfType.classFullName) {
139
+ super(id, relClassName);
140
+ }
141
+ }
142
+ exports.SpatialLocationIsOfType = SpatialLocationIsOfType;
143
+ SpatialLocationIsOfType.classFullName = "BisCore:SpatialLocationIsOfType";
144
+ /** Relates a [[PhysicalElement]] to its [[PhysicalType]]
145
+ * @public
146
+ */
147
+ class PhysicalElementIsOfType extends GeometricElement3dHasTypeDefinition {
148
+ constructor(id, relClassName = PhysicalElementIsOfType.classFullName) {
149
+ super(id, relClassName);
150
+ }
151
+ }
152
+ exports.PhysicalElementIsOfType = PhysicalElementIsOfType;
153
+ PhysicalElementIsOfType.classFullName = "BisCore:PhysicalElementIsOfType";
154
+ /** Relates a [[PhysicalElement]] to its [[PhysicalMaterial]]
155
+ * @public
156
+ */
157
+ class PhysicalElementIsOfPhysicalMaterial extends core_common_1.RelatedElement {
158
+ constructor(id) {
159
+ super({ id });
160
+ }
161
+ }
162
+ exports.PhysicalElementIsOfPhysicalMaterial = PhysicalElementIsOfPhysicalMaterial;
163
+ PhysicalElementIsOfPhysicalMaterial.classFullName = "BisCore:PhysicalElementIsOfPhysicalMaterial";
164
+ /** Relates a [[PhysicalType]] to its [[PhysicalMaterial]]
165
+ * @public
166
+ */
167
+ class PhysicalTypeIsOfPhysicalMaterial extends core_common_1.RelatedElement {
168
+ constructor(id) {
169
+ super({ id });
170
+ }
171
+ }
172
+ exports.PhysicalTypeIsOfPhysicalMaterial = PhysicalTypeIsOfPhysicalMaterial;
173
+ PhysicalTypeIsOfPhysicalMaterial.classFullName = "BisCore:PhysicalTypeIsOfPhysicalMaterial";
174
+ /** Relates an [[Element]] and an [[ElementUniqueAspect]] that it owns.
175
+ * @public
176
+ */
177
+ class ElementOwnsUniqueAspect extends core_common_1.RelatedElement {
178
+ constructor(elementId, relClassName = ElementOwnsUniqueAspect.classFullName) {
179
+ super({ id: elementId, relClassName });
180
+ }
181
+ }
182
+ exports.ElementOwnsUniqueAspect = ElementOwnsUniqueAspect;
183
+ ElementOwnsUniqueAspect.classFullName = "BisCore:ElementOwnsUniqueAspect";
184
+ /** Relates an [[Element]] and an [[ElementMultiAspect]] that it owns.
185
+ * @public
186
+ */
187
+ class ElementOwnsMultiAspects extends core_common_1.RelatedElement {
188
+ constructor(elementId, relClassName = ElementOwnsMultiAspects.classFullName) {
189
+ super({ id: elementId, relClassName });
190
+ }
191
+ }
192
+ exports.ElementOwnsMultiAspects = ElementOwnsMultiAspects;
193
+ ElementOwnsMultiAspects.classFullName = "BisCore:ElementOwnsMultiAspects";
194
+ /** Relates an [[Element]] and an [[ExternalSourceAspect]] that it owns.
195
+ * @public
196
+ */
197
+ class ElementOwnsExternalSourceAspects extends ElementOwnsMultiAspects {
198
+ constructor(elementId, relClassName = ElementOwnsExternalSourceAspects.classFullName) {
199
+ super(elementId, relClassName);
200
+ }
201
+ }
202
+ exports.ElementOwnsExternalSourceAspects = ElementOwnsExternalSourceAspects;
203
+ ElementOwnsExternalSourceAspects.classFullName = "BisCore:ElementOwnsExternalSourceAspects";
204
+ /** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.
205
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
206
+ * @beta
207
+ */
208
+ class ExternalSourceIsInRepository extends core_common_1.RelatedElement {
209
+ constructor(repositoryId, relClassName = ExternalSourceIsInRepository.classFullName) {
210
+ super({ id: repositoryId, relClassName });
211
+ }
212
+ }
213
+ exports.ExternalSourceIsInRepository = ExternalSourceIsInRepository;
214
+ ExternalSourceIsInRepository.classFullName = "BisCore:ExternalSourceIsInRepository";
215
+ /** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.
216
+ * @note The associated ECClass was added to the BisCore schema in version 1.0.13
217
+ * @beta
218
+ */
219
+ class ExternalSourceAttachmentAttachesSource extends core_common_1.RelatedElement {
220
+ constructor(externalSourceId, relClassName = ExternalSourceAttachmentAttachesSource.classFullName) {
221
+ super({ id: externalSourceId, relClassName });
222
+ }
223
+ }
224
+ exports.ExternalSourceAttachmentAttachesSource = ExternalSourceAttachmentAttachesSource;
225
+ ExternalSourceAttachmentAttachesSource.classFullName = "BisCore:ExternalSourceAttachmentAttachesSource";
226
+ //# sourceMappingURL=NavigationRelationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationRelationship.js","sourceRoot":"","sources":["../../src/NavigationRelationship.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 Relationships\r\n */\r\n\r\n// NOTE: A NavigationRelationship is not an Entity, so is not registered in the ClassRegistry.\r\n// NOTE: It does, however, have a classFullName property for consistency with Entity subclasses.\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { RelatedElement, TypeDefinition } from \"@itwin/core-common\";\r\n\r\n/** Relates a parent Element to child Elements which represent parts of the Entity modeled by the parent Element.\r\n * @public\r\n */\r\nexport class ElementOwnsChildElements extends RelatedElement {\r\n public static classFullName = \"BisCore:ElementOwnsChildElements\";\r\n public constructor(parentId: Id64String, relClassName: string = ElementOwnsChildElements.classFullName) {\r\n super({ id: parentId, relClassName });\r\n }\r\n}\r\n\r\n/** Relates a parent [[Subject]] to [[Subject]] child elements.\r\n * @public\r\n */\r\nexport class SubjectOwnsSubjects extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:SubjectOwnsSubjects\";\r\n public constructor(parentId: Id64String, relClassName: string = SubjectOwnsSubjects.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a parent [[Subject]] to [[InformationPartitionElement]] child elements.\r\n * @public\r\n */\r\nexport class SubjectOwnsPartitionElements extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:SubjectOwnsPartitionElements\";\r\n public constructor(parentId: Id64String, relClassName: string = SubjectOwnsPartitionElements.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a parent [[Category]] to [[SubCategory]] child elements.\r\n * @public\r\n */\r\nexport class CategoryOwnsSubCategories extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:CategoryOwnsSubCategories\";\r\n public constructor(parentId: Id64String, relClassName: string = CategoryOwnsSubCategories.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a parent [[RenderMaterial]] to [[RenderMaterial]] child elements.\r\n * @public\r\n */\r\nexport class RenderMaterialOwnsRenderMaterials extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:RenderMaterialOwnsRenderMaterials\";\r\n public constructor(parentId: Id64String, relClassName: string = RenderMaterialOwnsRenderMaterials.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a parent Element to child Elements which represent **hidden** parts of the Entity.\r\n * @public\r\n */\r\nexport class ElementEncapsulatesElements extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:ElementEncapsulatesElements\";\r\n public constructor(parentId: Id64String, relClassName: string = ElementEncapsulatesElements.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a parent [[PhysicalElement]] to [[PhysicalElement]] children that it assembles.\r\n * @public\r\n */\r\nexport class PhysicalElementAssemblesElements extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:PhysicalElementAssemblesElements\";\r\n public constructor(parentId: Id64String, relClassName: string = PhysicalElementAssemblesElements.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a parent [[ExternalSource]] to its [[ExternalSourceAttachment]] children.\r\n * @note The associated ECClass was added to the BisCore schema in version 1.0.13\r\n * @beta\r\n */\r\nexport class ExternalSourceOwnsAttachments extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:ExternalSourceOwnsAttachments\";\r\n public constructor(parentId: Id64String, relClassName: string = ExternalSourceOwnsAttachments.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a parent [[FolderLink]] to its [[RepositoryLink]] children.\r\n * @note The associated ECClass was added to the BisCore schema in version 1.0.13\r\n * @beta\r\n */\r\nexport class FolderContainsRepositories extends ElementOwnsChildElements {\r\n public static override classFullName = \"BisCore:FolderContainsRepositories\";\r\n public constructor(parentId: Id64String, relClassName: string = FolderContainsRepositories.classFullName) {\r\n super(parentId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a [[GeometricElement2d]] to its [[TypeDefinitionElement]]\r\n * @public\r\n */\r\nexport class GeometricElement2dHasTypeDefinition extends TypeDefinition {\r\n public static classFullName = \"BisCore:GeometricElement2dHasTypeDefinition\";\r\n public constructor(id: Id64String, relClassName: string = GeometricElement2dHasTypeDefinition.classFullName) {\r\n super({ id, relClassName });\r\n }\r\n}\r\n\r\n/** Relates a [[GraphicalElement2d]] to its [[GraphicalType2d]]\r\n * @public\r\n */\r\nexport class GraphicalElement2dIsOfType extends GeometricElement2dHasTypeDefinition {\r\n public static override classFullName = \"BisCore:GraphicalElement2dIsOfType\";\r\n public constructor(id: Id64String, relClassName: string = GraphicalElement2dIsOfType.classFullName) {\r\n super(id, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a [[GeometricElement3d]] to its [[TypeDefinitionElement]]\r\n * @public\r\n */\r\nexport class GeometricElement3dHasTypeDefinition extends TypeDefinition {\r\n public static classFullName = \"BisCore:GeometricElement3dHasTypeDefinition\";\r\n public constructor(id: Id64String, relClassName: string = GeometricElement3dHasTypeDefinition.classFullName) {\r\n super({ id, relClassName });\r\n }\r\n}\r\n\r\n/** Relates a [[SpatialLocationElement]] to its [[SpatialLocationType]]\r\n * @public\r\n */\r\nexport class SpatialLocationIsOfType extends GeometricElement3dHasTypeDefinition {\r\n public static override classFullName = \"BisCore:SpatialLocationIsOfType\";\r\n public constructor(id: Id64String, relClassName: string = SpatialLocationIsOfType.classFullName) {\r\n super(id, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a [[PhysicalElement]] to its [[PhysicalType]]\r\n * @public\r\n */\r\nexport class PhysicalElementIsOfType extends GeometricElement3dHasTypeDefinition {\r\n public static override classFullName = \"BisCore:PhysicalElementIsOfType\";\r\n public constructor(id: Id64String, relClassName: string = PhysicalElementIsOfType.classFullName) {\r\n super(id, relClassName);\r\n }\r\n}\r\n\r\n/** Relates a [[PhysicalElement]] to its [[PhysicalMaterial]]\r\n * @public\r\n */\r\nexport class PhysicalElementIsOfPhysicalMaterial extends RelatedElement {\r\n public static classFullName = \"BisCore:PhysicalElementIsOfPhysicalMaterial\";\r\n public constructor(id: Id64String) {\r\n super({ id });\r\n }\r\n}\r\n\r\n/** Relates a [[PhysicalType]] to its [[PhysicalMaterial]]\r\n * @public\r\n */\r\nexport class PhysicalTypeIsOfPhysicalMaterial extends RelatedElement {\r\n public static classFullName = \"BisCore:PhysicalTypeIsOfPhysicalMaterial\";\r\n public constructor(id: Id64String) {\r\n super({ id });\r\n }\r\n}\r\n\r\n/** Relates an [[Element]] and an [[ElementUniqueAspect]] that it owns.\r\n * @public\r\n */\r\nexport class ElementOwnsUniqueAspect extends RelatedElement {\r\n public static classFullName = \"BisCore:ElementOwnsUniqueAspect\";\r\n public constructor(elementId: Id64String, relClassName: string = ElementOwnsUniqueAspect.classFullName) {\r\n super({ id: elementId, relClassName });\r\n }\r\n}\r\n\r\n/** Relates an [[Element]] and an [[ElementMultiAspect]] that it owns.\r\n * @public\r\n */\r\nexport class ElementOwnsMultiAspects extends RelatedElement {\r\n public static classFullName = \"BisCore:ElementOwnsMultiAspects\";\r\n public constructor(elementId: Id64String, relClassName: string = ElementOwnsMultiAspects.classFullName) {\r\n super({ id: elementId, relClassName });\r\n }\r\n}\r\n\r\n/** Relates an [[Element]] and an [[ExternalSourceAspect]] that it owns.\r\n * @public\r\n */\r\nexport class ElementOwnsExternalSourceAspects extends ElementOwnsMultiAspects {\r\n public static override classFullName = \"BisCore:ElementOwnsExternalSourceAspects\";\r\n public constructor(elementId: Id64String, relClassName: string = ElementOwnsExternalSourceAspects.classFullName) {\r\n super(elementId, relClassName);\r\n }\r\n}\r\n\r\n/** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.\r\n * @note The associated ECClass was added to the BisCore schema in version 1.0.13\r\n * @beta\r\n */\r\nexport class ExternalSourceIsInRepository extends RelatedElement {\r\n public static classFullName = \"BisCore:ExternalSourceIsInRepository\";\r\n public constructor(repositoryId: Id64String, relClassName: string = ExternalSourceIsInRepository.classFullName) {\r\n super({ id: repositoryId, relClassName });\r\n }\r\n}\r\n\r\n/** Relates an [[ExternalSource]] to the [[RepositoryLink]] that it is persisted in.\r\n * @note The associated ECClass was added to the BisCore schema in version 1.0.13\r\n * @beta\r\n */\r\nexport class ExternalSourceAttachmentAttachesSource extends RelatedElement {\r\n public static classFullName = \"BisCore:ExternalSourceAttachmentAttachesSource\";\r\n public constructor(externalSourceId: Id64String, relClassName: string = ExternalSourceAttachmentAttachesSource.classFullName) {\r\n super({ id: externalSourceId, relClassName });\r\n }\r\n}\r\n"]}
@@ -0,0 +1,52 @@
1
+ /** @packageDocumentation
2
+ * @module Utils
3
+ */
4
+ import { IDisposable } from "@itwin/core-bentley";
5
+ /** Wrapper around a promise that allows synchronous queries of it's state
6
+ * @internal
7
+ */
8
+ export declare class QueryablePromise<T> {
9
+ readonly promise: Promise<T>;
10
+ result?: T;
11
+ error?: any;
12
+ private _fulfilled;
13
+ private _rejected;
14
+ get isPending(): boolean;
15
+ get isFulfilled(): boolean;
16
+ get isRejected(): boolean;
17
+ constructor(promise: Promise<T>);
18
+ }
19
+ /** @internal */
20
+ export declare type MemoizeFnType<T> = (...args: any[]) => Promise<T>;
21
+ /** @internal */
22
+ export declare type GenerateKeyFnType = (...args: any[]) => string;
23
+ /** Utility to cache and retrieve results of long running asynchronous functions.
24
+ * The cache is keyed on the input arguments passed to these functions
25
+ * @internal
26
+ */
27
+ export declare class PromiseMemoizer<T> implements IDisposable {
28
+ private readonly _cachedPromises;
29
+ private readonly _timers;
30
+ private readonly _memoizeFn;
31
+ private readonly _generateKeyFn;
32
+ private readonly _maxCacheSize;
33
+ private readonly _cacheTimeout;
34
+ /**
35
+ * Constructor
36
+ * @param memoizeFn Function to memoize
37
+ * @param generateKeyFn Function to generate the key for the memoized function
38
+ * @param maxCacheSize Maximum size of the memoizer cache.
39
+ * If the maximum cache size is exceeded, fulfilled/rejected entries are first discarded - these
40
+ * may have been unclaimed/orphaned promises. If the cache size is still above the maxCacheSize
41
+ * threshold, the entire cache is then cleared.
42
+ */
43
+ constructor(memoizeFn: MemoizeFnType<T>, generateKeyFn: GenerateKeyFnType, maxCacheSize?: number, cacheTimeout?: number);
44
+ /** Call the memoized function */
45
+ memoize: (...args: any[]) => QueryablePromise<T>;
46
+ /** Delete the memoized function */
47
+ deleteMemoized: (...args: any[]) => void;
48
+ /** Clear all entries in the memoizer cache */
49
+ clearCache: () => void;
50
+ dispose: () => void;
51
+ }
52
+ //# sourceMappingURL=PromiseMemoizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromiseMemoizer.d.ts","sourceRoot":"","sources":["../../src/PromiseMemoizer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAG1D;;GAEG;AACH,qBAAa,gBAAgB,CAAC,CAAC;aAUM,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAT/C,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,GAAG,CAAC;IAEnB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,SAAS,CAAkB;IAEnC,IAAW,SAAS,IAAI,OAAO,CAAkD;IACjF,IAAW,WAAW,IAAI,OAAO,CAA4B;IAC7D,IAAW,UAAU,IAAI,OAAO,CAA2B;gBACxB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;CAKvD;AAED,gBAAgB;AAChB,oBAAY,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9D,gBAAgB;AAChB,oBAAY,iBAAiB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC;AAE3D;;;GAGG;AACH,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4E;IAC5G,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8D;IACtF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;;;;;;OAQG;gBACgB,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,GAAE,MAAY,EAAE,YAAY,GAAE,MAAc;IAO1I,iCAAiC;IAC1B,OAAO,YAAa,GAAG,EAAE,KAAG,iBAAiB,CAAC,CAAC,CAyBpD;IAEF,mCAAmC;IAC5B,cAAc,YAAa,GAAG,EAAE,UAGrC;IAEF,8CAA8C;IACvC,UAAU,aAEf;IAEK,OAAO,aAKZ;CACH"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module Utils
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.PromiseMemoizer = exports.QueryablePromise = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const BackendLoggerCategory_1 = require("./BackendLoggerCategory");
13
+ /** Wrapper around a promise that allows synchronous queries of it's state
14
+ * @internal
15
+ */
16
+ class QueryablePromise {
17
+ constructor(promise) {
18
+ this.promise = promise;
19
+ this._fulfilled = false;
20
+ this._rejected = false;
21
+ this.promise
22
+ .then((res) => { this.result = res; this._fulfilled = true; })
23
+ .catch((err) => { this.error = err; this._rejected = true; });
24
+ }
25
+ get isPending() { return !this.isFulfilled && !this.isRejected; }
26
+ get isFulfilled() { return this._fulfilled; }
27
+ get isRejected() { return this._rejected; }
28
+ }
29
+ exports.QueryablePromise = QueryablePromise;
30
+ /** Utility to cache and retrieve results of long running asynchronous functions.
31
+ * The cache is keyed on the input arguments passed to these functions
32
+ * @internal
33
+ */
34
+ class PromiseMemoizer {
35
+ /**
36
+ * Constructor
37
+ * @param memoizeFn Function to memoize
38
+ * @param generateKeyFn Function to generate the key for the memoized function
39
+ * @param maxCacheSize Maximum size of the memoizer cache.
40
+ * If the maximum cache size is exceeded, fulfilled/rejected entries are first discarded - these
41
+ * may have been unclaimed/orphaned promises. If the cache size is still above the maxCacheSize
42
+ * threshold, the entire cache is then cleared.
43
+ */
44
+ constructor(memoizeFn, generateKeyFn, maxCacheSize = 500, cacheTimeout = 30000) {
45
+ this._cachedPromises = new Map();
46
+ this._timers = new Map();
47
+ /** Call the memoized function */
48
+ this.memoize = (...args) => {
49
+ const key = this._generateKeyFn(...args);
50
+ let qp = this._cachedPromises.get(key);
51
+ if (qp)
52
+ return qp;
53
+ if (this._cachedPromises.size >= this._maxCacheSize) {
54
+ if (this._maxCacheSize > 1)
55
+ core_bentley_1.Logger.logError(BackendLoggerCategory_1.BackendLoggerCategory.PromiseMemoizer, "Cleared too many unresolved entries in memoizer cache");
56
+ this.clearCache();
57
+ }
58
+ const removeCachedPromise = (v) => {
59
+ const cleanUp = () => {
60
+ this._cachedPromises.delete(key);
61
+ this._timers.delete(key);
62
+ };
63
+ this._timers.set(key, setTimeout(cleanUp, this._cacheTimeout));
64
+ return v;
65
+ };
66
+ const p = this._memoizeFn(...args).then(removeCachedPromise, (e) => { throw removeCachedPromise(e); });
67
+ qp = new QueryablePromise(p);
68
+ this._cachedPromises.set(key, qp);
69
+ return qp;
70
+ };
71
+ /** Delete the memoized function */
72
+ this.deleteMemoized = (...args) => {
73
+ const key = this._generateKeyFn(...args);
74
+ this._cachedPromises.delete(key);
75
+ };
76
+ /** Clear all entries in the memoizer cache */
77
+ this.clearCache = () => {
78
+ this._cachedPromises.clear();
79
+ };
80
+ this.dispose = () => {
81
+ for (const timer of this._timers.values())
82
+ clearTimeout(timer);
83
+ this._timers.clear();
84
+ this.clearCache();
85
+ };
86
+ this._memoizeFn = memoizeFn;
87
+ this._generateKeyFn = generateKeyFn;
88
+ this._maxCacheSize = maxCacheSize;
89
+ this._cacheTimeout = cacheTimeout;
90
+ }
91
+ }
92
+ exports.PromiseMemoizer = PromiseMemoizer;
93
+ //# sourceMappingURL=PromiseMemoizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromiseMemoizer.js","sourceRoot":"","sources":["../../src/PromiseMemoizer.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 Utils\r\n */\r\n\r\nimport { IDisposable, Logger } from \"@itwin/core-bentley\";\r\nimport { BackendLoggerCategory } from \"./BackendLoggerCategory\";\r\n\r\n/** Wrapper around a promise that allows synchronous queries of it's state\r\n * @internal\r\n */\r\nexport class QueryablePromise<T> {\r\n public result?: T;\r\n public error?: any;\r\n\r\n private _fulfilled: boolean = false;\r\n private _rejected: boolean = false;\r\n\r\n public get isPending(): boolean { return !this.isFulfilled && !this.isRejected; }\r\n public get isFulfilled(): boolean { return this._fulfilled; }\r\n public get isRejected(): boolean { return this._rejected; }\r\n public constructor(public readonly promise: Promise<T>) {\r\n this.promise\r\n .then((res: T) => { this.result = res; this._fulfilled = true; })\r\n .catch((err: any) => { this.error = err; this._rejected = true; });\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type MemoizeFnType<T> = (...args: any[]) => Promise<T>;\r\n/** @internal */\r\nexport type GenerateKeyFnType = (...args: any[]) => string;\r\n\r\n/** Utility to cache and retrieve results of long running asynchronous functions.\r\n * The cache is keyed on the input arguments passed to these functions\r\n * @internal\r\n */\r\nexport class PromiseMemoizer<T> implements IDisposable {\r\n private readonly _cachedPromises: Map<string, QueryablePromise<T>> = new Map<string, QueryablePromise<T>>();\r\n private readonly _timers: Map<string, NodeJS.Timer> = new Map<string, NodeJS.Timer>();\r\n private readonly _memoizeFn: MemoizeFnType<T>;\r\n private readonly _generateKeyFn: GenerateKeyFnType;\r\n private readonly _maxCacheSize: number;\r\n private readonly _cacheTimeout: number;\r\n\r\n /**\r\n * Constructor\r\n * @param memoizeFn Function to memoize\r\n * @param generateKeyFn Function to generate the key for the memoized function\r\n * @param maxCacheSize Maximum size of the memoizer cache.\r\n * If the maximum cache size is exceeded, fulfilled/rejected entries are first discarded - these\r\n * may have been unclaimed/orphaned promises. If the cache size is still above the maxCacheSize\r\n * threshold, the entire cache is then cleared.\r\n */\r\n public constructor(memoizeFn: MemoizeFnType<T>, generateKeyFn: GenerateKeyFnType, maxCacheSize: number = 500, cacheTimeout: number = 30000) {\r\n this._memoizeFn = memoizeFn;\r\n this._generateKeyFn = generateKeyFn;\r\n this._maxCacheSize = maxCacheSize;\r\n this._cacheTimeout = cacheTimeout;\r\n }\r\n\r\n /** Call the memoized function */\r\n public memoize = (...args: any[]): QueryablePromise<T> => {\r\n const key: string = this._generateKeyFn(...args);\r\n let qp: QueryablePromise<T> | undefined = this._cachedPromises.get(key);\r\n if (qp)\r\n return qp;\r\n\r\n if (this._cachedPromises.size >= this._maxCacheSize) {\r\n if (this._maxCacheSize > 1)\r\n Logger.logError(BackendLoggerCategory.PromiseMemoizer, \"Cleared too many unresolved entries in memoizer cache\");\r\n this.clearCache();\r\n }\r\n\r\n const removeCachedPromise = (v: T) => {\r\n const cleanUp = () => {\r\n this._cachedPromises.delete(key);\r\n this._timers.delete(key);\r\n };\r\n this._timers.set(key, setTimeout(cleanUp, this._cacheTimeout));\r\n return v;\r\n };\r\n\r\n const p = this._memoizeFn(...args).then(removeCachedPromise, (e) => { throw removeCachedPromise(e); });\r\n qp = new QueryablePromise<T>(p);\r\n this._cachedPromises.set(key, qp);\r\n return qp;\r\n };\r\n\r\n /** Delete the memoized function */\r\n public deleteMemoized = (...args: any[]) => {\r\n const key: string = this._generateKeyFn(...args);\r\n this._cachedPromises.delete(key);\r\n };\r\n\r\n /** Clear all entries in the memoizer cache */\r\n public clearCache = () => {\r\n this._cachedPromises.clear();\r\n };\r\n\r\n public dispose = () => {\r\n for (const timer of this._timers.values())\r\n clearTimeout(timer);\r\n this._timers.clear();\r\n this.clearCache();\r\n };\r\n}\r\n"]}