@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.
- package/README.md +36 -22
- package/compiled/Dist/ConwayGeomWasmNode.js +0 -0
- package/compiled/Dist/ConwayGeomWasmNodeMT.js +0 -0
- package/compiled/Dist/ConwayGeomWasmWeb.js +0 -0
- package/compiled/Dist/ConwayGeomWasmWebMT.js +1 -1
- package/compiled/Dist/ConwayGeomWasmWebMT.wasm +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNode.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmNodeMT.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWeb.js +0 -0
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.js +1 -1
- package/compiled/dependencies/conway-geom/Dist/ConwayGeomWasmWebMT.wasm +0 -0
- package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts +19 -0
- package/compiled/dependencies/conway-geom/interface/conway_geometry.d.ts.map +1 -1
- package/compiled/dependencies/conway-geom/interface/conway_geometry.js +17 -0
- package/compiled/dependencies/conway-geom/interface/parameters/surface_object.d.ts +6 -0
- package/compiled/dependencies/conway-geom/interface/parameters/surface_object.d.ts.map +1 -1
- package/compiled/examples/browser-bundled.cjs +1569 -51
- package/compiled/examples/cli-bundled.cjs +2790 -436
- package/compiled/examples/cli-step-bundled.cjs +1904 -229
- package/compiled/examples/validator-bundled.cjs +1569 -51
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_curve.gen.d.ts +2 -2
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_curve.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_curve.gen.js +2 -2
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_surface.gen.d.ts +3 -3
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_surface.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/b_spline_surface.gen.js +3 -3
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/composite_curve.gen.d.ts +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/composite_curve.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/composite_curve.gen.js +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_2d.gen.d.ts +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_2d.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_2d.gen.js +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_3d.gen.d.ts +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_3d.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_curve_3d.gen.js +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_surface.gen.d.ts +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_surface.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/offset_surface.gen.js +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/presentation_style_assignment.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/presentation_style_assignment.gen.js +2 -2
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/schema_ap214.gen.js +11 -11
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/shape_aspect.gen.d.ts +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/shape_aspect.gen.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/AP214E3_2010_gen/shape_aspect.gen.js +1 -1
- package/compiled/src/AP214E3_2010/ap214_command_line_main.js +7 -3
- package/compiled/src/AP214E3_2010/ap214_geometry_extraction.d.ts +181 -7
- package/compiled/src/AP214E3_2010/ap214_geometry_extraction.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/ap214_geometry_extraction.js +906 -137
- package/compiled/src/AP214E3_2010/ap214_geometry_extraction.test.js +10 -2
- package/compiled/src/AP214E3_2010/ap214_logical_attribute.test.d.ts +2 -0
- package/compiled/src/AP214E3_2010/ap214_logical_attribute.test.d.ts.map +1 -0
- package/compiled/src/AP214E3_2010/ap214_logical_attribute.test.js +114 -0
- package/compiled/src/AP214E3_2010/ap214_model_geometry.d.ts +6 -0
- package/compiled/src/AP214E3_2010/ap214_model_geometry.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/ap214_model_geometry.js +9 -0
- package/compiled/src/AP214E3_2010/ap214_pcurve_basis_surfaces.test.d.ts +2 -0
- package/compiled/src/AP214E3_2010/ap214_pcurve_basis_surfaces.test.d.ts.map +1 -0
- package/compiled/src/AP214E3_2010/ap214_pcurve_basis_surfaces.test.js +233 -0
- package/compiled/src/AP214E3_2010/ap214_sphere_vertex_loop.test.d.ts +2 -0
- package/compiled/src/AP214E3_2010/ap214_sphere_vertex_loop.test.d.ts.map +1 -0
- package/compiled/src/AP214E3_2010/ap214_sphere_vertex_loop.test.js +147 -0
- package/compiled/src/AP214E3_2010/ap214_step_model.d.ts +2 -1
- package/compiled/src/AP214E3_2010/ap214_step_model.d.ts.map +1 -1
- package/compiled/src/AP214E3_2010/ap214_step_model.js +1 -1
- package/compiled/src/AP214E3_2010/ap214_typed_select_enum.test.d.ts +2 -0
- package/compiled/src/AP214E3_2010/ap214_typed_select_enum.test.d.ts.map +1 -0
- package/compiled/src/AP214E3_2010/ap214_typed_select_enum.test.js +65 -0
- package/compiled/src/AP214E3_2010/ap214_unit_scale.test.d.ts +2 -0
- package/compiled/src/AP214E3_2010/ap214_unit_scale.test.d.ts.map +1 -0
- package/compiled/src/AP214E3_2010/ap214_unit_scale.test.js +111 -0
- package/compiled/src/compat/web-ifc/ap214_streamed_open.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/ap214_streamed_open.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/ap214_streamed_open.test.js +190 -0
- package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/coordination_export_order.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/coordination_export_order.test.js +110 -0
- package/compiled/src/compat/web-ifc/coordination_f64.d.ts +165 -0
- package/compiled/src/compat/web-ifc/coordination_f64.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/coordination_f64.js +286 -0
- package/compiled/src/compat/web-ifc/coordination_f64.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/coordination_f64.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/coordination_f64.test.js +225 -0
- package/compiled/src/compat/web-ifc/ifc_api.d.ts +154 -0
- package/compiled/src/compat/web-ifc/ifc_api.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.js +211 -3
- package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.js +288 -0
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts +39 -0
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.d.ts +30 -0
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.js +83 -0
- package/compiled/src/compat/web-ifc/ifc_api_preview_channel.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/ifc_api_preview_channel.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/ifc_api_preview_channel.test.js +383 -0
- package/compiled/src/compat/web-ifc/ifc_api_preview_coordination.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/ifc_api_preview_coordination.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/ifc_api_preview_coordination.test.js +124 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts +132 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.js +488 -92
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts +268 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +996 -149
- package/compiled/src/compat/web-ifc/ifc_api_streamed_open.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/ifc_api_streamed_open.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/ifc_api_streamed_open.test.js +129 -0
- package/compiled/src/compat/web-ifc/spatial_imposter.d.ts +134 -0
- package/compiled/src/compat/web-ifc/spatial_imposter.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/spatial_imposter.js +933 -0
- package/compiled/src/compat/web-ifc/spatial_imposter.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/spatial_imposter.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/spatial_imposter.test.js +467 -0
- package/compiled/src/compat/web-ifc/store_preview_channel.d.ts +187 -0
- package/compiled/src/compat/web-ifc/store_preview_channel.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/store_preview_channel.js +524 -0
- package/compiled/src/compat/web-ifc/store_preview_channel.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/store_preview_channel.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/store_preview_channel.test.js +234 -0
- package/compiled/src/compat/web-ifc/streamed_preview_channel.d.ts +306 -0
- package/compiled/src/compat/web-ifc/streamed_preview_channel.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/streamed_preview_channel.js +580 -0
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.js +22 -0
- package/compiled/src/core/composed_model_skeleton.d.ts +63 -0
- package/compiled/src/core/composed_model_skeleton.d.ts.map +1 -0
- package/compiled/src/core/composed_model_skeleton.js +66 -0
- package/compiled/src/core/composed_model_skeleton.test.d.ts +2 -0
- package/compiled/src/core/composed_model_skeleton.test.d.ts.map +1 -0
- package/compiled/src/core/composed_model_skeleton.test.js +69 -0
- package/compiled/src/core/demand_geometry_queue.d.ts +147 -0
- package/compiled/src/core/demand_geometry_queue.d.ts.map +1 -0
- package/compiled/src/core/demand_geometry_queue.js +223 -0
- package/compiled/src/core/demand_geometry_queue.test.d.ts +2 -0
- package/compiled/src/core/demand_geometry_queue.test.d.ts.map +1 -0
- package/compiled/src/core/demand_geometry_queue.test.js +133 -0
- package/compiled/src/core/demand_residency_pump.d.ts +93 -0
- package/compiled/src/core/demand_residency_pump.d.ts.map +1 -0
- package/compiled/src/core/demand_residency_pump.js +120 -0
- package/compiled/src/core/demand_residency_pump.test.d.ts +2 -0
- package/compiled/src/core/demand_residency_pump.test.d.ts.map +1 -0
- package/compiled/src/core/demand_residency_pump.test.js +148 -0
- package/compiled/src/core/geometry_tile_bindings.d.ts +110 -0
- package/compiled/src/core/geometry_tile_bindings.d.ts.map +1 -0
- package/compiled/src/core/geometry_tile_bindings.js +76 -0
- package/compiled/src/core/geometry_tile_bindings.test.d.ts +2 -0
- package/compiled/src/core/geometry_tile_bindings.test.d.ts.map +1 -0
- package/compiled/src/core/geometry_tile_bindings.test.js +211 -0
- package/compiled/src/core/geometry_tile_pool.d.ts +99 -0
- package/compiled/src/core/geometry_tile_pool.d.ts.map +1 -0
- package/compiled/src/core/geometry_tile_pool.js +104 -0
- package/compiled/src/core/geometry_tile_pool.test.d.ts +2 -0
- package/compiled/src/core/geometry_tile_pool.test.d.ts.map +1 -0
- package/compiled/src/core/geometry_tile_pool.test.js +180 -0
- package/compiled/src/core/mem/chunked_pool.d.ts +116 -0
- package/compiled/src/core/mem/chunked_pool.d.ts.map +1 -0
- package/compiled/src/core/mem/chunked_pool.js +149 -0
- package/compiled/src/core/mem/chunked_pool.test.d.ts +2 -0
- package/compiled/src/core/mem/chunked_pool.test.d.ts.map +1 -0
- package/compiled/src/core/mem/chunked_pool.test.js +63 -0
- package/compiled/src/core/mem/shared_asset_pool.d.ts +82 -0
- package/compiled/src/core/mem/shared_asset_pool.d.ts.map +1 -0
- package/compiled/src/core/mem/shared_asset_pool.js +113 -0
- package/compiled/src/core/mem/shared_asset_pool.test.d.ts +2 -0
- package/compiled/src/core/mem/shared_asset_pool.test.d.ts.map +1 -0
- package/compiled/src/core/mem/shared_asset_pool.test.js +49 -0
- package/compiled/src/core/model_registry.d.ts +87 -0
- package/compiled/src/core/model_registry.d.ts.map +1 -0
- package/compiled/src/core/model_registry.js +101 -0
- package/compiled/src/core/model_registry.test.d.ts +2 -0
- package/compiled/src/core/model_registry.test.d.ts.map +1 -0
- package/compiled/src/core/model_registry.test.js +60 -0
- package/compiled/src/core/model_uri.d.ts +57 -0
- package/compiled/src/core/model_uri.d.ts.map +1 -0
- package/compiled/src/core/model_uri.js +101 -0
- package/compiled/src/core/model_uri.test.d.ts +2 -0
- package/compiled/src/core/model_uri.test.d.ts.map +1 -0
- package/compiled/src/core/model_uri.test.js +49 -0
- package/compiled/src/core/progress.d.ts +16 -2
- package/compiled/src/core/progress.d.ts.map +1 -1
- package/compiled/src/core/progress.js +31 -5
- package/compiled/src/core/progress.test.js +11 -2
- package/compiled/src/core/progress_log.d.ts +1 -0
- package/compiled/src/core/progress_log.d.ts.map +1 -1
- package/compiled/src/core/progress_log.js +7 -2
- package/compiled/src/core/progress_log.test.js +21 -0
- package/compiled/src/core/shared_byte_budget.d.ts +60 -0
- package/compiled/src/core/shared_byte_budget.d.ts.map +1 -0
- package/compiled/src/core/shared_byte_budget.js +85 -0
- package/compiled/src/core/shared_byte_budget.test.d.ts +2 -0
- package/compiled/src/core/shared_byte_budget.test.d.ts.map +1 -0
- package/compiled/src/core/shared_byte_budget.test.js +55 -0
- package/compiled/src/core/wasm_heap.d.ts +208 -0
- package/compiled/src/core/wasm_heap.d.ts.map +1 -0
- package/compiled/src/core/wasm_heap.js +417 -0
- package/compiled/src/core/wasm_heap.test.d.ts +2 -0
- package/compiled/src/core/wasm_heap.test.d.ts.map +1 -0
- package/compiled/src/core/wasm_heap.test.js +546 -0
- package/compiled/src/demand/index.d.ts +23 -0
- package/compiled/src/demand/index.d.ts.map +1 -0
- package/compiled/src/demand/index.js +22 -0
- package/compiled/src/ifc/ifc4_gen/IfcLogical.gen.d.ts +1 -1
- package/compiled/src/ifc/ifc4_gen/IfcLogical.gen.d.ts.map +1 -1
- package/compiled/src/ifc/ifc4_gen/IfcLogical.gen.js +1 -1
- package/compiled/src/ifc/ifc4_gen/IfcPresentationStyleAssignment.gen.d.ts.map +1 -1
- package/compiled/src/ifc/ifc4_gen/IfcPresentationStyleAssignment.gen.js +2 -2
- package/compiled/src/ifc/ifc4_gen/IfcRelInterferesElements.gen.d.ts +1 -1
- package/compiled/src/ifc/ifc4_gen/IfcRelInterferesElements.gen.d.ts.map +1 -1
- package/compiled/src/ifc/ifc4_gen/IfcRelInterferesElements.gen.js +1 -1
- package/compiled/src/ifc/ifc4_gen/schema_ifc.gen.js +2 -2
- package/compiled/src/ifc/ifc_demand_extraction.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_demand_extraction.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_demand_extraction.test.js +251 -0
- package/compiled/src/ifc/ifc_geometry_extraction.d.ts +367 -6
- package/compiled/src/ifc/ifc_geometry_extraction.d.ts.map +1 -1
- package/compiled/src/ifc/ifc_geometry_extraction.js +1322 -389
- package/compiled/src/ifc/ifc_grid_placement.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_grid_placement.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_grid_placement.test.js +261 -0
- package/compiled/src/ifc/ifc_model_geometry.d.ts +12 -0
- package/compiled/src/ifc/ifc_model_geometry.d.ts.map +1 -1
- package/compiled/src/ifc/ifc_model_geometry.js +15 -0
- package/compiled/src/ifc/ifc_regression_batch_main.js +210 -12
- package/compiled/src/ifc/ifc_spatial_skeleton.d.ts +145 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.js +266 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_spatial_skeleton.test.js +199 -0
- package/compiled/src/ifc/ifc_step_model.d.ts +6 -2
- package/compiled/src/ifc/ifc_step_model.d.ts.map +1 -1
- package/compiled/src/ifc/ifc_step_model.js +6 -4
- package/compiled/src/ifc/ifc_step_parser.d.ts +58 -0
- package/compiled/src/ifc/ifc_step_parser.d.ts.map +1 -1
- package/compiled/src/ifc/ifc_step_parser.js +64 -0
- package/compiled/src/ifc/ifc_stream_model.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_stream_model.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_stream_model.test.js +70 -0
- package/compiled/src/ifc/ifc_stream_open.d.ts +131 -0
- package/compiled/src/ifc/ifc_stream_open.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_stream_open.js +116 -0
- package/compiled/src/ifc/ifc_stream_open.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_stream_open.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_stream_open.test.js +230 -0
- package/compiled/src/ifc/ifc_tile_extractor.d.ts +84 -0
- package/compiled/src/ifc/ifc_tile_extractor.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_tile_extractor.js +134 -0
- package/compiled/src/ifc/ifc_tile_extractor.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_tile_extractor.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_tile_extractor.test.js +118 -0
- package/compiled/src/ifc/ifc_typed_select_enum.test.d.ts +2 -0
- package/compiled/src/ifc/ifc_typed_select_enum.test.d.ts.map +1 -0
- package/compiled/src/ifc/ifc_typed_select_enum.test.js +60 -0
- package/compiled/src/index.d.ts +21 -1
- package/compiled/src/index.d.ts.map +1 -1
- package/compiled/src/index.js +28 -1
- package/compiled/src/logging/logger.d.ts +16 -2
- package/compiled/src/logging/logger.d.ts.map +1 -1
- package/compiled/src/logging/logger.js +34 -7
- package/compiled/src/logging/logger.test.js +30 -0
- package/compiled/src/mem/index.d.ts +17 -0
- package/compiled/src/mem/index.d.ts.map +1 -0
- package/compiled/src/mem/index.js +16 -0
- package/compiled/src/namespace_surface.test.d.ts +2 -0
- package/compiled/src/namespace_surface.test.d.ts.map +1 -0
- package/compiled/src/namespace_surface.test.js +43 -0
- package/compiled/src/parsing/parsing_buffer.d.ts +23 -0
- package/compiled/src/parsing/parsing_buffer.d.ts.map +1 -1
- package/compiled/src/parsing/parsing_buffer.js +31 -0
- package/compiled/src/scripts/model_report_displacement.test.d.ts +2 -0
- package/compiled/src/scripts/model_report_displacement.test.d.ts.map +1 -0
- package/compiled/src/scripts/model_report_displacement.test.js +104 -0
- package/compiled/src/scripts/render_glb_paths.test.d.ts +2 -0
- package/compiled/src/scripts/render_glb_paths.test.d.ts.map +1 -0
- package/compiled/src/scripts/render_glb_paths.test.js +115 -0
- package/compiled/src/step/indexing/step_type_indexer.d.ts +20 -0
- package/compiled/src/step/indexing/step_type_indexer.d.ts.map +1 -1
- package/compiled/src/step/indexing/step_type_indexer.js +67 -0
- package/compiled/src/step/parsing/byte_source.d.ts +153 -0
- package/compiled/src/step/parsing/byte_source.d.ts.map +1 -0
- package/compiled/src/step/parsing/byte_source.js +106 -0
- package/compiled/src/step/parsing/byte_source.test.d.ts +2 -0
- package/compiled/src/step/parsing/byte_source.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/byte_source.test.js +47 -0
- package/compiled/src/step/parsing/byte_source_node.d.ts +41 -0
- package/compiled/src/step/parsing/byte_source_node.d.ts.map +1 -0
- package/compiled/src/step/parsing/byte_source_node.js +54 -0
- package/compiled/src/step/parsing/columnar_index.d.ts +103 -0
- package/compiled/src/step/parsing/columnar_index.d.ts.map +1 -0
- package/compiled/src/step/parsing/columnar_index.js +224 -0
- package/compiled/src/step/parsing/columnar_index.test.d.ts +2 -0
- package/compiled/src/step/parsing/columnar_index.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/columnar_index.test.js +155 -0
- package/compiled/src/step/parsing/cross_reference_registry.d.ts +95 -0
- package/compiled/src/step/parsing/cross_reference_registry.d.ts.map +1 -0
- package/compiled/src/step/parsing/cross_reference_registry.js +91 -0
- package/compiled/src/step/parsing/cross_reference_registry.test.d.ts +2 -0
- package/compiled/src/step/parsing/cross_reference_registry.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/cross_reference_registry.test.js +66 -0
- package/compiled/src/step/parsing/decode_utf8.d.ts +15 -0
- package/compiled/src/step/parsing/decode_utf8.d.ts.map +1 -1
- package/compiled/src/step/parsing/decode_utf8.js +28 -0
- package/compiled/src/step/parsing/express_ref_scan.d.ts +20 -0
- package/compiled/src/step/parsing/express_ref_scan.d.ts.map +1 -0
- package/compiled/src/step/parsing/express_ref_scan.js +91 -0
- package/compiled/src/step/parsing/express_ref_scan.test.d.ts +2 -0
- package/compiled/src/step/parsing/express_ref_scan.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/express_ref_scan.test.js +28 -0
- package/compiled/src/step/parsing/index_sidecar.d.ts +81 -0
- package/compiled/src/step/parsing/index_sidecar.d.ts.map +1 -0
- package/compiled/src/step/parsing/index_sidecar.js +283 -0
- package/compiled/src/step/parsing/index_sidecar.test.d.ts +2 -0
- package/compiled/src/step/parsing/index_sidecar.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/index_sidecar.test.js +122 -0
- package/compiled/src/step/parsing/inf_recovery_index.test.d.ts +2 -0
- package/compiled/src/step/parsing/inf_recovery_index.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/inf_recovery_index.test.js +108 -0
- package/compiled/src/step/parsing/prefix_type_index.d.ts +124 -0
- package/compiled/src/step/parsing/prefix_type_index.d.ts.map +1 -0
- package/compiled/src/step/parsing/prefix_type_index.js +207 -0
- package/compiled/src/step/parsing/prefix_type_index.test.d.ts +2 -0
- package/compiled/src/step/parsing/prefix_type_index.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/prefix_type_index.test.js +298 -0
- package/compiled/src/step/parsing/range_byte_source.d.ts +69 -0
- package/compiled/src/step/parsing/range_byte_source.d.ts.map +1 -0
- package/compiled/src/step/parsing/range_byte_source.js +78 -0
- package/compiled/src/step/parsing/range_byte_source.test.d.ts +2 -0
- package/compiled/src/step/parsing/range_byte_source.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/range_byte_source.test.js +70 -0
- package/compiled/src/step/parsing/record_event.d.ts +23 -0
- package/compiled/src/step/parsing/record_event.d.ts.map +1 -0
- package/compiled/src/step/parsing/record_event.js +1 -0
- package/compiled/src/step/parsing/record_field_cursor.d.ts +94 -0
- package/compiled/src/step/parsing/record_field_cursor.d.ts.map +1 -0
- package/compiled/src/step/parsing/record_field_cursor.js +189 -0
- package/compiled/src/step/parsing/step_deserialization_functions.d.ts +29 -0
- package/compiled/src/step/parsing/step_deserialization_functions.d.ts.map +1 -1
- package/compiled/src/step/parsing/step_deserialization_functions.js +45 -0
- package/compiled/src/step/parsing/step_deserialization_functions.test.js +59 -1
- package/compiled/src/step/parsing/step_parser.d.ts +66 -1
- package/compiled/src/step/parsing/step_parser.d.ts.map +1 -1
- package/compiled/src/step/parsing/step_parser.js +164 -10
- package/compiled/src/step/parsing/step_string_parser.js +8 -8
- package/compiled/src/step/parsing/streaming_index_builder.d.ts +141 -0
- package/compiled/src/step/parsing/streaming_index_builder.d.ts.map +1 -0
- package/compiled/src/step/parsing/streaming_index_builder.js +280 -0
- package/compiled/src/step/parsing/streaming_index_builder.test.d.ts +2 -0
- package/compiled/src/step/parsing/streaming_index_builder.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/streaming_index_builder.test.js +107 -0
- package/compiled/src/step/parsing/streaming_index_builder_async.test.d.ts +2 -0
- package/compiled/src/step/parsing/streaming_index_builder_async.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/streaming_index_builder_async.test.js +109 -0
- package/compiled/src/step/parsing/streaming_record_dispatcher.d.ts +71 -0
- package/compiled/src/step/parsing/streaming_record_dispatcher.d.ts.map +1 -0
- package/compiled/src/step/parsing/streaming_record_dispatcher.js +88 -0
- package/compiled/src/step/parsing/streaming_record_dispatcher.test.d.ts +2 -0
- package/compiled/src/step/parsing/streaming_record_dispatcher.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/streaming_record_dispatcher.test.js +66 -0
- package/compiled/src/step/parsing/uint32_sink.d.ts +72 -0
- package/compiled/src/step/parsing/uint32_sink.d.ts.map +1 -0
- package/compiled/src/step/parsing/uint32_sink.js +180 -0
- package/compiled/src/step/parsing/uint32_sink.test.d.ts +2 -0
- package/compiled/src/step/parsing/uint32_sink.test.d.ts.map +1 -0
- package/compiled/src/step/parsing/uint32_sink.test.js +199 -0
- package/compiled/src/step/step_buffer_provider.d.ts +48 -3
- package/compiled/src/step/step_buffer_provider.d.ts.map +1 -1
- package/compiled/src/step/step_buffer_provider.js +60 -11
- package/compiled/src/step/step_buffer_provider.test.js +14 -0
- package/compiled/src/step/step_entity_base.d.ts +65 -3
- package/compiled/src/step/step_entity_base.d.ts.map +1 -1
- package/compiled/src/step/step_entity_base.js +135 -3
- package/compiled/src/step/step_model_base.d.ts +221 -8
- package/compiled/src/step/step_model_base.d.ts.map +1 -1
- package/compiled/src/step/step_model_base.js +542 -7
- package/compiled/src/stream/index.d.ts +34 -0
- package/compiled/src/stream/index.d.ts.map +1 -0
- package/compiled/src/stream/index.js +32 -0
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -1
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import StepVtableBuilder from "./step_vtable_builder.js";
|
|
2
|
+
import { stepExtractString } from "./step_deserialization_functions.js";
|
|
3
|
+
/** ASCII '#', which introduces an express reference. */
|
|
4
|
+
const HASH = 35;
|
|
5
|
+
/** ASCII '0' and '9', bounding the digits of a reference. */
|
|
6
|
+
const DIGIT_0 = 48;
|
|
7
|
+
const DIGIT_9 = 57;
|
|
8
|
+
/** Everything at or below this code point is STEP whitespace. */
|
|
9
|
+
const LAST_WHITESPACE = 32;
|
|
10
|
+
/** Base of the decimal express IDs. */
|
|
11
|
+
const DECIMAL = 10;
|
|
12
|
+
/**
|
|
13
|
+
* Reads individual attributes out of a record's raw bytes, without a model and
|
|
14
|
+
* without materialising an entity (M2, issue #393).
|
|
15
|
+
*
|
|
16
|
+
* This is what makes a parse-path consumer viable at all: the streaming
|
|
17
|
+
* parse's record event hands over the record's attribute list as a window
|
|
18
|
+
* range, and a consumer that wants two strings out of it should not have to
|
|
19
|
+
* wait for the model, page the record back in, and construct an entity to get
|
|
20
|
+
* them. Field positions come from the production tokenizer
|
|
21
|
+
* ({@link StepParser.extractDataEntry}), so a record this reads and a record
|
|
22
|
+
* the model reads agree by construction — including on the awkward cases
|
|
23
|
+
* (quoted commas, nested parens, escaped quotes) a hand-rolled splitter gets
|
|
24
|
+
* wrong.
|
|
25
|
+
*
|
|
26
|
+
* One instance is reused across records: {@link open} clears and refills a
|
|
27
|
+
* single vtable buffer, so a consumer running over millions of records
|
|
28
|
+
* allocates nothing per record. Attribute indices are the same ones the
|
|
29
|
+
* generated accessors use (`extractString( 2, … )` for `IfcRoot.Name`, and so
|
|
30
|
+
* on), read against the *record's own* attribute list — inherited attributes
|
|
31
|
+
* included, since STEP serialises the flattened list.
|
|
32
|
+
*/
|
|
33
|
+
export class RecordFieldCursor {
|
|
34
|
+
/**
|
|
35
|
+
* @param parser_ The schema's parser — used only for its record tokenizer.
|
|
36
|
+
*/
|
|
37
|
+
constructor(parser_) {
|
|
38
|
+
this.parser_ = parser_;
|
|
39
|
+
this.vtable_ = new StepVtableBuilder();
|
|
40
|
+
this.buffer_ = void 0;
|
|
41
|
+
this.indexMark_ = 0;
|
|
42
|
+
this.fieldCount_ = 0;
|
|
43
|
+
this.endCursor_ = 0;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Point this at one record's attribute list.
|
|
47
|
+
*
|
|
48
|
+
* @param buffer The buffer holding the record (the live parse window, for an
|
|
49
|
+
* event consumer — so everything read here must be read before returning).
|
|
50
|
+
* @param byteOffset Offset of the record's first attribute byte.
|
|
51
|
+
* @param byteLength Length of the attribute list in bytes.
|
|
52
|
+
* @return {number} The number of top-level attributes found; 0 if the record
|
|
53
|
+
* could not be tokenized (a truncated or malformed record — the caller
|
|
54
|
+
* should skip it rather than guess).
|
|
55
|
+
*/
|
|
56
|
+
open(buffer, byteOffset, byteLength) {
|
|
57
|
+
this.vtable_.clear();
|
|
58
|
+
const end = byteOffset + byteLength;
|
|
59
|
+
const extracted = this.parser_.extractDataEntry(buffer, byteOffset, end, this.vtable_);
|
|
60
|
+
if (extracted === void 0) {
|
|
61
|
+
this.buffer_ = void 0;
|
|
62
|
+
this.fieldCount_ = 0;
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
this.buffer_ = buffer;
|
|
66
|
+
this.indexMark_ = extracted[0];
|
|
67
|
+
this.fieldCount_ = extracted[1];
|
|
68
|
+
this.endCursor_ = extracted[2];
|
|
69
|
+
return this.fieldCount_;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The byte range of one attribute, as `[start, end)`.
|
|
73
|
+
*
|
|
74
|
+
* @param index The attribute index.
|
|
75
|
+
* @return {[number, number] | undefined} The range, or undefined when the
|
|
76
|
+
* record has no such attribute.
|
|
77
|
+
*/
|
|
78
|
+
range(index) {
|
|
79
|
+
if (this.buffer_ === void 0 || index < 0 || index >= this.fieldCount_) {
|
|
80
|
+
return void 0;
|
|
81
|
+
}
|
|
82
|
+
const table = this.vtable_.buffer;
|
|
83
|
+
const start = table[this.indexMark_ + index];
|
|
84
|
+
// Each entry marks an attribute's first byte, so an attribute runs to the
|
|
85
|
+
// next entry's separator; the last runs to the record's end cursor.
|
|
86
|
+
const end = index + 1 < this.fieldCount_ ?
|
|
87
|
+
table[this.indexMark_ + index + 1] - 1 :
|
|
88
|
+
this.endCursor_;
|
|
89
|
+
return [start, end];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Read a string attribute.
|
|
93
|
+
*
|
|
94
|
+
* @param index The attribute index.
|
|
95
|
+
* @return {string | undefined} The decoded string, or undefined when the
|
|
96
|
+
* attribute is absent, `$`, or not a string.
|
|
97
|
+
*/
|
|
98
|
+
string(index) {
|
|
99
|
+
const range = this.range(index);
|
|
100
|
+
if (range === void 0) {
|
|
101
|
+
return void 0;
|
|
102
|
+
}
|
|
103
|
+
return stepExtractString(this.buffer_, range[0], range[1]);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Read a single express reference attribute (`#123`).
|
|
107
|
+
*
|
|
108
|
+
* @param index The attribute index.
|
|
109
|
+
* @return {number | undefined} The express ID, or undefined when the
|
|
110
|
+
* attribute is absent or is not a reference.
|
|
111
|
+
*/
|
|
112
|
+
reference(index) {
|
|
113
|
+
const range = this.range(index);
|
|
114
|
+
if (range === void 0) {
|
|
115
|
+
return void 0;
|
|
116
|
+
}
|
|
117
|
+
const buffer = this.buffer_;
|
|
118
|
+
let cursor = range[0];
|
|
119
|
+
while (cursor < range[1] && buffer[cursor] !== HASH) {
|
|
120
|
+
// Only whitespace may precede the '#'; anything else means this
|
|
121
|
+
// attribute is not a reference (`$`, an inline value, a typed value).
|
|
122
|
+
if (buffer[cursor] > LAST_WHITESPACE) {
|
|
123
|
+
return void 0;
|
|
124
|
+
}
|
|
125
|
+
++cursor;
|
|
126
|
+
}
|
|
127
|
+
return this.readReferenceAt(cursor, range[1]);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Visit every express reference in an attribute, which is how a reference
|
|
131
|
+
* list (`(#1,#2,#3)`) is read — the enclosing parens and separators need no
|
|
132
|
+
* interpretation, since a reference is the only thing a `#` can start.
|
|
133
|
+
*
|
|
134
|
+
* @param index The attribute index.
|
|
135
|
+
* @param visit Called with each express ID, in order.
|
|
136
|
+
*/
|
|
137
|
+
forEachReference(index, visit) {
|
|
138
|
+
const range = this.range(index);
|
|
139
|
+
if (range === void 0) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const buffer = this.buffer_;
|
|
143
|
+
const end = range[1];
|
|
144
|
+
for (let cursor = range[0]; cursor < end; ++cursor) {
|
|
145
|
+
if (buffer[cursor] !== HASH) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const expressID = this.readReferenceAt(cursor, end);
|
|
149
|
+
if (expressID === void 0) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
visit(expressID);
|
|
153
|
+
// Skip the digits just consumed; the loop's ++ steps off the last one.
|
|
154
|
+
while (cursor + 1 < end && this.isDigit(buffer[cursor + 1])) {
|
|
155
|
+
++cursor;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Read the digits of a reference whose `#` sits at `cursor`.
|
|
161
|
+
*
|
|
162
|
+
* @param cursor Offset of the `#`.
|
|
163
|
+
* @param end Exclusive end of the attribute.
|
|
164
|
+
* @return {number | undefined} The express ID, or undefined if `cursor` is
|
|
165
|
+
* not a `#` followed by at least one digit.
|
|
166
|
+
*/
|
|
167
|
+
readReferenceAt(cursor, end) {
|
|
168
|
+
const buffer = this.buffer_;
|
|
169
|
+
if (cursor >= end || buffer[cursor] !== HASH) {
|
|
170
|
+
return void 0;
|
|
171
|
+
}
|
|
172
|
+
let at = cursor + 1;
|
|
173
|
+
let value = 0;
|
|
174
|
+
let digits = 0;
|
|
175
|
+
while (at < end && this.isDigit(buffer[at])) {
|
|
176
|
+
value = value * DECIMAL + (buffer[at] - DIGIT_0);
|
|
177
|
+
++at;
|
|
178
|
+
++digits;
|
|
179
|
+
}
|
|
180
|
+
return digits === 0 ? void 0 : value;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* @param code A byte.
|
|
184
|
+
* @return {boolean} Whether it is an ASCII digit.
|
|
185
|
+
*/
|
|
186
|
+
isDigit(code) {
|
|
187
|
+
return code >= DIGIT_0 && code <= DIGIT_9;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -118,6 +118,35 @@ export declare function stepExtractArrayToken(buffer: Uint8Array, cursor: number
|
|
|
118
118
|
* @return {IterableIterator} Lazy iterator to extract value.
|
|
119
119
|
*/
|
|
120
120
|
export declare function stepExtractArray(buffer: Uint8Array, cursor: number, endCursor: number): IterableIterator<number>;
|
|
121
|
+
/**
|
|
122
|
+
* Step past a `TYPENAME(` wrapper to the value inside it, when the value at
|
|
123
|
+
* the cursor is written in its typed form and the type name matches.
|
|
124
|
+
*
|
|
125
|
+
* A select member may be written either bare or typed — `.NULL.` or
|
|
126
|
+
* `NULL_STYLE(.NULL.)` — and inside a SELECT the typed form is how a reader
|
|
127
|
+
* tells which member it is, so exporters legitimately use it. Entity-valued
|
|
128
|
+
* members already handle both, because the parser indexes an inline
|
|
129
|
+
* `TYPENAME(...)` entity and `extractBufferReference` resolves it by address.
|
|
130
|
+
* A member whose type is an enum has no entity to index, so its deserializer
|
|
131
|
+
* is a bare parse starting at the cursor, and the wrapper makes it fail.
|
|
132
|
+
* That cost 274 of the public regression baseline's error rows — every
|
|
133
|
+
* `PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)))` in the corpus threw
|
|
134
|
+
* and lost its styled item. See bldrs-ai/conway#489.
|
|
135
|
+
*
|
|
136
|
+
* The type name is verified rather than skipped past, so this accepts only
|
|
137
|
+
* the value's own typed form: a mismatched wrapper stays a type error
|
|
138
|
+
* instead of being silently read as the member it isn't.
|
|
139
|
+
*
|
|
140
|
+
* @param buffer The buffer to read from.
|
|
141
|
+
* @param cursor The position the value starts at.
|
|
142
|
+
* @param endCursor The last position accessible for this read in the buffer.
|
|
143
|
+
* @param typeName The expected STEP type name of the wrapper, upper case —
|
|
144
|
+
* StepEntityIdentifierParser matches `[A-Z][A-Z0-9_]*`, so a lower-case
|
|
145
|
+
* spelling is not an identifier here and never reaches the comparison.
|
|
146
|
+
* @return {number} The position just inside the wrapper's parenthesis, or
|
|
147
|
+
* `cursor` unchanged when the value is not this type's typed form.
|
|
148
|
+
*/
|
|
149
|
+
export declare function stepEnterTypedValue(buffer: Uint8Array, cursor: number, endCursor: number, typeName: string): number;
|
|
121
150
|
/**
|
|
122
151
|
* Extracts an inline element and returns its cursor, or none if it can't be found.
|
|
123
152
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step_deserialization_functions.d.ts","sourceRoot":"","sources":["../../../../src/step/parsing/step_deserialization_functions.ts"],"names":[],"mappings":"AAkCA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAGD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAE,CAAC,EAAI,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC,GAAI,CAAC,CAE9E;AAGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAE,CAAC,EAAI,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAAI,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAE,CAAC,EAAI,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAAI,MAAM,CAEvE;AAGD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAUvC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,GAAG,SAAS,CAM1C;AAGD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,OAAO,GAAG,IAAI,GAAG,SAAS,CAwBlD;AAGD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,OAAO,GAAG,SAAS,CAgB3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACrB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAK,MAAM,CA2E/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,CA0B9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,CA0C9B;AAED;;;;;;;;;GASG;AACH,wBAAiB,gBAAgB,CAC7B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,gBAAgB,CAAE,MAAM,CAAE,CAkGlD;AAGD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,GAAG,SAAS,CA4C1C;AAID;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAK,MAAM,GAAG,SAAS,CAsC3C;AAED,QAAA,MAAM,eAAe,8JAAkC,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B,QAAA,MAAM,iBAAiB,iGAAoC,CAAA;AAE3D,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B,QAAA,MAAM,iBAAiB,4FAAiC,CAAA;AAExD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"step_deserialization_functions.d.ts","sourceRoot":"","sources":["../../../../src/step/parsing/step_deserialization_functions.ts"],"names":[],"mappings":"AAkCA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAGD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAE,CAAC,EAAI,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC,GAAI,CAAC,CAE9E;AAGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAE,CAAC,EAAI,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAAI,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAE,CAAC,EAAI,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAAI,MAAM,CAEvE;AAGD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAUvC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,GAAG,SAAS,CAM1C;AAGD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,OAAO,GAAG,IAAI,GAAG,SAAS,CAwBlD;AAGD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,OAAO,GAAG,SAAS,CAgB3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACrB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAK,MAAM,CA2E/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,CA0B9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,CA0C9B;AAED;;;;;;;;;GASG;AACH,wBAAiB,gBAAgB,CAC7B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,gBAAgB,CAAE,MAAM,CAAE,CAkGlD;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAI,MAAM,CAqB7B;AAGD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAI,MAAM,GAAG,SAAS,CA4C1C;AAID;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAK,MAAM,GAAG,SAAS,CAsC3C;AAED,QAAA,MAAM,eAAe,8JAAkC,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B,QAAA,MAAM,iBAAiB,iGAAoC,CAAA;AAE3D,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B,QAAA,MAAM,iBAAiB,4FAAiC,CAAA;AAExD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -367,6 +367,51 @@ export function* stepExtractArray(buffer, cursor, endCursor) {
|
|
|
367
367
|
throw new Error("Unterminated array");
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
|
+
/**
|
|
371
|
+
* Step past a `TYPENAME(` wrapper to the value inside it, when the value at
|
|
372
|
+
* the cursor is written in its typed form and the type name matches.
|
|
373
|
+
*
|
|
374
|
+
* A select member may be written either bare or typed — `.NULL.` or
|
|
375
|
+
* `NULL_STYLE(.NULL.)` — and inside a SELECT the typed form is how a reader
|
|
376
|
+
* tells which member it is, so exporters legitimately use it. Entity-valued
|
|
377
|
+
* members already handle both, because the parser indexes an inline
|
|
378
|
+
* `TYPENAME(...)` entity and `extractBufferReference` resolves it by address.
|
|
379
|
+
* A member whose type is an enum has no entity to index, so its deserializer
|
|
380
|
+
* is a bare parse starting at the cursor, and the wrapper makes it fail.
|
|
381
|
+
* That cost 274 of the public regression baseline's error rows — every
|
|
382
|
+
* `PRESENTATION_STYLE_ASSIGNMENT((NULL_STYLE(.NULL.)))` in the corpus threw
|
|
383
|
+
* and lost its styled item. See bldrs-ai/conway#489.
|
|
384
|
+
*
|
|
385
|
+
* The type name is verified rather than skipped past, so this accepts only
|
|
386
|
+
* the value's own typed form: a mismatched wrapper stays a type error
|
|
387
|
+
* instead of being silently read as the member it isn't.
|
|
388
|
+
*
|
|
389
|
+
* @param buffer The buffer to read from.
|
|
390
|
+
* @param cursor The position the value starts at.
|
|
391
|
+
* @param endCursor The last position accessible for this read in the buffer.
|
|
392
|
+
* @param typeName The expected STEP type name of the wrapper, upper case —
|
|
393
|
+
* StepEntityIdentifierParser matches `[A-Z][A-Z0-9_]*`, so a lower-case
|
|
394
|
+
* spelling is not an identifier here and never reaches the comparison.
|
|
395
|
+
* @return {number} The position just inside the wrapper's parenthesis, or
|
|
396
|
+
* `cursor` unchanged when the value is not this type's typed form.
|
|
397
|
+
*/
|
|
398
|
+
export function stepEnterTypedValue(buffer, cursor, endCursor, typeName) {
|
|
399
|
+
const identifierEnd = identifierParser.match(buffer, cursor, endCursor);
|
|
400
|
+
if (identifierEnd === void 0 || (identifierEnd - cursor) !== typeName.length) {
|
|
401
|
+
return cursor;
|
|
402
|
+
}
|
|
403
|
+
for (let where = 0; where < typeName.length; ++where) {
|
|
404
|
+
if (buffer[cursor + where] !== typeName.charCodeAt(where)) {
|
|
405
|
+
return cursor;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
// Delegate the rest to the inline-element reader rather than repeating its
|
|
409
|
+
// identifier/whitespace/comment/paren walk. Sharing it is not just less
|
|
410
|
+
// code: entity-valued select members reach their value through that exact
|
|
411
|
+
// function, so a divergence here would mean the two kinds of member in the
|
|
412
|
+
// SAME select disagreed about where a typed value begins.
|
|
413
|
+
return stepExtractInlineElemement(buffer, cursor, endCursor) ?? cursor;
|
|
414
|
+
}
|
|
370
415
|
/**
|
|
371
416
|
* Extracts an inline element and returns its cursor, or none if it can't be found.
|
|
372
417
|
*
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// unreachable after spill + release, where before it was retained via
|
|
8
8
|
// Context[parsingBufferReusable] → ParsingBuffer.buffer).
|
|
9
9
|
import { describe, expect, test } from "@jest/globals";
|
|
10
|
-
import { releaseScratchParsingBuffer, stepExtractNumber, } from "./step_deserialization_functions.js";
|
|
10
|
+
import { releaseScratchParsingBuffer, stepEnterTypedValue, stepExtractNumber, } from "./step_deserialization_functions.js";
|
|
11
11
|
const REAL_VALUE = 42.5;
|
|
12
12
|
const INT_VALUE = 7;
|
|
13
13
|
describe("releaseScratchParsingBuffer", () => {
|
|
@@ -25,3 +25,61 @@ describe("releaseScratchParsingBuffer", () => {
|
|
|
25
25
|
expect(stepExtractNumber(bytes, 0, bytes.length)).toBe(REAL_VALUE);
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
|
+
describe("stepEnterTypedValue", () => {
|
|
29
|
+
/**
|
|
30
|
+
* Encode and enter, returning both the cursor and what it points at, so a
|
|
31
|
+
* failed expectation says which byte the function landed on.
|
|
32
|
+
*
|
|
33
|
+
* @param text The STEP text to read from position 0.
|
|
34
|
+
* @param typeName The expected wrapper type name.
|
|
35
|
+
* @return {[number, string]} The returned cursor and the character there.
|
|
36
|
+
*/
|
|
37
|
+
const enter = (text, typeName) => {
|
|
38
|
+
const bytes = new TextEncoder().encode(text);
|
|
39
|
+
const cursor = stepEnterTypedValue(bytes, 0, bytes.length, typeName);
|
|
40
|
+
return [cursor, text[cursor] ?? ""];
|
|
41
|
+
};
|
|
42
|
+
test("enters a matching wrapper, landing on the value", () => {
|
|
43
|
+
// The case from bldrs-ai/conway#489: 274 occurrences in the public
|
|
44
|
+
// regression baseline, every one of them throwing and losing its
|
|
45
|
+
// styled item because the enum parse started on the 'N'.
|
|
46
|
+
// Positions derived rather than written out, so the expectation says
|
|
47
|
+
// "just past the wrapper" rather than asserting an opaque index.
|
|
48
|
+
expect(enter("NULL_STYLE(.NULL.)", "NULL_STYLE"))
|
|
49
|
+
.toEqual(["NULL_STYLE(".length, "."]);
|
|
50
|
+
expect(enter("IFCNULLSTYLE(.NULL.)", "IFCNULLSTYLE"))
|
|
51
|
+
.toEqual(["IFCNULLSTYLE(".length, "."]);
|
|
52
|
+
});
|
|
53
|
+
test("leaves a bare value alone", () => {
|
|
54
|
+
// Both forms are legal for a select member, so entering must be a no-op
|
|
55
|
+
// on the bare one rather than a precondition.
|
|
56
|
+
expect(enter(".NULL.", "NULL_STYLE")).toEqual([0, "."]);
|
|
57
|
+
});
|
|
58
|
+
test("does not treat a lower-case spelling as the type name", () => {
|
|
59
|
+
// Not a policy choice here: StepEntityIdentifierParser matches
|
|
60
|
+
// `[A-Z][A-Z0-9_]*`, so a lower-case wrapper is not an identifier at all
|
|
61
|
+
// and the value is left to be read bare (where it then fails as the
|
|
62
|
+
// malformed input it is).
|
|
63
|
+
expect(enter("null_style(.NULL.)", "NULL_STYLE")).toEqual([0, "n"]);
|
|
64
|
+
});
|
|
65
|
+
test("skips whitespace and comments before and after the paren", () => {
|
|
66
|
+
const spaced = "NULL_STYLE /* c */ ( /* d */ .NULL.)";
|
|
67
|
+
expect(enter(spaced, "NULL_STYLE")).toEqual([spaced.indexOf(".NULL."), "."]);
|
|
68
|
+
});
|
|
69
|
+
test("refuses a wrapper that is not this type", () => {
|
|
70
|
+
// The point of verifying the name rather than skipping any identifier:
|
|
71
|
+
// a mismatched wrapper stays a type error instead of being silently
|
|
72
|
+
// read as the member it is not.
|
|
73
|
+
expect(enter("SOME_OTHER_TYPE(.NULL.)", "NULL_STYLE")).toEqual([0, "S"]);
|
|
74
|
+
// A prefix must not match either - length is checked before the bytes.
|
|
75
|
+
expect(enter("NULL_STYLE_EXTRA(.NULL.)", "NULL_STYLE")).toEqual([0, "N"]);
|
|
76
|
+
});
|
|
77
|
+
test("refuses an identifier with no parenthesis", () => {
|
|
78
|
+
expect(enter("NULL_STYLE", "NULL_STYLE")).toEqual([0, "N"]);
|
|
79
|
+
expect(enter("NULL_STYLE.NULL.", "NULL_STYLE")).toEqual([0, "N"]);
|
|
80
|
+
});
|
|
81
|
+
test("refuses a reference or a bare number", () => {
|
|
82
|
+
expect(enter("#4085", "NULL_STYLE")).toEqual([0, "#"]);
|
|
83
|
+
expect(enter("0.7", "NULL_STYLE")).toEqual([0, "0"]);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import TypeIndex from "../../indexing/type_index.js";
|
|
2
2
|
import ParsingBuffer from "../../parsing/parsing_buffer.js";
|
|
3
|
+
import { RecordEventHandler } from "./record_event.js";
|
|
3
4
|
import StepVtableBuilder, { IndexMark } from "./step_vtable_builder.js";
|
|
4
5
|
export interface StepIndexEntryBase<TypeIDType> {
|
|
5
6
|
address: number;
|
|
@@ -18,6 +19,27 @@ export interface StepIndexEntry<TypeIDType> extends StepIndexEntryBase<TypeIDTyp
|
|
|
18
19
|
export interface StepIndex<TypeIDType> {
|
|
19
20
|
elements: StepIndexEntry<TypeIDType>[];
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* A consumer of completed top-level index entries, used to divert the parse
|
|
24
|
+
* away from accumulating the object-form `StepIndex` — the columnar sink
|
|
25
|
+
* (columnar_index.ts) encodes each entry into typed-array columns and drops
|
|
26
|
+
* the object unless it carries children. When a sink is supplied, the parse's
|
|
27
|
+
* returned `StepIndex.elements` stays empty; the sink holds the index.
|
|
28
|
+
*/
|
|
29
|
+
export interface StepIndexSink<TypeIDType> {
|
|
30
|
+
/**
|
|
31
|
+
* Consume one completed top-level entry (its inlineEntities / multiMapping,
|
|
32
|
+
* when present, are attached and complete).
|
|
33
|
+
*
|
|
34
|
+
* @param entry The completed entry. Ownership transfers to the sink.
|
|
35
|
+
*/
|
|
36
|
+
pushTopLevel(entry: StepIndexEntry<TypeIDType>): void;
|
|
37
|
+
/**
|
|
38
|
+
* Rewind to empty — the streaming builder's grow-and-restart re-parses from
|
|
39
|
+
* the start and re-pushes every record.
|
|
40
|
+
*/
|
|
41
|
+
reset(): void;
|
|
42
|
+
}
|
|
21
43
|
export interface Argument {
|
|
22
44
|
type: number;
|
|
23
45
|
value: any;
|
|
@@ -46,7 +68,7 @@ export type LineArgumentParseResult<TypeIDType> = [
|
|
|
46
68
|
* parser stays decoupled from the higher-level progress event contract in
|
|
47
69
|
* core/progress.ts (ProgressTracker maps this into a ProgressEvent).
|
|
48
70
|
*/
|
|
49
|
-
export type ParseProgressCallback = (cursorBytes: number) =>
|
|
71
|
+
export type ParseProgressCallback = (cursorBytes: number) => unknown;
|
|
50
72
|
export interface StepHeader {
|
|
51
73
|
headers: Map<string, string>;
|
|
52
74
|
}
|
|
@@ -116,6 +138,49 @@ export default class StepParser<TypeIDType> extends StepHeaderParser {
|
|
|
116
138
|
* @return {BlockParseResult} The parsing result, including the index and result enum.
|
|
117
139
|
*/
|
|
118
140
|
parseDataBlock(input: ParsingBuffer, onProgress?: ParseProgressCallback): BlockParseResult<TypeIDType>;
|
|
141
|
+
/**
|
|
142
|
+
* Streaming driver over parseDataBlockIncremental: identical parse (same
|
|
143
|
+
* generator body) but invokes `onRecordBoundary` at every top-level record
|
|
144
|
+
* boundary so a caller feeding the parser from a moving window can slide
|
|
145
|
+
* that window forward while the rewind stack is empty. See
|
|
146
|
+
* streaming_index_builder.ts for the coordinator that owns the window.
|
|
147
|
+
*
|
|
148
|
+
* @param input The input parsing buffer, positioned at the data section.
|
|
149
|
+
* @param onRecordBoundary Called at each top-level record boundary with the
|
|
150
|
+
* buffer; the callback may rebase the buffer's window in place. Must be
|
|
151
|
+
* synchronous on this driver — a returned Promise is a caller bug.
|
|
152
|
+
* @param onRecordIndexed Called as each top-level record is indexed, with
|
|
153
|
+
* its localID, expressID, typeID (0 for external-mapping records) and the
|
|
154
|
+
* record's bytes as an un-materialised `(buffer, byteOffset, byteLength)`
|
|
155
|
+
* window view — the seam for incremental semantic consumers (type index,
|
|
156
|
+
* roots registry, names skeleton). See {@link RecordEventHandler} for the
|
|
157
|
+
* window-lifetime rule. Must be synchronous and cheap; expensive work
|
|
158
|
+
* belongs on a demand queue, not the parse path.
|
|
159
|
+
* @param onProgress Optional byte-cursor progress callback.
|
|
160
|
+
* @return {BlockParseResult} The parsing result, including the index and result enum.
|
|
161
|
+
*/
|
|
162
|
+
parseDataBlockStreamed(input: ParsingBuffer, onRecordBoundary: (input: ParsingBuffer) => void | Promise<void>, onRecordIndexed?: RecordEventHandler<TypeIDType>, onProgress?: ParseProgressCallback, sink?: StepIndexSink<TypeIDType>): BlockParseResult<TypeIDType>;
|
|
163
|
+
/**
|
|
164
|
+
* Cooperative variant of parseDataBlockStreamed: identical parse and
|
|
165
|
+
* window-slide behaviour (same generator body, same boundary callback),
|
|
166
|
+
* but periodically awaits a macrotask so the event loop can run —
|
|
167
|
+
* browsers repaint progress UI during a large streamed parse instead of
|
|
168
|
+
* flagging the tab as stalled. Issue #301 §2 for the streamed path.
|
|
169
|
+
*
|
|
170
|
+
* @param input The input parsing buffer, positioned at the data section.
|
|
171
|
+
* @param onRecordBoundary Called at each top-level record boundary with the
|
|
172
|
+
* buffer; the callback may rebase the buffer's window in place. May return
|
|
173
|
+
* a Promise when the slide itself is I/O (an async ByteSource); this
|
|
174
|
+
* driver awaits it before the next record is lexed.
|
|
175
|
+
* @param onRecordIndexed Called as each top-level record is indexed — see
|
|
176
|
+
* parseDataBlockStreamed.
|
|
177
|
+
* @param onProgress Optional byte-cursor progress callback.
|
|
178
|
+
* @param sink Optional index sink (columnar builds).
|
|
179
|
+
* @param yieldIntervalMs Minimum ms between event-loop yields.
|
|
180
|
+
* @return {Promise<BlockParseResult>} The parsing result, including the
|
|
181
|
+
* index and result enum.
|
|
182
|
+
*/
|
|
183
|
+
parseDataBlockStreamedAsync(input: ParsingBuffer, onRecordBoundary: (input: ParsingBuffer) => void | Promise<void>, onRecordIndexed?: RecordEventHandler<TypeIDType>, onProgress?: ParseProgressCallback, sink?: StepIndexSink<TypeIDType>, yieldIntervalMs?: number): Promise<BlockParseResult<TypeIDType>>;
|
|
119
184
|
/**
|
|
120
185
|
* Cooperative variant of parseDataBlock: identical parse (same generator
|
|
121
186
|
* body), but periodically awaits a macrotask so the event loop can run —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step_parser.d.ts","sourceRoot":"","sources":["../../../../src/step/parsing/step_parser.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,2BAA2B,CAAA;AAEjD,OAAO,aAAa,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"step_parser.d.ts","sourceRoot":"","sources":["../../../../src/step/parsing/step_parser.ts"],"names":[],"mappings":"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"}
|