@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
|
@@ -19,12 +19,12 @@ export type FieldValues<S extends ComponentSchema> = {
|
|
|
19
19
|
readonly [K in keyof S]: number;
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
|
-
* Values argument tuple for attaching a component of schema `S
|
|
22
|
+
* Values argument tuple for attaching a component of schema `S`, empty for a
|
|
23
23
|
* tag, a single optional partial-values map otherwise. A tag schema
|
|
24
24
|
* (`Record<string, never>`) would otherwise degenerate: `keyof` an
|
|
25
25
|
* index-signature record is `string`, so `Partial<FieldValues<…>>` collapses to
|
|
26
26
|
* `Record<string, number>` and `Frozen({ anything: 1 })` compiles. The
|
|
27
|
-
* conditional forbids values on tags outright
|
|
27
|
+
* conditional forbids values on tags outright. A schema-erased `ComponentDef`
|
|
28
28
|
* falls into the valued branch, so untyped call sites keep the loose shape.
|
|
29
29
|
*/
|
|
30
30
|
export type ValuesArg<S extends ComponentSchema> = S extends Record<string, never> ? [] : [values?: Partial<FieldValues<S>>];
|
|
@@ -32,16 +32,16 @@ export type ValuesArg<S extends ComponentSchema> = S extends Record<string, neve
|
|
|
32
32
|
* `FieldValues` for APIs where the values object is required and complete
|
|
33
33
|
* (`addComponent`'s valued overload, the host-seam `SpawnEntry`). Guards the
|
|
34
34
|
* same tag degeneracy as `ValuesArg`: a tag accepts only the empty object
|
|
35
|
-
* (`Record<string, never
|
|
35
|
+
* (`Record<string, never>`, every property typed `never`), so
|
|
36
36
|
* `addComponent(e, Frozen, { x: 1 })` is a compile error while the
|
|
37
37
|
* tag-overload-less call sites can still pass `{}`.
|
|
38
38
|
*/
|
|
39
39
|
export type CompleteFieldValues<S extends ComponentSchema> = S extends Record<string, never> ? Record<string, never> : FieldValues<S>;
|
|
40
40
|
/**
|
|
41
41
|
* Trailing-argument tuple for the attach surfaces (`ctx.commands.add`'s
|
|
42
|
-
* explicit-values form, `ctx.addSparse`): a tag takes
|
|
43
|
-
* complete one. Encodes the former tag
|
|
44
|
-
* which the typed system seam needs
|
|
42
|
+
* explicit-values form, `ctx.addSparse`): a tag takes no values argument, a valued schema requires a
|
|
43
|
+
* complete one. Encodes the former tag and valued overload pair as one signature,
|
|
44
|
+
* which the typed system seam needs, its `def` parameter is a single
|
|
45
45
|
* declared-access-constrained type param, and per-schema overloads would
|
|
46
46
|
* re-introduce the tag-vs-valued split on top of it.
|
|
47
47
|
*/
|
|
@@ -51,10 +51,10 @@ export type ColumnsForSchema<S extends ComponentSchema> = {
|
|
|
51
51
|
readonly [K in keyof S]: TagToTypedArray[S[K]];
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
54
|
-
* Mutable sibling of `ColumnsForSchema
|
|
55
|
-
* back by `
|
|
54
|
+
* Mutable sibling of `ColumnsForSchema`, the field-keyed column group handed
|
|
55
|
+
* back by `forEachChunk`'s `cols.mut(def)` (no `readonly`, since the whole point
|
|
56
56
|
* is in-place writes). The change-tick is stamped once when the group is
|
|
57
|
-
* resolved, so the per-row loop is plain typed-array indexing
|
|
57
|
+
* resolved, so the per-row loop is plain typed-array indexing.
|
|
58
58
|
*/
|
|
59
59
|
export type MutableColumnsForSchema<S extends ComponentSchema> = {
|
|
60
60
|
[K in keyof S]: TagToTypedArray[S[K]];
|
|
@@ -62,28 +62,28 @@ export type MutableColumnsForSchema<S extends ComponentSchema> = {
|
|
|
62
62
|
declare const __schema: unique symbol;
|
|
63
63
|
/**
|
|
64
64
|
* A component handle. **Callable**: `Pos({ x, y })` produces a `Bundle` (omitted
|
|
65
|
-
* fields zero-fill at attach), so one varargs shape
|
|
66
|
-
* Vel({vx:1}), IsEnemy)
|
|
67
|
-
* `Pos` (uncalled) still stands in for a tag
|
|
65
|
+
* fields zero-fill at attach), so one varargs shape, `spawn(Pos({x,y}),
|
|
66
|
+
* Vel({vx:1}), IsEnemy)`, replaces the older incompatible attach shapes. A bare
|
|
67
|
+
* `Pos` (uncalled) still stands in for a tag, or for all-zero values, wherever a
|
|
68
68
|
* `BundleOrDef` is accepted.
|
|
69
69
|
*
|
|
70
70
|
* The numeric component id lives on `.id` (registration order). Consumers treat
|
|
71
|
-
* the def as an opaque handle
|
|
71
|
+
* the def as an opaque handle. Internal code reads `def.id` where it needs the
|
|
72
72
|
* raw id. The call signature's `S` makes `ComponentDef<{x:"f64"}>` distinct from
|
|
73
73
|
* `ComponentDef<{vx:"f64"}>`.
|
|
74
74
|
*
|
|
75
|
-
* The optional `[__schema]` slot never exists at runtime
|
|
76
|
-
* covariant tuple position so that a
|
|
75
|
+
* The optional `[__schema]` slot never exists at runtime. It re-states `S` in a
|
|
76
|
+
* covariant tuple position so that a tag def type is not a universal assignment
|
|
77
77
|
* sink. Through the call signature alone every def is assignable to
|
|
78
78
|
* `ComponentDef<Record<string, never>>` (the tag callable takes no required
|
|
79
|
-
* args and any `Bundle` satisfies its return), which would let
|
|
79
|
+
* args and any `Bundle` satisfies its return), which would let one tag in a
|
|
80
80
|
* system's declared-access union admit every component at compile time
|
|
81
|
-
* (
|
|
81
|
+
* (`DeclaredRead` and friends in system.ts). With the slot, a
|
|
82
82
|
* valued schema is not assignable to the tag schema (`"f64" ⊀ never`), while
|
|
83
83
|
* schema erasure (`ComponentDef<S>` → bare `ComponentDef`) still works because
|
|
84
84
|
* every schema is assignable to `ComponentSchema`.
|
|
85
85
|
*
|
|
86
|
-
* Build one with `
|
|
86
|
+
* Build one with `createComponentDef`. Never construct by hand.
|
|
87
87
|
*/
|
|
88
88
|
export interface ComponentDef<S extends ComponentSchema = ComponentSchema> {
|
|
89
89
|
(...values: ValuesArg<S>): Bundle<S>;
|
|
@@ -92,17 +92,17 @@ export interface ComponentDef<S extends ComponentSchema = ComponentSchema> {
|
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
94
|
* Recover a def's schema type: `SchemaOf<typeof Pos>` is `{x:"f64", y:"f64"}`.
|
|
95
|
-
* The typed `SystemContext` methods (
|
|
95
|
+
* The typed `SystemContext` methods (system.ts) constrain their `def`
|
|
96
96
|
* parameter to the system's declared-access union and use this to type the
|
|
97
97
|
* field argument, in place of taking `ComponentDef<S>` directly.
|
|
98
98
|
*/
|
|
99
99
|
export type SchemaOf<D> = D extends ComponentDef<infer S extends ComponentSchema> ? S : never;
|
|
100
100
|
/**
|
|
101
|
-
* `unknown` if `D` is one of the query's declared terms, else an error tuple
|
|
102
|
-
* the query-seam sibling of system.ts's `DeclaredRead
|
|
103
|
-
*
|
|
101
|
+
* `unknown` if `D` is one of the query's declared terms, else an error tuple,
|
|
102
|
+
* the query-seam sibling of system.ts's `DeclaredRead`.
|
|
103
|
+
* `Query.forEachChunk`'s cursor and `ArchetypeView`'s column
|
|
104
104
|
* accessors intersect this into their `def` parameter so fetching a component
|
|
105
|
-
* that is
|
|
105
|
+
* that is not a term of the iterating query fails to compile (previously
|
|
106
106
|
* caught only by the dev-mode access check, and only when the system's
|
|
107
107
|
* declaration was itself wrong). Same encoding rules as the system asserts:
|
|
108
108
|
* stable `D extends ComponentDef<any>` constraints keep instantiations
|
|
@@ -110,15 +110,15 @@ export type SchemaOf<D> = D extends ComponentDef<infer S extends ComponentSchema
|
|
|
110
110
|
*/
|
|
111
111
|
export type DeclaredQueryTerm<Defs extends readonly ComponentDef<any>[], D> = [D] extends [
|
|
112
112
|
Defs[number]
|
|
113
|
-
] ? unknown : ["component is not a term of this query
|
|
114
|
-
/** Options bag accepted by `registerComponent`
|
|
113
|
+
] ? unknown : ["component is not a term of this query, add it with .and(...)", D];
|
|
114
|
+
/** Options bag accepted by `registerComponent` and `registerSparseComponent`. */
|
|
115
115
|
export interface ComponentRegisterOptions {
|
|
116
|
-
/** Debug label for diagnostics
|
|
116
|
+
/** Debug label for diagnostics, errors then read `'Pos' (component 5)`
|
|
117
117
|
* instead of `component 5`. Never affects behaviour, layout, or hashing. */
|
|
118
118
|
readonly name?: string;
|
|
119
119
|
}
|
|
120
120
|
/**
|
|
121
|
-
* Schema-erased component handle
|
|
121
|
+
* Schema-erased component handle, only the `.id`. Internal, schema-agnostic
|
|
122
122
|
* code (access checks, dirty-set notes, field-id lookup) takes this instead of
|
|
123
123
|
* `ComponentDef`: the callable signature makes `ComponentDef<S>` *invariant* in
|
|
124
124
|
* `S` (a generic `ComponentDef<S>` is not assignable to `ComponentDef`), but
|
|
@@ -131,27 +131,27 @@ export type ComponentHandle = {
|
|
|
131
131
|
/**
|
|
132
132
|
* Mint a callable `ComponentDef` for a freshly-registered component id. The
|
|
133
133
|
* returned function produces a `Bundle` when called (`Pos({x,y})`) and carries
|
|
134
|
-
* its numeric id on a non-enumerable `.id
|
|
135
|
-
* The single cast bridges the function value to the branded handle type
|
|
136
|
-
* `.id` is installed at runtime by `defineProperty` (
|
|
134
|
+
* its numeric id on a non-enumerable `.id`, invisible to a spread and to `JSON`.
|
|
135
|
+
* The single cast bridges the function value to the branded handle type, the
|
|
136
|
+
* `.id` is installed at runtime by `defineProperty` (the branded-ID boundary).
|
|
137
137
|
*/
|
|
138
|
-
export declare function
|
|
138
|
+
export declare function createComponentDef<S extends ComponentSchema>(id: ComponentID): ComponentDef<S>;
|
|
139
139
|
export interface Bundle<S extends ComponentSchema = ComponentSchema> {
|
|
140
140
|
readonly def: ComponentDef<S>;
|
|
141
141
|
readonly values: Partial<FieldValues<S>>;
|
|
142
142
|
}
|
|
143
|
-
/** Either a populated bundle or a bare def
|
|
143
|
+
/** Either a populated bundle or a bare def, a tag with all fields zero. */
|
|
144
144
|
export type BundleOrDef<S extends ComponentSchema = ComponentSchema> = Bundle<S> | ComponentDef<S>;
|
|
145
|
-
/** Re-validate one bundle-or-def item against its
|
|
146
|
-
* (the callable) passes as-is
|
|
145
|
+
/** Re-validate one bundle-or-def item against its own def's schema. A bare def
|
|
146
|
+
* (the callable) passes as-is. A bundle is re-stated as `Bundle<S>` for its
|
|
147
147
|
* def's `S`, so a hand-written `{ def, values }` literal whose fields don't
|
|
148
|
-
* match the def is rejected
|
|
149
|
-
*
|
|
148
|
+
* match the def is rejected, closing the raw-literal leak that `bundle(Pos,…)`
|
|
149
|
+
* and `Pos(…)` never had (those validate at their own call site). Per-element
|
|
150
150
|
* mapper for `StrictBundles`. */
|
|
151
151
|
export type StrictBundle<T> = T extends ComponentDef ? T : T extends {
|
|
152
152
|
def: ComponentDef<infer S>;
|
|
153
153
|
} ? Bundle<S> : never;
|
|
154
|
-
/** Mapped tuple over a bundle-or-def varargs list
|
|
154
|
+
/** Mapped tuple over a bundle-or-def varargs list, each element re-checked
|
|
155
155
|
* against its own def's schema. The SolidJS-`on` per-element pattern (pull the
|
|
156
156
|
* tuple apart, map every element), over callable bundles instead of
|
|
157
157
|
* `{ def, values }` entry-objects. The one strictness mechanism shared by
|
|
@@ -160,17 +160,18 @@ export type StrictBundles<Items extends readonly BundleOrDef[]> = {
|
|
|
160
160
|
[K in keyof Items]: StrictBundle<Items[K]>;
|
|
161
161
|
};
|
|
162
162
|
/** Recover the def tuple from a bundle-or-def varargs list, so `template(...)`
|
|
163
|
-
* still returns `Template<[Pos, Vel]
|
|
163
|
+
* still returns `Template<[Pos, Vel]>`, the typed key set that `spawn`'s
|
|
164
164
|
* `overrides` (`TemplateOverrides`) maps over. Also a per-element tuple map. */
|
|
165
165
|
export type DefsOf<Items extends readonly BundleOrDef[]> = {
|
|
166
166
|
[K in keyof Items]: Items[K] extends {
|
|
167
167
|
def: infer D extends ComponentDef;
|
|
168
168
|
} ? D : Items[K] extends ComponentDef ? Items[K] : never;
|
|
169
169
|
};
|
|
170
|
-
/** Pair a component def with field values to attach. Omitted fields zero-fill
|
|
171
|
-
*
|
|
170
|
+
/** Pair a component def with field values to attach. Omitted fields zero-fill.
|
|
171
|
+
* A tag def takes no values (see `ValuesArg`). */
|
|
172
172
|
export declare function bundle<S extends ComponentSchema>(def: ComponentDef<S>, ...values: ValuesArg<S>): Bundle<S>;
|
|
173
|
-
/** Extract the def from a `BundleOrDef`. A bare def is the callable
|
|
173
|
+
/** Extract the def from a `BundleOrDef`. A bare def is the callable. A bundle
|
|
174
|
+
* is a plain object. */
|
|
174
175
|
export declare function bundleDef(item: BundleOrDef): ComponentDef;
|
|
175
176
|
/** Extract the values from a `BundleOrDef` (a bare def contributes no values). */
|
|
176
177
|
export declare function bundleValues(item: BundleOrDef): Readonly<Record<string, number>>;
|
|
@@ -180,8 +181,8 @@ export declare function bundleValues(item: BundleOrDef): Readonly<Record<string,
|
|
|
180
181
|
*
|
|
181
182
|
* **Advisory, not a runtime barrier:** the value behind this type is the live
|
|
182
183
|
* mutable backing `TypedArray` (`Archetype.getColumnRead` returns
|
|
183
|
-
* `.buf as unknown as ReadonlyColumn`), so a
|
|
184
|
-
* through. For mutation use the mutable `Archetype.
|
|
184
|
+
* `.buf as unknown as ReadonlyColumn`), so a deliberate cast can still write
|
|
185
|
+
* through. For mutation use the mutable `Archetype.getColumnMut` (tick-bumping).
|
|
185
186
|
* Enforced by the escape-hatch lint, not the runtime.
|
|
186
187
|
*/
|
|
187
188
|
export interface ReadonlyColumn {
|
|
@@ -190,7 +191,7 @@ export interface ReadonlyColumn {
|
|
|
190
191
|
}
|
|
191
192
|
/**
|
|
192
193
|
* Compile-time readonly view of a Uint32Array. Blocks index writes at the type
|
|
193
|
-
* layer. **Advisory, not a runtime barrier
|
|
194
|
+
* layer. **Advisory, not a runtime barrier**, same caveat as `ReadonlyColumn`:
|
|
194
195
|
* the underlying value is the live mutable buffer.
|
|
195
196
|
*/
|
|
196
197
|
export interface ReadonlyUint32Array {
|
|
@@ -19,12 +19,12 @@ export type FieldValues<S extends ComponentSchema> = {
|
|
|
19
19
|
readonly [K in keyof S]: number;
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
|
-
* Values argument tuple for attaching a component of schema `S
|
|
22
|
+
* Values argument tuple for attaching a component of schema `S`, empty for a
|
|
23
23
|
* tag, a single optional partial-values map otherwise. A tag schema
|
|
24
24
|
* (`Record<string, never>`) would otherwise degenerate: `keyof` an
|
|
25
25
|
* index-signature record is `string`, so `Partial<FieldValues<…>>` collapses to
|
|
26
26
|
* `Record<string, number>` and `Frozen({ anything: 1 })` compiles. The
|
|
27
|
-
* conditional forbids values on tags outright
|
|
27
|
+
* conditional forbids values on tags outright. A schema-erased `ComponentDef`
|
|
28
28
|
* falls into the valued branch, so untyped call sites keep the loose shape.
|
|
29
29
|
*/
|
|
30
30
|
export type ValuesArg<S extends ComponentSchema> = S extends Record<string, never> ? [] : [values?: Partial<FieldValues<S>>];
|
|
@@ -32,16 +32,16 @@ export type ValuesArg<S extends ComponentSchema> = S extends Record<string, neve
|
|
|
32
32
|
* `FieldValues` for APIs where the values object is required and complete
|
|
33
33
|
* (`addComponent`'s valued overload, the host-seam `SpawnEntry`). Guards the
|
|
34
34
|
* same tag degeneracy as `ValuesArg`: a tag accepts only the empty object
|
|
35
|
-
* (`Record<string, never
|
|
35
|
+
* (`Record<string, never>`, every property typed `never`), so
|
|
36
36
|
* `addComponent(e, Frozen, { x: 1 })` is a compile error while the
|
|
37
37
|
* tag-overload-less call sites can still pass `{}`.
|
|
38
38
|
*/
|
|
39
39
|
export type CompleteFieldValues<S extends ComponentSchema> = S extends Record<string, never> ? Record<string, never> : FieldValues<S>;
|
|
40
40
|
/**
|
|
41
41
|
* Trailing-argument tuple for the attach surfaces (`ctx.commands.add`'s
|
|
42
|
-
* explicit-values form, `ctx.addSparse`): a tag takes
|
|
43
|
-
* complete one. Encodes the former tag
|
|
44
|
-
* which the typed system seam needs
|
|
42
|
+
* explicit-values form, `ctx.addSparse`): a tag takes no values argument, a valued schema requires a
|
|
43
|
+
* complete one. Encodes the former tag and valued overload pair as one signature,
|
|
44
|
+
* which the typed system seam needs, its `def` parameter is a single
|
|
45
45
|
* declared-access-constrained type param, and per-schema overloads would
|
|
46
46
|
* re-introduce the tag-vs-valued split on top of it.
|
|
47
47
|
*/
|
|
@@ -51,10 +51,10 @@ export type ColumnsForSchema<S extends ComponentSchema> = {
|
|
|
51
51
|
readonly [K in keyof S]: TagToTypedArray[S[K]];
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
54
|
-
* Mutable sibling of `ColumnsForSchema
|
|
55
|
-
* back by `
|
|
54
|
+
* Mutable sibling of `ColumnsForSchema`, the field-keyed column group handed
|
|
55
|
+
* back by `forEachChunk`'s `cols.mut(def)` (no `readonly`, since the whole point
|
|
56
56
|
* is in-place writes). The change-tick is stamped once when the group is
|
|
57
|
-
* resolved, so the per-row loop is plain typed-array indexing
|
|
57
|
+
* resolved, so the per-row loop is plain typed-array indexing.
|
|
58
58
|
*/
|
|
59
59
|
export type MutableColumnsForSchema<S extends ComponentSchema> = {
|
|
60
60
|
[K in keyof S]: TagToTypedArray[S[K]];
|
|
@@ -62,28 +62,28 @@ export type MutableColumnsForSchema<S extends ComponentSchema> = {
|
|
|
62
62
|
declare const __schema: unique symbol;
|
|
63
63
|
/**
|
|
64
64
|
* A component handle. **Callable**: `Pos({ x, y })` produces a `Bundle` (omitted
|
|
65
|
-
* fields zero-fill at attach), so one varargs shape
|
|
66
|
-
* Vel({vx:1}), IsEnemy)
|
|
67
|
-
* `Pos` (uncalled) still stands in for a tag
|
|
65
|
+
* fields zero-fill at attach), so one varargs shape, `spawn(Pos({x,y}),
|
|
66
|
+
* Vel({vx:1}), IsEnemy)`, replaces the older incompatible attach shapes. A bare
|
|
67
|
+
* `Pos` (uncalled) still stands in for a tag, or for all-zero values, wherever a
|
|
68
68
|
* `BundleOrDef` is accepted.
|
|
69
69
|
*
|
|
70
70
|
* The numeric component id lives on `.id` (registration order). Consumers treat
|
|
71
|
-
* the def as an opaque handle
|
|
71
|
+
* the def as an opaque handle. Internal code reads `def.id` where it needs the
|
|
72
72
|
* raw id. The call signature's `S` makes `ComponentDef<{x:"f64"}>` distinct from
|
|
73
73
|
* `ComponentDef<{vx:"f64"}>`.
|
|
74
74
|
*
|
|
75
|
-
* The optional `[__schema]` slot never exists at runtime
|
|
76
|
-
* covariant tuple position so that a
|
|
75
|
+
* The optional `[__schema]` slot never exists at runtime. It re-states `S` in a
|
|
76
|
+
* covariant tuple position so that a tag def type is not a universal assignment
|
|
77
77
|
* sink. Through the call signature alone every def is assignable to
|
|
78
78
|
* `ComponentDef<Record<string, never>>` (the tag callable takes no required
|
|
79
|
-
* args and any `Bundle` satisfies its return), which would let
|
|
79
|
+
* args and any `Bundle` satisfies its return), which would let one tag in a
|
|
80
80
|
* system's declared-access union admit every component at compile time
|
|
81
|
-
* (
|
|
81
|
+
* (`DeclaredRead` and friends in system.ts). With the slot, a
|
|
82
82
|
* valued schema is not assignable to the tag schema (`"f64" ⊀ never`), while
|
|
83
83
|
* schema erasure (`ComponentDef<S>` → bare `ComponentDef`) still works because
|
|
84
84
|
* every schema is assignable to `ComponentSchema`.
|
|
85
85
|
*
|
|
86
|
-
* Build one with `
|
|
86
|
+
* Build one with `createComponentDef`. Never construct by hand.
|
|
87
87
|
*/
|
|
88
88
|
export interface ComponentDef<S extends ComponentSchema = ComponentSchema> {
|
|
89
89
|
(...values: ValuesArg<S>): Bundle<S>;
|
|
@@ -92,17 +92,17 @@ export interface ComponentDef<S extends ComponentSchema = ComponentSchema> {
|
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
94
|
* Recover a def's schema type: `SchemaOf<typeof Pos>` is `{x:"f64", y:"f64"}`.
|
|
95
|
-
* The typed `SystemContext` methods (
|
|
95
|
+
* The typed `SystemContext` methods (system.ts) constrain their `def`
|
|
96
96
|
* parameter to the system's declared-access union and use this to type the
|
|
97
97
|
* field argument, in place of taking `ComponentDef<S>` directly.
|
|
98
98
|
*/
|
|
99
99
|
export type SchemaOf<D> = D extends ComponentDef<infer S extends ComponentSchema> ? S : never;
|
|
100
100
|
/**
|
|
101
|
-
* `unknown` if `D` is one of the query's declared terms, else an error tuple
|
|
102
|
-
* the query-seam sibling of system.ts's `DeclaredRead
|
|
103
|
-
*
|
|
101
|
+
* `unknown` if `D` is one of the query's declared terms, else an error tuple,
|
|
102
|
+
* the query-seam sibling of system.ts's `DeclaredRead`.
|
|
103
|
+
* `Query.forEachChunk`'s cursor and `ArchetypeView`'s column
|
|
104
104
|
* accessors intersect this into their `def` parameter so fetching a component
|
|
105
|
-
* that is
|
|
105
|
+
* that is not a term of the iterating query fails to compile (previously
|
|
106
106
|
* caught only by the dev-mode access check, and only when the system's
|
|
107
107
|
* declaration was itself wrong). Same encoding rules as the system asserts:
|
|
108
108
|
* stable `D extends ComponentDef<any>` constraints keep instantiations
|
|
@@ -110,15 +110,15 @@ export type SchemaOf<D> = D extends ComponentDef<infer S extends ComponentSchema
|
|
|
110
110
|
*/
|
|
111
111
|
export type DeclaredQueryTerm<Defs extends readonly ComponentDef<any>[], D> = [D] extends [
|
|
112
112
|
Defs[number]
|
|
113
|
-
] ? unknown : ["component is not a term of this query
|
|
114
|
-
/** Options bag accepted by `registerComponent`
|
|
113
|
+
] ? unknown : ["component is not a term of this query, add it with .and(...)", D];
|
|
114
|
+
/** Options bag accepted by `registerComponent` and `registerSparseComponent`. */
|
|
115
115
|
export interface ComponentRegisterOptions {
|
|
116
|
-
/** Debug label for diagnostics
|
|
116
|
+
/** Debug label for diagnostics, errors then read `'Pos' (component 5)`
|
|
117
117
|
* instead of `component 5`. Never affects behaviour, layout, or hashing. */
|
|
118
118
|
readonly name?: string;
|
|
119
119
|
}
|
|
120
120
|
/**
|
|
121
|
-
* Schema-erased component handle
|
|
121
|
+
* Schema-erased component handle, only the `.id`. Internal, schema-agnostic
|
|
122
122
|
* code (access checks, dirty-set notes, field-id lookup) takes this instead of
|
|
123
123
|
* `ComponentDef`: the callable signature makes `ComponentDef<S>` *invariant* in
|
|
124
124
|
* `S` (a generic `ComponentDef<S>` is not assignable to `ComponentDef`), but
|
|
@@ -131,27 +131,27 @@ export type ComponentHandle = {
|
|
|
131
131
|
/**
|
|
132
132
|
* Mint a callable `ComponentDef` for a freshly-registered component id. The
|
|
133
133
|
* returned function produces a `Bundle` when called (`Pos({x,y})`) and carries
|
|
134
|
-
* its numeric id on a non-enumerable `.id
|
|
135
|
-
* The single cast bridges the function value to the branded handle type
|
|
136
|
-
* `.id` is installed at runtime by `defineProperty` (
|
|
134
|
+
* its numeric id on a non-enumerable `.id`, invisible to a spread and to `JSON`.
|
|
135
|
+
* The single cast bridges the function value to the branded handle type, the
|
|
136
|
+
* `.id` is installed at runtime by `defineProperty` (the branded-ID boundary).
|
|
137
137
|
*/
|
|
138
|
-
export declare function
|
|
138
|
+
export declare function createComponentDef<S extends ComponentSchema>(id: ComponentID): ComponentDef<S>;
|
|
139
139
|
export interface Bundle<S extends ComponentSchema = ComponentSchema> {
|
|
140
140
|
readonly def: ComponentDef<S>;
|
|
141
141
|
readonly values: Partial<FieldValues<S>>;
|
|
142
142
|
}
|
|
143
|
-
/** Either a populated bundle or a bare def
|
|
143
|
+
/** Either a populated bundle or a bare def, a tag with all fields zero. */
|
|
144
144
|
export type BundleOrDef<S extends ComponentSchema = ComponentSchema> = Bundle<S> | ComponentDef<S>;
|
|
145
|
-
/** Re-validate one bundle-or-def item against its
|
|
146
|
-
* (the callable) passes as-is
|
|
145
|
+
/** Re-validate one bundle-or-def item against its own def's schema. A bare def
|
|
146
|
+
* (the callable) passes as-is. A bundle is re-stated as `Bundle<S>` for its
|
|
147
147
|
* def's `S`, so a hand-written `{ def, values }` literal whose fields don't
|
|
148
|
-
* match the def is rejected
|
|
149
|
-
*
|
|
148
|
+
* match the def is rejected, closing the raw-literal leak that `bundle(Pos,…)`
|
|
149
|
+
* and `Pos(…)` never had (those validate at their own call site). Per-element
|
|
150
150
|
* mapper for `StrictBundles`. */
|
|
151
151
|
export type StrictBundle<T> = T extends ComponentDef ? T : T extends {
|
|
152
152
|
def: ComponentDef<infer S>;
|
|
153
153
|
} ? Bundle<S> : never;
|
|
154
|
-
/** Mapped tuple over a bundle-or-def varargs list
|
|
154
|
+
/** Mapped tuple over a bundle-or-def varargs list, each element re-checked
|
|
155
155
|
* against its own def's schema. The SolidJS-`on` per-element pattern (pull the
|
|
156
156
|
* tuple apart, map every element), over callable bundles instead of
|
|
157
157
|
* `{ def, values }` entry-objects. The one strictness mechanism shared by
|
|
@@ -160,17 +160,18 @@ export type StrictBundles<Items extends readonly BundleOrDef[]> = {
|
|
|
160
160
|
[K in keyof Items]: StrictBundle<Items[K]>;
|
|
161
161
|
};
|
|
162
162
|
/** Recover the def tuple from a bundle-or-def varargs list, so `template(...)`
|
|
163
|
-
* still returns `Template<[Pos, Vel]
|
|
163
|
+
* still returns `Template<[Pos, Vel]>`, the typed key set that `spawn`'s
|
|
164
164
|
* `overrides` (`TemplateOverrides`) maps over. Also a per-element tuple map. */
|
|
165
165
|
export type DefsOf<Items extends readonly BundleOrDef[]> = {
|
|
166
166
|
[K in keyof Items]: Items[K] extends {
|
|
167
167
|
def: infer D extends ComponentDef;
|
|
168
168
|
} ? D : Items[K] extends ComponentDef ? Items[K] : never;
|
|
169
169
|
};
|
|
170
|
-
/** Pair a component def with field values to attach. Omitted fields zero-fill
|
|
171
|
-
*
|
|
170
|
+
/** Pair a component def with field values to attach. Omitted fields zero-fill.
|
|
171
|
+
* A tag def takes no values (see `ValuesArg`). */
|
|
172
172
|
export declare function bundle<S extends ComponentSchema>(def: ComponentDef<S>, ...values: ValuesArg<S>): Bundle<S>;
|
|
173
|
-
/** Extract the def from a `BundleOrDef`. A bare def is the callable
|
|
173
|
+
/** Extract the def from a `BundleOrDef`. A bare def is the callable. A bundle
|
|
174
|
+
* is a plain object. */
|
|
174
175
|
export declare function bundleDef(item: BundleOrDef): ComponentDef;
|
|
175
176
|
/** Extract the values from a `BundleOrDef` (a bare def contributes no values). */
|
|
176
177
|
export declare function bundleValues(item: BundleOrDef): Readonly<Record<string, number>>;
|
|
@@ -180,8 +181,8 @@ export declare function bundleValues(item: BundleOrDef): Readonly<Record<string,
|
|
|
180
181
|
*
|
|
181
182
|
* **Advisory, not a runtime barrier:** the value behind this type is the live
|
|
182
183
|
* mutable backing `TypedArray` (`Archetype.getColumnRead` returns
|
|
183
|
-
* `.buf as unknown as ReadonlyColumn`), so a
|
|
184
|
-
* through. For mutation use the mutable `Archetype.
|
|
184
|
+
* `.buf as unknown as ReadonlyColumn`), so a deliberate cast can still write
|
|
185
|
+
* through. For mutation use the mutable `Archetype.getColumnMut` (tick-bumping).
|
|
185
186
|
* Enforced by the escape-hatch lint, not the runtime.
|
|
186
187
|
*/
|
|
187
188
|
export interface ReadonlyColumn {
|
|
@@ -190,7 +191,7 @@ export interface ReadonlyColumn {
|
|
|
190
191
|
}
|
|
191
192
|
/**
|
|
192
193
|
* Compile-time readonly view of a Uint32Array. Blocks index writes at the type
|
|
193
|
-
* layer. **Advisory, not a runtime barrier
|
|
194
|
+
* layer. **Advisory, not a runtime barrier**, same caveat as `ReadonlyColumn`:
|
|
194
195
|
* the underlying value is the live mutable buffer.
|
|
195
196
|
*/
|
|
196
197
|
export interface ReadonlyUint32Array {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;KAwBK;AAEL,OAAO,EACN,KAAK,EAGL,KAAK,aAAa,EAClB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACxD,eAAO,MAAM,aAAa,UAAW,MAAM,gBAKzC,CAAC;AAEH,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAEtE,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,EAAE,EAAE,SAAS,CAAC;IACd,GAAG,EAAE,UAAU,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,EAAE,EAAE,UAAU,CAAC;IACf,GAAG,EAAE,WAAW,CAAC;IACjB,GAAG,EAAE,WAAW,CAAC;CACjB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,IAAI;IACpD,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CAC/B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,eAAe,
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ComponentDef, ComponentHandle } from './component.cjs';
|
|
2
|
+
import { ComponentMeta } from './store_types.cjs';
|
|
3
|
+
import { TypedArrayTag } from '../../type_primitives/index.cjs';
|
|
4
|
+
/**
|
|
5
|
+
* Reject a field named like an accessor's own state (`__cols`, `__row`): a ref
|
|
6
|
+
* or cursor over the component would shadow its own state with the field, or
|
|
7
|
+
* the field with its state. `kind` names the storage class in the fault,
|
|
8
|
+
* either "component" or "sparse component".
|
|
9
|
+
*
|
|
10
|
+
* Always on, not `__DEV__` gated. Registration is cold.
|
|
11
|
+
*/
|
|
12
|
+
export declare function assertFieldNamesFree(fieldNames: readonly string[], kind: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Reject an `f32` or an `f64` field on a `deterministic: true` world, at
|
|
15
|
+
* registration. IEEE-754 rounds differently across hosts in the last place. A
|
|
16
|
+
* float column in a fixed-update path is then a silent per-tick `stateHash`
|
|
17
|
+
* divergence between client and server, the one thing the determinism opt-in
|
|
18
|
+
* exists to prevent.
|
|
19
|
+
*
|
|
20
|
+
* A world that did not opt in skips the walk and keeps its floats, so the
|
|
21
|
+
* default path pays nothing. The array shorthand defaults to `f64` and lands
|
|
22
|
+
* here too, so a deterministic world must pass an explicit integer type.
|
|
23
|
+
*/
|
|
24
|
+
export declare function assertDeterministicFieldTypes(deterministic: boolean, fieldNames: readonly string[], fieldTypes: readonly TypedArrayTag[], kind: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Append one component's metadata to `metas` and return its definition.
|
|
27
|
+
*
|
|
28
|
+
* The caller guarantees that `metas` is the world's live metadata array and
|
|
29
|
+
* that nothing else appends to it. The id this hands out is the array's length
|
|
30
|
+
* before the append.
|
|
31
|
+
*
|
|
32
|
+
* The archetype descriptor in the backing carries a fixed-width component
|
|
33
|
+
* mask, and the module matches archetypes on that mask alone. A component id
|
|
34
|
+
* past the mask's width would be invisible there, so two archetypes that
|
|
35
|
+
* differ only in such a component would conflate. This fails instead, and the
|
|
36
|
+
* fault names `registerSparseComponent` as the remedy, because a sparse
|
|
37
|
+
* component keeps its own id space and costs no mask bit.
|
|
38
|
+
*
|
|
39
|
+
* A rejected registration leaves no partial state. Both checks run before the
|
|
40
|
+
* id is taken and before the append.
|
|
41
|
+
*/
|
|
42
|
+
export declare function appendComponentMeta<S extends Record<string, TypedArrayTag>>(metas: ComponentMeta[], deterministic: boolean, schema: S, name?: string): ComponentDef<S>;
|
|
43
|
+
/** `'Pos' (component 5)` when the component was registered with a debug name,
|
|
44
|
+
* else `component 5`, the label diagnostics interpolate. */
|
|
45
|
+
export declare function componentMetaLabel(metas: readonly ComponentMeta[], cid: number): string;
|
|
46
|
+
/**
|
|
47
|
+
* The field index assigned to `(def, fieldName)` at registration. Indexes are
|
|
48
|
+
* insertion-order, zero-based, and stable for the lifetime of the world. A
|
|
49
|
+
* system that passes `(component_id, field_id)` pairs across the WASM FFI
|
|
50
|
+
* resolves them once, at setup.
|
|
51
|
+
*/
|
|
52
|
+
export declare function fieldIdOfMeta(metas: readonly ComponentMeta[], def: ComponentHandle, fieldName: string): number;
|
|
53
|
+
//# sourceMappingURL=component_registry.d.ts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ComponentDef, ComponentHandle } from './component.js';
|
|
2
|
+
import { ComponentMeta } from './store_types.js';
|
|
3
|
+
import { TypedArrayTag } from '../../type_primitives/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Reject a field named like an accessor's own state (`__cols`, `__row`): a ref
|
|
6
|
+
* or cursor over the component would shadow its own state with the field, or
|
|
7
|
+
* the field with its state. `kind` names the storage class in the fault,
|
|
8
|
+
* either "component" or "sparse component".
|
|
9
|
+
*
|
|
10
|
+
* Always on, not `__DEV__` gated. Registration is cold.
|
|
11
|
+
*/
|
|
12
|
+
export declare function assertFieldNamesFree(fieldNames: readonly string[], kind: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Reject an `f32` or an `f64` field on a `deterministic: true` world, at
|
|
15
|
+
* registration. IEEE-754 rounds differently across hosts in the last place. A
|
|
16
|
+
* float column in a fixed-update path is then a silent per-tick `stateHash`
|
|
17
|
+
* divergence between client and server, the one thing the determinism opt-in
|
|
18
|
+
* exists to prevent.
|
|
19
|
+
*
|
|
20
|
+
* A world that did not opt in skips the walk and keeps its floats, so the
|
|
21
|
+
* default path pays nothing. The array shorthand defaults to `f64` and lands
|
|
22
|
+
* here too, so a deterministic world must pass an explicit integer type.
|
|
23
|
+
*/
|
|
24
|
+
export declare function assertDeterministicFieldTypes(deterministic: boolean, fieldNames: readonly string[], fieldTypes: readonly TypedArrayTag[], kind: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Append one component's metadata to `metas` and return its definition.
|
|
27
|
+
*
|
|
28
|
+
* The caller guarantees that `metas` is the world's live metadata array and
|
|
29
|
+
* that nothing else appends to it. The id this hands out is the array's length
|
|
30
|
+
* before the append.
|
|
31
|
+
*
|
|
32
|
+
* The archetype descriptor in the backing carries a fixed-width component
|
|
33
|
+
* mask, and the module matches archetypes on that mask alone. A component id
|
|
34
|
+
* past the mask's width would be invisible there, so two archetypes that
|
|
35
|
+
* differ only in such a component would conflate. This fails instead, and the
|
|
36
|
+
* fault names `registerSparseComponent` as the remedy, because a sparse
|
|
37
|
+
* component keeps its own id space and costs no mask bit.
|
|
38
|
+
*
|
|
39
|
+
* A rejected registration leaves no partial state. Both checks run before the
|
|
40
|
+
* id is taken and before the append.
|
|
41
|
+
*/
|
|
42
|
+
export declare function appendComponentMeta<S extends Record<string, TypedArrayTag>>(metas: ComponentMeta[], deterministic: boolean, schema: S, name?: string): ComponentDef<S>;
|
|
43
|
+
/** `'Pos' (component 5)` when the component was registered with a debug name,
|
|
44
|
+
* else `component 5`, the label diagnostics interpolate. */
|
|
45
|
+
export declare function componentMetaLabel(metas: readonly ComponentMeta[], cid: number): string;
|
|
46
|
+
/**
|
|
47
|
+
* The field index assigned to `(def, fieldName)` at registration. Indexes are
|
|
48
|
+
* insertion-order, zero-based, and stable for the lifetime of the world. A
|
|
49
|
+
* system that passes `(component_id, field_id)` pairs across the WASM FFI
|
|
50
|
+
* resolves them once, at setup.
|
|
51
|
+
*/
|
|
52
|
+
export declare function fieldIdOfMeta(metas: readonly ComponentMeta[], def: ComponentHandle, fieldName: string): number;
|
|
53
|
+
//# sourceMappingURL=component_registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component_registry.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/component_registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;KAwBK;AAKL,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAWtF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAC5C,aAAa,EAAE,OAAO,EACtB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,UAAU,EAAE,SAAS,aAAa,EAAE,EACpC,IAAI,EAAE,MAAM,GACV,IAAI,CAiBN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC1E,KAAK,EAAE,aAAa,EAAE,EACtB,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,CAAC,EACT,IAAI,CAAC,EAAE,MAAM,GACX,YAAY,CAAC,CAAC,CAAC,CAyCjB;AAED;4DAC4D;AAC5D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,MAAM,GACf,MAAM,CAiBR"}
|
|
@@ -2,19 +2,19 @@ import { Brand } from '../../type_primitives/index.cjs';
|
|
|
2
2
|
import { StoreLayoutListener } from './store_layout_listener.cjs';
|
|
3
3
|
/**
|
|
4
4
|
* An opaque token identifying one of a backend's entry points (one
|
|
5
|
-
* "backend-system"). The engine **never interprets** it
|
|
5
|
+
* "backend-system"). The engine **never interprets** it, the backend mints it
|
|
6
6
|
* and is the only thing that maps it back to a concrete computation. Carried on
|
|
7
7
|
* `SystemConfig.backendHandle` and handed verbatim to `ComputeBackend.run`.
|
|
8
8
|
*
|
|
9
|
-
* Branded so a stray `number` can't be mistaken for a handle
|
|
9
|
+
* Branded so a stray `number` can't be mistaken for a handle. Consumers mint
|
|
10
10
|
* one by casting (the backend owns the id space, like flecs's `run` function
|
|
11
11
|
* pointer or a small index into the backend's entry table).
|
|
12
12
|
*/
|
|
13
13
|
export type BackendSystemHandle = Brand<number, "backend_system_handle">;
|
|
14
14
|
/**
|
|
15
15
|
* The engine-side contract a compute backend implements. Composes
|
|
16
|
-
* `StoreLayoutListener` (the already-clean SAB handshake
|
|
17
|
-
* once on attach to seed the layout and again after every SAB grow
|
|
16
|
+
* `StoreLayoutListener` (the already-clean SAB handshake, `setLayout` is called
|
|
17
|
+
* once on attach to seed the layout and again after every SAB grow and extend) with
|
|
18
18
|
* a single generic `run` entry point.
|
|
19
19
|
*
|
|
20
20
|
* A backend is attached opt-in via `ECS.attachBackend(backend)`, which also
|
|
@@ -25,13 +25,24 @@ export interface ComputeBackend extends StoreLayoutListener {
|
|
|
25
25
|
/**
|
|
26
26
|
* Execute the backend-system identified by `handle`. Called by the
|
|
27
27
|
* `Schedule` in place of the system's `fn` closure, inside the same
|
|
28
|
-
* `accessCheck` span
|
|
28
|
+
* `accessCheck` span, so the system's declared `writes` authorise whatever
|
|
29
29
|
* shared-memory columns the backend mutates, exactly as a TS body that calls
|
|
30
30
|
* out to the backend would be authorised today.
|
|
31
31
|
*
|
|
32
|
-
* `handle` is opaque to the engine
|
|
32
|
+
* `handle` is opaque to the engine. It is one the backend minted and the
|
|
33
33
|
* engine merely round-trips from `SystemConfig.backendHandle`.
|
|
34
|
+
*
|
|
35
|
+
* `deltaTime` is the seconds the phase runs with, the same value a TS body
|
|
36
|
+
* receives. A module body needs it, and it is not in the store bytes, so it
|
|
37
|
+
* travels as a call argument. `tick` is the world's frame tick, the count of
|
|
38
|
+
* `update()` calls so far, and it is not in the bytes either. A backend that
|
|
39
|
+
* stamps its own frame state reads it here rather than counting calls, which
|
|
40
|
+
* would drift on a frame that runs the phase more than once.
|
|
41
|
+
*
|
|
42
|
+
* The engine publishes the descriptor row counts before this call when a
|
|
43
|
+
* mutation left them stale, so a module that walks the descriptors sees the
|
|
44
|
+
* live row count of every archetype.
|
|
34
45
|
*/
|
|
35
|
-
run(handle: BackendSystemHandle): void;
|
|
46
|
+
run(handle: BackendSystemHandle, deltaTime: number, tick: number): void;
|
|
36
47
|
}
|
|
37
48
|
//# sourceMappingURL=compute_backend.d.ts.map
|