@oasys/oecs 0.5.4 → 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 +1223 -266
- package/README.md +217 -112
- package/dist/core/ecs/access_check.d.cts +29 -29
- package/dist/core/ecs/access_check.d.ts +29 -29
- package/dist/core/ecs/access_check.d.ts.map +1 -1
- package/dist/core/ecs/archetype.d.cts +217 -209
- package/dist/core/ecs/archetype.d.ts +217 -209
- 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 +33 -33
- package/dist/core/ecs/archetype_graph.d.ts +33 -33
- 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 +26 -26
- package/dist/core/ecs/command_log.d.ts +26 -26
- package/dist/core/ecs/command_log.d.ts.map +1 -1
- package/dist/core/ecs/component.d.cts +43 -42
- package/dist/core/ecs/component.d.ts +43 -42
- 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 +289 -270
- package/dist/core/ecs/ecs.d.ts +289 -270
- 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 +20 -18
- package/dist/core/ecs/entity_allocator.d.ts +20 -18
- package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
- package/dist/core/ecs/event.d.cts +36 -22
- package/dist/core/ecs/event.d.ts +36 -22
- 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 +32 -32
- package/dist/core/ecs/frame_trace.d.ts +32 -32
- package/dist/core/ecs/frame_trace.d.ts.map +1 -1
- package/dist/core/ecs/host_commands.d.cts +103 -85
- package/dist/core/ecs/host_commands.d.ts +103 -85
- package/dist/core/ecs/host_commands.d.ts.map +1 -1
- package/dist/core/ecs/index.d.cts +21 -11
- package/dist/core/ecs/index.d.ts +21 -11
- package/dist/core/ecs/index.d.ts.map +1 -1
- package/dist/core/ecs/observer.d.cts +39 -120
- package/dist/core/ecs/observer.d.ts +39 -120
- 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 +208 -578
- package/dist/core/ecs/query.d.ts +208 -578
- 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 +100 -39
- package/dist/core/ecs/ref.d.ts +100 -39
- package/dist/core/ecs/ref.d.ts.map +1 -1
- package/dist/core/ecs/relation.d.cts +101 -182
- package/dist/core/ecs/relation.d.ts +101 -182
- package/dist/core/ecs/relation.d.ts.map +1 -1
- package/dist/core/ecs/resource.d.cts +13 -13
- package/dist/core/ecs/resource.d.ts +13 -13
- package/dist/core/ecs/resource_registry.d.cts +5 -5
- package/dist/core/ecs/resource_registry.d.ts +5 -5
- 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 +91 -120
- package/dist/core/ecs/schedule.d.ts +91 -120
- 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 +108 -51
- package/dist/core/ecs/sparse_store.d.ts +108 -51
- package/dist/core/ecs/sparse_store.d.ts.map +1 -1
- package/dist/core/ecs/store.d.cts +527 -473
- package/dist/core/ecs/store.d.ts +527 -473
- package/dist/core/ecs/store.d.ts.map +1 -1
- package/dist/core/ecs/store_layout_listener.d.cts +6 -6
- package/dist/core/ecs/store_layout_listener.d.ts +6 -6
- 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 +146 -61
- package/dist/core/ecs/system.d.ts +146 -61
- 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 +82 -6
- package/dist/core/ecs/utils/error.d.ts +82 -6
- 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 +44 -44
- package/dist/core/store/action_ring.d.ts +44 -44
- package/dist/core/store/action_ring.d.ts.map +1 -1
- package/dist/core/store/allocator.d.cts +149 -95
- package/dist/core/store/allocator.d.ts +149 -95
- package/dist/core/store/allocator.d.ts.map +1 -1
- package/dist/core/store/buffer_backed_column.d.cts +17 -17
- package/dist/core/store/buffer_backed_column.d.ts +17 -17
- package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
- package/dist/core/store/column_store.d.cts +124 -86
- package/dist/core/store/column_store.d.ts +124 -86
- 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 +36 -39
- package/dist/core/store/command_ring.d.ts +36 -39
- package/dist/core/store/command_ring.d.ts.map +1 -1
- package/dist/core/store/descriptor.d.cts +34 -17
- package/dist/core/store/descriptor.d.ts +34 -17
- 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 +36 -38
- package/dist/core/store/event_ring.d.ts +36 -38
- package/dist/core/store/event_ring.d.ts.map +1 -1
- package/dist/core/store/extend.d.cts +13 -7
- package/dist/core/store/extend.d.ts +13 -7
- package/dist/core/store/extend.d.ts.map +1 -1
- package/dist/core/store/grow.d.cts +2 -2
- package/dist/core/store/grow.d.ts +2 -2
- package/dist/core/store/grow.d.ts.map +1 -1
- package/dist/core/store/header.d.cts +31 -27
- package/dist/core/store/header.d.ts +31 -27
- 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 +71 -62
- package/dist/core/store/layout_ops.d.ts +71 -62
- 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 +12 -12
- package/dist/core/store/state_hash.d.ts +12 -12
- 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 +15 -10
- package/dist/index.d.ts +15 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.development.cjs +1 -1
- package/dist/index.development.js +5804 -5203
- package/dist/index.js +5323 -4764
- 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 +54 -54
- package/dist/{extensions → plugins}/editor/editor.d.ts +54 -54
- package/dist/plugins/editor/editor.d.ts.map +1 -0
- package/dist/{extensions → plugins}/editor/field_handle.d.cts +12 -12
- package/dist/{extensions → plugins}/editor/field_handle.d.ts +12 -12
- 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} +81 -64
- package/dist/{extensions/editor/index.js → plugins/editor.js} +81 -64
- 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 +85 -97
- package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +85 -97
- 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 +16 -15
- package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +16 -15
- 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 +3 -3
- package/dist/version.d.ts +3 -3
- 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-BlR3oZ3x.js +0 -2406
- package/dist/host_commands-C2cpU3yC.cjs +0 -1
- package/dist/internal-BoxWl4dG.js +0 -2565
- package/dist/internal-CGBEwfeB.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-Bs39EPh1.js +0 -150
- package/dist/shallow-C5YmTbtb.cjs +0 -1
- package/dist/shallow-CiFC70Dz.js +0 -159
- package/dist/shallow-DQ8aG51_.cjs +0 -1
- package/dist/shared-B4v0L1cw.js +0 -109
- package/dist/shared-DU78k0pU.cjs +0 -1
- package/dist/topological_sort-BDvEyb9W.cjs +0 -1
- package/dist/topological_sort-DK6EjpWa.js +0 -135
- package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
- package/dist/typed_arrays-DIVwVy5_.js +0 -258
|
@@ -1,71 +1,71 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Action ring
|
|
2
|
+
* Action ring, a main-thread producer and worker-thread consumer SPSC ring
|
|
3
3
|
* for client input intents (`send_action`-shaped bytes).
|
|
4
4
|
*
|
|
5
5
|
* Same on-the-wire shape as `command_ring.ts`, but with two practical
|
|
6
6
|
* differences:
|
|
7
7
|
*
|
|
8
|
-
* 1. Producer
|
|
8
|
+
* 1. Producer and consumer roles flip, the action ring is main → worker,
|
|
9
9
|
* whereas the command ring is sim → host.
|
|
10
10
|
* 2. Slot payload carries a `length` prefix because client actions are
|
|
11
11
|
* variable-width (the encoded bytes that would normally go straight
|
|
12
|
-
* to the WebSocket). `payload[0]` is the length in bytes
|
|
12
|
+
* to the WebSocket). `payload[0]` is the length in bytes. Bytes
|
|
13
13
|
* `[1..1+length)` are the action payload itself.
|
|
14
14
|
*
|
|
15
15
|
* Layout (identical to command ring header):
|
|
16
16
|
*
|
|
17
|
-
* [ write_head: u32 ] monotonic
|
|
17
|
+
* [ write_head: u32 ] monotonic. Modulo `capacity_slots` for slot
|
|
18
18
|
* [ read_head: u32 ] monotonic
|
|
19
19
|
* [ capacity: u32 ] slot count, power-of-two
|
|
20
|
-
* [ overflow: u32 ] 0 = OK
|
|
20
|
+
* [ overflow: u32 ] 0 = OK, 1 = ring exhausted (producer side)
|
|
21
21
|
* [ slot 0: 16 B ] length: u8, payload: [15]u8
|
|
22
22
|
* [ slot 1: 16 B ] ...
|
|
23
23
|
*
|
|
24
24
|
* SPSC contract:
|
|
25
|
-
* - Producer: main thread, from
|
|
26
|
-
* one entry per user action
|
|
27
|
-
* - Consumer:
|
|
28
|
-
*
|
|
29
|
-
* - Today's consumer
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
25
|
+
* - Producer: the main thread, from the host's action-send call. It pushes
|
|
26
|
+
* one entry per user action, and `Atomics.store`s `write_head` after each.
|
|
27
|
+
* - Consumer: the worker, drained on each apply boundary. It `Atomics.store`s
|
|
28
|
+
* `read_head` after each pop.
|
|
29
|
+
* - Today's consumer only observes (it logs or counts in DEV), because the
|
|
30
|
+
* host's own send path still carries the action. A later change moves
|
|
31
|
+
* reconciliation into the worker, and the ring becomes load-bearing for
|
|
32
|
+
* client-side prediction.
|
|
33
33
|
*
|
|
34
34
|
* Overflow:
|
|
35
|
-
* - If main writes a slot when
|
|
36
|
-
* it sets `overflow = 1` and the
|
|
37
|
-
* send path is independent
|
|
38
|
-
* overflow
|
|
35
|
+
* - If the main thread writes a slot when
|
|
36
|
+
* `(write_head - read_head) === capacity`, it sets `overflow = 1` and the
|
|
37
|
+
* push returns `false`. The host's own send path is independent and ran
|
|
38
|
+
* first, so an overflow does not drop the action. It only drops worker
|
|
39
39
|
* observability for that one entry.
|
|
40
40
|
*
|
|
41
|
-
* Atomics: the head fields
|
|
42
|
-
* cross-thread synchronization edge
|
|
43
|
-
* thread, the consumer in the
|
|
41
|
+
* Atomics: the head fields `write_head` and `read_head` are the
|
|
42
|
+
* cross-thread synchronization edge, the producer runs on the main
|
|
43
|
+
* thread, the consumer in the worker, and both alias the same
|
|
44
44
|
* `SharedArrayBuffer`. The producer writes the slot bytes, then
|
|
45
|
-
* `Atomics.store`s `write_head
|
|
45
|
+
* `Atomics.store`s `write_head`. The consumer `Atomics.load`s
|
|
46
46
|
* `write_head` before touching the slot, reads it, then `Atomics.store`s
|
|
47
47
|
* `read_head`. These SeqCst ops establish the happens-before that a
|
|
48
48
|
* plain `DataView` write does not under the JS memory model:
|
|
49
49
|
* without them the worker could observe a bumped `write_head` before the
|
|
50
50
|
* producer's `setUint8(len)` + payload `set()` are visible and read a
|
|
51
|
-
* torn
|
|
51
|
+
* torn or stale slot, and the producer could read a stale `read_head`
|
|
52
52
|
* (false overflow, or overwrite a slot mid-read). Slot payload bytes
|
|
53
|
-
* stay on plain `DataView`
|
|
54
|
-
* them, so no per-byte atomic is needed. A
|
|
55
|
-
* `Atomics.wait
|
|
56
|
-
* instead of polling
|
|
53
|
+
* stay on plain `DataView` and `Uint8Array` ops, the head Atomics fence
|
|
54
|
+
* them, so no per-byte atomic is needed. A later change may still add an
|
|
55
|
+
* `Atomics.wait` and `Atomics.notify` pair so the worker can block between
|
|
56
|
+
* actions instead of polling. That is additive, with no layout shift.
|
|
57
57
|
*/
|
|
58
58
|
/** Total bytes for the ring header. Identical to `command_ring`. */
|
|
59
59
|
export declare const ACTION_RING_HEADER_BYTES = 16;
|
|
60
|
-
/** Fixed slot size
|
|
60
|
+
/** Fixed slot size, 1-byte length + 15-byte payload. */
|
|
61
61
|
export declare const ACTION_RING_SLOT_BYTES = 16;
|
|
62
|
-
/** Default ring capacity in slots.
|
|
63
|
-
*
|
|
64
|
-
* header. */
|
|
62
|
+
/** Default ring capacity in slots. It holds a burst of clicks at the high end
|
|
63
|
+
* of a human input rate, over the frames a host takes to drain it. The region
|
|
64
|
+
* is the slot count times `ACTION_RING_SLOT_BYTES`, plus the header. */
|
|
65
65
|
export declare const ACTION_RING_DEFAULT_CAPACITY_SLOTS = 256;
|
|
66
|
-
/** Max payload bytes per slot
|
|
67
|
-
*
|
|
68
|
-
*
|
|
66
|
+
/** Max payload bytes per slot, the slot size minus the length prefix. An
|
|
67
|
+
* action a host sends encodes to a few bytes, so the slot holds one with
|
|
68
|
+
* room to spare. */
|
|
69
69
|
export declare const ACTION_RING_MAX_PAYLOAD_BYTES: number;
|
|
70
70
|
/** Byte offsets within the ring header. Matches `command_ring` so a
|
|
71
71
|
* future shared helper can normalise across both rings without per-ring
|
|
@@ -82,7 +82,7 @@ export declare class ActionRingError extends Error {
|
|
|
82
82
|
constructor(message: string);
|
|
83
83
|
}
|
|
84
84
|
/** Initialise the ring header at `ringOff` in the SAB. Zeroes heads
|
|
85
|
-
* and the overflow flag
|
|
85
|
+
* and the overflow flag. Sets `capacity_slots`. Slot bytes are left
|
|
86
86
|
* as-is (callers normally allocate the ring on a zero-initialised SAB). */
|
|
87
87
|
export declare function initActionRing(view: DataView, ringOff: number, capacitySlots: number): void;
|
|
88
88
|
/** Read live ring-header fields. Heads are stored signed but returned
|
|
@@ -95,8 +95,8 @@ export declare function actionRingOverflow(view: DataView, ringOff: number): boo
|
|
|
95
95
|
/** Pending entry count = `(write_head - read_head) mod 2^32`. */
|
|
96
96
|
export declare function pendingActionCount(view: DataView, ringOff: number): number;
|
|
97
97
|
/** Push an action into the ring. `payload` must be in
|
|
98
|
-
* `[1, ACTION_RING_MAX_PAYLOAD_BYTES]
|
|
99
|
-
* ones
|
|
98
|
+
* `[1, ACTION_RING_MAX_PAYLOAD_BYTES]`. Longer payloads, and **empty**
|
|
99
|
+
* ones, are an `ActionRingError` (the producer is the only caller and it
|
|
100
100
|
* can size its inputs ahead of time). The zero-length rejection closes the
|
|
101
101
|
* lower-bound footgun: a 0-byte slot is indistinguishable from
|
|
102
102
|
* `popAction`'s empty-ring sentinel (`0`), so admitting one would let it
|
|
@@ -106,29 +106,29 @@ export declare function pendingActionCount(view: DataView, ringOff: number): num
|
|
|
106
106
|
export declare function pushAction(view: DataView, ringOff: number, payload: Uint8Array): boolean;
|
|
107
107
|
/** Pop one action from the ring. Returns the byte length written into
|
|
108
108
|
* `outPayload`, or `0` if the ring was empty. `outPayload` must be at
|
|
109
|
-
* least `ACTION_RING_MAX_PAYLOAD_BYTES
|
|
109
|
+
* least `ACTION_RING_MAX_PAYLOAD_BYTES`. Only the first `length` bytes
|
|
110
110
|
* are meaningful after a non-zero return.
|
|
111
111
|
*
|
|
112
|
-
*
|
|
112
|
+
* A `0` return is ambiguous. It means "ring empty" or "a 0-byte
|
|
113
113
|
* slot" (the latter only reachable via ABI-skew, since `pushAction`
|
|
114
114
|
* rejects empty payloads). Callers that loop must decide emptiness from
|
|
115
|
-
* the heads
|
|
116
|
-
* from this return value
|
|
115
|
+
* the heads, either `pendingActionCount` or `write_head === read_head`, and
|
|
116
|
+
* not from this return value. See `drainActionRing`. */
|
|
117
117
|
export declare function popAction(view: DataView, ringOff: number, outPayload: Uint8Array): number;
|
|
118
118
|
/** Drain every pending action, invoking `handler(payload)` per entry.
|
|
119
119
|
* The `payload` passed to the handler is a freshly-copied
|
|
120
120
|
* `Uint8Array(length)` so handlers can hold it past the next pop without
|
|
121
121
|
* aliasing the scratch buffer. Returns the number of actions drained.
|
|
122
122
|
*
|
|
123
|
-
* Termination is decided from the heads (`pendingActionCount`),
|
|
124
|
-
* `popAction`'s return value. A genuine 0-byte slot returns `0
|
|
125
|
-
* value `popAction` yields on an empty ring
|
|
123
|
+
* Termination is decided from the heads (`pendingActionCount`), not from
|
|
124
|
+
* `popAction`'s return value. A genuine 0-byte slot returns `0`, the same
|
|
125
|
+
* value `popAction` yields on an empty ring, so terminating on `len === 0`
|
|
126
126
|
* would silently consume the zero-length entry and strand everything queued
|
|
127
127
|
* behind it for a tick. The heads check is SPSC-safe: this consumer
|
|
128
128
|
* is the sole reader, so a non-zero pending count cannot race to empty before
|
|
129
129
|
* the `popAction` below. */
|
|
130
130
|
export declare function drainActionRing(view: DataView, ringOff: number, handler: (payload: Uint8Array) => void): number;
|
|
131
|
-
/** Clear the overflow flag. The producer sets it on a failed push
|
|
131
|
+
/** Clear the overflow flag. The producer sets it on a failed push. The
|
|
132
132
|
* consumer can reset it once it has observed and logged the condition,
|
|
133
133
|
* so a single overflow doesn't keep firing dev assertions. */
|
|
134
134
|
export declare function clearActionRingOverflow(view: DataView, ringOff: number): void;
|
|
@@ -1,71 +1,71 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Action ring
|
|
2
|
+
* Action ring, a main-thread producer and worker-thread consumer SPSC ring
|
|
3
3
|
* for client input intents (`send_action`-shaped bytes).
|
|
4
4
|
*
|
|
5
5
|
* Same on-the-wire shape as `command_ring.ts`, but with two practical
|
|
6
6
|
* differences:
|
|
7
7
|
*
|
|
8
|
-
* 1. Producer
|
|
8
|
+
* 1. Producer and consumer roles flip, the action ring is main → worker,
|
|
9
9
|
* whereas the command ring is sim → host.
|
|
10
10
|
* 2. Slot payload carries a `length` prefix because client actions are
|
|
11
11
|
* variable-width (the encoded bytes that would normally go straight
|
|
12
|
-
* to the WebSocket). `payload[0]` is the length in bytes
|
|
12
|
+
* to the WebSocket). `payload[0]` is the length in bytes. Bytes
|
|
13
13
|
* `[1..1+length)` are the action payload itself.
|
|
14
14
|
*
|
|
15
15
|
* Layout (identical to command ring header):
|
|
16
16
|
*
|
|
17
|
-
* [ write_head: u32 ] monotonic
|
|
17
|
+
* [ write_head: u32 ] monotonic. Modulo `capacity_slots` for slot
|
|
18
18
|
* [ read_head: u32 ] monotonic
|
|
19
19
|
* [ capacity: u32 ] slot count, power-of-two
|
|
20
|
-
* [ overflow: u32 ] 0 = OK
|
|
20
|
+
* [ overflow: u32 ] 0 = OK, 1 = ring exhausted (producer side)
|
|
21
21
|
* [ slot 0: 16 B ] length: u8, payload: [15]u8
|
|
22
22
|
* [ slot 1: 16 B ] ...
|
|
23
23
|
*
|
|
24
24
|
* SPSC contract:
|
|
25
|
-
* - Producer: main thread, from
|
|
26
|
-
* one entry per user action
|
|
27
|
-
* - Consumer:
|
|
28
|
-
*
|
|
29
|
-
* - Today's consumer
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
25
|
+
* - Producer: the main thread, from the host's action-send call. It pushes
|
|
26
|
+
* one entry per user action, and `Atomics.store`s `write_head` after each.
|
|
27
|
+
* - Consumer: the worker, drained on each apply boundary. It `Atomics.store`s
|
|
28
|
+
* `read_head` after each pop.
|
|
29
|
+
* - Today's consumer only observes (it logs or counts in DEV), because the
|
|
30
|
+
* host's own send path still carries the action. A later change moves
|
|
31
|
+
* reconciliation into the worker, and the ring becomes load-bearing for
|
|
32
|
+
* client-side prediction.
|
|
33
33
|
*
|
|
34
34
|
* Overflow:
|
|
35
|
-
* - If main writes a slot when
|
|
36
|
-
* it sets `overflow = 1` and the
|
|
37
|
-
* send path is independent
|
|
38
|
-
* overflow
|
|
35
|
+
* - If the main thread writes a slot when
|
|
36
|
+
* `(write_head - read_head) === capacity`, it sets `overflow = 1` and the
|
|
37
|
+
* push returns `false`. The host's own send path is independent and ran
|
|
38
|
+
* first, so an overflow does not drop the action. It only drops worker
|
|
39
39
|
* observability for that one entry.
|
|
40
40
|
*
|
|
41
|
-
* Atomics: the head fields
|
|
42
|
-
* cross-thread synchronization edge
|
|
43
|
-
* thread, the consumer in the
|
|
41
|
+
* Atomics: the head fields `write_head` and `read_head` are the
|
|
42
|
+
* cross-thread synchronization edge, the producer runs on the main
|
|
43
|
+
* thread, the consumer in the worker, and both alias the same
|
|
44
44
|
* `SharedArrayBuffer`. The producer writes the slot bytes, then
|
|
45
|
-
* `Atomics.store`s `write_head
|
|
45
|
+
* `Atomics.store`s `write_head`. The consumer `Atomics.load`s
|
|
46
46
|
* `write_head` before touching the slot, reads it, then `Atomics.store`s
|
|
47
47
|
* `read_head`. These SeqCst ops establish the happens-before that a
|
|
48
48
|
* plain `DataView` write does not under the JS memory model:
|
|
49
49
|
* without them the worker could observe a bumped `write_head` before the
|
|
50
50
|
* producer's `setUint8(len)` + payload `set()` are visible and read a
|
|
51
|
-
* torn
|
|
51
|
+
* torn or stale slot, and the producer could read a stale `read_head`
|
|
52
52
|
* (false overflow, or overwrite a slot mid-read). Slot payload bytes
|
|
53
|
-
* stay on plain `DataView`
|
|
54
|
-
* them, so no per-byte atomic is needed. A
|
|
55
|
-
* `Atomics.wait
|
|
56
|
-
* instead of polling
|
|
53
|
+
* stay on plain `DataView` and `Uint8Array` ops, the head Atomics fence
|
|
54
|
+
* them, so no per-byte atomic is needed. A later change may still add an
|
|
55
|
+
* `Atomics.wait` and `Atomics.notify` pair so the worker can block between
|
|
56
|
+
* actions instead of polling. That is additive, with no layout shift.
|
|
57
57
|
*/
|
|
58
58
|
/** Total bytes for the ring header. Identical to `command_ring`. */
|
|
59
59
|
export declare const ACTION_RING_HEADER_BYTES = 16;
|
|
60
|
-
/** Fixed slot size
|
|
60
|
+
/** Fixed slot size, 1-byte length + 15-byte payload. */
|
|
61
61
|
export declare const ACTION_RING_SLOT_BYTES = 16;
|
|
62
|
-
/** Default ring capacity in slots.
|
|
63
|
-
*
|
|
64
|
-
* header. */
|
|
62
|
+
/** Default ring capacity in slots. It holds a burst of clicks at the high end
|
|
63
|
+
* of a human input rate, over the frames a host takes to drain it. The region
|
|
64
|
+
* is the slot count times `ACTION_RING_SLOT_BYTES`, plus the header. */
|
|
65
65
|
export declare const ACTION_RING_DEFAULT_CAPACITY_SLOTS = 256;
|
|
66
|
-
/** Max payload bytes per slot
|
|
67
|
-
*
|
|
68
|
-
*
|
|
66
|
+
/** Max payload bytes per slot, the slot size minus the length prefix. An
|
|
67
|
+
* action a host sends encodes to a few bytes, so the slot holds one with
|
|
68
|
+
* room to spare. */
|
|
69
69
|
export declare const ACTION_RING_MAX_PAYLOAD_BYTES: number;
|
|
70
70
|
/** Byte offsets within the ring header. Matches `command_ring` so a
|
|
71
71
|
* future shared helper can normalise across both rings without per-ring
|
|
@@ -82,7 +82,7 @@ export declare class ActionRingError extends Error {
|
|
|
82
82
|
constructor(message: string);
|
|
83
83
|
}
|
|
84
84
|
/** Initialise the ring header at `ringOff` in the SAB. Zeroes heads
|
|
85
|
-
* and the overflow flag
|
|
85
|
+
* and the overflow flag. Sets `capacity_slots`. Slot bytes are left
|
|
86
86
|
* as-is (callers normally allocate the ring on a zero-initialised SAB). */
|
|
87
87
|
export declare function initActionRing(view: DataView, ringOff: number, capacitySlots: number): void;
|
|
88
88
|
/** Read live ring-header fields. Heads are stored signed but returned
|
|
@@ -95,8 +95,8 @@ export declare function actionRingOverflow(view: DataView, ringOff: number): boo
|
|
|
95
95
|
/** Pending entry count = `(write_head - read_head) mod 2^32`. */
|
|
96
96
|
export declare function pendingActionCount(view: DataView, ringOff: number): number;
|
|
97
97
|
/** Push an action into the ring. `payload` must be in
|
|
98
|
-
* `[1, ACTION_RING_MAX_PAYLOAD_BYTES]
|
|
99
|
-
* ones
|
|
98
|
+
* `[1, ACTION_RING_MAX_PAYLOAD_BYTES]`. Longer payloads, and **empty**
|
|
99
|
+
* ones, are an `ActionRingError` (the producer is the only caller and it
|
|
100
100
|
* can size its inputs ahead of time). The zero-length rejection closes the
|
|
101
101
|
* lower-bound footgun: a 0-byte slot is indistinguishable from
|
|
102
102
|
* `popAction`'s empty-ring sentinel (`0`), so admitting one would let it
|
|
@@ -106,29 +106,29 @@ export declare function pendingActionCount(view: DataView, ringOff: number): num
|
|
|
106
106
|
export declare function pushAction(view: DataView, ringOff: number, payload: Uint8Array): boolean;
|
|
107
107
|
/** Pop one action from the ring. Returns the byte length written into
|
|
108
108
|
* `outPayload`, or `0` if the ring was empty. `outPayload` must be at
|
|
109
|
-
* least `ACTION_RING_MAX_PAYLOAD_BYTES
|
|
109
|
+
* least `ACTION_RING_MAX_PAYLOAD_BYTES`. Only the first `length` bytes
|
|
110
110
|
* are meaningful after a non-zero return.
|
|
111
111
|
*
|
|
112
|
-
*
|
|
112
|
+
* A `0` return is ambiguous. It means "ring empty" or "a 0-byte
|
|
113
113
|
* slot" (the latter only reachable via ABI-skew, since `pushAction`
|
|
114
114
|
* rejects empty payloads). Callers that loop must decide emptiness from
|
|
115
|
-
* the heads
|
|
116
|
-
* from this return value
|
|
115
|
+
* the heads, either `pendingActionCount` or `write_head === read_head`, and
|
|
116
|
+
* not from this return value. See `drainActionRing`. */
|
|
117
117
|
export declare function popAction(view: DataView, ringOff: number, outPayload: Uint8Array): number;
|
|
118
118
|
/** Drain every pending action, invoking `handler(payload)` per entry.
|
|
119
119
|
* The `payload` passed to the handler is a freshly-copied
|
|
120
120
|
* `Uint8Array(length)` so handlers can hold it past the next pop without
|
|
121
121
|
* aliasing the scratch buffer. Returns the number of actions drained.
|
|
122
122
|
*
|
|
123
|
-
* Termination is decided from the heads (`pendingActionCount`),
|
|
124
|
-
* `popAction`'s return value. A genuine 0-byte slot returns `0
|
|
125
|
-
* value `popAction` yields on an empty ring
|
|
123
|
+
* Termination is decided from the heads (`pendingActionCount`), not from
|
|
124
|
+
* `popAction`'s return value. A genuine 0-byte slot returns `0`, the same
|
|
125
|
+
* value `popAction` yields on an empty ring, so terminating on `len === 0`
|
|
126
126
|
* would silently consume the zero-length entry and strand everything queued
|
|
127
127
|
* behind it for a tick. The heads check is SPSC-safe: this consumer
|
|
128
128
|
* is the sole reader, so a non-zero pending count cannot race to empty before
|
|
129
129
|
* the `popAction` below. */
|
|
130
130
|
export declare function drainActionRing(view: DataView, ringOff: number, handler: (payload: Uint8Array) => void): number;
|
|
131
|
-
/** Clear the overflow flag. The producer sets it on a failed push
|
|
131
|
+
/** Clear the overflow flag. The producer sets it on a failed push. The
|
|
132
132
|
* consumer can reset it once it has observed and logged the condition,
|
|
133
133
|
* so a single overflow doesn't keep firing dev assertions. */
|
|
134
134
|
export declare function clearActionRingOverflow(view: DataView, ringOff: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/action_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,
|
|
1
|
+
{"version":3,"file":"action_ring.d.ts","sourceRoot":"","sources":["../../../src/core/store/action_ring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;wEAEwE;AACxE,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD;;oBAEoB;AACpB,eAAO,MAAM,6BAA6B,QAA6B,CAAC;AAExE;;iBAEiB;AACjB,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAwBX,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE7D;AAMD,qBAAa,eAAgB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI3B;AAED;;2EAE2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAiB3F;AAED;;mDAEmD;AACnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AACD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/E;AACD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;;0CAQ0C;AAC1C,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CA0CxF;AAED;;;;;;;;;wDASwD;AACxD,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CA4BzF;AAED;;;;;;;;;;;4BAW4B;AAC5B,wBAAgB,eAAe,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GACpC,MAAM,CAUR;AAED;;8DAE8D;AAC9D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7E"}
|