@bldrs-ai/conway 1.389.1221 → 1.394.1504

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 (382) hide show
  1. package/README.md +36 -22
  2. package/compiled/Dist/ConwayGeomWasmNode.js +0 -0
  3. package/compiled/Dist/ConwayGeomWasmNodeMT.js +0 -0
  4. package/compiled/Dist/ConwayGeomWasmWeb.js +0 -0
  5. package/compiled/Dist/ConwayGeomWasmWebMT.js +1 -1
  6. package/compiled/Dist/ConwayGeomWasmWebMT.wasm +0 -0
  7. package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNode.js +0 -0
  8. package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNodeMT.js +0 -0
  9. package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWeb.js +0 -0
  10. package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.js +1 -1
  11. package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.wasm +0 -0
  12. package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts +19 -0
  13. package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts.map +1 -1
  14. package/compiled/dependencies/conway-geom/interface/conway_geometry.js +17 -0
  15. package/compiled/dependencies/conway-geom/interface/parameters/surface_object.d.ts +6 -0
  16. package/compiled/dependencies/conway-geom/interface/parameters/surface_object.d.ts.map +1 -1
  17. package/compiled/examples/browser-bundled.cjs +1569 -51
  18. package/compiled/examples/cli-bundled.cjs +2790 -436
  19. package/compiled/examples/cli-step-bundled.cjs +1904 -229
  20. package/compiled/examples/validator-bundled.cjs +1569 -51
  21. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_curve.gen.d.ts +2 -2
  22. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_curve.gen.d.ts.map +1 -1
  23. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_curve.gen.js +2 -2
  24. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_surface.gen.d.ts +3 -3
  25. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_surface.gen.d.ts.map +1 -1
  26. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_surface.gen.js +3 -3
  27. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/composite_curve.gen.d.ts +1 -1
  28. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/composite_curve.gen.d.ts.map +1 -1
  29. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/composite_curve.gen.js +1 -1
  30. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_2d.gen.d.ts +1 -1
  31. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_2d.gen.d.ts.map +1 -1
  32. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_2d.gen.js +1 -1
  33. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_3d.gen.d.ts +1 -1
  34. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_3d.gen.d.ts.map +1 -1
  35. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_3d.gen.js +1 -1
  36. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_surface.gen.d.ts +1 -1
  37. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_surface.gen.d.ts.map +1 -1
  38. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_surface.gen.js +1 -1
  39. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/presentation_style_assignment.gen.d.ts.map +1 -1
  40. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/presentation_style_assignment.gen.js +2 -2
  41. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/schema_ap214.gen.js +11 -11
  42. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/shape_aspect.gen.d.ts +1 -1
  43. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/shape_aspect.gen.d.ts.map +1 -1
  44. package/compiled/src/AP214E3_2010/AP214E3_2010_gen/shape_aspect.gen.js +1 -1
  45. package/compiled/src/AP214E3_2010/ap214_command_line_main.js +7 -3
  46. package/compiled/src/AP214E3_2010/ap214_geometry_extraction.d.ts +181 -7
  47. package/compiled/src/AP214E3_2010/ap214_geometry_extraction.d.ts.map +1 -1
  48. package/compiled/src/AP214E3_2010/ap214_geometry_extraction.js +906 -137
  49. package/compiled/src/AP214E3_2010/ap214_geometry_extraction.test.js +10 -2
  50. package/compiled/src/AP214E3_2010/ap214_logical_attribute.test.d.ts +2 -0
  51. package/compiled/src/AP214E3_2010/ap214_logical_attribute.test.d.ts.map +1 -0
  52. package/compiled/src/AP214E3_2010/ap214_logical_attribute.test.js +114 -0
  53. package/compiled/src/AP214E3_2010/ap214_model_geometry.d.ts +6 -0
  54. package/compiled/src/AP214E3_2010/ap214_model_geometry.d.ts.map +1 -1
  55. package/compiled/src/AP214E3_2010/ap214_model_geometry.js +9 -0
  56. package/compiled/src/AP214E3_2010/ap214_pcurve_basis_surfaces.test.d.ts +2 -0
  57. package/compiled/src/AP214E3_2010/ap214_pcurve_basis_surfaces.test.d.ts.map +1 -0
  58. package/compiled/src/AP214E3_2010/ap214_pcurve_basis_surfaces.test.js +233 -0
  59. package/compiled/src/AP214E3_2010/ap214_sphere_vertex_loop.test.d.ts +2 -0
  60. package/compiled/src/AP214E3_2010/ap214_sphere_vertex_loop.test.d.ts.map +1 -0
  61. package/compiled/src/AP214E3_2010/ap214_sphere_vertex_loop.test.js +147 -0
  62. package/compiled/src/AP214E3_2010/ap214_step_model.d.ts +2 -1
  63. package/compiled/src/AP214E3_2010/ap214_step_model.d.ts.map +1 -1
  64. package/compiled/src/AP214E3_2010/ap214_step_model.js +1 -1
  65. package/compiled/src/AP214E3_2010/ap214_typed_select_enum.test.d.ts +2 -0
  66. package/compiled/src/AP214E3_2010/ap214_typed_select_enum.test.d.ts.map +1 -0
  67. package/compiled/src/AP214E3_2010/ap214_typed_select_enum.test.js +65 -0
  68. package/compiled/src/AP214E3_2010/ap214_unit_scale.test.d.ts +2 -0
  69. package/compiled/src/AP214E3_2010/ap214_unit_scale.test.d.ts.map +1 -0
  70. package/compiled/src/AP214E3_2010/ap214_unit_scale.test.js +111 -0
  71. package/compiled/src/compat/web-ifc/ap214_streamed_open.test.d.ts +2 -0
  72. package/compiled/src/compat/web-ifc/ap214_streamed_open.test.d.ts.map +1 -0
  73. package/compiled/src/compat/web-ifc/ap214_streamed_open.test.js +190 -0
  74. package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts +2 -0
  75. package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts.map +1 -0
  76. package/compiled/src/compat/web-ifc/coordination_export_order.test.js +110 -0
  77. package/compiled/src/compat/web-ifc/coordination_f64.d.ts +165 -0
  78. package/compiled/src/compat/web-ifc/coordination_f64.d.ts.map +1 -0
  79. package/compiled/src/compat/web-ifc/coordination_f64.js +286 -0
  80. package/compiled/src/compat/web-ifc/coordination_f64.test.d.ts +2 -0
  81. package/compiled/src/compat/web-ifc/coordination_f64.test.d.ts.map +1 -0
  82. package/compiled/src/compat/web-ifc/coordination_f64.test.js +225 -0
  83. package/compiled/src/compat/web-ifc/ifc_api.d.ts +154 -0
  84. package/compiled/src/compat/web-ifc/ifc_api.d.ts.map +1 -1
  85. package/compiled/src/compat/web-ifc/ifc_api.js +211 -3
  86. package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.d.ts +2 -0
  87. package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.d.ts.map +1 -0
  88. package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.js +288 -0
  89. package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts +39 -0
  90. package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts.map +1 -1
  91. package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.d.ts +30 -0
  92. package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.d.ts.map +1 -1
  93. package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.js +83 -0
  94. package/compiled/src/compat/web-ifc/ifc_api_preview_channel.test.d.ts +2 -0
  95. package/compiled/src/compat/web-ifc/ifc_api_preview_channel.test.d.ts.map +1 -0
  96. package/compiled/src/compat/web-ifc/ifc_api_preview_channel.test.js +383 -0
  97. package/compiled/src/compat/web-ifc/ifc_api_preview_coordination.test.d.ts +2 -0
  98. package/compiled/src/compat/web-ifc/ifc_api_preview_coordination.test.d.ts.map +1 -0
  99. package/compiled/src/compat/web-ifc/ifc_api_preview_coordination.test.js +124 -0
  100. package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts +132 -0
  101. package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts.map +1 -1
  102. package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.js +488 -92
  103. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts +268 -0
  104. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
  105. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +996 -149
  106. package/compiled/src/compat/web-ifc/ifc_api_streamed_open.test.d.ts +2 -0
  107. package/compiled/src/compat/web-ifc/ifc_api_streamed_open.test.d.ts.map +1 -0
  108. package/compiled/src/compat/web-ifc/ifc_api_streamed_open.test.js +129 -0
  109. package/compiled/src/compat/web-ifc/spatial_imposter.d.ts +134 -0
  110. package/compiled/src/compat/web-ifc/spatial_imposter.d.ts.map +1 -0
  111. package/compiled/src/compat/web-ifc/spatial_imposter.js +933 -0
  112. package/compiled/src/compat/web-ifc/spatial_imposter.test.d.ts +2 -0
  113. package/compiled/src/compat/web-ifc/spatial_imposter.test.d.ts.map +1 -0
  114. package/compiled/src/compat/web-ifc/spatial_imposter.test.js +467 -0
  115. package/compiled/src/compat/web-ifc/store_preview_channel.d.ts +187 -0
  116. package/compiled/src/compat/web-ifc/store_preview_channel.d.ts.map +1 -0
  117. package/compiled/src/compat/web-ifc/store_preview_channel.js +524 -0
  118. package/compiled/src/compat/web-ifc/store_preview_channel.test.d.ts +2 -0
  119. package/compiled/src/compat/web-ifc/store_preview_channel.test.d.ts.map +1 -0
  120. package/compiled/src/compat/web-ifc/store_preview_channel.test.js +234 -0
  121. package/compiled/src/compat/web-ifc/streamed_preview_channel.d.ts +306 -0
  122. package/compiled/src/compat/web-ifc/streamed_preview_channel.d.ts.map +1 -0
  123. package/compiled/src/compat/web-ifc/streamed_preview_channel.js +580 -0
  124. package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts +2 -0
  125. package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts.map +1 -0
  126. package/compiled/src/compat/web-ifc/web_wasm_directory.test.js +22 -0
  127. package/compiled/src/core/composed_model_skeleton.d.ts +63 -0
  128. package/compiled/src/core/composed_model_skeleton.d.ts.map +1 -0
  129. package/compiled/src/core/composed_model_skeleton.js +66 -0
  130. package/compiled/src/core/composed_model_skeleton.test.d.ts +2 -0
  131. package/compiled/src/core/composed_model_skeleton.test.d.ts.map +1 -0
  132. package/compiled/src/core/composed_model_skeleton.test.js +69 -0
  133. package/compiled/src/core/demand_geometry_queue.d.ts +147 -0
  134. package/compiled/src/core/demand_geometry_queue.d.ts.map +1 -0
  135. package/compiled/src/core/demand_geometry_queue.js +223 -0
  136. package/compiled/src/core/demand_geometry_queue.test.d.ts +2 -0
  137. package/compiled/src/core/demand_geometry_queue.test.d.ts.map +1 -0
  138. package/compiled/src/core/demand_geometry_queue.test.js +133 -0
  139. package/compiled/src/core/demand_residency_pump.d.ts +93 -0
  140. package/compiled/src/core/demand_residency_pump.d.ts.map +1 -0
  141. package/compiled/src/core/demand_residency_pump.js +120 -0
  142. package/compiled/src/core/demand_residency_pump.test.d.ts +2 -0
  143. package/compiled/src/core/demand_residency_pump.test.d.ts.map +1 -0
  144. package/compiled/src/core/demand_residency_pump.test.js +148 -0
  145. package/compiled/src/core/geometry_tile_bindings.d.ts +110 -0
  146. package/compiled/src/core/geometry_tile_bindings.d.ts.map +1 -0
  147. package/compiled/src/core/geometry_tile_bindings.js +76 -0
  148. package/compiled/src/core/geometry_tile_bindings.test.d.ts +2 -0
  149. package/compiled/src/core/geometry_tile_bindings.test.d.ts.map +1 -0
  150. package/compiled/src/core/geometry_tile_bindings.test.js +211 -0
  151. package/compiled/src/core/geometry_tile_pool.d.ts +99 -0
  152. package/compiled/src/core/geometry_tile_pool.d.ts.map +1 -0
  153. package/compiled/src/core/geometry_tile_pool.js +104 -0
  154. package/compiled/src/core/geometry_tile_pool.test.d.ts +2 -0
  155. package/compiled/src/core/geometry_tile_pool.test.d.ts.map +1 -0
  156. package/compiled/src/core/geometry_tile_pool.test.js +180 -0
  157. package/compiled/src/core/mem/chunked_pool.d.ts +116 -0
  158. package/compiled/src/core/mem/chunked_pool.d.ts.map +1 -0
  159. package/compiled/src/core/mem/chunked_pool.js +149 -0
  160. package/compiled/src/core/mem/chunked_pool.test.d.ts +2 -0
  161. package/compiled/src/core/mem/chunked_pool.test.d.ts.map +1 -0
  162. package/compiled/src/core/mem/chunked_pool.test.js +63 -0
  163. package/compiled/src/core/mem/shared_asset_pool.d.ts +82 -0
  164. package/compiled/src/core/mem/shared_asset_pool.d.ts.map +1 -0
  165. package/compiled/src/core/mem/shared_asset_pool.js +113 -0
  166. package/compiled/src/core/mem/shared_asset_pool.test.d.ts +2 -0
  167. package/compiled/src/core/mem/shared_asset_pool.test.d.ts.map +1 -0
  168. package/compiled/src/core/mem/shared_asset_pool.test.js +49 -0
  169. package/compiled/src/core/model_registry.d.ts +87 -0
  170. package/compiled/src/core/model_registry.d.ts.map +1 -0
  171. package/compiled/src/core/model_registry.js +101 -0
  172. package/compiled/src/core/model_registry.test.d.ts +2 -0
  173. package/compiled/src/core/model_registry.test.d.ts.map +1 -0
  174. package/compiled/src/core/model_registry.test.js +60 -0
  175. package/compiled/src/core/model_uri.d.ts +57 -0
  176. package/compiled/src/core/model_uri.d.ts.map +1 -0
  177. package/compiled/src/core/model_uri.js +101 -0
  178. package/compiled/src/core/model_uri.test.d.ts +2 -0
  179. package/compiled/src/core/model_uri.test.d.ts.map +1 -0
  180. package/compiled/src/core/model_uri.test.js +49 -0
  181. package/compiled/src/core/progress.d.ts +16 -2
  182. package/compiled/src/core/progress.d.ts.map +1 -1
  183. package/compiled/src/core/progress.js +31 -5
  184. package/compiled/src/core/progress.test.js +11 -2
  185. package/compiled/src/core/progress_log.d.ts +1 -0
  186. package/compiled/src/core/progress_log.d.ts.map +1 -1
  187. package/compiled/src/core/progress_log.js +7 -2
  188. package/compiled/src/core/progress_log.test.js +21 -0
  189. package/compiled/src/core/shared_byte_budget.d.ts +60 -0
  190. package/compiled/src/core/shared_byte_budget.d.ts.map +1 -0
  191. package/compiled/src/core/shared_byte_budget.js +85 -0
  192. package/compiled/src/core/shared_byte_budget.test.d.ts +2 -0
  193. package/compiled/src/core/shared_byte_budget.test.d.ts.map +1 -0
  194. package/compiled/src/core/shared_byte_budget.test.js +55 -0
  195. package/compiled/src/core/wasm_heap.d.ts +208 -0
  196. package/compiled/src/core/wasm_heap.d.ts.map +1 -0
  197. package/compiled/src/core/wasm_heap.js +417 -0
  198. package/compiled/src/core/wasm_heap.test.d.ts +2 -0
  199. package/compiled/src/core/wasm_heap.test.d.ts.map +1 -0
  200. package/compiled/src/core/wasm_heap.test.js +546 -0
  201. package/compiled/src/demand/index.d.ts +23 -0
  202. package/compiled/src/demand/index.d.ts.map +1 -0
  203. package/compiled/src/demand/index.js +22 -0
  204. package/compiled/src/ifc/ifc4_gen/IfcLogical.gen.d.ts +1 -1
  205. package/compiled/src/ifc/ifc4_gen/IfcLogical.gen.d.ts.map +1 -1
  206. package/compiled/src/ifc/ifc4_gen/IfcLogical.gen.js +1 -1
  207. package/compiled/src/ifc/ifc4_gen/IfcPresentationStyleAssignment.gen.d.ts.map +1 -1
  208. package/compiled/src/ifc/ifc4_gen/IfcPresentationStyleAssignment.gen.js +2 -2
  209. package/compiled/src/ifc/ifc4_gen/IfcRelInterferesElements.gen.d.ts +1 -1
  210. package/compiled/src/ifc/ifc4_gen/IfcRelInterferesElements.gen.d.ts.map +1 -1
  211. package/compiled/src/ifc/ifc4_gen/IfcRelInterferesElements.gen.js +1 -1
  212. package/compiled/src/ifc/ifc4_gen/schema_ifc.gen.js +2 -2
  213. package/compiled/src/ifc/ifc_demand_extraction.test.d.ts +2 -0
  214. package/compiled/src/ifc/ifc_demand_extraction.test.d.ts.map +1 -0
  215. package/compiled/src/ifc/ifc_demand_extraction.test.js +251 -0
  216. package/compiled/src/ifc/ifc_geometry_extraction.d.ts +367 -6
  217. package/compiled/src/ifc/ifc_geometry_extraction.d.ts.map +1 -1
  218. package/compiled/src/ifc/ifc_geometry_extraction.js +1322 -389
  219. package/compiled/src/ifc/ifc_grid_placement.test.d.ts +2 -0
  220. package/compiled/src/ifc/ifc_grid_placement.test.d.ts.map +1 -0
  221. package/compiled/src/ifc/ifc_grid_placement.test.js +261 -0
  222. package/compiled/src/ifc/ifc_model_geometry.d.ts +12 -0
  223. package/compiled/src/ifc/ifc_model_geometry.d.ts.map +1 -1
  224. package/compiled/src/ifc/ifc_model_geometry.js +15 -0
  225. package/compiled/src/ifc/ifc_regression_batch_main.js +210 -12
  226. package/compiled/src/ifc/ifc_spatial_skeleton.d.ts +145 -0
  227. package/compiled/src/ifc/ifc_spatial_skeleton.d.ts.map +1 -0
  228. package/compiled/src/ifc/ifc_spatial_skeleton.js +266 -0
  229. package/compiled/src/ifc/ifc_spatial_skeleton.test.d.ts +2 -0
  230. package/compiled/src/ifc/ifc_spatial_skeleton.test.d.ts.map +1 -0
  231. package/compiled/src/ifc/ifc_spatial_skeleton.test.js +199 -0
  232. package/compiled/src/ifc/ifc_step_model.d.ts +6 -2
  233. package/compiled/src/ifc/ifc_step_model.d.ts.map +1 -1
  234. package/compiled/src/ifc/ifc_step_model.js +6 -4
  235. package/compiled/src/ifc/ifc_step_parser.d.ts +58 -0
  236. package/compiled/src/ifc/ifc_step_parser.d.ts.map +1 -1
  237. package/compiled/src/ifc/ifc_step_parser.js +64 -0
  238. package/compiled/src/ifc/ifc_stream_model.test.d.ts +2 -0
  239. package/compiled/src/ifc/ifc_stream_model.test.d.ts.map +1 -0
  240. package/compiled/src/ifc/ifc_stream_model.test.js +70 -0
  241. package/compiled/src/ifc/ifc_stream_open.d.ts +131 -0
  242. package/compiled/src/ifc/ifc_stream_open.d.ts.map +1 -0
  243. package/compiled/src/ifc/ifc_stream_open.js +116 -0
  244. package/compiled/src/ifc/ifc_stream_open.test.d.ts +2 -0
  245. package/compiled/src/ifc/ifc_stream_open.test.d.ts.map +1 -0
  246. package/compiled/src/ifc/ifc_stream_open.test.js +230 -0
  247. package/compiled/src/ifc/ifc_tile_extractor.d.ts +84 -0
  248. package/compiled/src/ifc/ifc_tile_extractor.d.ts.map +1 -0
  249. package/compiled/src/ifc/ifc_tile_extractor.js +134 -0
  250. package/compiled/src/ifc/ifc_tile_extractor.test.d.ts +2 -0
  251. package/compiled/src/ifc/ifc_tile_extractor.test.d.ts.map +1 -0
  252. package/compiled/src/ifc/ifc_tile_extractor.test.js +118 -0
  253. package/compiled/src/ifc/ifc_typed_select_enum.test.d.ts +2 -0
  254. package/compiled/src/ifc/ifc_typed_select_enum.test.d.ts.map +1 -0
  255. package/compiled/src/ifc/ifc_typed_select_enum.test.js +60 -0
  256. package/compiled/src/index.d.ts +21 -1
  257. package/compiled/src/index.d.ts.map +1 -1
  258. package/compiled/src/index.js +28 -1
  259. package/compiled/src/logging/logger.d.ts +16 -2
  260. package/compiled/src/logging/logger.d.ts.map +1 -1
  261. package/compiled/src/logging/logger.js +34 -7
  262. package/compiled/src/logging/logger.test.js +30 -0
  263. package/compiled/src/mem/index.d.ts +17 -0
  264. package/compiled/src/mem/index.d.ts.map +1 -0
  265. package/compiled/src/mem/index.js +16 -0
  266. package/compiled/src/namespace_surface.test.d.ts +2 -0
  267. package/compiled/src/namespace_surface.test.d.ts.map +1 -0
  268. package/compiled/src/namespace_surface.test.js +43 -0
  269. package/compiled/src/parsing/parsing_buffer.d.ts +23 -0
  270. package/compiled/src/parsing/parsing_buffer.d.ts.map +1 -1
  271. package/compiled/src/parsing/parsing_buffer.js +31 -0
  272. package/compiled/src/scripts/model_report_displacement.test.d.ts +2 -0
  273. package/compiled/src/scripts/model_report_displacement.test.d.ts.map +1 -0
  274. package/compiled/src/scripts/model_report_displacement.test.js +104 -0
  275. package/compiled/src/scripts/render_glb_paths.test.d.ts +2 -0
  276. package/compiled/src/scripts/render_glb_paths.test.d.ts.map +1 -0
  277. package/compiled/src/scripts/render_glb_paths.test.js +115 -0
  278. package/compiled/src/step/indexing/step_type_indexer.d.ts +20 -0
  279. package/compiled/src/step/indexing/step_type_indexer.d.ts.map +1 -1
  280. package/compiled/src/step/indexing/step_type_indexer.js +67 -0
  281. package/compiled/src/step/parsing/byte_source.d.ts +153 -0
  282. package/compiled/src/step/parsing/byte_source.d.ts.map +1 -0
  283. package/compiled/src/step/parsing/byte_source.js +106 -0
  284. package/compiled/src/step/parsing/byte_source.test.d.ts +2 -0
  285. package/compiled/src/step/parsing/byte_source.test.d.ts.map +1 -0
  286. package/compiled/src/step/parsing/byte_source.test.js +47 -0
  287. package/compiled/src/step/parsing/byte_source_node.d.ts +41 -0
  288. package/compiled/src/step/parsing/byte_source_node.d.ts.map +1 -0
  289. package/compiled/src/step/parsing/byte_source_node.js +54 -0
  290. package/compiled/src/step/parsing/columnar_index.d.ts +103 -0
  291. package/compiled/src/step/parsing/columnar_index.d.ts.map +1 -0
  292. package/compiled/src/step/parsing/columnar_index.js +224 -0
  293. package/compiled/src/step/parsing/columnar_index.test.d.ts +2 -0
  294. package/compiled/src/step/parsing/columnar_index.test.d.ts.map +1 -0
  295. package/compiled/src/step/parsing/columnar_index.test.js +155 -0
  296. package/compiled/src/step/parsing/cross_reference_registry.d.ts +95 -0
  297. package/compiled/src/step/parsing/cross_reference_registry.d.ts.map +1 -0
  298. package/compiled/src/step/parsing/cross_reference_registry.js +91 -0
  299. package/compiled/src/step/parsing/cross_reference_registry.test.d.ts +2 -0
  300. package/compiled/src/step/parsing/cross_reference_registry.test.d.ts.map +1 -0
  301. package/compiled/src/step/parsing/cross_reference_registry.test.js +66 -0
  302. package/compiled/src/step/parsing/decode_utf8.d.ts +15 -0
  303. package/compiled/src/step/parsing/decode_utf8.d.ts.map +1 -1
  304. package/compiled/src/step/parsing/decode_utf8.js +28 -0
  305. package/compiled/src/step/parsing/express_ref_scan.d.ts +20 -0
  306. package/compiled/src/step/parsing/express_ref_scan.d.ts.map +1 -0
  307. package/compiled/src/step/parsing/express_ref_scan.js +91 -0
  308. package/compiled/src/step/parsing/express_ref_scan.test.d.ts +2 -0
  309. package/compiled/src/step/parsing/express_ref_scan.test.d.ts.map +1 -0
  310. package/compiled/src/step/parsing/express_ref_scan.test.js +28 -0
  311. package/compiled/src/step/parsing/index_sidecar.d.ts +81 -0
  312. package/compiled/src/step/parsing/index_sidecar.d.ts.map +1 -0
  313. package/compiled/src/step/parsing/index_sidecar.js +283 -0
  314. package/compiled/src/step/parsing/index_sidecar.test.d.ts +2 -0
  315. package/compiled/src/step/parsing/index_sidecar.test.d.ts.map +1 -0
  316. package/compiled/src/step/parsing/index_sidecar.test.js +122 -0
  317. package/compiled/src/step/parsing/inf_recovery_index.test.d.ts +2 -0
  318. package/compiled/src/step/parsing/inf_recovery_index.test.d.ts.map +1 -0
  319. package/compiled/src/step/parsing/inf_recovery_index.test.js +108 -0
  320. package/compiled/src/step/parsing/prefix_type_index.d.ts +124 -0
  321. package/compiled/src/step/parsing/prefix_type_index.d.ts.map +1 -0
  322. package/compiled/src/step/parsing/prefix_type_index.js +207 -0
  323. package/compiled/src/step/parsing/prefix_type_index.test.d.ts +2 -0
  324. package/compiled/src/step/parsing/prefix_type_index.test.d.ts.map +1 -0
  325. package/compiled/src/step/parsing/prefix_type_index.test.js +298 -0
  326. package/compiled/src/step/parsing/range_byte_source.d.ts +69 -0
  327. package/compiled/src/step/parsing/range_byte_source.d.ts.map +1 -0
  328. package/compiled/src/step/parsing/range_byte_source.js +78 -0
  329. package/compiled/src/step/parsing/range_byte_source.test.d.ts +2 -0
  330. package/compiled/src/step/parsing/range_byte_source.test.d.ts.map +1 -0
  331. package/compiled/src/step/parsing/range_byte_source.test.js +70 -0
  332. package/compiled/src/step/parsing/record_event.d.ts +23 -0
  333. package/compiled/src/step/parsing/record_event.d.ts.map +1 -0
  334. package/compiled/src/step/parsing/record_event.js +1 -0
  335. package/compiled/src/step/parsing/record_field_cursor.d.ts +94 -0
  336. package/compiled/src/step/parsing/record_field_cursor.d.ts.map +1 -0
  337. package/compiled/src/step/parsing/record_field_cursor.js +189 -0
  338. package/compiled/src/step/parsing/step_deserialization_functions.d.ts +29 -0
  339. package/compiled/src/step/parsing/step_deserialization_functions.d.ts.map +1 -1
  340. package/compiled/src/step/parsing/step_deserialization_functions.js +45 -0
  341. package/compiled/src/step/parsing/step_deserialization_functions.test.js +59 -1
  342. package/compiled/src/step/parsing/step_parser.d.ts +66 -1
  343. package/compiled/src/step/parsing/step_parser.d.ts.map +1 -1
  344. package/compiled/src/step/parsing/step_parser.js +164 -10
  345. package/compiled/src/step/parsing/step_string_parser.js +8 -8
  346. package/compiled/src/step/parsing/streaming_index_builder.d.ts +141 -0
  347. package/compiled/src/step/parsing/streaming_index_builder.d.ts.map +1 -0
  348. package/compiled/src/step/parsing/streaming_index_builder.js +280 -0
  349. package/compiled/src/step/parsing/streaming_index_builder.test.d.ts +2 -0
  350. package/compiled/src/step/parsing/streaming_index_builder.test.d.ts.map +1 -0
  351. package/compiled/src/step/parsing/streaming_index_builder.test.js +107 -0
  352. package/compiled/src/step/parsing/streaming_index_builder_async.test.d.ts +2 -0
  353. package/compiled/src/step/parsing/streaming_index_builder_async.test.d.ts.map +1 -0
  354. package/compiled/src/step/parsing/streaming_index_builder_async.test.js +109 -0
  355. package/compiled/src/step/parsing/streaming_record_dispatcher.d.ts +71 -0
  356. package/compiled/src/step/parsing/streaming_record_dispatcher.d.ts.map +1 -0
  357. package/compiled/src/step/parsing/streaming_record_dispatcher.js +88 -0
  358. package/compiled/src/step/parsing/streaming_record_dispatcher.test.d.ts +2 -0
  359. package/compiled/src/step/parsing/streaming_record_dispatcher.test.d.ts.map +1 -0
  360. package/compiled/src/step/parsing/streaming_record_dispatcher.test.js +66 -0
  361. package/compiled/src/step/parsing/uint32_sink.d.ts +72 -0
  362. package/compiled/src/step/parsing/uint32_sink.d.ts.map +1 -0
  363. package/compiled/src/step/parsing/uint32_sink.js +180 -0
  364. package/compiled/src/step/parsing/uint32_sink.test.d.ts +2 -0
  365. package/compiled/src/step/parsing/uint32_sink.test.d.ts.map +1 -0
  366. package/compiled/src/step/parsing/uint32_sink.test.js +199 -0
  367. package/compiled/src/step/step_buffer_provider.d.ts +48 -3
  368. package/compiled/src/step/step_buffer_provider.d.ts.map +1 -1
  369. package/compiled/src/step/step_buffer_provider.js +60 -11
  370. package/compiled/src/step/step_buffer_provider.test.js +14 -0
  371. package/compiled/src/step/step_entity_base.d.ts +65 -3
  372. package/compiled/src/step/step_entity_base.d.ts.map +1 -1
  373. package/compiled/src/step/step_entity_base.js +135 -3
  374. package/compiled/src/step/step_model_base.d.ts +221 -8
  375. package/compiled/src/step/step_model_base.d.ts.map +1 -1
  376. package/compiled/src/step/step_model_base.js +542 -7
  377. package/compiled/src/stream/index.d.ts +34 -0
  378. package/compiled/src/stream/index.d.ts.map +1 -0
  379. package/compiled/src/stream/index.js +32 -0
  380. package/compiled/src/version/version.js +1 -1
  381. package/compiled/tsconfig.tsbuildinfo +1 -1
  382. package/package.json +16 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ifc_grid_placement.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ifc_grid_placement.test.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_grid_placement.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,261 @@
