@oasys/oecs 0.5.3 → 0.6.0
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/CHANGELOG.md +1399 -276
- package/README.md +327 -169
- package/dist/core/ecs/access_check.d.cts +31 -31
- package/dist/core/ecs/access_check.d.ts +31 -31
- package/dist/core/ecs/access_check.d.ts.map +1 -1
- package/dist/core/ecs/archetype.d.cts +273 -205
- package/dist/core/ecs/archetype.d.ts +273 -205
- package/dist/core/ecs/archetype.d.ts.map +1 -1
- package/dist/core/ecs/archetype_closure.d.cts +23 -0
- package/dist/core/ecs/archetype_closure.d.ts +23 -0
- package/dist/core/ecs/archetype_closure.d.ts.map +1 -0
- package/dist/core/ecs/archetype_graph.d.cts +34 -34
- package/dist/core/ecs/archetype_graph.d.ts +34 -34
- package/dist/core/ecs/archetype_graph.d.ts.map +1 -1
- package/dist/core/ecs/archetype_types.d.cts +55 -0
- package/dist/core/ecs/archetype_types.d.ts +55 -0
- package/dist/core/ecs/archetype_types.d.ts.map +1 -0
- package/dist/core/ecs/change_feed.d.cts +53 -0
- package/dist/core/ecs/change_feed.d.ts +53 -0
- package/dist/core/ecs/change_feed.d.ts.map +1 -0
- package/dist/core/ecs/changed_query.d.cts +36 -0
- package/dist/core/ecs/changed_query.d.ts +36 -0
- package/dist/core/ecs/changed_query.d.ts.map +1 -0
- package/dist/core/ecs/chunk_columns.d.cts +49 -0
- package/dist/core/ecs/chunk_columns.d.ts +49 -0
- package/dist/core/ecs/chunk_columns.d.ts.map +1 -0
- package/dist/core/ecs/command_log.d.cts +30 -30
- package/dist/core/ecs/command_log.d.ts +30 -30
- package/dist/core/ecs/command_log.d.ts.map +1 -1
- package/dist/core/ecs/component.d.cts +45 -44
- package/dist/core/ecs/component.d.ts +45 -44
- package/dist/core/ecs/component.d.ts.map +1 -1
- package/dist/core/ecs/component_registry.d.cts +53 -0
- package/dist/core/ecs/component_registry.d.ts +53 -0
- package/dist/core/ecs/component_registry.d.ts.map +1 -0
- package/dist/core/ecs/compute_backend.d.cts +18 -7
- package/dist/core/ecs/compute_backend.d.ts +18 -7
- package/dist/core/ecs/compute_backend.d.ts.map +1 -1
- package/dist/core/ecs/deferred_commands.d.cts +15 -14
- package/dist/core/ecs/deferred_commands.d.ts +15 -14
- package/dist/core/ecs/deferred_commands.d.ts.map +1 -1
- package/dist/core/ecs/dispatch_trace.d.cts +32 -31
- package/dist/core/ecs/dispatch_trace.d.ts +32 -31
- package/dist/core/ecs/dispatch_trace.d.ts.map +1 -1
- package/dist/core/ecs/ecs.d.cts +337 -276
- package/dist/core/ecs/ecs.d.ts +337 -276
- package/dist/core/ecs/ecs.d.ts.map +1 -1
- package/dist/core/ecs/ecs_memory.d.cts +134 -136
- package/dist/core/ecs/ecs_memory.d.ts +134 -136
- package/dist/core/ecs/ecs_memory.d.ts.map +1 -1
- package/dist/core/ecs/ecs_options.d.cts +89 -0
- package/dist/core/ecs/ecs_options.d.ts +89 -0
- package/dist/core/ecs/ecs_options.d.ts.map +1 -0
- package/dist/core/ecs/entity.d.cts +4 -4
- package/dist/core/ecs/entity.d.ts +4 -4
- package/dist/core/ecs/entity_allocator.d.cts +24 -22
- package/dist/core/ecs/entity_allocator.d.ts +24 -22
- package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
- package/dist/core/ecs/event.d.cts +37 -23
- package/dist/core/ecs/event.d.ts +37 -23
- package/dist/core/ecs/event.d.ts.map +1 -1
- package/dist/core/ecs/facades.d.cts +12 -126
- package/dist/core/ecs/facades.d.ts +12 -126
- package/dist/core/ecs/facades.d.ts.map +1 -1
- package/dist/core/ecs/frame_stepper.d.cts +12 -12
- package/dist/core/ecs/frame_stepper.d.ts +12 -12
- package/dist/core/ecs/frame_stepper.d.ts.map +1 -1
- package/dist/core/ecs/frame_trace.d.cts +34 -34
- package/dist/core/ecs/frame_trace.d.ts +34 -34
- package/dist/core/ecs/frame_trace.d.ts.map +1 -1
- package/dist/core/ecs/host_commands.d.cts +107 -89
- package/dist/core/ecs/host_commands.d.ts +107 -89
- package/dist/core/ecs/host_commands.d.ts.map +1 -1
- package/dist/core/ecs/index.d.cts +22 -12
- package/dist/core/ecs/index.d.ts +22 -12
- package/dist/core/ecs/index.d.ts.map +1 -1
- package/dist/core/ecs/observer.d.cts +41 -122
- package/dist/core/ecs/observer.d.ts +41 -122
- package/dist/core/ecs/observer.d.ts.map +1 -1
- package/dist/core/ecs/phase.d.cts +79 -0
- package/dist/core/ecs/phase.d.ts +79 -0
- package/dist/core/ecs/phase.d.ts.map +1 -0
- package/dist/core/ecs/plugin.d.cts +125 -0
- package/dist/core/ecs/plugin.d.ts +125 -0
- package/dist/core/ecs/plugin.d.ts.map +1 -0
- package/dist/core/ecs/plugin_slots.d.cts +26 -0
- package/dist/core/ecs/plugin_slots.d.ts +26 -0
- package/dist/core/ecs/plugin_slots.d.ts.map +1 -0
- package/dist/core/ecs/query.d.cts +219 -568
- package/dist/core/ecs/query.d.ts +219 -568
- package/dist/core/ecs/query.d.ts.map +1 -1
- package/dist/core/ecs/query_cache.d.cts +130 -0
- package/dist/core/ecs/query_cache.d.ts +130 -0
- package/dist/core/ecs/query_cache.d.ts.map +1 -0
- package/dist/core/ecs/query_registry.d.cts +47 -0
- package/dist/core/ecs/query_registry.d.ts +47 -0
- package/dist/core/ecs/query_registry.d.ts.map +1 -0
- package/dist/core/ecs/query_terms.d.cts +126 -0
- package/dist/core/ecs/query_terms.d.ts +126 -0
- package/dist/core/ecs/query_terms.d.ts.map +1 -0
- package/dist/core/ecs/ref.d.cts +129 -16
- package/dist/core/ecs/ref.d.ts +129 -16
- package/dist/core/ecs/ref.d.ts.map +1 -1
- package/dist/core/ecs/relation.d.cts +105 -186
- package/dist/core/ecs/relation.d.ts +105 -186
- package/dist/core/ecs/relation.d.ts.map +1 -1
- package/dist/core/ecs/resource.d.cts +14 -14
- package/dist/core/ecs/resource.d.ts +14 -14
- package/dist/core/ecs/resource_registry.d.cts +6 -6
- package/dist/core/ecs/resource_registry.d.ts +6 -6
- package/dist/core/ecs/resource_registry.d.ts.map +1 -1
- package/dist/core/ecs/row_kinds.d.cts +24 -0
- package/dist/core/ecs/row_kinds.d.ts +24 -0
- package/dist/core/ecs/row_kinds.d.ts.map +1 -0
- package/dist/core/ecs/run_condition.d.cts +23 -23
- package/dist/core/ecs/run_condition.d.ts +23 -23
- package/dist/core/ecs/run_condition.d.ts.map +1 -1
- package/dist/core/ecs/schedule.d.cts +98 -114
- package/dist/core/ecs/schedule.d.ts +98 -114
- package/dist/core/ecs/schedule.d.ts.map +1 -1
- package/dist/core/ecs/schedule_plan.d.cts +33 -0
- package/dist/core/ecs/schedule_plan.d.ts +33 -0
- package/dist/core/ecs/schedule_plan.d.ts.map +1 -0
- package/dist/core/ecs/snapshot.d.cts +77 -0
- package/dist/core/ecs/snapshot.d.ts +77 -0
- package/dist/core/ecs/snapshot.d.ts.map +1 -0
- package/dist/core/ecs/snapshot_mount.d.cts +42 -0
- package/dist/core/ecs/snapshot_mount.d.ts +42 -0
- package/dist/core/ecs/snapshot_mount.d.ts.map +1 -0
- package/dist/core/ecs/sparse_store.d.cts +110 -53
- package/dist/core/ecs/sparse_store.d.ts +110 -53
- package/dist/core/ecs/sparse_store.d.ts.map +1 -1
- package/dist/core/ecs/store.d.cts +644 -511
- package/dist/core/ecs/store.d.ts +644 -511
- package/dist/core/ecs/store.d.ts.map +1 -1
- package/dist/core/ecs/store_layout_listener.d.cts +8 -8
- package/dist/core/ecs/store_layout_listener.d.ts +8 -8
- package/dist/core/ecs/store_types.d.cts +122 -0
- package/dist/core/ecs/store_types.d.ts +122 -0
- package/dist/core/ecs/store_types.d.ts.map +1 -0
- package/dist/core/ecs/system.d.cts +151 -66
- package/dist/core/ecs/system.d.ts +151 -66
- package/dist/core/ecs/system.d.ts.map +1 -1
- package/dist/core/ecs/system_context.d.cts +296 -0
- package/dist/core/ecs/system_context.d.ts +296 -0
- package/dist/core/ecs/system_context.d.ts.map +1 -0
- package/dist/core/ecs/system_set.d.cts +48 -0
- package/dist/core/ecs/system_set.d.ts +48 -0
- package/dist/core/ecs/system_set.d.ts.map +1 -0
- package/dist/core/ecs/utils/arrays.d.cts +15 -1
- package/dist/core/ecs/utils/arrays.d.ts +15 -1
- package/dist/core/ecs/utils/arrays.d.ts.map +1 -1
- package/dist/core/ecs/utils/error.d.cts +87 -4
- package/dist/core/ecs/utils/error.d.ts +87 -4
- package/dist/core/ecs/utils/error.d.ts.map +1 -1
- package/dist/core/ecs/utils/plugin_error.d.cts +10 -0
- package/dist/core/ecs/utils/plugin_error.d.ts +10 -0
- package/dist/core/ecs/utils/plugin_error.d.ts.map +1 -0
- package/dist/core/restore_errors.d.cts +30 -0
- package/dist/core/restore_errors.d.ts +30 -0
- package/dist/core/restore_errors.d.ts.map +1 -0
- package/dist/core/store/action_ring.d.cts +48 -49
- package/dist/core/store/action_ring.d.ts +48 -49
- package/dist/core/store/action_ring.d.ts.map +1 -1
- package/dist/core/store/allocator.d.cts +166 -114
- package/dist/core/store/allocator.d.ts +166 -114
- package/dist/core/store/allocator.d.ts.map +1 -1
- package/dist/core/store/buffer_backed_column.d.cts +21 -22
- package/dist/core/store/buffer_backed_column.d.ts +21 -22
- package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
- package/dist/core/store/column_store.d.cts +138 -100
- package/dist/core/store/column_store.d.ts +138 -100
- package/dist/core/store/column_store.d.ts.map +1 -1
- package/dist/core/store/command_dispatch.d.cts +14 -15
- package/dist/core/store/command_dispatch.d.ts +14 -15
- package/dist/core/store/command_dispatch.d.ts.map +1 -1
- package/dist/core/store/command_ring.d.cts +41 -45
- package/dist/core/store/command_ring.d.ts +41 -45
- package/dist/core/store/command_ring.d.ts.map +1 -1
- package/dist/core/store/descriptor.d.cts +35 -18
- package/dist/core/store/descriptor.d.ts +35 -18
- package/dist/core/store/descriptor.d.ts.map +1 -1
- package/dist/core/store/entity_index.d.cts +34 -35
- package/dist/core/store/entity_index.d.ts +34 -35
- package/dist/core/store/entity_index.d.ts.map +1 -1
- package/dist/core/store/event_ring.d.cts +40 -42
- package/dist/core/store/event_ring.d.ts +40 -42
- package/dist/core/store/event_ring.d.ts.map +1 -1
- package/dist/core/store/extend.d.cts +15 -9
- package/dist/core/store/extend.d.ts +15 -9
- package/dist/core/store/extend.d.ts.map +1 -1
- package/dist/core/store/grow.d.cts +3 -3
- package/dist/core/store/grow.d.ts +3 -3
- package/dist/core/store/grow.d.ts.map +1 -1
- package/dist/core/store/header.d.cts +37 -33
- package/dist/core/store/header.d.ts +37 -33
- package/dist/core/store/header.d.ts.map +1 -1
- package/dist/core/store/index.d.cts +10 -10
- package/dist/core/store/index.d.ts +10 -10
- package/dist/core/store/index.d.ts.map +1 -1
- package/dist/core/store/layout_ops.d.cts +72 -63
- package/dist/core/store/layout_ops.d.ts +72 -63
- package/dist/core/store/layout_ops.d.ts.map +1 -1
- package/dist/core/store/region_table.d.cts +28 -21
- package/dist/core/store/region_table.d.ts +28 -21
- package/dist/core/store/region_table.d.ts.map +1 -1
- package/dist/core/store/snapshot.d.cts +31 -16
- package/dist/core/store/snapshot.d.ts +31 -16
- package/dist/core/store/snapshot.d.ts.map +1 -1
- package/dist/core/store/state_hash.d.cts +14 -14
- package/dist/core/store/state_hash.d.ts +14 -14
- package/dist/core/store/state_hash.d.ts.map +1 -1
- package/dist/core/store/store_regions.d.cts +10 -10
- package/dist/core/store/store_regions.d.ts +10 -10
- package/dist/core/store/store_regions.d.ts.map +1 -1
- package/dist/core/store/vendored_abi/abi.d.cts +27 -2
- package/dist/core/store/vendored_abi/abi.d.ts +27 -2
- package/dist/core/store/vendored_abi/abi.d.ts.map +1 -1
- package/dist/host_commands-B2KMx8O2.cjs +1 -0
- package/dist/host_commands-ClVPvhSa.cjs +2 -0
- package/dist/host_commands-CwxVQS1z.js +1524 -0
- package/dist/host_commands-nJvTy88E.js +1667 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +16 -11
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.development.cjs +1 -1
- package/dist/index.development.js +6709 -5729
- package/dist/index.js +5664 -4743
- package/dist/internal.cjs +2 -2
- package/dist/internal.d.cts +5 -2
- package/dist/internal.d.ts +5 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.development.cjs +1 -1
- package/dist/internal.development.js +70 -20
- package/dist/internal.js +138 -83
- package/dist/plugins/abi-D3V-QUSf.cjs +1 -0
- package/dist/plugins/abi-NP8pNxpd.js +42 -0
- package/dist/plugins/arrays-Dr_1hCjL.js +28 -0
- package/dist/plugins/arrays-Dt-Joc4i.cjs +1 -0
- package/dist/plugins/assertions-gtDVfbnQ.js +6 -0
- package/dist/plugins/assertions-z5GQd_bB.cjs +1 -0
- package/dist/{extensions → plugins}/editor/editor.d.cts +56 -56
- package/dist/{extensions → plugins}/editor/editor.d.ts +56 -56
- package/dist/plugins/editor/editor.d.ts.map +1 -0
- package/dist/{extensions → plugins}/editor/field_handle.d.cts +13 -13
- package/dist/{extensions → plugins}/editor/field_handle.d.ts +13 -13
- package/dist/plugins/editor/field_handle.d.ts.map +1 -0
- package/dist/plugins/editor/index.d.cts +22 -0
- package/dist/plugins/editor/index.d.ts +22 -0
- package/dist/plugins/editor/index.d.ts.map +1 -0
- package/dist/plugins/editor.cjs +1 -0
- package/dist/plugins/editor.d.cts +1 -0
- package/dist/plugins/editor.d.ts +1 -0
- package/dist/plugins/editor.development.cjs +1 -0
- package/dist/{extensions/editor/index.development.js → plugins/editor.development.js} +83 -66
- package/dist/{extensions/editor/index.js → plugins/editor.js} +83 -66
- package/dist/plugins/events/event_channel.d.cts +13 -0
- package/dist/plugins/events/event_channel.d.ts +13 -0
- package/dist/plugins/events/event_channel.d.ts.map +1 -0
- package/dist/plugins/events/event_registry.d.cts +22 -0
- package/dist/plugins/events/event_registry.d.ts +22 -0
- package/dist/plugins/events/event_registry.d.ts.map +1 -0
- package/dist/plugins/events/facade.d.cts +26 -0
- package/dist/plugins/events/facade.d.ts +26 -0
- package/dist/plugins/events/facade.d.ts.map +1 -0
- package/dist/plugins/events/index.d.cts +10 -0
- package/dist/plugins/events/index.d.ts +10 -0
- package/dist/plugins/events/index.d.ts.map +1 -0
- package/dist/plugins/events.cjs +1 -0
- package/dist/plugins/events.d.cts +1 -0
- package/dist/plugins/events.d.ts +1 -0
- package/dist/plugins/events.development.cjs +1 -0
- package/dist/plugins/events.development.js +174 -0
- package/dist/plugins/events.js +159 -0
- package/dist/plugins/observers/index.d.cts +23 -0
- package/dist/plugins/observers/index.d.ts +23 -0
- package/dist/plugins/observers/index.d.ts.map +1 -0
- package/dist/plugins/observers/observer_registry.d.cts +101 -0
- package/dist/plugins/observers/observer_registry.d.ts +101 -0
- package/dist/plugins/observers/observer_registry.d.ts.map +1 -0
- package/dist/plugins/observers.cjs +1 -0
- package/dist/plugins/observers.d.cts +1 -0
- package/dist/plugins/observers.d.ts +1 -0
- package/dist/plugins/observers.development.cjs +1 -0
- package/dist/plugins/observers.development.js +431 -0
- package/dist/plugins/observers.js +403 -0
- package/dist/plugins/relation_store-BsoegrZh.js +313 -0
- package/dist/plugins/relation_store-DQKSnxsm.cjs +1 -0
- package/dist/plugins/relation_store-RBhpcE28.cjs +1 -0
- package/dist/plugins/relation_store-RqW5Snx6.js +328 -0
- package/dist/plugins/relations/builtin_relations.d.cts +48 -0
- package/dist/plugins/relations/builtin_relations.d.ts +48 -0
- package/dist/plugins/relations/builtin_relations.d.ts.map +1 -0
- package/dist/plugins/relations/facade.d.cts +73 -0
- package/dist/plugins/relations/facade.d.ts +73 -0
- package/dist/plugins/relations/facade.d.ts.map +1 -0
- package/dist/plugins/relations/index.d.cts +11 -0
- package/dist/plugins/relations/index.d.ts +11 -0
- package/dist/plugins/relations/index.d.ts.map +1 -0
- package/dist/{core/ecs → plugins/relations}/relation_service.d.cts +93 -105
- package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +93 -105
- package/dist/plugins/relations/relation_service.d.ts.map +1 -0
- package/dist/plugins/relations/relation_store.d.cts +177 -0
- package/dist/plugins/relations/relation_store.d.ts +177 -0
- package/dist/plugins/relations/relation_store.d.ts.map +1 -0
- package/dist/plugins/relations.cjs +1 -0
- package/dist/plugins/relations.d.cts +1 -0
- package/dist/plugins/relations.d.ts +1 -0
- package/dist/plugins/relations.development.cjs +1 -0
- package/dist/plugins/relations.development.js +603 -0
- package/dist/plugins/relations.js +553 -0
- package/dist/plugins/snapshots/index.d.cts +33 -0
- package/dist/plugins/snapshots/index.d.ts +33 -0
- package/dist/plugins/snapshots/index.d.ts.map +1 -0
- package/dist/plugins/snapshots/resume.d.cts +57 -0
- package/dist/plugins/snapshots/resume.d.ts +57 -0
- package/dist/plugins/snapshots/resume.d.ts.map +1 -0
- package/dist/plugins/snapshots/snapshot_service.d.cts +59 -0
- package/dist/plugins/snapshots/snapshot_service.d.ts +59 -0
- package/dist/plugins/snapshots/snapshot_service.d.ts.map +1 -0
- package/dist/plugins/snapshots.cjs +1 -0
- package/dist/plugins/snapshots.d.cts +1 -0
- package/dist/plugins/snapshots.d.ts +1 -0
- package/dist/plugins/snapshots.development.cjs +1 -0
- package/dist/plugins/snapshots.development.js +737 -0
- package/dist/plugins/snapshots.js +737 -0
- package/dist/plugins/solid/index.d.cts +8 -0
- package/dist/plugins/solid/index.d.ts +8 -0
- package/dist/plugins/solid/index.d.ts.map +1 -0
- package/dist/plugins/solid/solid.d.cts +97 -0
- package/dist/plugins/solid/solid.d.ts +97 -0
- package/dist/plugins/solid/solid.d.ts.map +1 -0
- package/dist/plugins/solid.cjs +1 -0
- package/dist/plugins/solid.d.cts +1 -0
- package/dist/plugins/solid.d.ts +1 -0
- package/dist/plugins/solid.development.cjs +1 -0
- package/dist/plugins/solid.development.js +319 -0
- package/dist/plugins/solid.js +319 -0
- package/dist/plugins/workers/index.d.cts +75 -0
- package/dist/plugins/workers/index.d.ts +75 -0
- package/dist/plugins/workers/index.d.ts.map +1 -0
- package/dist/plugins/workers/node_threads.d.cts +25 -0
- package/dist/plugins/workers/node_threads.d.ts +25 -0
- package/dist/plugins/workers/node_threads.d.ts.map +1 -0
- package/dist/plugins/workers/plan.d.cts +61 -0
- package/dist/plugins/workers/plan.d.ts +61 -0
- package/dist/plugins/workers/plan.d.ts.map +1 -0
- package/dist/plugins/workers/pool.d.cts +144 -0
- package/dist/plugins/workers/pool.d.ts +144 -0
- package/dist/plugins/workers/pool.d.ts.map +1 -0
- package/dist/plugins/workers/protocol.d.cts +112 -0
- package/dist/plugins/workers/protocol.d.ts +112 -0
- package/dist/plugins/workers/protocol.d.ts.map +1 -0
- package/dist/plugins/workers/worker_bind.d.cts +64 -0
- package/dist/plugins/workers/worker_bind.d.ts +64 -0
- package/dist/plugins/workers/worker_bind.d.ts.map +1 -0
- package/dist/plugins/workers/worker_loop.d.cts +14 -0
- package/dist/plugins/workers/worker_loop.d.ts +14 -0
- package/dist/plugins/workers/worker_loop.d.ts.map +1 -0
- package/dist/plugins/workers.cjs +1 -0
- package/dist/plugins/workers.d.cts +1 -0
- package/dist/plugins/workers.d.ts +1 -0
- package/dist/plugins/workers.development.cjs +1 -0
- package/dist/plugins/workers.development.js +596 -0
- package/dist/plugins/workers.js +474 -0
- package/dist/primitives.cjs +1 -1
- package/dist/primitives.d.cts +4 -4
- package/dist/primitives.d.ts +4 -4
- package/dist/primitives.development.cjs +1 -1
- package/dist/primitives.development.js +66 -22
- package/dist/primitives.js +66 -22
- package/dist/shared-BKl12xF1.js +132 -0
- package/dist/shared-Dk-pACZT.cjs +1 -0
- package/dist/shared.cjs +1 -1
- package/dist/shared.d.cts +7 -7
- package/dist/shared.d.ts +7 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.development.cjs +1 -1
- package/dist/shared.development.js +4 -3
- package/dist/shared.js +4 -3
- package/dist/topological_sort-Cc_yXqPT.js +346 -0
- package/dist/topological_sort-vp1imU6D.cjs +1 -0
- package/dist/type_primitives/assertions.d.cts +12 -16
- package/dist/type_primitives/assertions.d.ts +12 -16
- package/dist/type_primitives/assertions.d.ts.map +1 -1
- package/dist/type_primitives/binary_heap/binary_heap.d.cts +2 -6
- package/dist/type_primitives/binary_heap/binary_heap.d.ts +2 -6
- package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
- package/dist/type_primitives/bitset/bitset.d.cts +7 -11
- package/dist/type_primitives/bitset/bitset.d.ts +7 -11
- package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
- package/dist/type_primitives/brand.d.cts +2 -7
- package/dist/type_primitives/brand.d.ts +2 -7
- package/dist/type_primitives/brand.d.ts.map +1 -1
- package/dist/type_primitives/error.d.cts +1 -2
- package/dist/type_primitives/error.d.ts +1 -2
- package/dist/type_primitives/error.d.ts.map +1 -1
- package/dist/type_primitives/index.d.cts +1 -1
- package/dist/type_primitives/index.d.ts +1 -1
- package/dist/type_primitives/sparse_map/sparse_map.d.cts +3 -7
- package/dist/type_primitives/sparse_map/sparse_map.d.ts +3 -7
- package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
- package/dist/type_primitives/sparse_set/sparse_set.d.cts +2 -6
- package/dist/type_primitives/sparse_set/sparse_set.d.ts +2 -6
- package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
- package/dist/type_primitives/topological_sort/topological_sort.d.cts +1 -5
- package/dist/type_primitives/topological_sort/topological_sort.d.ts +1 -5
- package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
- package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +18 -17
- package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +18 -17
- package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/version.d.cts +4 -4
- package/dist/version.d.ts +4 -4
- package/dist/worker.cjs +1 -0
- package/dist/worker.d.cts +17 -0
- package/dist/worker.d.ts +17 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.development.cjs +1 -0
- package/dist/worker.development.js +253 -0
- package/dist/worker.js +253 -0
- package/package.json +363 -191
- package/dist/core/ecs/builtin_relations.d.cts +0 -43
- package/dist/core/ecs/builtin_relations.d.ts +0 -43
- package/dist/core/ecs/builtin_relations.d.ts.map +0 -1
- package/dist/core/ecs/event_registry.d.cts +0 -22
- package/dist/core/ecs/event_registry.d.ts +0 -22
- package/dist/core/ecs/event_registry.d.ts.map +0 -1
- package/dist/core/ecs/relation_service.d.ts.map +0 -1
- package/dist/core/ecs/resume.d.cts +0 -85
- package/dist/core/ecs/resume.d.ts +0 -85
- package/dist/core/ecs/resume.d.ts.map +0 -1
- package/dist/core/ecs/snapshot_service.d.cts +0 -94
- package/dist/core/ecs/snapshot_service.d.ts +0 -94
- package/dist/core/ecs/snapshot_service.d.ts.map +0 -1
- package/dist/extensions/editor/editor.d.ts.map +0 -1
- package/dist/extensions/editor/field_handle.d.ts.map +0 -1
- package/dist/extensions/editor/index.cjs +0 -1
- package/dist/extensions/editor/index.d.cts +0 -21
- package/dist/extensions/editor/index.d.ts +0 -21
- package/dist/extensions/editor/index.d.ts.map +0 -1
- package/dist/extensions/editor/index.development.cjs +0 -1
- package/dist/extensions/reactive/ecs_sync.d.cts +0 -214
- package/dist/extensions/reactive/ecs_sync.d.ts +0 -214
- package/dist/extensions/reactive/ecs_sync.d.ts.map +0 -1
- package/dist/extensions/reactive/index.cjs +0 -1
- package/dist/extensions/reactive/index.d.cts +0 -23
- package/dist/extensions/reactive/index.d.ts +0 -23
- package/dist/extensions/reactive/index.d.ts.map +0 -1
- package/dist/extensions/reactive/index.development.cjs +0 -1
- package/dist/extensions/reactive/index.development.js +0 -215
- package/dist/extensions/reactive/index.js +0 -215
- package/dist/extensions/solid/index.cjs +0 -1
- package/dist/extensions/solid/index.d.cts +0 -6
- package/dist/extensions/solid/index.d.ts +0 -6
- package/dist/extensions/solid/index.d.ts.map +0 -1
- package/dist/extensions/solid/index.development.cjs +0 -1
- package/dist/extensions/solid/index.development.js +0 -40
- package/dist/extensions/solid/index.js +0 -36
- package/dist/extensions/solid/kernel_solid.d.cts +0 -45
- package/dist/extensions/solid/kernel_solid.d.ts +0 -45
- package/dist/extensions/solid/kernel_solid.d.ts.map +0 -1
- package/dist/host_commands-3jyFfWNg.js +0 -2326
- package/dist/host_commands-DNf0f6ko.cjs +0 -1
- package/dist/internal-C9jjL90H.js +0 -2485
- package/dist/internal-RZN14uMw.cjs +0 -2
- package/dist/interop-CT-REx0W.cjs +0 -1
- package/dist/interop-CcY6ASQc.js +0 -18
- package/dist/interop-DqxleBo7.js +0 -18
- package/dist/interop-T1HZ-Dpa.cjs +0 -1
- package/dist/kernel-Cz2Kxlwl.js +0 -240
- package/dist/kernel-DgyrLFjW.js +0 -227
- package/dist/kernel-sw7ScKWu.cjs +0 -1
- package/dist/kernel-yWV3XnAb.cjs +0 -1
- package/dist/reactive/array.d.cts +0 -24
- package/dist/reactive/array.d.ts +0 -24
- package/dist/reactive/array.d.ts.map +0 -1
- package/dist/reactive/index.cjs +0 -1
- package/dist/reactive/index.d.cts +0 -11
- package/dist/reactive/index.d.ts +0 -11
- package/dist/reactive/index.d.ts.map +0 -1
- package/dist/reactive/index.development.cjs +0 -1
- package/dist/reactive/index.development.js +0 -18
- package/dist/reactive/index.js +0 -18
- package/dist/reactive/interop.d.cts +0 -19
- package/dist/reactive/interop.d.ts +0 -19
- package/dist/reactive/interop.d.ts.map +0 -1
- package/dist/reactive/kernel.d.cts +0 -73
- package/dist/reactive/kernel.d.ts +0 -73
- package/dist/reactive/kernel.d.ts.map +0 -1
- package/dist/reactive/map.d.cts +0 -16
- package/dist/reactive/map.d.ts +0 -16
- package/dist/reactive/map.d.ts.map +0 -1
- package/dist/reactive/shallow.d.cts +0 -11
- package/dist/reactive/shallow.d.ts +0 -11
- package/dist/reactive/shallow.d.ts.map +0 -1
- package/dist/reactive/struct.d.cts +0 -10
- package/dist/reactive/struct.d.ts +0 -10
- package/dist/reactive/struct.d.ts.map +0 -1
- package/dist/shallow-9S1pY_Iw.js +0 -159
- package/dist/shallow-C5YmTbtb.cjs +0 -1
- package/dist/shallow-DQ8aG51_.cjs +0 -1
- package/dist/shallow-DfnAm9vG.js +0 -150
- package/dist/shared-BMXh9hxm.cjs +0 -1
- package/dist/shared-DQKK0i-E.js +0 -109
- package/dist/topological_sort-BDvEyb9W.cjs +0 -1
- package/dist/topological_sort-DK6EjpWa.js +0 -135
- package/dist/typed_arrays-BcXcnzB4.js +0 -258
- package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
|
@@ -2,7 +2,7 @@ import { BufferAllocator } from './allocator.cjs';
|
|
|
2
2
|
import { ArchetypeSpec, ColumnStore, ColumnStoreInternal, CreateColumnStoreOptions } from './column_store.cjs';
|
|
3
3
|
import { ArchetypeDescriptor, TypeTagValue } from './descriptor.cjs';
|
|
4
4
|
import { StoreRegionOffsetField } from './store_regions.cjs';
|
|
5
|
-
/** Per-archetype resize
|
|
5
|
+
/** Per-archetype resize and copy input, shared by `GrowPlan.archetypes` and
|
|
6
6
|
* `ExtendPlan.existing` (so callers can reuse plan-building helpers). The
|
|
7
7
|
* caller picks the new `row_capacity` and declares the current live
|
|
8
8
|
* `row_count` so the copy knows how many rows matter. */
|
|
@@ -11,9 +11,9 @@ export interface ArchetypeGrowSpec {
|
|
|
11
11
|
readonly newRowCapacity: number;
|
|
12
12
|
readonly rowCount: number;
|
|
13
13
|
}
|
|
14
|
-
/** One archetype's column-layout request for `layoutColumnsAtTail`.
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
/** One archetype's column-layout request for `layoutColumnsAtTail`. The caller
|
|
15
|
+
* resolves `stride`. Grow reuses the old column's stride verbatim. Extend
|
|
16
|
+
* derives it from `TYPE_TAG_STRIDE[typeTag]` for a brand-new column. */
|
|
17
17
|
export interface TailArchetypeLayout {
|
|
18
18
|
readonly archetypeId: number;
|
|
19
19
|
readonly componentMask: ArchetypeDescriptor["componentMask"];
|
|
@@ -25,23 +25,24 @@ export interface TailArchetypeLayout {
|
|
|
25
25
|
readonly stride: number;
|
|
26
26
|
}[];
|
|
27
27
|
}
|
|
28
|
-
/** Tail-cursor column placement
|
|
29
|
-
* layout rule and the 2³¹ offset cap
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
/** Tail-cursor column placement, the single home for the in-place paths'
|
|
29
|
+
* layout rule and the 2³¹ offset cap. `startCursor` and every offset it
|
|
30
|
+
* produces are relative to the store base. Starting at `startCursor`
|
|
31
|
+
* (the current store span), each archetype's columns are placed
|
|
32
|
+
* `alignUp(cursor, stride)` then advanced by `stride * rowCapacity`. The
|
|
32
33
|
* final tail (last column's advance, not re-aligned) becomes the grown
|
|
33
34
|
* buffer's byteLength and is guarded past `STORE_MAX_BYTE_OFFSET` exactly
|
|
34
35
|
* like `planLayout` guards the create-time layout. Descriptors come back
|
|
35
|
-
* with `rowCount`
|
|
36
|
+
* with `rowCount` and `enabledCount` zeroed (the store side of those counters
|
|
36
37
|
* lives with the caller). */
|
|
37
38
|
export declare function layoutColumnsAtTail(startCursor: number, archetypes: readonly TailArchetypeLayout[]): {
|
|
38
39
|
descriptors: ArchetypeDescriptor[];
|
|
39
40
|
newTotal: number;
|
|
40
41
|
};
|
|
41
42
|
/** Grow an in-place-backed store's buffer to `newTotal` and mint the DataView
|
|
42
|
-
* the caller must write headers
|
|
43
|
-
* `
|
|
44
|
-
* `wasmMemoryAllocator` returns a
|
|
43
|
+
* the caller must write headers and descriptors through. `growableSabAllocator`
|
|
44
|
+
* and `heapArrayBufferAllocator` return the same buffer instance grown in place.
|
|
45
|
+
* `wasmMemoryAllocator` returns a new ref over the same linear memory, old
|
|
45
46
|
* typed-array views stay valid either way (the `isInPlace` contract), but
|
|
46
47
|
* when the ref changed the old DataView's byteLength is frozen at the
|
|
47
48
|
* pre-grow size, so a fresh DataView over the new ref is required for any
|
|
@@ -51,116 +52,124 @@ export declare function growBufferInPlace(old: ColumnStoreInternal, newTotal: nu
|
|
|
51
52
|
newView: DataView;
|
|
52
53
|
};
|
|
53
54
|
/**
|
|
54
|
-
* Byte offset where the next appended column region begins
|
|
55
|
-
* the in-place grow
|
|
55
|
+
* Byte offset where the next appended column region begins, measured from the
|
|
56
|
+
* store base. This is the tail cursor the in-place grow and extend paths pass
|
|
57
|
+
* to `layoutColumnsAtTail`.
|
|
56
58
|
*
|
|
57
|
-
* For the growable-SAB and wasm backings the buffer is sized to the live extent
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* element access, so its `byteLength` is `maxBytes`, NOT the used size — the
|
|
63
|
-
* true tail is the header `capacity` (the logical high-water; new columns land
|
|
64
|
-
* in still-zero fixed-buffer space just past the last live column).
|
|
59
|
+
* For the growable-SAB and wasm backings the buffer is sized to the live extent,
|
|
60
|
+
* so `buffer.byteLength` minus the base is the tail. `SharedArrayBuffer.grow`
|
|
61
|
+
* resizes exactly.
|
|
62
|
+
* Wasm rounds up to a page, and its fast path deliberately lands new regions
|
|
63
|
+
* past that page-rounded tail.
|
|
65
64
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
65
|
+
* The pure-TS **heap** backing differs. Its buffer is a fixed `ArrayBuffer`
|
|
66
|
+
* reserved at the full cap for V8 fast-path element access, so its `byteLength`
|
|
67
|
+
* is `maxBytes`, not the used size. The true tail is the header `capacity`, the
|
|
68
|
+
* logical high-water. New columns land in still-zero fixed-buffer space
|
|
69
|
+
* immediately past the last live column.
|
|
70
|
+
*
|
|
71
|
+
* The question is whether the allocator reserved the cap, not which buffer
|
|
72
|
+
* class it returned: `fixedSabAllocator` reserves a fixed `SharedArrayBuffer`
|
|
73
|
+
* and needs the header rule, while `growableSabAllocator` grows a
|
|
74
|
+
* `SharedArrayBuffer` to the live extent and needs the `byteLength` rule. So
|
|
75
|
+
* the allocator's `reservedAtCap` marker decides. The plain-`ArrayBuffer` test
|
|
76
|
+
* stays as the fallback for a store whose allocator predates the marker, which
|
|
77
|
+
* keeps the SAB and wasm layouts byte-for-byte unchanged.
|
|
69
78
|
*/
|
|
70
79
|
export declare function tailCursorBytes(old: ColumnStoreInternal): number;
|
|
71
80
|
/**
|
|
72
81
|
* Derive `CreateColumnStoreOptions` from an old ColumnStore so a slow-path realloc
|
|
73
82
|
* preserves the same set of optional regions at the same byte offsets in the
|
|
74
|
-
* new SAB. Without this, an extend
|
|
83
|
+
* new SAB. Without this, an extend or grow would silently drop a region, the
|
|
75
84
|
* command ring's pending commands, every entity placement in the index, etc.
|
|
76
85
|
* would be lost.
|
|
77
86
|
*
|
|
78
87
|
* Walks `STORE_PREFIX_REGIONS`: each present region's `readOptions` replays the
|
|
79
88
|
* exact capacity the engine configured (regions may carry non-default sizes),
|
|
80
|
-
* not
|
|
81
|
-
* separately via `
|
|
89
|
+
* not only the default. Live state (write_head, length, …) is preserved
|
|
90
|
+
* separately via `snapshotRegions`.
|
|
82
91
|
*
|
|
83
92
|
* Also re-applies the descriptor-region headroom policy
|
|
84
|
-
* (`reservedDescriptorBytes
|
|
85
|
-
* read from the SAB bytes
|
|
86
|
-
* `ColumnStoreInternal._reservedDescriptorBytes
|
|
93
|
+
* (`reservedDescriptorBytes`). Unlike the prefix regions this is not
|
|
94
|
+
* read from the SAB bytes. It's a JS-side policy carried on
|
|
95
|
+
* `ColumnStoreInternal._reservedDescriptorBytes`, but it belongs here for the
|
|
87
96
|
* same reason: without it the realloc'd store drops to zero descriptor
|
|
88
97
|
* headroom and every later `extendColumnStore` takes the slow path forever.
|
|
89
|
-
* Re-reserving the same margin (additive, see `planLayout`) keeps the
|
|
98
|
+
* Re-reserving the same margin (additive, see `planLayout`) keeps the
|
|
90
99
|
* in-place fast path alive across reallocs.
|
|
91
100
|
*/
|
|
92
101
|
export declare function optionsFromOld(old: ColumnStore): CreateColumnStoreOptions;
|
|
93
102
|
/** A prefix-region snapshot: the live bytes of every present region from the
|
|
94
103
|
* old SAB. `mechanism` is keyed by the `StoreHeader` field holding a mechanism
|
|
95
|
-
* region's offset
|
|
96
|
-
* named header field). Pairs `
|
|
97
|
-
* `
|
|
104
|
+
* region's offset. `consumer` is keyed by `region_id` (consumer regions have no
|
|
105
|
+
* named header field). Pairs `snapshotRegions` with
|
|
106
|
+
* `restoreRegions`. */
|
|
98
107
|
export interface PrefixRegionSnapshot {
|
|
99
108
|
readonly mechanism: Map<StoreRegionOffsetField, Uint8Array>;
|
|
100
109
|
readonly consumer: Map<number, Uint8Array>;
|
|
101
110
|
}
|
|
102
111
|
/**
|
|
103
|
-
* Snapshot the live bytes of every present region
|
|
104
|
-
* regions (STORE_PREFIX_REGIONS) and
|
|
105
|
-
* directory)
|
|
112
|
+
* Snapshot the live bytes of every present region, both engine mechanism
|
|
113
|
+
* regions (STORE_PREFIX_REGIONS) and consumer regions (the region-table
|
|
114
|
+
* directory), from the old SAB before any allocator call that may detach
|
|
106
115
|
* views. Each entry is a heap `Uint8Array` copy (via `slice()`) so it survives
|
|
107
|
-
* an allocator-induced detach
|
|
116
|
+
* an allocator-induced detach. `restoreRegions` places it back at the
|
|
108
117
|
* matching offset in the new SAB.
|
|
109
118
|
*
|
|
110
|
-
* Header bytes themselves are
|
|
119
|
+
* Header bytes themselves are not snapshotted, `createColumnStore` writes the
|
|
111
120
|
* header (and the region-table directory) from scratch with the correct
|
|
112
121
|
* view_stamp (bumped after this call) and offsets.
|
|
113
122
|
*/
|
|
114
|
-
export declare function
|
|
123
|
+
export declare function snapshotRegions(old: ColumnStore): PrefixRegionSnapshot;
|
|
115
124
|
/** Restore prefix-region byte snapshots into `newStore` at the matching
|
|
116
|
-
* region offsets. Pairs with `
|
|
125
|
+
* region offsets. Pairs with `snapshotRegions`. The new SAB's regions
|
|
117
126
|
* were sized identically by `optionsFromOld`, so each snapshot lands at the
|
|
118
|
-
* same length its source had
|
|
127
|
+
* same length its source had, mechanism regions at their named header offset,
|
|
119
128
|
* consumer regions at the offset the rebuilt region-table resolves their id to. */
|
|
120
|
-
export declare function
|
|
129
|
+
export declare function restoreRegions(newStore: ColumnStore, snap: PrefixRegionSnapshot): void;
|
|
121
130
|
/**
|
|
122
|
-
* Snapshot per-archetype live column bytes from `old
|
|
131
|
+
* Snapshot per-archetype live column bytes from `old`, before any
|
|
123
132
|
* subsequent allocator call may detach the underlying typed-array views.
|
|
124
133
|
* Returned shape: `{ archetype_id → Uint8Array[] }`, one entry per
|
|
125
134
|
* column in `columnsInOrder`. Each `Uint8Array` is a fresh copy
|
|
126
135
|
* (not a view) so it survives a `WebAssembly.Memory.grow`. Archetypes
|
|
127
|
-
* with `row_count === 0` are omitted
|
|
136
|
+
* with `row_count === 0` are omitted, nothing to copy.
|
|
128
137
|
*/
|
|
129
138
|
export declare function snapshotLiveColumns(old: ColumnStore, rowCountsById: Map<number, number>): Map<number, Uint8Array[]>;
|
|
130
139
|
/**
|
|
131
140
|
* Write per-archetype column snapshots produced by `snapshotLiveColumns`
|
|
132
|
-
* into `newStore`'s column views. The snapshot's column
|
|
133
|
-
* the new archetype's `columnsInOrder` (extend
|
|
141
|
+
* into `newStore`'s column views. The snapshot's column order must match
|
|
142
|
+
* the new archetype's `columnsInOrder` (extend and grow guarantee this
|
|
134
143
|
* because they carry the column spec forward unchanged).
|
|
135
144
|
*/
|
|
136
|
-
export declare function
|
|
145
|
+
export declare function restoreLiveColumns(newStore: ColumnStore, snapshots: Map<number, Uint8Array[]>): void;
|
|
137
146
|
/**
|
|
138
147
|
* The realloc-and-republish slow path shared by `growColumnStore` and
|
|
139
|
-
* `extendColumnStore
|
|
148
|
+
* `extendColumnStore`, everything between "the specs are decided" and "the
|
|
140
149
|
* caller shapes its result":
|
|
141
150
|
*
|
|
142
|
-
* 1. Capture `view_stamp` and snapshot live rows
|
|
143
|
-
* (command ring, entity-index)
|
|
151
|
+
* 1. Capture `view_stamp` and snapshot live rows and prefix regions
|
|
152
|
+
* (command ring, entity-index) before the allocator call, the
|
|
144
153
|
* wasmMemoryAllocator may detach `old`'s views on grow, so everything
|
|
145
154
|
* needed is captured first. The prefix-region preservation is the
|
|
146
|
-
* contract `Store` relies on to keep its entity table across resizes
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* 2. `createColumnStore` with the derived options (fresh buffer
|
|
155
|
+
* contract `Store` relies on to keep its entity table across resizes.
|
|
156
|
+
* `optionsFromOld` re-reserves the regions and the descriptor headroom,
|
|
157
|
+
* so the republished store keeps its layout and its fast paths.
|
|
158
|
+
* 2. `createColumnStore` with the derived options (fresh buffer, the same
|
|
150
159
|
* growable allocator carries forward so the new buffer also grows in
|
|
151
160
|
* place).
|
|
152
161
|
* 3. Restore live rows + prefix regions. Archetypes without a row count
|
|
153
|
-
* contributed no snapshot and stay zero-initialised
|
|
162
|
+
* contributed no snapshot and stay zero-initialised. Prefix regions
|
|
154
163
|
* overwrite the empty state `createColumnStore` initialised.
|
|
155
164
|
* 4. Bump `view_stamp` from the pre-capture value and patch the returned
|
|
156
|
-
* header so its cached `viewStamp` matches the
|
|
157
|
-
*
|
|
165
|
+
* header so its cached `viewStamp` matches the bytes written above.
|
|
166
|
+
* `createColumnStore` stamped it 0. `capacity` and
|
|
158
167
|
* `archetype_count` are already correct (createColumnStore sized them),
|
|
159
|
-
* so the spread carries them
|
|
160
|
-
* `_regionBytes` fields
|
|
168
|
+
* so the spread carries them, and the internal `_allocator` and
|
|
169
|
+
* `_regionBytes` fields, through unchanged.
|
|
161
170
|
*
|
|
162
|
-
* Every view in the returned store is fresh
|
|
163
|
-
* (`viewsPreserved: false` is the callers' contract with
|
|
171
|
+
* Every view in the returned store is fresh. Callers must refresh
|
|
172
|
+
* (`viewsPreserved: false` is the callers' contract with their callers).
|
|
164
173
|
*/
|
|
165
174
|
export declare function reallocAndRepublish(old: ColumnStore, specs: readonly ArchetypeSpec[], rowCountsById: Map<number, number>, allocator: BufferAllocator | undefined): {
|
|
166
175
|
store: ColumnStore;
|
|
@@ -2,7 +2,7 @@ import { BufferAllocator } from './allocator.js';
|
|
|
2
2
|
import { ArchetypeSpec, ColumnStore, ColumnStoreInternal, CreateColumnStoreOptions } from './column_store.js';
|
|
3
3
|
import { ArchetypeDescriptor, TypeTagValue } from './descriptor.js';
|
|
4
4
|
import { StoreRegionOffsetField } from './store_regions.js';
|
|
5
|
-
/** Per-archetype resize
|
|
5
|
+
/** Per-archetype resize and copy input, shared by `GrowPlan.archetypes` and
|
|
6
6
|
* `ExtendPlan.existing` (so callers can reuse plan-building helpers). The
|
|
7
7
|
* caller picks the new `row_capacity` and declares the current live
|
|
8
8
|
* `row_count` so the copy knows how many rows matter. */
|
|
@@ -11,9 +11,9 @@ export interface ArchetypeGrowSpec {
|
|
|
11
11
|
readonly newRowCapacity: number;
|
|
12
12
|
readonly rowCount: number;
|
|
13
13
|
}
|
|
14
|
-
/** One archetype's column-layout request for `layoutColumnsAtTail`.
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
/** One archetype's column-layout request for `layoutColumnsAtTail`. The caller
|
|
15
|
+
* resolves `stride`. Grow reuses the old column's stride verbatim. Extend
|
|
16
|
+
* derives it from `TYPE_TAG_STRIDE[typeTag]` for a brand-new column. */
|
|
17
17
|
export interface TailArchetypeLayout {
|
|
18
18
|
readonly archetypeId: number;
|
|
19
19
|
readonly componentMask: ArchetypeDescriptor["componentMask"];
|
|
@@ -25,23 +25,24 @@ export interface TailArchetypeLayout {
|
|
|
25
25
|
readonly stride: number;
|
|
26
26
|
}[];
|
|
27
27
|
}
|
|
28
|
-
/** Tail-cursor column placement
|
|
29
|
-
* layout rule and the 2³¹ offset cap
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
/** Tail-cursor column placement, the single home for the in-place paths'
|
|
29
|
+
* layout rule and the 2³¹ offset cap. `startCursor` and every offset it
|
|
30
|
+
* produces are relative to the store base. Starting at `startCursor`
|
|
31
|
+
* (the current store span), each archetype's columns are placed
|
|
32
|
+
* `alignUp(cursor, stride)` then advanced by `stride * rowCapacity`. The
|
|
32
33
|
* final tail (last column's advance, not re-aligned) becomes the grown
|
|
33
34
|
* buffer's byteLength and is guarded past `STORE_MAX_BYTE_OFFSET` exactly
|
|
34
35
|
* like `planLayout` guards the create-time layout. Descriptors come back
|
|
35
|
-
* with `rowCount`
|
|
36
|
+
* with `rowCount` and `enabledCount` zeroed (the store side of those counters
|
|
36
37
|
* lives with the caller). */
|
|
37
38
|
export declare function layoutColumnsAtTail(startCursor: number, archetypes: readonly TailArchetypeLayout[]): {
|
|
38
39
|
descriptors: ArchetypeDescriptor[];
|
|
39
40
|
newTotal: number;
|
|
40
41
|
};
|
|
41
42
|
/** Grow an in-place-backed store's buffer to `newTotal` and mint the DataView
|
|
42
|
-
* the caller must write headers
|
|
43
|
-
* `
|
|
44
|
-
* `wasmMemoryAllocator` returns a
|
|
43
|
+
* the caller must write headers and descriptors through. `growableSabAllocator`
|
|
44
|
+
* and `heapArrayBufferAllocator` return the same buffer instance grown in place.
|
|
45
|
+
* `wasmMemoryAllocator` returns a new ref over the same linear memory, old
|
|
45
46
|
* typed-array views stay valid either way (the `isInPlace` contract), but
|
|
46
47
|
* when the ref changed the old DataView's byteLength is frozen at the
|
|
47
48
|
* pre-grow size, so a fresh DataView over the new ref is required for any
|
|
@@ -51,116 +52,124 @@ export declare function growBufferInPlace(old: ColumnStoreInternal, newTotal: nu
|
|
|
51
52
|
newView: DataView;
|
|
52
53
|
};
|
|
53
54
|
/**
|
|
54
|
-
* Byte offset where the next appended column region begins
|
|
55
|
-
* the in-place grow
|
|
55
|
+
* Byte offset where the next appended column region begins, measured from the
|
|
56
|
+
* store base. This is the tail cursor the in-place grow and extend paths pass
|
|
57
|
+
* to `layoutColumnsAtTail`.
|
|
56
58
|
*
|
|
57
|
-
* For the growable-SAB and wasm backings the buffer is sized to the live extent
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* element access, so its `byteLength` is `maxBytes`, NOT the used size — the
|
|
63
|
-
* true tail is the header `capacity` (the logical high-water; new columns land
|
|
64
|
-
* in still-zero fixed-buffer space just past the last live column).
|
|
59
|
+
* For the growable-SAB and wasm backings the buffer is sized to the live extent,
|
|
60
|
+
* so `buffer.byteLength` minus the base is the tail. `SharedArrayBuffer.grow`
|
|
61
|
+
* resizes exactly.
|
|
62
|
+
* Wasm rounds up to a page, and its fast path deliberately lands new regions
|
|
63
|
+
* past that page-rounded tail.
|
|
65
64
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
65
|
+
* The pure-TS **heap** backing differs. Its buffer is a fixed `ArrayBuffer`
|
|
66
|
+
* reserved at the full cap for V8 fast-path element access, so its `byteLength`
|
|
67
|
+
* is `maxBytes`, not the used size. The true tail is the header `capacity`, the
|
|
68
|
+
* logical high-water. New columns land in still-zero fixed-buffer space
|
|
69
|
+
* immediately past the last live column.
|
|
70
|
+
*
|
|
71
|
+
* The question is whether the allocator reserved the cap, not which buffer
|
|
72
|
+
* class it returned: `fixedSabAllocator` reserves a fixed `SharedArrayBuffer`
|
|
73
|
+
* and needs the header rule, while `growableSabAllocator` grows a
|
|
74
|
+
* `SharedArrayBuffer` to the live extent and needs the `byteLength` rule. So
|
|
75
|
+
* the allocator's `reservedAtCap` marker decides. The plain-`ArrayBuffer` test
|
|
76
|
+
* stays as the fallback for a store whose allocator predates the marker, which
|
|
77
|
+
* keeps the SAB and wasm layouts byte-for-byte unchanged.
|
|
69
78
|
*/
|
|
70
79
|
export declare function tailCursorBytes(old: ColumnStoreInternal): number;
|
|
71
80
|
/**
|
|
72
81
|
* Derive `CreateColumnStoreOptions` from an old ColumnStore so a slow-path realloc
|
|
73
82
|
* preserves the same set of optional regions at the same byte offsets in the
|
|
74
|
-
* new SAB. Without this, an extend
|
|
83
|
+
* new SAB. Without this, an extend or grow would silently drop a region, the
|
|
75
84
|
* command ring's pending commands, every entity placement in the index, etc.
|
|
76
85
|
* would be lost.
|
|
77
86
|
*
|
|
78
87
|
* Walks `STORE_PREFIX_REGIONS`: each present region's `readOptions` replays the
|
|
79
88
|
* exact capacity the engine configured (regions may carry non-default sizes),
|
|
80
|
-
* not
|
|
81
|
-
* separately via `
|
|
89
|
+
* not only the default. Live state (write_head, length, …) is preserved
|
|
90
|
+
* separately via `snapshotRegions`.
|
|
82
91
|
*
|
|
83
92
|
* Also re-applies the descriptor-region headroom policy
|
|
84
|
-
* (`reservedDescriptorBytes
|
|
85
|
-
* read from the SAB bytes
|
|
86
|
-
* `ColumnStoreInternal._reservedDescriptorBytes
|
|
93
|
+
* (`reservedDescriptorBytes`). Unlike the prefix regions this is not
|
|
94
|
+
* read from the SAB bytes. It's a JS-side policy carried on
|
|
95
|
+
* `ColumnStoreInternal._reservedDescriptorBytes`, but it belongs here for the
|
|
87
96
|
* same reason: without it the realloc'd store drops to zero descriptor
|
|
88
97
|
* headroom and every later `extendColumnStore` takes the slow path forever.
|
|
89
|
-
* Re-reserving the same margin (additive, see `planLayout`) keeps the
|
|
98
|
+
* Re-reserving the same margin (additive, see `planLayout`) keeps the
|
|
90
99
|
* in-place fast path alive across reallocs.
|
|
91
100
|
*/
|
|
92
101
|
export declare function optionsFromOld(old: ColumnStore): CreateColumnStoreOptions;
|
|
93
102
|
/** A prefix-region snapshot: the live bytes of every present region from the
|
|
94
103
|
* old SAB. `mechanism` is keyed by the `StoreHeader` field holding a mechanism
|
|
95
|
-
* region's offset
|
|
96
|
-
* named header field). Pairs `
|
|
97
|
-
* `
|
|
104
|
+
* region's offset. `consumer` is keyed by `region_id` (consumer regions have no
|
|
105
|
+
* named header field). Pairs `snapshotRegions` with
|
|
106
|
+
* `restoreRegions`. */
|
|
98
107
|
export interface PrefixRegionSnapshot {
|
|
99
108
|
readonly mechanism: Map<StoreRegionOffsetField, Uint8Array>;
|
|
100
109
|
readonly consumer: Map<number, Uint8Array>;
|
|
101
110
|
}
|
|
102
111
|
/**
|
|
103
|
-
* Snapshot the live bytes of every present region
|
|
104
|
-
* regions (STORE_PREFIX_REGIONS) and
|
|
105
|
-
* directory)
|
|
112
|
+
* Snapshot the live bytes of every present region, both engine mechanism
|
|
113
|
+
* regions (STORE_PREFIX_REGIONS) and consumer regions (the region-table
|
|
114
|
+
* directory), from the old SAB before any allocator call that may detach
|
|
106
115
|
* views. Each entry is a heap `Uint8Array` copy (via `slice()`) so it survives
|
|
107
|
-
* an allocator-induced detach
|
|
116
|
+
* an allocator-induced detach. `restoreRegions` places it back at the
|
|
108
117
|
* matching offset in the new SAB.
|
|
109
118
|
*
|
|
110
|
-
* Header bytes themselves are
|
|
119
|
+
* Header bytes themselves are not snapshotted, `createColumnStore` writes the
|
|
111
120
|
* header (and the region-table directory) from scratch with the correct
|
|
112
121
|
* view_stamp (bumped after this call) and offsets.
|
|
113
122
|
*/
|
|
114
|
-
export declare function
|
|
123
|
+
export declare function snapshotRegions(old: ColumnStore): PrefixRegionSnapshot;
|
|
115
124
|
/** Restore prefix-region byte snapshots into `newStore` at the matching
|
|
116
|
-
* region offsets. Pairs with `
|
|
125
|
+
* region offsets. Pairs with `snapshotRegions`. The new SAB's regions
|
|
117
126
|
* were sized identically by `optionsFromOld`, so each snapshot lands at the
|
|
118
|
-
* same length its source had
|
|
127
|
+
* same length its source had, mechanism regions at their named header offset,
|
|
119
128
|
* consumer regions at the offset the rebuilt region-table resolves their id to. */
|
|
120
|
-
export declare function
|
|
129
|
+
export declare function restoreRegions(newStore: ColumnStore, snap: PrefixRegionSnapshot): void;
|
|
121
130
|
/**
|
|
122
|
-
* Snapshot per-archetype live column bytes from `old
|
|
131
|
+
* Snapshot per-archetype live column bytes from `old`, before any
|
|
123
132
|
* subsequent allocator call may detach the underlying typed-array views.
|
|
124
133
|
* Returned shape: `{ archetype_id → Uint8Array[] }`, one entry per
|
|
125
134
|
* column in `columnsInOrder`. Each `Uint8Array` is a fresh copy
|
|
126
135
|
* (not a view) so it survives a `WebAssembly.Memory.grow`. Archetypes
|
|
127
|
-
* with `row_count === 0` are omitted
|
|
136
|
+
* with `row_count === 0` are omitted, nothing to copy.
|
|
128
137
|
*/
|
|
129
138
|
export declare function snapshotLiveColumns(old: ColumnStore, rowCountsById: Map<number, number>): Map<number, Uint8Array[]>;
|
|
130
139
|
/**
|
|
131
140
|
* Write per-archetype column snapshots produced by `snapshotLiveColumns`
|
|
132
|
-
* into `newStore`'s column views. The snapshot's column
|
|
133
|
-
* the new archetype's `columnsInOrder` (extend
|
|
141
|
+
* into `newStore`'s column views. The snapshot's column order must match
|
|
142
|
+
* the new archetype's `columnsInOrder` (extend and grow guarantee this
|
|
134
143
|
* because they carry the column spec forward unchanged).
|
|
135
144
|
*/
|
|
136
|
-
export declare function
|
|
145
|
+
export declare function restoreLiveColumns(newStore: ColumnStore, snapshots: Map<number, Uint8Array[]>): void;
|
|
137
146
|
/**
|
|
138
147
|
* The realloc-and-republish slow path shared by `growColumnStore` and
|
|
139
|
-
* `extendColumnStore
|
|
148
|
+
* `extendColumnStore`, everything between "the specs are decided" and "the
|
|
140
149
|
* caller shapes its result":
|
|
141
150
|
*
|
|
142
|
-
* 1. Capture `view_stamp` and snapshot live rows
|
|
143
|
-
* (command ring, entity-index)
|
|
151
|
+
* 1. Capture `view_stamp` and snapshot live rows and prefix regions
|
|
152
|
+
* (command ring, entity-index) before the allocator call, the
|
|
144
153
|
* wasmMemoryAllocator may detach `old`'s views on grow, so everything
|
|
145
154
|
* needed is captured first. The prefix-region preservation is the
|
|
146
|
-
* contract `Store` relies on to keep its entity table across resizes
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* 2. `createColumnStore` with the derived options (fresh buffer
|
|
155
|
+
* contract `Store` relies on to keep its entity table across resizes.
|
|
156
|
+
* `optionsFromOld` re-reserves the regions and the descriptor headroom,
|
|
157
|
+
* so the republished store keeps its layout and its fast paths.
|
|
158
|
+
* 2. `createColumnStore` with the derived options (fresh buffer, the same
|
|
150
159
|
* growable allocator carries forward so the new buffer also grows in
|
|
151
160
|
* place).
|
|
152
161
|
* 3. Restore live rows + prefix regions. Archetypes without a row count
|
|
153
|
-
* contributed no snapshot and stay zero-initialised
|
|
162
|
+
* contributed no snapshot and stay zero-initialised. Prefix regions
|
|
154
163
|
* overwrite the empty state `createColumnStore` initialised.
|
|
155
164
|
* 4. Bump `view_stamp` from the pre-capture value and patch the returned
|
|
156
|
-
* header so its cached `viewStamp` matches the
|
|
157
|
-
*
|
|
165
|
+
* header so its cached `viewStamp` matches the bytes written above.
|
|
166
|
+
* `createColumnStore` stamped it 0. `capacity` and
|
|
158
167
|
* `archetype_count` are already correct (createColumnStore sized them),
|
|
159
|
-
* so the spread carries them
|
|
160
|
-
* `_regionBytes` fields
|
|
168
|
+
* so the spread carries them, and the internal `_allocator` and
|
|
169
|
+
* `_regionBytes` fields, through unchanged.
|
|
161
170
|
*
|
|
162
|
-
* Every view in the returned store is fresh
|
|
163
|
-
* (`viewsPreserved: false` is the callers' contract with
|
|
171
|
+
* Every view in the returned store is fresh. Callers must refresh
|
|
172
|
+
* (`viewsPreserved: false` is the callers' contract with their callers).
|
|
164
173
|
*/
|
|
165
174
|
export declare function reallocAndRepublish(old: ColumnStore, specs: readonly ArchetypeSpec[], rowCountsById: Map<number, number>, allocator: BufferAllocator | undefined): {
|
|
166
175
|
store: ColumnStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout_ops.d.ts","sourceRoot":"","sources":["../../../src/core/store/layout_ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAMN,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAoB,YAAY,EAAE,MAAM,cAAc,CAAC;AAGxF,OAAO,EAGN,KAAK,sBAAsB,EAC3B,MAAM,iBAAiB,CAAC;AAEzB;;;yDAGyD;AACzD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;
|
|
1
|
+
{"version":3,"file":"layout_ops.d.ts","sourceRoot":"","sources":["../../../src/core/store/layout_ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAMN,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAoB,YAAY,EAAE,MAAM,cAAc,CAAC;AAGxF,OAAO,EAGN,KAAK,sBAAsB,EAC3B,MAAM,iBAAiB,CAAC;AAEzB;;;yDAGyD;AACzD,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;wEAEwE;AACxE,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACJ;AAED;;;;;;;;;6BAS6B;AAC7B,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,SAAS,mBAAmB,EAAE,GACxC;IAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA+B1D;AAED;;;;;;;+BAO+B;AAC/B,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,mBAAmB,EACxB,QAAQ,EAAE,MAAM,GACd;IAAE,WAAW,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAMrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAOhE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,wBAAwB,CAyCzE;AAED;;;;uBAIuB;AACvB,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,oBAAoB,CAyBtE;AAED;;;;mFAImF;AACnF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CActF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAmB3B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,GAClC,IAAI,CAeN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,SAAS,EAAE,eAAe,GAAG,SAAS,GACpC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAmBpE"}
|
|
@@ -4,40 +4,46 @@ export { REGION_TABLE_ENTRY_BYTES, REGION_TABLE_ENTRY_OFFSETS };
|
|
|
4
4
|
* distinct within its region set, that it also resolves on the read side),
|
|
5
5
|
* computes `bytes`, and seeds the region header + contents in `init`.
|
|
6
6
|
*
|
|
7
|
-
* `init` runs
|
|
7
|
+
* `init` runs once at first allocation. Across a SAB grow and extend the region's
|
|
8
8
|
* live bytes are snapshotted and restored verbatim (the table is
|
|
9
|
-
* self-describing), so `init` is not re-run
|
|
9
|
+
* self-describing), so `init` is not re-run, a consumer must not rely on it
|
|
10
10
|
* firing per realloc. */
|
|
11
11
|
export interface StoreRegionSpec {
|
|
12
|
-
/** Consumer-owned region id (nonzero, distinct). Written to the directory
|
|
13
|
-
* resolved by the consumer
|
|
12
|
+
/** Consumer-owned region id (nonzero, distinct). Written to the directory
|
|
13
|
+
* resolved by the consumer through `findRegionOffset`. */
|
|
14
14
|
readonly id: number;
|
|
15
|
-
/** Human label for diagnostics
|
|
15
|
+
/** Human label for diagnostics and the self-documenting directory dump. */
|
|
16
16
|
readonly name: string;
|
|
17
17
|
/** Byte size to allocate for this region (consumer computes from its knobs).
|
|
18
18
|
* Must be > 0. */
|
|
19
19
|
readonly bytes: number;
|
|
20
|
-
/** Initialise the region header
|
|
20
|
+
/** Initialise the region header and seed bytes at `off`, which indexes
|
|
21
|
+
* `view`. `view` starts at the store base, so a consumer that needs a
|
|
22
|
+
* TypedArray builds it at `view.byteOffset + off`. */
|
|
21
23
|
readonly init: (view: DataView, off: number) => void;
|
|
22
24
|
}
|
|
23
|
-
/** One decoded directory record.
|
|
25
|
+
/** One decoded directory record. `byteOffset` is measured from the store base,
|
|
26
|
+
* the same as every other offset in the bytes. */
|
|
24
27
|
export interface RegionTableEntry {
|
|
25
28
|
readonly regionId: number;
|
|
26
29
|
readonly byteOffset: number;
|
|
27
30
|
readonly byteLength: number;
|
|
28
31
|
}
|
|
29
|
-
/** A resolved handle to a consumer region, returned by `ECS.regionHandle`
|
|
30
|
-
* `Store.regionHandle`. Carries the live `buffer
|
|
32
|
+
/** A resolved handle to a consumer region, returned by `ECS.regionHandle` or
|
|
33
|
+
* `Store.regionHandle`. Carries the live `buffer` and `view` plus the region's byte
|
|
31
34
|
* `offset` and full `bytes`, so a consumer's region module can build a
|
|
32
35
|
* TypedArray view over exactly the region's span without re-reading the
|
|
33
|
-
* directory. Re-fetch after a SAB grow (the offset
|
|
36
|
+
* directory. Re-fetch after a SAB grow (the offset and view may have moved). */
|
|
34
37
|
export interface ColumnStoreRegionHandle {
|
|
35
|
-
/** `ArrayBufferLike
|
|
36
|
-
* feature (WASM
|
|
37
|
-
* regions are declared
|
|
38
|
+
/** `ArrayBufferLike`, see `ColumnStore.buffer`. Consumer regions are a SAB-profile
|
|
39
|
+
* feature (WASM or worker), so in practice this is a `SharedArrayBuffer` wherever
|
|
40
|
+
* regions are declared. The type is widened only because it flows from the
|
|
38
41
|
* backing-agnostic store. */
|
|
39
42
|
readonly buffer: ArrayBufferLike;
|
|
43
|
+
/** Starts at the store base, so `view.byteOffset` is that base. */
|
|
40
44
|
readonly view: DataView;
|
|
45
|
+
/** Buffer-absolute, so `new Uint8Array(buffer, offset, bytes)` reads the
|
|
46
|
+
* region. Read it through `view` at `offset - view.byteOffset`. */
|
|
41
47
|
readonly offset: number;
|
|
42
48
|
readonly bytes: number;
|
|
43
49
|
}
|
|
@@ -48,9 +54,9 @@ export declare class RegionRegistryError extends Error {
|
|
|
48
54
|
export declare function regionTableBytes(count: number): number;
|
|
49
55
|
/** Validate a consumer region set before layout: ids must be nonzero (0 is the
|
|
50
56
|
* "absent" sentinel `findRegionOffset` returns) and distinct, and each region
|
|
51
|
-
* must request a positive byte size. Throws `RegionRegistryError` otherwise
|
|
57
|
+
* must request a positive byte size. Throws `RegionRegistryError` otherwise,
|
|
52
58
|
* the same loud-failure stance the mechanism registry's paired-knob guards take. */
|
|
53
|
-
export declare function
|
|
59
|
+
export declare function assertRegionSpecs(regions: readonly StoreRegionSpec[]): void;
|
|
54
60
|
/** Write one directory record at absolute byte offset `off`. */
|
|
55
61
|
export declare function writeRegionTableEntry(view: DataView, off: number, e: RegionTableEntry): void;
|
|
56
62
|
/** Read one directory record at absolute byte offset `off`. */
|
|
@@ -59,16 +65,17 @@ export declare function readRegionTableEntry(view: DataView, off: number): Regio
|
|
|
59
65
|
export declare function writeRegionTable(view: DataView, tableOff: number, entries: readonly RegionTableEntry[]): void;
|
|
60
66
|
/** Read all `count` directory records starting at `tableOff`, in order. */
|
|
61
67
|
export declare function readRegionTable(view: DataView, tableOff: number, count: number): RegionTableEntry[];
|
|
62
|
-
/** Read the directory described by the SAB header (`region_table_off`
|
|
68
|
+
/** Read the directory described by the SAB header (`region_table_off` and
|
|
63
69
|
* `region_table_count`). Empty when no consumer regions were declared. */
|
|
64
70
|
export declare function readHeaderRegionTable(view: DataView): RegionTableEntry[];
|
|
65
|
-
/** Resolve a consumer region's byte offset by `region_id`, or 0
|
|
66
|
-
* (no directory, or no matching entry). The TS twin of
|
|
67
|
-
*
|
|
68
|
-
* sentinel because a real region never starts at
|
|
71
|
+
/** Resolve a consumer region's store-relative byte offset by `region_id`, or 0
|
|
72
|
+
* when absent (no directory, or no matching entry). The TS twin of the
|
|
73
|
+
* module-side lookup. 0 is an unambiguous "absent"
|
|
74
|
+
* sentinel because a real region never starts at relative offset 0, which the
|
|
75
|
+
* header occupies. */
|
|
69
76
|
export declare function findRegionOffset(view: DataView, regionId: number): number;
|
|
70
77
|
/** Resolve a consumer region's `(byte_offset, byte_length)` by `region_id`, or
|
|
71
78
|
* `null` when absent. Use when a reader needs the region's size (e.g. to
|
|
72
|
-
* materialise a TypedArray view) and not
|
|
79
|
+
* materialise a TypedArray view) and not only its start. */
|
|
73
80
|
export declare function findRegionEntry(view: DataView, regionId: number): RegionTableEntry | null;
|
|
74
81
|
//# sourceMappingURL=region_table.d.ts.map
|