@itwin/core-backend 5.2.0-dev.30 → 5.2.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 (413) hide show
  1. package/lib/cjs/BackendHubAccess.d.ts +2 -0
  2. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  3. package/lib/cjs/BackendHubAccess.js.map +1 -1
  4. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  5. package/lib/cjs/BisCoreSchema.js.map +1 -1
  6. package/lib/cjs/BlobContainerService.js.map +1 -1
  7. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  8. package/lib/cjs/BriefcaseManager.js +3 -2
  9. package/lib/cjs/BriefcaseManager.js.map +1 -1
  10. package/lib/cjs/CatalogDb.js.map +1 -1
  11. package/lib/cjs/Category.js.map +1 -1
  12. package/lib/cjs/ChangeSummaryManager.js +2 -2
  13. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  14. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  15. package/lib/cjs/ChangesetECAdaptor.js +248 -248
  16. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  17. package/lib/cjs/ChannelControl.js.map +1 -1
  18. package/lib/cjs/CheckpointManager.js.map +1 -1
  19. package/lib/cjs/ClassRegistry.js +5 -5
  20. package/lib/cjs/ClassRegistry.js.map +1 -1
  21. package/lib/cjs/CloudSqlite.js.map +1 -1
  22. package/lib/cjs/CodeService.js.map +1 -1
  23. package/lib/cjs/CodeSpecs.js.map +1 -1
  24. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  25. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  26. package/lib/cjs/DevTools.js.map +1 -1
  27. package/lib/cjs/DisplayStyle.js.map +1 -1
  28. package/lib/cjs/ECDb.js.map +1 -1
  29. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  30. package/lib/cjs/ECSqlStatement.js.map +1 -1
  31. package/lib/cjs/Element.js.map +1 -1
  32. package/lib/cjs/ElementAspect.js.map +1 -1
  33. package/lib/cjs/ElementGraphics.js.map +1 -1
  34. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  35. package/lib/cjs/Entity.js.map +1 -1
  36. package/lib/cjs/EntityReferences.js.map +1 -1
  37. package/lib/cjs/ExportGraphics.js.map +1 -1
  38. package/lib/cjs/ExternalSource.js.map +1 -1
  39. package/lib/cjs/FontFile.js.map +1 -1
  40. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  41. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  42. package/lib/cjs/GeometrySummary.js +47 -47
  43. package/lib/cjs/GeometrySummary.js.map +1 -1
  44. package/lib/cjs/IModelDb.js +8 -8
  45. package/lib/cjs/IModelDb.js.map +1 -1
  46. package/lib/cjs/IModelDbFonts.js.map +1 -1
  47. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  48. package/lib/cjs/IModelHost.js.map +1 -1
  49. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  50. package/lib/cjs/IModelJsFs.js.map +1 -1
  51. package/lib/cjs/ImageSourceConversion.js.map +1 -1
  52. package/lib/cjs/IpcHost.js.map +1 -1
  53. package/lib/cjs/LineStyle.js.map +1 -1
  54. package/lib/cjs/LocalHub.js +1 -1
  55. package/lib/cjs/LocalHub.js.map +1 -1
  56. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  57. package/lib/cjs/LockControl.js.map +1 -1
  58. package/lib/cjs/Material.js.map +1 -1
  59. package/lib/cjs/Model.js.map +1 -1
  60. package/lib/cjs/NativeAppStorage.js.map +1 -1
  61. package/lib/cjs/NativeHost.js.map +1 -1
  62. package/lib/cjs/NavigationRelationship.js.map +1 -1
  63. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  64. package/lib/cjs/PropertyStore.js.map +1 -1
  65. package/lib/cjs/Relationship.js.map +1 -1
  66. package/lib/cjs/RpcBackend.js.map +1 -1
  67. package/lib/cjs/SQLiteDb.js.map +1 -1
  68. package/lib/cjs/Schema.js.map +1 -1
  69. package/lib/cjs/SchemaSync.js.map +1 -1
  70. package/lib/cjs/SchemaUtils.js.map +1 -1
  71. package/lib/cjs/SheetIndex.js.map +1 -1
  72. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  73. package/lib/cjs/SqliteStatement.js.map +1 -1
  74. package/lib/cjs/StashManager.js.map +1 -1
  75. package/lib/cjs/Texture.js.map +1 -1
  76. package/lib/cjs/TileStorage.js.map +1 -1
  77. package/lib/cjs/TxnManager.js.map +1 -1
  78. package/lib/cjs/ViewDefinition.js.map +1 -1
  79. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  80. package/lib/cjs/ViewStore.js.map +1 -1
  81. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  82. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +3 -5
  83. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  84. package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
  85. package/lib/cjs/annotations/LeaderGeometry.js +1 -1
  86. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
  87. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  88. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -1
  89. package/lib/cjs/annotations/TextAnnotationGeometry.js +24 -17
  90. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
  91. package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -1
  92. package/lib/cjs/annotations/TextBlockGeometry.js +8 -0
  93. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
  94. package/lib/cjs/annotations/TextBlockLayout.d.ts +46 -27
  95. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -1
  96. package/lib/cjs/annotations/TextBlockLayout.js +201 -113
  97. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
  98. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  99. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  100. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  101. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  102. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  103. package/lib/cjs/core-backend.js.map +1 -1
  104. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  105. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  106. package/lib/cjs/domains/GenericElements.js.map +1 -1
  107. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  108. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
  109. package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
  110. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  111. package/lib/cjs/internal/FontFileImpl.js.map +1 -1
  112. package/lib/cjs/internal/HubMock.js.map +1 -1
  113. package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
  114. package/lib/cjs/internal/NativePlatform.js.map +1 -1
  115. package/lib/cjs/internal/NoLocks.js.map +1 -1
  116. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  117. package/lib/cjs/internal/Symbols.js.map +1 -1
  118. package/lib/cjs/internal/annotations/fields.d.ts +2 -12
  119. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
  120. package/lib/cjs/internal/annotations/fields.js +49 -45
  121. package/lib/cjs/internal/annotations/fields.js.map +1 -1
  122. package/lib/cjs/internal/cross-package.js.map +1 -1
  123. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  124. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  125. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  126. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  127. package/lib/cjs/rpc/multipart.js.map +1 -1
  128. package/lib/cjs/rpc/tracing.js.map +1 -1
  129. package/lib/cjs/rpc/web/logging.js.map +1 -1
  130. package/lib/cjs/rpc/web/request.js.map +1 -1
  131. package/lib/cjs/rpc/web/response.js.map +1 -1
  132. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  133. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  134. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  135. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  136. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  137. package/lib/cjs/workspace/Settings.js.map +1 -1
  138. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  139. package/lib/cjs/workspace/Workspace.js.map +1 -1
  140. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  141. package/lib/esm/BackendHubAccess.d.ts +2 -0
  142. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  143. package/lib/esm/BackendHubAccess.js.map +1 -1
  144. package/lib/esm/BackendLoggerCategory.js.map +1 -1
  145. package/lib/esm/BisCoreSchema.js.map +1 -1
  146. package/lib/esm/BlobContainerService.js.map +1 -1
  147. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  148. package/lib/esm/BriefcaseManager.js +3 -2
  149. package/lib/esm/BriefcaseManager.js.map +1 -1
  150. package/lib/esm/CatalogDb.js.map +1 -1
  151. package/lib/esm/Category.js.map +1 -1
  152. package/lib/esm/ChangeSummaryManager.js +2 -2
  153. package/lib/esm/ChangeSummaryManager.js.map +1 -1
  154. package/lib/esm/ChangedElementsDb.js.map +1 -1
  155. package/lib/esm/ChangesetECAdaptor.js +248 -248
  156. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  157. package/lib/esm/ChannelControl.js.map +1 -1
  158. package/lib/esm/CheckpointManager.js.map +1 -1
  159. package/lib/esm/ClassRegistry.js +5 -5
  160. package/lib/esm/ClassRegistry.js.map +1 -1
  161. package/lib/esm/CloudSqlite.js.map +1 -1
  162. package/lib/esm/CodeService.js.map +1 -1
  163. package/lib/esm/CodeSpecs.js.map +1 -1
  164. package/lib/esm/ConcurrentQuery.js.map +1 -1
  165. package/lib/esm/CustomViewState3dCreator.js.map +1 -1
  166. package/lib/esm/DevTools.js.map +1 -1
  167. package/lib/esm/DisplayStyle.js.map +1 -1
  168. package/lib/esm/ECDb.js.map +1 -1
  169. package/lib/esm/ECSchemaXmlContext.js.map +1 -1
  170. package/lib/esm/ECSqlStatement.js.map +1 -1
  171. package/lib/esm/Element.js.map +1 -1
  172. package/lib/esm/ElementAspect.js.map +1 -1
  173. package/lib/esm/ElementGraphics.js.map +1 -1
  174. package/lib/esm/ElementTreeWalker.js.map +1 -1
  175. package/lib/esm/Entity.js.map +1 -1
  176. package/lib/esm/EntityReferences.js.map +1 -1
  177. package/lib/esm/ExportGraphics.js.map +1 -1
  178. package/lib/esm/ExternalSource.js.map +1 -1
  179. package/lib/esm/FontFile.js.map +1 -1
  180. package/lib/esm/GeoCoordConfig.js.map +1 -1
  181. package/lib/esm/GeographicCRSServices.js.map +1 -1
  182. package/lib/esm/GeometrySummary.js +47 -47
  183. package/lib/esm/GeometrySummary.js.map +1 -1
  184. package/lib/esm/IModelDb.js +8 -8
  185. package/lib/esm/IModelDb.js.map +1 -1
  186. package/lib/esm/IModelDbFonts.js.map +1 -1
  187. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  188. package/lib/esm/IModelHost.js.map +1 -1
  189. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  190. package/lib/esm/IModelJsFs.js.map +1 -1
  191. package/lib/esm/ImageSourceConversion.js.map +1 -1
  192. package/lib/esm/IpcHost.js.map +1 -1
  193. package/lib/esm/LineStyle.js.map +1 -1
  194. package/lib/esm/LocalHub.js +1 -1
  195. package/lib/esm/LocalHub.js.map +1 -1
  196. package/lib/esm/LocalhostIpcHost.js.map +1 -1
  197. package/lib/esm/LockControl.js.map +1 -1
  198. package/lib/esm/Material.js.map +1 -1
  199. package/lib/esm/Model.js.map +1 -1
  200. package/lib/esm/NativeAppStorage.js.map +1 -1
  201. package/lib/esm/NativeHost.js.map +1 -1
  202. package/lib/esm/NavigationRelationship.js.map +1 -1
  203. package/lib/esm/PromiseMemoizer.js.map +1 -1
  204. package/lib/esm/PropertyStore.js.map +1 -1
  205. package/lib/esm/Relationship.js.map +1 -1
  206. package/lib/esm/RpcBackend.js.map +1 -1
  207. package/lib/esm/SQLiteDb.js.map +1 -1
  208. package/lib/esm/Schema.js.map +1 -1
  209. package/lib/esm/SchemaSync.js.map +1 -1
  210. package/lib/esm/SchemaUtils.js.map +1 -1
  211. package/lib/esm/SheetIndex.js.map +1 -1
  212. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  213. package/lib/esm/SqliteStatement.js.map +1 -1
  214. package/lib/esm/StashManager.js.map +1 -1
  215. package/lib/esm/Texture.js.map +1 -1
  216. package/lib/esm/TileStorage.js.map +1 -1
  217. package/lib/esm/TxnManager.js.map +1 -1
  218. package/lib/esm/ViewDefinition.js.map +1 -1
  219. package/lib/esm/ViewStateHydrator.js.map +1 -1
  220. package/lib/esm/ViewStore.js.map +1 -1
  221. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
  222. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +4 -6
  223. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
  224. package/lib/esm/annotations/FrameGeometry.js.map +1 -1
  225. package/lib/esm/annotations/LeaderGeometry.js +1 -1
  226. package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
  227. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  228. package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -1
  229. package/lib/esm/annotations/TextAnnotationGeometry.js +24 -17
  230. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
  231. package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -1
  232. package/lib/esm/annotations/TextBlockGeometry.js +8 -0
  233. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
  234. package/lib/esm/annotations/TextBlockLayout.d.ts +46 -27
  235. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -1
  236. package/lib/esm/annotations/TextBlockLayout.js +202 -114
  237. package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
  238. package/lib/esm/core-backend.js.map +1 -1
  239. package/lib/esm/domains/FunctionalElements.js.map +1 -1
  240. package/lib/esm/domains/FunctionalSchema.js.map +1 -1
  241. package/lib/esm/domains/GenericElements.js.map +1 -1
  242. package/lib/esm/domains/GenericSchema.js.map +1 -1
  243. package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
  244. package/lib/esm/internal/ChannelAdmin.js.map +1 -1
  245. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  246. package/lib/esm/internal/FontFileImpl.js.map +1 -1
  247. package/lib/esm/internal/HubMock.js.map +1 -1
  248. package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
  249. package/lib/esm/internal/NativePlatform.js.map +1 -1
  250. package/lib/esm/internal/NoLocks.js.map +1 -1
  251. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  252. package/lib/esm/internal/Symbols.js.map +1 -1
  253. package/lib/esm/internal/annotations/fields.d.ts +2 -12
  254. package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
  255. package/lib/esm/internal/annotations/fields.js +51 -47
  256. package/lib/esm/internal/annotations/fields.js.map +1 -1
  257. package/lib/esm/internal/cross-package.js.map +1 -1
  258. package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
  259. package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  260. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  261. package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  262. package/lib/esm/rpc/multipart.js.map +1 -1
  263. package/lib/esm/rpc/tracing.js.map +1 -1
  264. package/lib/esm/rpc/web/logging.js.map +1 -1
  265. package/lib/esm/rpc/web/request.js.map +1 -1
  266. package/lib/esm/rpc/web/response.js.map +1 -1
  267. package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  268. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  269. package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  270. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  271. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  272. package/lib/esm/test/AdvancedEqual.js.map +1 -1
  273. package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
  274. package/lib/esm/test/AttachDb.test.js +11 -11
  275. package/lib/esm/test/AttachDb.test.js.map +1 -1
  276. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  277. package/lib/esm/test/GeometryTestUtil.js.map +1 -1
  278. package/lib/esm/test/IModelHost.test.js.map +1 -1
  279. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  280. package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
  281. package/lib/esm/test/IpcHost.test.js.map +1 -1
  282. package/lib/esm/test/KnownTestLocations.js.map +1 -1
  283. package/lib/esm/test/PrintElementTree.js.map +1 -1
  284. package/lib/esm/test/PropertyDb.test.js.map +1 -1
  285. package/lib/esm/test/RevisionUtility.js.map +1 -1
  286. package/lib/esm/test/SchemaUtils.test.js +25 -25
  287. package/lib/esm/test/SchemaUtils.test.js.map +1 -1
  288. package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
  289. package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
  290. package/lib/esm/test/TestUtils.js.map +1 -1
  291. package/lib/esm/test/annotations/Fields.test.js +181 -65
  292. package/lib/esm/test/annotations/Fields.test.js.map +1 -1
  293. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
  294. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  295. package/lib/esm/test/annotations/TextAnnotation.test.js +1 -1
  296. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  297. package/lib/esm/test/annotations/TextBlock.test.js +417 -54
  298. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
  299. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
  300. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts +44 -0
  301. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts.map +1 -1
  302. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +18 -2
  303. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
  304. package/lib/esm/test/categories/Category.test.js.map +1 -1
  305. package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
  306. package/lib/esm/test/ecdb/CTE.test.js +88 -88
  307. package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
  308. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +15 -15
  309. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  310. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
  311. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  312. package/lib/esm/test/ecdb/ECDb.test.js +72 -72
  313. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  314. package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
  315. package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
  316. package/lib/esm/test/ecdb/ECSqlAst.test.js +65 -65
  317. package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
  318. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  319. package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
  320. package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
  321. package/lib/esm/test/ecdb/ECSqlStatement.test.js +326 -326
  322. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  323. package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
  324. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  325. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js +21 -21
  326. package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
  327. package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
  328. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  329. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  330. package/lib/esm/test/element/ElementAspect.test.js +22 -22
  331. package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
  332. package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
  333. package/lib/esm/test/element/ElementRoundTrip.test.js +139 -139
  334. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  335. package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
  336. package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
  337. package/lib/esm/test/element/NullStructArray.test.js +13 -13
  338. package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
  339. package/lib/esm/test/element/UrlLink.test.js.map +1 -1
  340. package/lib/esm/test/font/FontFile.test.js.map +1 -1
  341. package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
  342. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +32 -32
  343. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
  344. package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
  345. package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
  346. package/lib/esm/test/hubaccess/Rebase.test.js +33 -33
  347. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  348. package/lib/esm/test/imageData.js.map +1 -1
  349. package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
  350. package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
  351. package/lib/esm/test/imodel/IModel.test.js +44 -44
  352. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  353. package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
  354. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  355. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
  356. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
  357. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
  358. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
  359. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
  360. package/lib/esm/test/index.js.map +1 -1
  361. package/lib/esm/test/misc/DevTools.test.js.map +1 -1
  362. package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
  363. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  364. package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
  365. package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
  366. package/lib/esm/test/rpc/response.test.js.map +1 -1
  367. package/lib/esm/test/schema/ClassRegistry.test.js +99 -99
  368. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  369. package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
  370. package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
  371. package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
  372. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  373. package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
  374. package/lib/esm/test/standalone/ChangesetReader.test.js +117 -117
  375. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  376. package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
  377. package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
  378. package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
  379. package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
  380. package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
  381. package/lib/esm/test/standalone/ExportGraphics.test.js +14 -14
  382. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  383. package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
  384. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  385. package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
  386. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
  387. package/lib/esm/test/standalone/IModelWrite.test.js +27 -27
  388. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  389. package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
  390. package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
  391. package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
  392. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  393. package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
  394. package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
  395. package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
  396. package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
  397. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  398. package/lib/esm/test/standalone/Setting.test.js.map +1 -1
  399. package/lib/esm/test/standalone/Settings.test.js.map +1 -1
  400. package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
  401. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  402. package/lib/esm/test/standalone/Texture.test.js.map +1 -1
  403. package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
  404. package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
  405. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  406. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  407. package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
  408. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  409. package/lib/esm/workspace/Settings.js.map +1 -1
  410. package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
  411. package/lib/esm/workspace/Workspace.js.map +1 -1
  412. package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
  413. package/package.json +13 -13