1
+ import fs from "fs";
2
+ import { beforeAll, describe, expect, test } from "@jest/globals";
3
+ import { IfcGeometryExtraction } from "./ifc_geometry_extraction.js";
4
+ import { ParseResult } from "../step/parsing/step_parser.js";
5
+ import IfcStepParser from "./ifc_step_parser.js";
6
+ import ParsingBuffer from "../parsing/parsing_buffer.js";
7
+ import { ConwayGeometry } from "../../dependencies/conway-geom/index.js";
8
+ import { ExtractResult } from "../core/shared_constants.js";
9
+ import { StepBufferNotResidentError } from "../step/step_buffer_provider.js";
10
+ import { IfcGrid } from "./ifc4_gen/index.js";
11
+ import Logger, { LogLevel } from "../logging/logger.js";
12
+ /* Express IDs in data/grid_placement.ifc — see that file for the geometry
13
+ * each of them describes and where the expectations below come from. */
14
+ const PLACEMENT_A = 201;
15
+ const PLACEMENT_B = 301;
16
+ const PLACEMENT_C = 501;
17
+ const PLACEMENT_D = 601;
18
+ const PLACEMENT_E = 701;
19
+ const CIRCULAR_AXIS = 410;
20
+ /* Where the two supported placements land in world space, derived in the
21
+ * comments beside each product in the fixture. */
22
+ const A_WORLD_X = 8;
23
+ const A_WORLD_Y = 17;
24
+ const A_WORLD_Z = 9;
25
+ const B_WORLD_X = 4;
26
+ const B_WORLD_Y = 25;
27
+ const B_WORLD_Z = 5;
28
+ const D_WORLD_X = 8;
29
+ const D_WORLD_Y = 17;
30
+ const D_WORLD_Z = 10;
31
+ const E_WORLD_X = 10;
32
+ const E_WORLD_Y = 20;
33
+ const E_WORLD_Z = 5;
34
+ /* Column-major offsets into a 4x4 transform's values. */
35
+ const X_AXIS = 0;
36
+ const TRANSLATION = 12;
37
+ let extraction;
38
+ let extractResult;
39
+ /**
40
+ * Parse data/grid_placement.ifc and extract its geometry.
41
+ *
42
+ * @param mutateModel Optional hook run on the parsed model before extraction,
43
+ * for the windowed-source tests that need a specific read to throw.
44
+ * @return {Promise<ExtractResult>} The result of the extraction.
45
+ */
46
+ async function extractGridModel(mutateModel) {
47
+ const parser = IfcStepParser.Instance;
48
+ const input = new ParsingBuffer(fs.readFileSync("data/grid_placement.ifc"));
49
+ if (parser.parseHeader(input)[1] !== ParseResult.COMPLETE) {
50
+ return ExtractResult.INCOMPLETE;
51
+ }
52
+ const conwayGeometry = new ConwayGeometry();
53
+ if (!await conwayGeometry.initialize()) {
54
+ return ExtractResult.INCOMPLETE;
55
+ }
56
+ const [, model] = parser.parseDataToModel(input);
57
+ if (model === void 0) {
58
+ return ExtractResult.INCOMPLETE;
59
+ }
60
+ mutateModel?.(model);
61
+ extraction = new IfcGeometryExtraction(conwayGeometry, model);
62
+ return extraction.extractIFCGeometryData()[0];
63
+ }
64
+ /**
65
+ * The scene transform registered for an object placement.
66
+ *
67
+ * @param expressID The express ID of the placement.
68
+ * @return {IfcSceneTransform | undefined} Its transform, or undefined when
69
+ * the extraction registered none for it.
70
+ */
71
+ function placementTransform(expressID) {
72
+ const placement = extraction.model.getElementByExpressID(expressID);
73
+ expect(placement).toBeDefined();
74
+ return extraction.scene.getTransform(placement.localID);
75
+ }
76
+ /**
77
+ * Find a buffered warning by the start of its message.
78
+ *
79
+ * @param prefix The leading text of the message to look for.
80
+ * @return {LogEntry | undefined} The matching entry.
81
+ */
82
+ function warningStartingWith(prefix) {
83
+ return Logger.getLogs().find((entry) => entry.level === "warning" && entry.message.startsWith(prefix));
84
+ }
85
+ beforeAll(async () => {
86
+ Logger.clearLogs();
87
+ // The unsupported-axis product warns by design here, and the echo would be
88
+ // noise in the test console. The buffer these tests read is filled
89
+ // regardless of the console threshold.
90
+ const threshold = Logger.getLogLevel();
91
+ Logger.setLogLevel(LogLevel.OFF);
92
+ try {
93
+ extractResult = await extractGridModel();
94
+ }
95
+ finally {
96
+ Logger.setLogLevel(threshold);
97
+ }
98
+ });
99
+ describe("IfcGridPlacement extraction", () => {
100
+ test("the model extracts", () => {
101
+ expect(extractResult).toBe(ExtractResult.COMPLETE);
102
+ });
103
+ test("a grid placement composes onto the grid's own placement", () => {
104
+ const transform = placementTransform(PLACEMENT_A);
105
+ expect(transform).toBeDefined();
106
+ const values = transform.absoluteTransform;
107
+ // Grid intersection (-3,2,4) carried through the grid's placement — a
108
+ // quarter turn about +Z, then (10,20,5). Landing at the origin is the
109
+ // defect this covers, and landing at (7,22,9) would mean the grid's
110
+ // rotation had been added rather than composed.
111
+ expect(values[TRANSLATION]).toBeCloseTo(A_WORLD_X);
112
+ expect(values[TRANSLATION + 1]).toBeCloseTo(A_WORLD_Y);
113
+ expect(values[TRANSLATION + 2]).toBeCloseTo(A_WORLD_Z);
114
+ // No PlacementRefDirection, so the x axis is the first axis' tangent
115
+ // (+X in the grid), which the grid's quarter turn takes to world +Y.
116
+ expect(values[X_AXIS]).toBeCloseTo(0);
117
+ expect(values[X_AXIS + 1]).toBeCloseTo(1);
118
+ expect(values[X_AXIS + 2]).toBeCloseTo(0);
119
+ });
120
+ test("two offsets and an explicit reference direction", () => {
121
+ const transform = placementTransform(PLACEMENT_B);
122
+ expect(transform).toBeDefined();
123
+ const values = transform.absoluteTransform;
124
+ // Grid intersection (5,6), with no third offset, so z stays on the grid.
125
+ expect(values[TRANSLATION]).toBeCloseTo(B_WORLD_X);
126
+ expect(values[TRANSLATION + 1]).toBeCloseTo(B_WORLD_Y);
127
+ expect(values[TRANSLATION + 2]).toBeCloseTo(B_WORLD_Z);
128
+ // PlacementRefDirection is +Y in the grid, which the quarter turn takes
129
+ // to world -X.
130
+ expect(values[X_AXIS]).toBeCloseTo(-1);
131
+ expect(values[X_AXIS + 1]).toBeCloseTo(0);
132
+ expect(values[X_AXIS + 2]).toBeCloseTo(0);
133
+ });
134
+ test("a local placement measured from a grid placement composes onto it", () => {
135
+ const transform = placementTransform(PLACEMENT_D);
136
+ expect(transform).toBeDefined();
137
+ const values = transform.absoluteTransform;
138
+ // 1m up from product A's grid placement, which is where an
139
+ // IfcLocalPlacement whose PlacementRelTo is an IfcGridPlacement lands
140
+ // once that placement registers a transform to be relative to.
141
+ expect(values[TRANSLATION]).toBeCloseTo(D_WORLD_X);
142
+ expect(values[TRANSLATION + 1]).toBeCloseTo(D_WORLD_Y);
143
+ expect(values[TRANSLATION + 2]).toBeCloseTo(D_WORLD_Z);
144
+ });
145
+ test("an axis curve that is not a line warns rather than dropping silently", () => {
146
+ expect(placementTransform(PLACEMENT_C)).toBeUndefined();
147
+ const warning = warningStartingWith("IfcGridPlacement: unsupported grid axis curve");
148
+ expect(warning).toBeDefined();
149
+ expect(warning.message).toContain("IFCCIRCLE");
150
+ expect(warning.expressIDs.has(String(CIRCULAR_AXIS))).toBe(true);
151
+ });
152
+ test("a reference direction along the placement z falls back to the tangent", () => {
153
+ const transform = placementTransform(PLACEMENT_E);
154
+ expect(transform).toBeDefined();
155
+ const values = transform.absoluteTransform;
156
+ // The failure this covers is not a wrong number but a poisoned one:
157
+ // unguarded, normalising a reference direction that lies along the forced
158
+ // z gives NaN, and addTransform carries it into every descendant. Asserted
159
+ // over the whole matrix rather than the x axis alone, since that is how it
160
+ // spreads.
161
+ expect(Array.from(values).every((value) => Number.isFinite(value)))
162
+ .toBe(true);
163
+ // Axes A and 1 with no offsets meet at the grid origin.
164
+ expect(values[TRANSLATION]).toBeCloseTo(E_WORLD_X);
165
+ expect(values[TRANSLATION + 1]).toBeCloseTo(E_WORLD_Y);
166
+ expect(values[TRANSLATION + 2]).toBeCloseTo(E_WORLD_Z);
167
+ // The schema default the guard falls back to: the first axis' tangent,
168
+ // +X in the grid, taken to world +Y by the grid's quarter turn - so the
169
+ // same x axis product A gets from having no reference direction at all.
170
+ expect(values[X_AXIS]).toBeCloseTo(0);
171
+ expect(values[X_AXIS + 1]).toBeCloseTo(1);
172
+ expect(values[X_AXIS + 2]).toBeCloseTo(0);
173
+ const warning = warningStartingWith("IfcGridPlacement: the placement reference direction is parallel");
174
+ expect(warning).toBeDefined();
175
+ expect(warning.expressIDs.has(String(PLACEMENT_E))).toBe(true);
176
+ });
177
+ test("nothing in this model is left unimplemented", () => {
178
+ // The arm this covers used to be a no-op; a supported placement that
179
+ // still warns would mean the implementation had not been reached.
180
+ expect(warningStartingWith("IfcGridPlacement: unimplemented")).toBeUndefined();
181
+ });
182
+ });
183
+ describe("IfcGridPlacement on a windowed source", () => {
184
+ test("non-resident grid records degrade to the intersection, not a dropped product", async () => {
185
+ // A store-backed model pages a product's forward-reference closure,
186
+ // which reaches the axes but never the IfcGrid that back-references
187
+ // them — so the gridByAxis scan is the one read here that can throw
188
+ // StepBufferNotResidentError. Simulate exactly that read failing.
189
+ const threshold = Logger.getLogLevel();
190
+ Logger.setLogLevel(LogLevel.OFF);
191
+ let result;
192
+ try {
193
+ result = await extractGridModel((model) => {
194
+ const originalTypes = model.types.bind(model);
195
+ model.types = ((...requested) => {
196
+ if (requested.length === 1 && requested[0] === IfcGrid) {
197
+ throw new StepBufferNotResidentError(0, 0);
198
+ }
199
+ return originalTypes(...requested);
200
+ });
201
+ });
202
+ }
203
+ finally {
204
+ Logger.setLogLevel(threshold);
205
+ }
206
+ // The product survives - dropping it entirely would be strictly worse
207
+ // than the pre-implementation rendered-at-origin state.
208
+ expect(result).toBe(ExtractResult.COMPLETE);
209
+ const transform = placementTransform(PLACEMENT_A);
210
+ expect(transform).toBeDefined();
211
+ const values = transform.absoluteTransform;
212
+ // The grid-frame intersection with its offsets, WITHOUT the grid's
213
+ // own placement composed on: the degraded-but-warned state.
214
+ expect(values[TRANSLATION]).toBeCloseTo(-3);
215
+ expect(values[TRANSLATION + 1]).toBeCloseTo(2);
216
+ expect(values[TRANSLATION + 2]).toBeCloseTo(4);
217
+ const warning = warningStartingWith("IfcGridPlacement: grid records are not resident");
218
+ expect(warning).toBeDefined();
219
+ expect(warning.expressIDs.has(String(PLACEMENT_A))).toBe(true);
220
+ });
221
+ test("a partially resident grid placement chain warns about the partial frame", async () => {
222
+ // The other residency miss on this path, and the reason the guard is
223
+ // two regions rather than one: the grid IS found, and the read that
224
+ // fails is its own placement chain. extractPlacement pushes a
225
+ // transform per level as it unwinds, so a miss part way up leaves
226
+ // ancestors applied - which the scan-failure message would describe
227
+ // wrongly. Patched on the prototype because the failing read is a
228
+ // generated accessor, not a model call the mutator hook can reach.
229
+ const placementProperty = "ObjectPlacement";
230
+ const threshold = Logger.getLogLevel();
231
+ // The buffer is file-wide, and the preceding test deliberately fires
232
+ // the scan-failure warning this one asserts the ABSENCE of.
233
+ Logger.clearLogs();
234
+ Logger.setLogLevel(LogLevel.OFF);
235
+ Object.defineProperty(IfcGrid.prototype, placementProperty, {
236
+ configurable: true,
237
+ /** @return {never} Always throws, as a non-resident read would. */
238
+ get() {
239
+ throw new StepBufferNotResidentError(0, 0);
240
+ },
241
+ });
242
+ let result;
243
+ try {
244
+ result = await extractGridModel();
245
+ }
246
+ finally {
247
+ delete IfcGrid.prototype[placementProperty];
248
+ Logger.setLogLevel(threshold);
249
+ }
250
+ expect(result).toBe(ExtractResult.COMPLETE);
251
+ // Still placed, and still not dropped.
252
+ expect(placementTransform(PLACEMENT_A)).toBeDefined();
253
+ const warning = warningStartingWith("IfcGridPlacement: the grid's own placement chain is not fully " +
254
+ "resident");
255
+ expect(warning).toBeDefined();
256
+ expect(warning.expressIDs.has(String(PLACEMENT_A))).toBe(true);
257
+ // The scan succeeded, so the message that says the grid records were
258
+ // never reached must NOT be the one reported.
259
+ expect(warningStartingWith("IfcGridPlacement: grid records are not resident")).toBeUndefined();
260
+ });
261
+ });
@@ -30,6 +30,18 @@ export declare class IfcModelGeometry implements ModelGeometry {
30
30
  /**
31
31
  * Add a mesh to the geometry cache.
32
32
  *
33
+ * Freezes the native float vertex mirror at add time (one
34
+ * GetVertexData call): consumers (the compat GetGeometry surface)
35
+ * read float vertices whose frame must match the scene transforms,
36
+ * which are authored against the geometry AS CREATED. Later native
37
+ * mutations that keep the vertex count (normalize's centering)
38
+ * deliberately do NOT refresh the mirror, so every extraction path —
39
+ * whole-model walk, per-product demand pump, parse-time preview —
40
+ * serves the same creation-frame floats. Without this, paths that
41
+ * first read vertices only after a centering mutation serve
42
+ * per-geometry-shifted vertices against unshifted transforms
43
+ * (Share's demand-path "scatter").
44
+ *
33
45
  * @param mesh
34
46
  */
35
47
  add(mesh: CanonicalMesh): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ifc_model_geometry.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_model_geometry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqB,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAoB,8BAA8B,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAmB,MAAM,4BAA4B,CAAA;AAG/E;;GAEG;AACH,qBAAa,gBAAiB,YAAW,aAAa;aAUvB,KAAK,EAAE,YAAY;aAAkB,MAAM,EAAE,OAAO;IARjF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D;;;;;OAKG;gBAC0B,KAAK,EAAE,YAAY,EAAkB,MAAM,GAAE,OAAe;IAEzF;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAgBhC;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,aAAa;IAK9B;;;;OAIG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM;IAe7B;;;;;OAKG;IACI,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/D;;;;OAIG;IACI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAI3D;;;;OAIG;IACI,qBAAqB,IAAI,MAAM;IAqBtC;;;;OAIG;IACK,IAAI,IAAK,gBAAgB,CAAE;QACjC,8BAA8B;QAC9B,MAAM;QACN,iBAAiB;QACjB,MAAM;KAAC,GAAG;QACV,8BAA8B;QAC9B,MAAM;QACN,SAAS;QACT,SAAS;KAAC,CAAC;CAqDd"}
1
+ {"version":3,"file":"ifc_model_geometry.d.ts","sourceRoot":"","sources":["../../../src/ifc/ifc_model_geometry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqB,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAoB,8BAA8B,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAmB,MAAM,4BAA4B,CAAA;AAG/E;;GAEG;AACH,qBAAa,gBAAiB,YAAW,aAAa;aAUvB,KAAK,EAAE,YAAY;aAAkB,MAAM,EAAE,OAAO;IARjF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D;;;;;OAKG;gBAC0B,KAAK,EAAE,YAAY,EAAkB,MAAM,GAAE,OAAe;IAEzF;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAgBhC;;;;;;;;;;;;;;;;OAgBG;IACI,GAAG,CAAC,IAAI,EAAE,aAAa;IAS9B;;;;OAIG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM;IAe7B;;;;;OAKG;IACI,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/D;;;;OAIG;IACI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAI3D;;;;OAIG;IACI,qBAAqB,IAAI,MAAM;IAqBtC;;;;OAIG;IACK,IAAI,IAAK,gBAAgB,CAAE;QACjC,8BAA8B;QAC9B,MAAM;QACN,iBAAiB;QACjB,MAAM;KAAC,GAAG;QACV,8BAA8B;QAC9B,MAAM;QACN,SAAS;QACT,SAAS;KAAC,CAAC;CAqDd"}
@@ -40,9 +40,24 @@ export class IfcModelGeometry {
40
40
  /**
41
41
  * Add a mesh to the geometry cache.
42
42
  *
43
+ * Freezes the native float vertex mirror at add time (one
44
+ * GetVertexData call): consumers (the compat GetGeometry surface)
45
+ * read float vertices whose frame must match the scene transforms,
46
+ * which are authored against the geometry AS CREATED. Later native
47
+ * mutations that keep the vertex count (normalize's centering)
48
+ * deliberately do NOT refresh the mirror, so every extraction path —
49
+ * whole-model walk, per-product demand pump, parse-time preview —
50
+ * serves the same creation-frame floats. Without this, paths that
51
+ * first read vertices only after a centering mutation serve
52
+ * per-geometry-shifted vertices against unshifted transforms
53
+ * (Share's demand-path "scatter").
54
+ *
43
55
  * @param mesh
44
56
  */
45
57
  add(mesh) {
58
+ if (mesh.type === CanonicalMeshType.BUFFER_GEOMETRY) {
59
+ mesh.geometry.GetVertexData();
60
+ }
46
61
  this.meshes_.set(mesh.localID, mesh);
47
62
  }
48
63
  /**