@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
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Entity-index SAB region
|
|
3
|
-
* lookup table shared with
|
|
2
|
+
* Entity-index SAB region, `EntityID` → `(archetype_id, row, generation)`
|
|
3
|
+
* lookup table shared with a compute backend.
|
|
4
4
|
*
|
|
5
|
-
* Every hot fixed-update system that
|
|
6
|
-
* held in a column (
|
|
7
|
-
* entity
|
|
8
|
-
* `entityId → archetype + row` translation.
|
|
9
|
-
*
|
|
5
|
+
* Every hot fixed-update system that resolves an `EntityID`
|
|
6
|
+
* held in a column (a component field that points at another
|
|
7
|
+
* entity, and through it at that entity's columns) has to do
|
|
8
|
+
* `entityId → archetype + row` translation. A WASM-into-TS callback
|
|
9
|
+
* during a tick is forbidden, so the lookup
|
|
10
10
|
* tables must live in shared memory.
|
|
11
11
|
*
|
|
12
12
|
* Layout:
|
|
13
13
|
*
|
|
14
14
|
* [ length: u32 ] high-water index (count of slots ever issued)
|
|
15
|
-
* [ capacity: u32 ] backing-array length (slots × 1
|
|
15
|
+
* [ capacity: u32 ] backing-array length (slots × 1, not bytes)
|
|
16
16
|
* [ _pad0: u32 ] alignment pad to 16 bytes
|
|
17
17
|
* [ _pad1: u32 ] ───
|
|
18
18
|
* [ generations[capacity]: i32 ]
|
|
@@ -21,26 +21,26 @@
|
|
|
21
21
|
*
|
|
22
22
|
* Sentinels:
|
|
23
23
|
* - `generations[i] = 0` (INITIAL_GENERATION) for never-used slots.
|
|
24
|
-
* Generation grows by 1 on every destroy
|
|
24
|
+
* Generation grows by 1 on every destroy. An `EntityID`'s generation
|
|
25
25
|
* field matches `generations[index]` iff it's still alive.
|
|
26
26
|
* - `archetypes[i] = -1` (UNASSIGNED) when the slot hasn't been placed
|
|
27
|
-
* into an archetype,
|
|
28
|
-
* - `rows[i] = -1` (UNASSIGNED) on destroy
|
|
27
|
+
* into an archetype, or when the entity is destroyed.
|
|
28
|
+
* - `rows[i] = -1` (`UNASSIGNED`) on a destroy, or when not placed.
|
|
29
29
|
*
|
|
30
30
|
* Field width: i32 (signed) on the TS side so `-1` round-trips through
|
|
31
|
-
* `Int32Array` without unsigned coercion.
|
|
32
|
-
* pattern is identical to u32 `0xFFFFFFFF` for the UNASSIGNED case, and
|
|
33
|
-
* for valid
|
|
34
|
-
* is never set, so signed
|
|
31
|
+
* `Int32Array` without unsigned coercion. A module reads i32 too. The bit
|
|
32
|
+
* pattern is identical to u32 `0xFFFFFFFF` for the `UNASSIGNED` case, and
|
|
33
|
+
* for a valid archetype id (bounded by `MAX_INDEX`) the sign bit
|
|
34
|
+
* is never set, so signed and unsigned interpretation agree.
|
|
35
35
|
*
|
|
36
36
|
* Region placement: between command ring and descriptor region so the
|
|
37
|
-
* offset is stable across descriptor
|
|
37
|
+
* offset is stable across descriptor growth and column-region growth (same
|
|
38
38
|
* property the command ring gets). Grow path (when entityHighWater
|
|
39
|
-
* exceeds `capacity`) uses `growColumnStore
|
|
39
|
+
* exceeds `capacity`) uses `growColumnStore`, slow path, same as
|
|
40
40
|
* descriptor-region overflow.
|
|
41
41
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
42
|
+
* A module reads the region with the symmetric reader: the header first,
|
|
43
|
+
* then the two i32 arrays it names.
|
|
44
44
|
*/
|
|
45
45
|
/** Fixed bytes of the region header (length, capacity, two pad u32s for
|
|
46
46
|
* 16-byte alignment of the i32 arrays that follow). */
|
|
@@ -48,24 +48,23 @@ export declare const ENTITY_INDEX_HEADER_BYTES = 16;
|
|
|
48
48
|
/** Bytes per slot: three i32 columns. */
|
|
49
49
|
export declare const ENTITY_INDEX_BYTES_PER_SLOT = 12;
|
|
50
50
|
/** Byte offsets within the region header. Locked by the
|
|
51
|
-
* `entity_index.test.ts` golden bytes
|
|
51
|
+
* `entity_index.test.ts` golden bytes. Any change here is a
|
|
52
52
|
* `SIM_ABI_VERSION` bump. */
|
|
53
53
|
export declare const ENTITY_INDEX_HEADER_OFFSETS: {
|
|
54
54
|
readonly length: 0;
|
|
55
55
|
readonly capacity: 4;
|
|
56
56
|
};
|
|
57
|
-
/** Default initial slot count when the engine creates a Store.
|
|
58
|
-
* `MAX_INDEX
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* the
|
|
64
|
-
* virtual reservation is 12 MiB.
|
|
57
|
+
/** Default initial slot count when the engine creates a Store. It is
|
|
58
|
+
* `MAX_INDEX + 1`, the whole `EntityID` 20-bit index range (see `entity.ts`),
|
|
59
|
+
* so the region pre-sizes to the entire addressable entity space and
|
|
60
|
+
* `createEntity` can never run out under the default. That reservation is
|
|
61
|
+
* virtual memory only. Physical pages allocate lazily, through an OS page
|
|
62
|
+
* fault on first touch, so a small workload keeps a small resident footprint
|
|
63
|
+
* whatever the reservation is.
|
|
65
64
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
65
|
+
* A caller can pass a smaller `CreateColumnStoreOptions.entityIndexCapacity`
|
|
66
|
+
* for a tighter reservation. On-demand growth through `growColumnStore` would
|
|
67
|
+
* let the default drop. */
|
|
69
68
|
export declare const ENTITY_INDEX_DEFAULT_CAPACITY: number;
|
|
70
69
|
/** Total region bytes for `capacity` slots: header + 3 i32 columns. */
|
|
71
70
|
export declare function entityIndexRegionBytes(capacity: number): number;
|
|
@@ -81,7 +80,7 @@ export declare class EntityIndexError extends Error {
|
|
|
81
80
|
/** Initialise the region header at `regionOff`. Sets `length=0` and
|
|
82
81
|
* `capacity=<arg>`. The i32 arrays past the header are left untouched
|
|
83
82
|
* (callers normally allocate the region on a fresh, zero-initialised
|
|
84
|
-
* SAB
|
|
83
|
+
* SAB. Generation 0 is the INITIAL_GENERATION sentinel, archetype and row
|
|
85
84
|
* sentinels of 0 are caught by `length=0` so no read reaches them). */
|
|
86
85
|
export declare function initEntityIndexRegion(view: DataView, regionOff: number, capacity: number): void;
|
|
87
86
|
/** Read the region's current length (high-water index, ≤ capacity). */
|
|
@@ -94,13 +93,13 @@ export declare function entityIndexCapacity(view: DataView, regionOff: number):
|
|
|
94
93
|
export declare function setEntityIndexLength(view: DataView, regionOff: number, length: number): void;
|
|
95
94
|
/** Materialise the three Int32Array views over the region's column data
|
|
96
95
|
* for use by the engine's Store. The views live as long as the
|
|
97
|
-
* SharedArrayBuffer hasn't been reallocated
|
|
96
|
+
* SharedArrayBuffer hasn't been reallocated, refresh on `view_stamp`
|
|
98
97
|
* bump (the engine's `_onBufferResized` callback).
|
|
99
98
|
*
|
|
100
99
|
* Three separate views (not a single struct-of-arrays object) because
|
|
101
100
|
* the engine's hot paths benefit from each being a direct typed-array
|
|
102
|
-
* read
|
|
103
|
-
export declare function
|
|
101
|
+
* read. V8 specialises `arr[i] = v` aggressively for typed arrays. */
|
|
102
|
+
export declare function createEntityIndexViews(buffer: ArrayBufferLike, regionOff: number, capacity: number): {
|
|
104
103
|
readonly generations: Int32Array;
|
|
105
104
|
readonly archetypes: Int32Array;
|
|
106
105
|
readonly rows: Int32Array;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Entity-index SAB region
|
|
3
|
-
* lookup table shared with
|
|
2
|
+
* Entity-index SAB region, `EntityID` → `(archetype_id, row, generation)`
|
|
3
|
+
* lookup table shared with a compute backend.
|
|
4
4
|
*
|
|
5
|
-
* Every hot fixed-update system that
|
|
6
|
-
* held in a column (
|
|
7
|
-
* entity
|
|
8
|
-
* `entityId → archetype + row` translation.
|
|
9
|
-
*
|
|
5
|
+
* Every hot fixed-update system that resolves an `EntityID`
|
|
6
|
+
* held in a column (a component field that points at another
|
|
7
|
+
* entity, and through it at that entity's columns) has to do
|
|
8
|
+
* `entityId → archetype + row` translation. A WASM-into-TS callback
|
|
9
|
+
* during a tick is forbidden, so the lookup
|
|
10
10
|
* tables must live in shared memory.
|
|
11
11
|
*
|
|
12
12
|
* Layout:
|
|
13
13
|
*
|
|
14
14
|
* [ length: u32 ] high-water index (count of slots ever issued)
|
|
15
|
-
* [ capacity: u32 ] backing-array length (slots × 1
|
|
15
|
+
* [ capacity: u32 ] backing-array length (slots × 1, not bytes)
|
|
16
16
|
* [ _pad0: u32 ] alignment pad to 16 bytes
|
|
17
17
|
* [ _pad1: u32 ] ───
|
|
18
18
|
* [ generations[capacity]: i32 ]
|
|
@@ -21,26 +21,26 @@
|
|
|
21
21
|
*
|
|
22
22
|
* Sentinels:
|
|
23
23
|
* - `generations[i] = 0` (INITIAL_GENERATION) for never-used slots.
|
|
24
|
-
* Generation grows by 1 on every destroy
|
|
24
|
+
* Generation grows by 1 on every destroy. An `EntityID`'s generation
|
|
25
25
|
* field matches `generations[index]` iff it's still alive.
|
|
26
26
|
* - `archetypes[i] = -1` (UNASSIGNED) when the slot hasn't been placed
|
|
27
|
-
* into an archetype,
|
|
28
|
-
* - `rows[i] = -1` (UNASSIGNED) on destroy
|
|
27
|
+
* into an archetype, or when the entity is destroyed.
|
|
28
|
+
* - `rows[i] = -1` (`UNASSIGNED`) on a destroy, or when not placed.
|
|
29
29
|
*
|
|
30
30
|
* Field width: i32 (signed) on the TS side so `-1` round-trips through
|
|
31
|
-
* `Int32Array` without unsigned coercion.
|
|
32
|
-
* pattern is identical to u32 `0xFFFFFFFF` for the UNASSIGNED case, and
|
|
33
|
-
* for valid
|
|
34
|
-
* is never set, so signed
|
|
31
|
+
* `Int32Array` without unsigned coercion. A module reads i32 too. The bit
|
|
32
|
+
* pattern is identical to u32 `0xFFFFFFFF` for the `UNASSIGNED` case, and
|
|
33
|
+
* for a valid archetype id (bounded by `MAX_INDEX`) the sign bit
|
|
34
|
+
* is never set, so signed and unsigned interpretation agree.
|
|
35
35
|
*
|
|
36
36
|
* Region placement: between command ring and descriptor region so the
|
|
37
|
-
* offset is stable across descriptor
|
|
37
|
+
* offset is stable across descriptor growth and column-region growth (same
|
|
38
38
|
* property the command ring gets). Grow path (when entityHighWater
|
|
39
|
-
* exceeds `capacity`) uses `growColumnStore
|
|
39
|
+
* exceeds `capacity`) uses `growColumnStore`, slow path, same as
|
|
40
40
|
* descriptor-region overflow.
|
|
41
41
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
42
|
+
* A module reads the region with the symmetric reader: the header first,
|
|
43
|
+
* then the two i32 arrays it names.
|
|
44
44
|
*/
|
|
45
45
|
/** Fixed bytes of the region header (length, capacity, two pad u32s for
|
|
46
46
|
* 16-byte alignment of the i32 arrays that follow). */
|
|
@@ -48,24 +48,23 @@ export declare const ENTITY_INDEX_HEADER_BYTES = 16;
|
|
|
48
48
|
/** Bytes per slot: three i32 columns. */
|
|
49
49
|
export declare const ENTITY_INDEX_BYTES_PER_SLOT = 12;
|
|
50
50
|
/** Byte offsets within the region header. Locked by the
|
|
51
|
-
* `entity_index.test.ts` golden bytes
|
|
51
|
+
* `entity_index.test.ts` golden bytes. Any change here is a
|
|
52
52
|
* `SIM_ABI_VERSION` bump. */
|
|
53
53
|
export declare const ENTITY_INDEX_HEADER_OFFSETS: {
|
|
54
54
|
readonly length: 0;
|
|
55
55
|
readonly capacity: 4;
|
|
56
56
|
};
|
|
57
|
-
/** Default initial slot count when the engine creates a Store.
|
|
58
|
-
* `MAX_INDEX
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* the
|
|
64
|
-
* virtual reservation is 12 MiB.
|
|
57
|
+
/** Default initial slot count when the engine creates a Store. It is
|
|
58
|
+
* `MAX_INDEX + 1`, the whole `EntityID` 20-bit index range (see `entity.ts`),
|
|
59
|
+
* so the region pre-sizes to the entire addressable entity space and
|
|
60
|
+
* `createEntity` can never run out under the default. That reservation is
|
|
61
|
+
* virtual memory only. Physical pages allocate lazily, through an OS page
|
|
62
|
+
* fault on first touch, so a small workload keeps a small resident footprint
|
|
63
|
+
* whatever the reservation is.
|
|
65
64
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
65
|
+
* A caller can pass a smaller `CreateColumnStoreOptions.entityIndexCapacity`
|
|
66
|
+
* for a tighter reservation. On-demand growth through `growColumnStore` would
|
|
67
|
+
* let the default drop. */
|
|
69
68
|
export declare const ENTITY_INDEX_DEFAULT_CAPACITY: number;
|
|
70
69
|
/** Total region bytes for `capacity` slots: header + 3 i32 columns. */
|
|
71
70
|
export declare function entityIndexRegionBytes(capacity: number): number;
|
|
@@ -81,7 +80,7 @@ export declare class EntityIndexError extends Error {
|
|
|
81
80
|
/** Initialise the region header at `regionOff`. Sets `length=0` and
|
|
82
81
|
* `capacity=<arg>`. The i32 arrays past the header are left untouched
|
|
83
82
|
* (callers normally allocate the region on a fresh, zero-initialised
|
|
84
|
-
* SAB
|
|
83
|
+
* SAB. Generation 0 is the INITIAL_GENERATION sentinel, archetype and row
|
|
85
84
|
* sentinels of 0 are caught by `length=0` so no read reaches them). */
|
|
86
85
|
export declare function initEntityIndexRegion(view: DataView, regionOff: number, capacity: number): void;
|
|
87
86
|
/** Read the region's current length (high-water index, ≤ capacity). */
|
|
@@ -94,13 +93,13 @@ export declare function entityIndexCapacity(view: DataView, regionOff: number):
|
|
|
94
93
|
export declare function setEntityIndexLength(view: DataView, regionOff: number, length: number): void;
|
|
95
94
|
/** Materialise the three Int32Array views over the region's column data
|
|
96
95
|
* for use by the engine's Store. The views live as long as the
|
|
97
|
-
* SharedArrayBuffer hasn't been reallocated
|
|
96
|
+
* SharedArrayBuffer hasn't been reallocated, refresh on `view_stamp`
|
|
98
97
|
* bump (the engine's `_onBufferResized` callback).
|
|
99
98
|
*
|
|
100
99
|
* Three separate views (not a single struct-of-arrays object) because
|
|
101
100
|
* the engine's hot paths benefit from each being a direct typed-array
|
|
102
|
-
* read
|
|
103
|
-
export declare function
|
|
101
|
+
* read. V8 specialises `arr[i] = v` aggressively for typed arrays. */
|
|
102
|
+
export declare function createEntityIndexViews(buffer: ArrayBufferLike, regionOff: number, capacity: number): {
|
|
104
103
|
readonly generations: Int32Array;
|
|
105
104
|
readonly archetypes: Int32Array;
|
|
106
105
|
readonly rows: Int32Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity_index.d.ts","sourceRoot":"","sources":["../../../src/core/store/entity_index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH;uDACuD;AACvD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,yCAAyC;AACzC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;6BAE6B;AAC7B,eAAO,MAAM,2BAA2B;;;CAI9B,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"entity_index.d.ts","sourceRoot":"","sources":["../../../src/core/store/entity_index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH;uDACuD;AACvD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,yCAAyC;AACzC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;6BAE6B;AAC7B,eAAO,MAAM,2BAA2B;;;CAI9B,CAAC;AAEX;;;;;;;;;;2BAU2B;AAC3B,eAAO,MAAM,6BAA6B,QAAU,CAAC;AAErD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO/D;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,8CAA8C;AAC9C,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI3B;AAED;;;;uEAIuE;AACvE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS/F;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;aAEa;AACb,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE5F;AAED;;;;;;;sEAOsE;AACtE,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd;IACF,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC1B,CAQA"}
|
|
@@ -1,68 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Event ring
|
|
3
|
-
* between TS and
|
|
2
|
+
* Event ring. SPSC ring buffer for ECS signal and event payloads shared
|
|
3
|
+
* between TS and a compute backend.
|
|
4
4
|
*
|
|
5
|
-
* Same byte layout as the command ring (`command_ring.ts`)
|
|
6
|
-
* could share a primitive but keeping them separate makes the
|
|
7
|
-
* direction of flow explicit
|
|
8
|
-
* intents to drain post-tick
|
|
9
|
-
*
|
|
10
|
-
* systems
|
|
5
|
+
* Same byte layout as the command ring (`command_ring.ts`). The two
|
|
6
|
+
* could share a primitive, but keeping them separate makes the
|
|
7
|
+
* direction of flow explicit. The command ring is WASM→TS, and carries
|
|
8
|
+
* structural intents to drain post-tick. The event ring is bidirectional during
|
|
9
|
+
* a tick. A module's systems push events, and TS readers or sibling module
|
|
10
|
+
* systems drain.
|
|
11
11
|
*
|
|
12
12
|
* Layout (identical to command ring):
|
|
13
13
|
*
|
|
14
|
-
* [ write_head: u32 ] slot 0..N-1, monotonic (
|
|
14
|
+
* [ write_head: u32 ] slot 0..N-1, monotonic (not slot-modulo)
|
|
15
15
|
* [ read_head: u32 ] slot 0..N-1, monotonic
|
|
16
16
|
* [ capacity: u32 ] slot count, power-of-two
|
|
17
|
-
* [ overflow_flag: u32 ] 0 = OK
|
|
17
|
+
* [ overflow_flag: u32 ] 0 = OK, 1 = sticky overflow witness
|
|
18
18
|
* [ slot 0: 16 B ] opCode: u8, payload: [15]u8
|
|
19
19
|
* [ slot 1: 16 B ] ...
|
|
20
20
|
*
|
|
21
|
-
* Op codes: event-def
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* from 1 to honour this; the engine integration in 4D+ enforces it.
|
|
21
|
+
* Op codes: event-def ids, assigned when an event is registered. The 0
|
|
22
|
+
* op-code is reserved as the empty-slot marker so a zero-initialised SAB does
|
|
23
|
+
* not appear to hold a valid event. Event-def registration starts numbering
|
|
24
|
+
* from 1 to honour this.
|
|
26
25
|
*
|
|
27
|
-
* SPSC contract (
|
|
28
|
-
* - Producer:
|
|
29
|
-
* existing JS-side
|
|
30
|
-
* - Consumer: TS host drain
|
|
26
|
+
* SPSC contract (single host thread):
|
|
27
|
+
* - Producer: a WASM tick, or the TS host (a test producer, or an
|
|
28
|
+
* existing JS-side emitter bridged into the ring).
|
|
29
|
+
* - Consumer: the TS host drain, or a module system that reads
|
|
31
30
|
* queued events from a sibling system.
|
|
32
|
-
* - The two never run concurrently
|
|
33
|
-
*
|
|
34
|
-
* bumps to `Atomics.store
|
|
31
|
+
* - The two never run concurrently (one host thread orchestrates
|
|
32
|
+
* both). A later worker offload promotes the head
|
|
33
|
+
* bumps to `Atomics.store`. That's an additive change without
|
|
35
34
|
* altering the layout.
|
|
36
35
|
*
|
|
37
|
-
* Payload size: fixed 15 bytes per slot.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* design — out of scope here.
|
|
36
|
+
* Payload size: fixed 15 bytes per slot. Every event the engine carries today
|
|
37
|
+
* fits, because an event holds a few numeric fields at most. A larger payload
|
|
38
|
+
* needs a separate variable-size ring design, out of scope here.
|
|
41
39
|
*
|
|
42
40
|
* Region placement: between the entity-index region and the descriptor
|
|
43
|
-
* region so its offset is stable across descriptor
|
|
44
|
-
* `header.event_ring_off` (the field promoted out of `_reserved0`
|
|
45
|
-
*
|
|
41
|
+
* region so its offset is stable across descriptor and column growth.
|
|
42
|
+
* `header.event_ring_off` (the field promoted out of `_reserved0`)
|
|
43
|
+
* carries the offset, 0 means absent.
|
|
46
44
|
*/
|
|
47
45
|
/** Total bytes for the ring header. Matches command ring exactly. */
|
|
48
46
|
export declare const EVENT_RING_HEADER_BYTES = 16;
|
|
49
|
-
/** Fixed slot size
|
|
47
|
+
/** Fixed slot size, 1-byte opCode + 15-byte payload. Matches
|
|
50
48
|
* command ring exactly. */
|
|
51
49
|
export declare const EVENT_RING_SLOT_BYTES = 16;
|
|
52
50
|
/** Default ring capacity in slots. 256 × 16 B = 4 KiB of slot data
|
|
53
51
|
* plus 16 B header. Mirrors `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`. */
|
|
54
52
|
export declare const EVENT_RING_DEFAULT_CAPACITY_SLOTS = 256;
|
|
55
|
-
/** Byte offsets within the ring header.
|
|
56
|
-
*
|
|
53
|
+
/** Byte offsets within the ring header. A reader on the module side mirrors
|
|
54
|
+
* these offsets, so a change here is an ABI change. */
|
|
57
55
|
export declare const EVENT_RING_HEADER_OFFSETS: {
|
|
58
56
|
readonly write_head: 0;
|
|
59
57
|
readonly read_head: 4;
|
|
60
58
|
readonly capacity_slots: 8;
|
|
61
59
|
readonly overflow_flag: 12;
|
|
62
60
|
};
|
|
63
|
-
/** Op-code
|
|
64
|
-
* (see file header). Event-def
|
|
65
|
-
*
|
|
61
|
+
/** Op-code `0` is reserved across the SAB layer as "empty slot"
|
|
62
|
+
* (see file header). Event-def ids start at 1, so a SAB-backed channel never
|
|
63
|
+
* writes a code that reads as an empty slot. */
|
|
66
64
|
export declare const EVENT_OP_EMPTY = 0;
|
|
67
65
|
/** Total bytes the ring occupies for `capacity_slots` slots. */
|
|
68
66
|
export declare function eventRingBytes(capacitySlots: number): number;
|
|
@@ -70,21 +68,21 @@ export declare class EventRingError extends Error {
|
|
|
70
68
|
constructor(message: string);
|
|
71
69
|
}
|
|
72
70
|
/** Initialise the ring header at `ringOff` in the SAB. Zeroes
|
|
73
|
-
* `write_head`, `read_head`, and `overflow_flag
|
|
71
|
+
* `write_head`, `read_head`, and `overflow_flag`. Sets `capacity_slots`.
|
|
74
72
|
* Slot bytes are left as-is (callers normally allocate the ring on a
|
|
75
73
|
* fresh, zero-initialised SAB). */
|
|
76
74
|
export declare function initEventRing(view: DataView, ringOff: number, capacitySlots: number): void;
|
|
77
|
-
export declare function
|
|
78
|
-
export declare function
|
|
79
|
-
export declare function
|
|
80
|
-
export declare function
|
|
75
|
+
export declare function eventRingWriteHead(view: DataView, ringOff: number): number;
|
|
76
|
+
export declare function eventRingReadHead(view: DataView, ringOff: number): number;
|
|
77
|
+
export declare function eventRingCapacitySlots(view: DataView, ringOff: number): number;
|
|
78
|
+
export declare function eventRingOverflow(view: DataView, ringOff: number): boolean;
|
|
81
79
|
/** Pending event count = `(write_head - read_head) mod 2^32`. */
|
|
82
80
|
export declare function pendingEventCount(view: DataView, ringOff: number): number;
|
|
83
81
|
/** Push an event into the ring. Returns `false` on overflow and sets
|
|
84
|
-
* the (sticky) overflow flag. `opCode` must be > 0
|
|
82
|
+
* the (sticky) overflow flag. `opCode` must be > 0, 0 is reserved as
|
|
85
83
|
* the empty-slot marker. Payload must be exactly 15 bytes. */
|
|
86
84
|
export declare function pushEvent(view: DataView, ringOff: number, opCode: number, payload: Uint8Array): boolean;
|
|
87
|
-
/** Read one event from the ring. Returns opCode (0 = empty
|
|
85
|
+
/** Read one event from the ring. Returns opCode (0 = empty, no event)
|
|
88
86
|
* and fills `outPayload` with 15 bytes. When 0 is returned,
|
|
89
87
|
* `outPayload` is untouched. */
|
|
90
88
|
export declare function popEvent(view: DataView, ringOff: number, outPayload: Uint8Array): number;
|
|
@@ -1,68 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Event ring
|
|
3
|
-
* between TS and
|
|
2
|
+
* Event ring. SPSC ring buffer for ECS signal and event payloads shared
|
|
3
|
+
* between TS and a compute backend.
|
|
4
4
|
*
|
|
5
|
-
* Same byte layout as the command ring (`command_ring.ts`)
|
|
6
|
-
* could share a primitive but keeping them separate makes the
|
|
7
|
-
* direction of flow explicit
|
|
8
|
-
* intents to drain post-tick
|
|
9
|
-
*
|
|
10
|
-
* systems
|
|
5
|
+
* Same byte layout as the command ring (`command_ring.ts`). The two
|
|
6
|
+
* could share a primitive, but keeping them separate makes the
|
|
7
|
+
* direction of flow explicit. The command ring is WASM→TS, and carries
|
|
8
|
+
* structural intents to drain post-tick. The event ring is bidirectional during
|
|
9
|
+
* a tick. A module's systems push events, and TS readers or sibling module
|
|
10
|
+
* systems drain.
|
|
11
11
|
*
|
|
12
12
|
* Layout (identical to command ring):
|
|
13
13
|
*
|
|
14
|
-
* [ write_head: u32 ] slot 0..N-1, monotonic (
|
|
14
|
+
* [ write_head: u32 ] slot 0..N-1, monotonic (not slot-modulo)
|
|
15
15
|
* [ read_head: u32 ] slot 0..N-1, monotonic
|
|
16
16
|
* [ capacity: u32 ] slot count, power-of-two
|
|
17
|
-
* [ overflow_flag: u32 ] 0 = OK
|
|
17
|
+
* [ overflow_flag: u32 ] 0 = OK, 1 = sticky overflow witness
|
|
18
18
|
* [ slot 0: 16 B ] opCode: u8, payload: [15]u8
|
|
19
19
|
* [ slot 1: 16 B ] ...
|
|
20
20
|
*
|
|
21
|
-
* Op codes: event-def
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* from 1 to honour this; the engine integration in 4D+ enforces it.
|
|
21
|
+
* Op codes: event-def ids, assigned when an event is registered. The 0
|
|
22
|
+
* op-code is reserved as the empty-slot marker so a zero-initialised SAB does
|
|
23
|
+
* not appear to hold a valid event. Event-def registration starts numbering
|
|
24
|
+
* from 1 to honour this.
|
|
26
25
|
*
|
|
27
|
-
* SPSC contract (
|
|
28
|
-
* - Producer:
|
|
29
|
-
* existing JS-side
|
|
30
|
-
* - Consumer: TS host drain
|
|
26
|
+
* SPSC contract (single host thread):
|
|
27
|
+
* - Producer: a WASM tick, or the TS host (a test producer, or an
|
|
28
|
+
* existing JS-side emitter bridged into the ring).
|
|
29
|
+
* - Consumer: the TS host drain, or a module system that reads
|
|
31
30
|
* queued events from a sibling system.
|
|
32
|
-
* - The two never run concurrently
|
|
33
|
-
*
|
|
34
|
-
* bumps to `Atomics.store
|
|
31
|
+
* - The two never run concurrently (one host thread orchestrates
|
|
32
|
+
* both). A later worker offload promotes the head
|
|
33
|
+
* bumps to `Atomics.store`. That's an additive change without
|
|
35
34
|
* altering the layout.
|
|
36
35
|
*
|
|
37
|
-
* Payload size: fixed 15 bytes per slot.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* design — out of scope here.
|
|
36
|
+
* Payload size: fixed 15 bytes per slot. Every event the engine carries today
|
|
37
|
+
* fits, because an event holds a few numeric fields at most. A larger payload
|
|
38
|
+
* needs a separate variable-size ring design, out of scope here.
|
|
41
39
|
*
|
|
42
40
|
* Region placement: between the entity-index region and the descriptor
|
|
43
|
-
* region so its offset is stable across descriptor
|
|
44
|
-
* `header.event_ring_off` (the field promoted out of `_reserved0`
|
|
45
|
-
*
|
|
41
|
+
* region so its offset is stable across descriptor and column growth.
|
|
42
|
+
* `header.event_ring_off` (the field promoted out of `_reserved0`)
|
|
43
|
+
* carries the offset, 0 means absent.
|
|
46
44
|
*/
|
|
47
45
|
/** Total bytes for the ring header. Matches command ring exactly. */
|
|
48
46
|
export declare const EVENT_RING_HEADER_BYTES = 16;
|
|
49
|
-
/** Fixed slot size
|
|
47
|
+
/** Fixed slot size, 1-byte opCode + 15-byte payload. Matches
|
|
50
48
|
* command ring exactly. */
|
|
51
49
|
export declare const EVENT_RING_SLOT_BYTES = 16;
|
|
52
50
|
/** Default ring capacity in slots. 256 × 16 B = 4 KiB of slot data
|
|
53
51
|
* plus 16 B header. Mirrors `COMMAND_RING_DEFAULT_CAPACITY_SLOTS`. */
|
|
54
52
|
export declare const EVENT_RING_DEFAULT_CAPACITY_SLOTS = 256;
|
|
55
|
-
/** Byte offsets within the ring header.
|
|
56
|
-
*
|
|
53
|
+
/** Byte offsets within the ring header. A reader on the module side mirrors
|
|
54
|
+
* these offsets, so a change here is an ABI change. */
|
|
57
55
|
export declare const EVENT_RING_HEADER_OFFSETS: {
|
|
58
56
|
readonly write_head: 0;
|
|
59
57
|
readonly read_head: 4;
|
|
60
58
|
readonly capacity_slots: 8;
|
|
61
59
|
readonly overflow_flag: 12;
|
|
62
60
|
};
|
|
63
|
-
/** Op-code
|
|
64
|
-
* (see file header). Event-def
|
|
65
|
-
*
|
|
61
|
+
/** Op-code `0` is reserved across the SAB layer as "empty slot"
|
|
62
|
+
* (see file header). Event-def ids start at 1, so a SAB-backed channel never
|
|
63
|
+
* writes a code that reads as an empty slot. */
|
|
66
64
|
export declare const EVENT_OP_EMPTY = 0;
|
|
67
65
|
/** Total bytes the ring occupies for `capacity_slots` slots. */
|
|
68
66
|
export declare function eventRingBytes(capacitySlots: number): number;
|
|
@@ -70,21 +68,21 @@ export declare class EventRingError extends Error {
|
|
|
70
68
|
constructor(message: string);
|
|
71
69
|
}
|
|
72
70
|
/** Initialise the ring header at `ringOff` in the SAB. Zeroes
|
|
73
|
-
* `write_head`, `read_head`, and `overflow_flag
|
|
71
|
+
* `write_head`, `read_head`, and `overflow_flag`. Sets `capacity_slots`.
|
|
74
72
|
* Slot bytes are left as-is (callers normally allocate the ring on a
|
|
75
73
|
* fresh, zero-initialised SAB). */
|
|
76
74
|
export declare function initEventRing(view: DataView, ringOff: number, capacitySlots: number): void;
|
|
77
|
-
export declare function
|
|
78
|
-
export declare function
|
|
79
|
-
export declare function
|
|
80
|
-
export declare function
|
|
75
|
+
export declare function eventRingWriteHead(view: DataView, ringOff: number): number;
|
|
76
|
+
export declare function eventRingReadHead(view: DataView, ringOff: number): number;
|
|
77
|
+
export declare function eventRingCapacitySlots(view: DataView, ringOff: number): number;
|
|
78
|
+
export declare function eventRingOverflow(view: DataView, ringOff: number): boolean;
|
|
81
79
|
/** Pending event count = `(write_head - read_head) mod 2^32`. */
|
|
82
80
|
export declare function pendingEventCount(view: DataView, ringOff: number): number;
|
|
83
81
|
/** Push an event into the ring. Returns `false` on overflow and sets
|
|
84
|
-
* the (sticky) overflow flag. `opCode` must be > 0
|
|
82
|
+
* the (sticky) overflow flag. `opCode` must be > 0, 0 is reserved as
|
|
85
83
|
* the empty-slot marker. Payload must be exactly 15 bytes. */
|
|
86
84
|
export declare function pushEvent(view: DataView, ringOff: number, opCode: number, payload: Uint8Array): boolean;
|
|
87
|
-
/** Read one event from the ring. Returns opCode (0 = empty
|
|
85
|
+
/** Read one event from the ring. Returns opCode (0 = empty, no event)
|
|
88
86
|
* and fills `outPayload` with 15 bytes. When 0 is returned,
|
|
89
87
|
* `outPayload` is untouched. */
|
|
90
88
|
export declare function popEvent(view: DataView, ringOff: number, outPayload: Uint8Array): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/event_ring.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"event_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/event_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;2BAC2B;AAC3B,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;sEACsE;AACtE,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD;uDACuD;AACvD,eAAO,MAAM,yBAAyB;;;;;CAK5B,CAAC;AAEX;;gDAEgD;AAChD,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE5D;AAMD,qBAAa,cAAe,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI3B;AAED;;;mCAGmC;AACnC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAU1F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;8DAE8D;AAC9D,wBAAgB,SAAS,CACxB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,GACjB,OAAO,CAkCT;AAED;;gCAEgC;AAChC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAiBxF;AAED;;iEAEiE;AACjE,wBAAgB,cAAc,CAC7B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,IAAI,GACpD,MAAM,CASR"}
|
|
@@ -2,23 +2,29 @@ import { ArchetypeSpec, ColumnStore } from './column_store.cjs';
|
|
|
2
2
|
import { BufferAllocator } from './allocator.cjs';
|
|
3
3
|
import { ArchetypeGrowSpec } from './layout_ops.cjs';
|
|
4
4
|
export interface ExtendPlan {
|
|
5
|
-
/** Archetypes to append. Each `archetype_id`
|
|
6
|
-
* `old.archetypes
|
|
5
|
+
/** Archetypes to append. Each `archetype_id` must be absent from
|
|
6
|
+
* `old.archetypes`. Collisions throw `StoreExtendError`. */
|
|
7
7
|
readonly newArchetypes: readonly ArchetypeSpec[];
|
|
8
8
|
/** Per-existing-archetype live row counts. Same shape as
|
|
9
9
|
* `GrowPlan.archetypes` so callers can reuse plan-building helpers.
|
|
10
|
-
* Omitted or `0` ⇒ no rows to copy (the archetype is empty).
|
|
11
|
-
|
|
10
|
+
* Omitted or `0` ⇒ no rows to copy (the archetype is empty).
|
|
11
|
+
*
|
|
12
|
+
* Only the realloc path reads it: the in-place path moves no rows. A
|
|
13
|
+
* caller that must walk every archetype to build the list can pass a
|
|
14
|
+
* function instead, and the list is then built only when the realloc path
|
|
15
|
+
* runs. The in-place path is the common one, and a list built for every
|
|
16
|
+
* extend made the cost of the N-th archetype grow with N. */
|
|
17
|
+
readonly existing?: readonly ArchetypeGrowSpec[] | (() => readonly ArchetypeGrowSpec[]);
|
|
12
18
|
}
|
|
13
19
|
export interface ExtendResult {
|
|
14
20
|
readonly store: ColumnStore;
|
|
15
21
|
readonly oldViewStamp: number;
|
|
16
22
|
readonly newViewStamp: number;
|
|
17
|
-
/** True when the in-place fast path
|
|
23
|
+
/** True when the in-place fast path was taken: the SAB
|
|
18
24
|
* instance is reused, existing column TypedArray views are unchanged,
|
|
19
25
|
* and callers may skip `refreshViews` on every pre-existing
|
|
20
26
|
* Archetype. False when the slow path ran (fresh SAB or wasm-memory
|
|
21
|
-
* grow with detached views)
|
|
27
|
+
* grow with detached views). A caller must then refresh every Archetype's
|
|
22
28
|
* SAB-backed columns from the returned `store` before reading them. */
|
|
23
29
|
readonly viewsPreserved: boolean;
|
|
24
30
|
}
|
|
@@ -28,12 +34,12 @@ export declare class StoreExtendError extends Error {
|
|
|
28
34
|
/** Allocate a new SAB sized for `old` + `plan.newArchetypes`, copy
|
|
29
35
|
* existing rows, bump `view_stamp`.
|
|
30
36
|
*
|
|
31
|
-
* `allocator
|
|
37
|
+
* `allocator`: pluggable buffer source forwarded into
|
|
32
38
|
* `createColumnStore`. When the allocator is `wasmMemoryAllocator`,
|
|
33
39
|
* `memory.grow` may detach `old`'s typed-array views before the copy
|
|
34
|
-
* runs
|
|
40
|
+
* runs, so live rows are snapshotted into heap `Uint8Array`s before the
|
|
35
41
|
* allocator call and restored into the new views afterwards. The cost
|
|
36
|
-
* is one extra heap allocation per live archetype-column
|
|
42
|
+
* is one extra heap allocation per live archetype-column. Negligible
|
|
37
43
|
* compared to the SAB walk itself. */
|
|
38
44
|
export declare function extendColumnStore(old: ColumnStore, plan: ExtendPlan, allocator?: BufferAllocator): ExtendResult;
|
|
39
45
|
//# sourceMappingURL=extend.d.ts.map
|