@@ -7,7 +7,7 @@ import { Code, FieldRun, SubCategoryAppearance, TextAnnotation, TextBlock, TextR
7
7
  import { StandaloneDb } from "../../IModelDb";
8
8
  import { IModelTestUtils } from "../IModelTestUtils";
9
9
  import { createUpdateContext, updateField, updateFields } from "../../internal/annotations/fields";
10
- import { DbResult, Id64 } from "@itwin/core-bentley";
10
+ import { DbResult, Id64, ProcessDetector } from "@itwin/core-bentley";
11
11
  import { SpatialCategory } from "../../Category";
12
12
  import { Point3d, YawPitchRollAngles } from "@itwin/core-geometry";
13
13
  import { Schema, Schemas } from "../../Schema";
@@ -15,6 +15,12 @@ import { ClassRegistry } from "../../ClassRegistry";
15
15
  import { PhysicalElement } from "../../Element";
16
16
  import { ElementOwnsUniqueAspect, ElementUniqueAspect, FontFile, TextAnnotation3d } from "../../core-backend";
17
17
  import { ElementDrivesTextAnnotation, TextAnnotationUsesTextStyleByDefault } from "../../annotations/ElementDrivesTextAnnotation";
18
+ function isIntlSupported() {
19
+ // Node in the mobile add-on does not include Intl, so this test fails. Right now, mobile
20
+ // users are not expected to do any editing, but long term we will attempt to find a better
21
+ // solution.
22
+ return !ProcessDetector.isMobileAppBackend;
23
+ }
18
24
  describe("updateField", () => {
19
25
  const mockElementId = "0x1";
20
26
  const mockPath = {
@@ -31,7 +37,7 @@ describe("updateField", () => {
31
37
  propertyPath.accessors?.[0] === 0 &&
32
38
  propertyPath.accessors?.[1] === "nestedProperty" &&
33
39
  propertyValue !== undefined) {
34
- return { value: propertyValue, metadata: {} };
40
+ return { value: propertyValue, type: "string" };
35
41
  }
36
42
  return undefined;
37
43
  },
@@ -97,36 +103,43 @@ describe("updateField", () => {
97
103
  expect(fieldRun.cachedContent).to.equal(FieldRun.invalidContentIndicator);
98
104
  });
99
105
  });
100
- const fieldsSchemaXml = `
101
- <?xml version="1.0" encoding="UTF-8"?>
102
- <ECSchema schemaName="Fields" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
103
- <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
104
-
105
- <ECStructClass typeName="InnerStruct" modifier="None">
106
- <ECProperty propertyName="bool" typeName="boolean"/>
107
- <ECArrayProperty propertyName="doubles" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
108
- </ECStructClass>
109
-
110
- <ECStructClass typeName="OuterStruct" modifier="None">
111
- <ECStructProperty propertyName="innerStruct" typeName="InnerStruct"/>
112
- <ECStructArrayProperty propertyName="innerStructs" typeName="InnerStruct" minOccurs="0" maxOccurs="unbounded"/>
113
- </ECStructClass>
114
-
115
- <ECEntityClass typeName="TestElement" modifier="None">
116
- <BaseClass>bis:PhysicalElement</BaseClass>
117
- <ECProperty propertyName="intProp" typeName="int"/>
118
- <ECProperty propertyName="point" typeName="point3d"/>
119
- <ECProperty propertyName="maybeNull" typeName="int"/>
120
- <ECArrayProperty propertyName="strings" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
121
- <ECStructProperty propertyName="outerStruct" typeName="OuterStruct"/>
122
- <ECStructArrayProperty propertyName="outerStructs" typeName="OuterStruct" minOccurs="0" maxOccurs="unbounded"/>
123
- </ECEntityClass>
124
-
125
- <ECEntityClass typeName="TestAspect" modifier="None">
126
- <BaseClass>bis:ElementUniqueAspect</BaseClass>
127
- <ECProperty propertyName="aspectProp" typeName="int"/>
128
- </ECEntityClass>
129
- </ECSchema>
106
+ const fieldsSchemaXml = `
107
+ <?xml version="1.0" encoding="UTF-8"?>
108
+ <ECSchema schemaName="Fields" alias="ts" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
109
+ <ECSchemaReference name="BisCore" version="01.00.04" alias="bis"/>
110
+
111
+ <ECEnumeration typeName="IntEnum" backingTypeName="int">
112
+ <ECEnumerator name="one" displayLabel="One" value="1" />
113
+ <ECEnumerator name="two" displayLabel="Two" value="2"/>
114
+ </ECEnumeration>
115
+
116
+ <ECStructClass typeName="InnerStruct" modifier="None">
117
+ <ECProperty propertyName="bool" typeName="boolean"/>
118
+ <ECArrayProperty propertyName="doubles" typeName="double" minOccurs="0" maxOccurs="unbounded"/>
119
+ </ECStructClass>
120
+
121
+ <ECStructClass typeName="OuterStruct" modifier="None">
122
+ <ECStructProperty propertyName="innerStruct" typeName="InnerStruct"/>
123
+ <ECStructArrayProperty propertyName="innerStructs" typeName="InnerStruct" minOccurs="0" maxOccurs="unbounded"/>
124
+ </ECStructClass>
125
+
126
+ <ECEntityClass typeName="TestElement" modifier="None">
127
+ <BaseClass>bis:PhysicalElement</BaseClass>
128
+ <ECProperty propertyName="intProp" typeName="int"/>
129
+ <ECProperty propertyName="point" typeName="point3d"/>
130
+ <ECProperty propertyName="maybeNull" typeName="int"/>
131
+ <ECProperty propertyName="datetime" typeName="dateTime"/>
132
+ <ECArrayProperty propertyName="strings" typeName="string" minOccurs="0" maxOccurs="unbounded"/>
133
+ <ECStructProperty propertyName="outerStruct" typeName="OuterStruct"/>
134
+ <ECStructArrayProperty propertyName="outerStructs" typeName="OuterStruct" minOccurs="0" maxOccurs="unbounded"/>
135
+ <ECProperty propertyName="intEnum" typeName="IntEnum"/>
136
+ </ECEntityClass>
137
+
138
+ <ECEntityClass typeName="TestAspect" modifier="None">
139
+ <BaseClass>bis:ElementUniqueAspect</BaseClass>
140
+ <ECProperty propertyName="aspectProp" typeName="int"/>
141
+ </ECEntityClass>
142
+ </ECSchema>
130
143
  `;
131
144
  class TestElement extends PhysicalElement {
132
145
  static get className() { return "TestElement"; }
@@ -174,6 +187,8 @@ describe("Field evaluation", () => {
174
187
  intProp: 100,
175
188
  point: { x: 1, y: 2, z: 3 },
176
189
  strings: ["a", "b", `"name": "c"`],
190
+ datetime: new Date("2025-08-28T13:45:30.123Z"),
191
+ intEnum: 1,
177
192
  outerStruct: {
178
193
  innerStruct: { bool: false, doubles: [1, 2, 3] },
179
194
  innerStructs: [{ bool: true, doubles: [] }, { bool: false, doubles: [5, 4, 3, 2, 1] }],
@@ -189,6 +204,7 @@ describe("Field evaluation", () => {
189
204
  jsonProperties: {
190
205
  stringProp: "abc",
191
206
  ints: [10, 11, 12, 13],
207
+ bool: true,
192
208
  zoo: {
193
209
  address: {
194
210
  zipcode: 12345,
@@ -210,22 +226,27 @@ describe("Field evaluation", () => {
210
226
  imodel.saveChanges();
211
227
  return id;
212
228
  }
229
+ function evaluateField(propertyPath, propertyHost, deletedDependency = false) {
230
+ if (typeof propertyHost === "string") {
231
+ propertyHost = { schemaName: "Fields", className: "TestElement", elementId: propertyHost };
232
+ }
233
+ const field = FieldRun.create({
234
+ propertyPath,
235
+ propertyHost,
236
+ });
237
+ const context = createUpdateContext(propertyHost.elementId, imodel, deletedDependency);
238
+ return context.getProperty(field);
239
+ }
213
240
  describe("getProperty", () => {
214
241
  function expectValue(expected, propertyPath, propertyHost, deletedDependency = false) {
215
- if (typeof propertyHost === "string") {
216
- propertyHost = { schemaName: "Fields", className: "TestElement", elementId: propertyHost };
217
- }
218
- const field = FieldRun.create({
219
- propertyPath,
220
- propertyHost,
221
- });
222
- const context = createUpdateContext(propertyHost.elementId, imodel, deletedDependency);
223
- const actual = context.getProperty(field);
224
- expect(actual?.value).to.deep.equal(expected);
242
+ expect(evaluateField(propertyPath, propertyHost, deletedDependency)?.value).to.deep.equal(expected);
225
243
  }
226
244
  it("returns a primitive property value", () => {
227
245
  expectValue(100, { propertyName: "intProp" }, sourceElementId);
228
246
  });
247
+ it("returns an integer enum property value", () => {
248
+ expectValue(1, { propertyName: "intEnum" }, sourceElementId);
249
+ });
229
250
  it("treats points as primitive values", () => {
230
251
  expectValue({ x: 1, y: 2, z: 3 }, { propertyName: "point" }, sourceElementId);
231
252
  expectValue(undefined, { propertyName: "point", accessors: ["x"] }, sourceElementId);
@@ -284,24 +305,58 @@ describe("Field evaluation", () => {
284
305
  expectValue(false, { propertyName: "outerStructs", accessors: [0, "innerStructs", -1, "bool"] }, sourceElementId);
285
306
  expectValue(5, { propertyName: "outerStructs", accessors: [0, "innerStructs", 0, "doubles", 0] }, sourceElementId);
286
307
  });
287
- it("returns arbitrarily-nested JSON properties", () => {
288
- expectValue("abc", { propertyName: "jsonProperties", jsonAccessors: ["stringProp"] }, sourceElementId);
289
- expectValue(10, { propertyName: "jsonProperties", jsonAccessors: ["ints", 0] }, sourceElementId);
290
- expectValue(13, { propertyName: "jsonProperties", jsonAccessors: ["ints", 3] }, sourceElementId);
291
- expectValue(13, { propertyName: "jsonProperties", jsonAccessors: ["ints", -1] }, sourceElementId);
292
- expectValue(11, { propertyName: "jsonProperties", jsonAccessors: ["ints", -3] }, sourceElementId);
293
- expectValue(12345, { propertyName: "jsonProperties", jsonAccessors: ["zoo", "address", "zipcode"] }, sourceElementId);
294
- expectValue("scree!", { propertyName: "jsonProperties", jsonAccessors: ["zoo", "birds", 1, "sound"] }, sourceElementId);
295
- });
296
- it("returns undefined if JSON accessors applied to non-JSON property", () => {
297
- expectValue(undefined, { propertyName: "int", jsonAccessors: ["whatever"] }, sourceElementId);
298
- expectValue(undefined, { propertyName: "strings", accessors: [2, "name"] }, sourceElementId);
299
- expectValue(undefined, { propertyName: "outerStruct", accessors: ["innerStruct"], jsonAccessors: ["bool"] }, sourceElementId);
300
- });
301
308
  it("returns the value of a property of an aspect", () => {
302
309
  expect(imodel.elements.getAspects(sourceElementId, "Fields:TestAspect").length).to.equal(1);
303
310
  expectValue(999, { propertyName: "aspectProp" }, { elementId: sourceElementId, schemaName: "Fields", className: "TestAspect" });
304
311
  });
312
+ it("should fail to evaluate if prop type does not match", () => {
313
+ const fieldRun = FieldRun.create({
314
+ propertyHost: { elementId: sourceElementId, schemaName: "Fields", className: "TestElement" },
315
+ propertyPath: { propertyName: "string", accessors: [0] },
316
+ cachedContent: "oldValue",
317
+ formatOptions: {
318
+ case: "upper",
319
+ prefix: "Value: ",
320
+ suffix: "!"
321
+ }
322
+ });
323
+ const context = createUpdateContext(sourceElementId, imodel, false);
324
+ const updated = updateField(fieldRun, context);
325
+ expect(updated).to.be.true;
326
+ expect(fieldRun.cachedContent).to.equal(FieldRun.invalidContentIndicator);
327
+ });
328
+ function getPropertyType(propertyHost, propertyPath) {
329
+ if (typeof propertyPath === "string") {
330
+ propertyPath = { propertyName: propertyPath };
331
+ }
332
+ return evaluateField(propertyPath, propertyHost)?.type;
333
+ }
334
+ it("deduces type for primitive properties", () => {
335
+ const propertyHost = { elementId: sourceElementId, schemaName: "Fields", className: "TestElement" };
336
+ expect(getPropertyType(propertyHost, "intProp")).to.equal("string");
337
+ expect(getPropertyType(propertyHost, "point")).to.equal("coordinate");
338
+ expect(getPropertyType(propertyHost, { propertyName: "strings", accessors: [0] })).to.equal("string");
339
+ expect(getPropertyType(propertyHost, "intEnum")).to.equal("int-enum");
340
+ expect(getPropertyType(propertyHost, { propertyName: "outerStruct", accessors: ["innerStruct", "doubles", 0] })).to.equal("quantity");
341
+ expect(getPropertyType(propertyHost, { propertyName: "outerStruct", accessors: ["innerStruct", "bool"] })).to.equal("boolean");
342
+ propertyHost.schemaName = "BisCore";
343
+ propertyHost.className = "GeometricElement3d";
344
+ expect(getPropertyType(propertyHost, "LastMod")).to.equal("datetime");
345
+ expect(getPropertyType(propertyHost, "FederationGuid")).to.equal("string");
346
+ });
347
+ it("returns undefined for non-primitive properties", () => {
348
+ const propertyHost = { elementId: sourceElementId, schemaName: "Fields", className: "TestElement" };
349
+ expect(getPropertyType(propertyHost, "outerStruct")).to.equal(undefined);
350
+ expect(getPropertyType(propertyHost, "outerStructs")).to.equal(undefined);
351
+ });
352
+ it("returns undefined for invalid property paths", () => {
353
+ const propertyHost = { elementId: sourceElementId, schemaName: "Fields", className: "TestElement" };
354
+ expect(getPropertyType(propertyHost, "unknownPropertyName")).to.be.undefined;
355
+ });
356
+ it("should return undefined for unsupported primitive types", () => {
357
+ const host = { elementId: sourceElementId, schemaName: "BisCore", className: "GeometricElement3d" };
358
+ expect(getPropertyType(host, "GeometryStream")).to.be.undefined;
359
+ });
305
360
  });
306
361
  describe("updateFields", () => {
307
362
  it("recomputes cached content", () => {
@@ -396,7 +451,7 @@ describe("Field evaluation", () => {
396
451
  expect(relationship.sourceId).to.equal(sourceElementId);
397
452
  expect(relationship.targetId).to.equal(targetId);
398
453
  });
399
- function createField(propertyHost, cachedContent, propertyName = "intProp", accessors, jsonAccessors) {
454
+ function createField(propertyHost, cachedContent, propertyName = "intProp", accessors) {
400
455
  if (typeof propertyHost === "string") {
401
456
  propertyHost = { schemaName: "Fields", className: "TestElement", elementId: propertyHost };
402
457
  }
@@ -404,7 +459,7 @@ describe("Field evaluation", () => {
404
459
  styleOverrides: { fontName: "Karla" },
405
460
  propertyHost,
406
461
  cachedContent,
407
- propertyPath: { propertyName, accessors, jsonAccessors },
462
+ propertyPath: { propertyName, accessors },
408
463
  });
409
464
  }
410
465
  describe("updateFieldDependencies", () => {
@@ -448,14 +503,16 @@ describe("Field evaluation", () => {
448
503
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceB })).not.to.be.undefined;
449
504
  const target = imodel.elements.getElement(targetId);
450
505
  const anno = target.getAnnotation();
451
- anno.textBlock.paragraphs[0].runs.shift();
506
+ // Remove the sourceA FieldRun from the first paragraph.
507
+ const p1 = anno.textBlock.children[0];
508
+ p1.children.shift();
452
509
  target.setAnnotation(anno);
453
510
  target.update();
454
511
  imodel.saveChanges();
455
512
  expectNumRelationships(1, targetId);
456
513
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceA })).to.be.undefined;
457
514
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceB })).not.to.be.undefined;
458
- anno.textBlock.paragraphs.length = 0;
515
+ anno.textBlock.children.length = 0;
459
516
  anno.textBlock.appendRun(createField(sourceA, "A2"));
460
517
  target.setAnnotation(anno);
461
518
  target.update();
@@ -463,7 +520,7 @@ describe("Field evaluation", () => {
463
520
  expectNumRelationships(1, targetId);
464
521
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceA })).not.to.be.undefined;
465
522
  expect(imodel.relationships.tryGetInstance(ElementDrivesTextAnnotation.classFullName, { targetId, sourceId: sourceB })).to.be.undefined;
466
- anno.textBlock.paragraphs.length = 0;
523
+ anno.textBlock.children.length = 0;
467
524
  anno.textBlock.appendRun(TextRun.create({
468
525
  styleOverrides: { fontName: "Karla" },
469
526
  content: "not a field",
@@ -492,6 +549,16 @@ describe("Field evaluation", () => {
492
549
  const actual = anno.textBlock.stringify();
493
550
  expect(actual).to.equal(expected);
494
551
  }
552
+ it("evaluates cachedContent when annotation element is inserted", () => {
553
+ const sourceId = insertTestElement();
554
+ const block = TextBlock.create();
555
+ block.appendRun(createField(sourceId, "initial cached content"));
556
+ expect(block.stringify()).to.equal("initial cached content");
557
+ const targetId = insertAnnotationElement(block);
558
+ imodel.saveChanges();
559
+ const target = imodel.elements.getElement(targetId);
560
+ expect(target.getAnnotation().textBlock.stringify()).to.equal("100");
561
+ });
495
562
  it("updates fields when source element is modified or deleted", () => {
496
563
  const sourceId = insertTestElement();
497
564
  const block = TextBlock.create();
@@ -561,16 +628,65 @@ describe("Field evaluation", () => {
561
628
  const sourceId = insertTestElement();
562
629
  const block = TextBlock.create();
563
630
  block.appendRun(createField(sourceId, "", "outerStruct", ["innerStructs", 1, "doubles", -2]));
564
- block.appendRun(createField(sourceId, "", "jsonProperties", undefined, ["zoo", "birds", 0, "name"]));
565
631
  const targetId = insertAnnotationElement(block);
566
632
  imodel.saveChanges();
567
- expectText("2duck", targetId);
633
+ expectText("2", targetId);
568
634
  const source = imodel.elements.getElement(sourceId);
569
635
  source.outerStruct.innerStructs[1].doubles[3] = 12.5;
570
- source.jsonProperties.zoo.birds[0].name = "parrot";
571
636
  source.update();
572
637
  imodel.saveChanges();
573
- expectText("12.5parrot", targetId);
638
+ expectText("12.5", targetId);
639
+ });
640
+ });
641
+ describe("Format Validation", () => {
642
+ it("validates formatting options for string property type", () => {
643
+ // Create a FieldRun with string property type and some format options
644
+ const fieldRun = FieldRun.create({
645
+ propertyHost: { elementId: sourceElementId, schemaName: "Fields", className: "TestElement" },
646
+ propertyPath: { propertyName: "strings", accessors: [0] },
647
+ cachedContent: "oldValue",
648
+ formatOptions: {
649
+ case: "upper",
650
+ prefix: "Value: ",
651
+ suffix: "!"
652
+ }
653
+ });
654
+ // Context returns a string value for the property
655
+ const context = {
656
+ hostElementId: sourceElementId,
657
+ getProperty: () => { return { value: "abc", type: "string" }; },
658
+ };
659
+ // Update the field and check the result
660
+ const updated = updateField(fieldRun, context);
661
+ // The formatted value should be uppercased and have prefix/suffix applied
662
+ expect(updated).to.be.true;
663
+ expect(fieldRun.cachedContent).to.equal("Value: ABC!");
664
+ });
665
+ it("validates formatting options for datetime objects", function () {
666
+ if (!isIntlSupported()) {
667
+ this.skip();
668
+ }
669
+ const propertyHost = { elementId: sourceElementId, schemaName: "Fields", className: "TestElement" };
670
+ const fieldRun = FieldRun.create({
671
+ propertyHost,
672
+ propertyPath: { propertyName: "datetime" },
673
+ cachedContent: "oldval",
674
+ formatOptions: {
675
+ dateTime: {
676
+ formatOptions: {
677
+ month: "short",
678
+ day: "2-digit",
679
+ year: "numeric",
680
+ timeZone: "UTC"
681
+ },
682
+ locale: "en-US",
683
+ },
684
+ },
685
+ });
686
+ const context = createUpdateContext(sourceElementId, imodel, false);
687
+ const updated = updateField(fieldRun, context);
688
+ expect(updated).to.be.true;
689
+ expect(fieldRun.cachedContent).to.equal("Aug 28, 2025");
574
690
  });
575
691
  });
576
692
  });