@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
|
@@ -4,66 +4,67 @@ import { EntityID } from './entity.cjs';
|
|
|
4
4
|
import { SparseComponentDef } from './sparse_store.cjs';
|
|
5
5
|
import { RelationDef } from './relation.cjs';
|
|
6
6
|
import { ResourceKey } from './resource.cjs';
|
|
7
|
-
import { SystemContext } from './
|
|
7
|
+
import { SystemContext } from './system_context.cjs';
|
|
8
8
|
import { BackendSystemHandle } from './compute_backend.cjs';
|
|
9
|
-
import { Template } from './
|
|
9
|
+
import { Template } from './store_types.cjs';
|
|
10
|
+
import { Query } from './query.cjs';
|
|
10
11
|
export type SystemID = Brand<number, "system_id">;
|
|
11
12
|
export declare const asSystemId: (value: number) => SystemID;
|
|
12
13
|
export type SystemFn = (ctx: SystemContext, deltaTime: number) => void;
|
|
13
14
|
/** A pair describing a mid-tick archetype transition.
|
|
14
15
|
* If an entity has every component in `whenHas`, the system may `add`
|
|
15
|
-
*
|
|
16
|
+
* or `remove` the listed components, transitioning the entity to a
|
|
16
17
|
* new archetype. Used to pre-warm the archetype graph. */
|
|
17
18
|
export interface SystemTransition {
|
|
18
19
|
readonly whenHas: readonly ComponentDef[];
|
|
19
20
|
readonly add?: readonly ComponentDef[];
|
|
20
21
|
readonly remove?: readonly ComponentDef[];
|
|
21
22
|
}
|
|
22
|
-
/** The access declaration as
|
|
23
|
-
* `writes` are mandatory
|
|
24
|
-
*
|
|
25
|
-
* absent
|
|
23
|
+
/** The access declaration as authored on a `SystemConfig`. `reads` and
|
|
24
|
+
* `writes` are mandatory, and an empty array is explicit, not a missing
|
|
25
|
+
* annotation. The rarer structural and resource fields are optional, and
|
|
26
|
+
* absent reads as empty, mirroring the sparse and relation precedent. `spawns`
|
|
26
27
|
* entries and `despawns` accept a `Template` wherever a component list is
|
|
27
|
-
* expected
|
|
28
|
+
* expected, registration expands it via `_normalizeAccess`. */
|
|
28
29
|
export interface SystemAccessConfig {
|
|
29
|
-
/** Components the system
|
|
30
|
+
/** Components the system reads but does not write. */
|
|
30
31
|
readonly reads: readonly ComponentDef[];
|
|
31
|
-
/** Components the system
|
|
32
|
+
/** Components the system writes. A write is implicitly also a read. */
|
|
32
33
|
readonly writes: readonly ComponentDef[];
|
|
33
34
|
/** Archetype masks the system spawns entities into. Each entry is the
|
|
34
|
-
* union of components a spawned entity carries at flush time
|
|
35
|
+
* union of components a spawned entity carries at flush time, an
|
|
35
36
|
* explicit def list, or a `Template` (expanded at registration). */
|
|
36
37
|
readonly spawns?: readonly (readonly ComponentDef[] | Template)[];
|
|
37
|
-
/** Components removed
|
|
38
|
-
* `despawn` counts as removing every component on the entity
|
|
38
|
+
/** Components removed with `removeComponent` or `despawn`.
|
|
39
|
+
* `despawn` counts as removing every component on the entity,
|
|
39
40
|
* declare the superset. A `Template` entry expands to its component
|
|
40
41
|
* list, so a "destroys what the spawner spawns" system references the
|
|
41
42
|
* same declaration. */
|
|
42
43
|
readonly despawns?: readonly (ComponentDef | Template)[];
|
|
43
|
-
/** Mid-tick archetype transitions
|
|
44
|
+
/** Mid-tick archetype transitions. See SystemTransition. */
|
|
44
45
|
readonly transitions?: readonly SystemTransition[];
|
|
45
46
|
/** Resources the system reads. */
|
|
46
47
|
readonly resourceReads?: readonly ResourceKey<any>[];
|
|
47
48
|
/** Resources the system writes. */
|
|
48
49
|
readonly resourceWrites?: readonly ResourceKey<any>[];
|
|
49
|
-
/** Sparse components the system
|
|
50
|
+
/** Sparse components the system reads via `getSparseField`
|
|
50
51
|
* (membership probes `hasSparse` are unchecked, mirroring `hasComponent`). */
|
|
51
52
|
readonly sparseReads?: readonly SparseComponentDef[];
|
|
52
|
-
/** Sparse components the system
|
|
53
|
+
/** Sparse components the system mutates with `addSparse`, `removeSparse` or
|
|
53
54
|
* `setSparseField`. A write implies a read. */
|
|
54
55
|
readonly sparseWrites?: readonly SparseComponentDef[];
|
|
55
|
-
/** Relations the system
|
|
56
|
+
/** Relations the system reads with `targetOf`, `targetsOf` or `sourcesOf`
|
|
56
57
|
* (`hasRelation` is unchecked, mirroring `hasComponent`). */
|
|
57
58
|
readonly relationReads?: readonly RelationDef[];
|
|
58
|
-
/** Relations the system
|
|
59
|
+
/** Relations the system mutates with `addRelation` or `removeRelation`.
|
|
59
60
|
* A write implies a read. */
|
|
60
61
|
readonly relationWrites?: readonly RelationDef[];
|
|
61
62
|
}
|
|
62
|
-
/** The
|
|
63
|
-
* `SystemDescriptor` exposes and `accessCheck`
|
|
63
|
+
/** The normalized access declaration a registered system carries, what
|
|
64
|
+
* `SystemDescriptor` exposes, and what `accessCheck` and prewarm consume. Produced
|
|
64
65
|
* from the authored `SystemAccessConfig` by `_normalizeAccess`: absent
|
|
65
66
|
* optional fields are the shared frozen empties, and every `Template` in
|
|
66
|
-
* `spawns`
|
|
67
|
+
* `spawns` and `despawns` is expanded to its component list. */
|
|
67
68
|
export interface SystemAccessDeclaration extends SystemAccessConfig {
|
|
68
69
|
readonly spawns: readonly (readonly ComponentDef[])[];
|
|
69
70
|
readonly despawns: readonly ComponentDef[];
|
|
@@ -71,6 +72,53 @@ export interface SystemAccessDeclaration extends SystemAccessConfig {
|
|
|
71
72
|
readonly resourceReads: readonly ResourceKey<any>[];
|
|
72
73
|
readonly resourceWrites: readonly ResourceKey<any>[];
|
|
73
74
|
}
|
|
75
|
+
/** A kernel body a worker can load. A worker cannot receive a closure, so a
|
|
76
|
+
* kernel is addressed by a module and an export name. */
|
|
77
|
+
export type ParallelKernel = {
|
|
78
|
+
/** A compiled module. It is structured-clone safe, so one module object
|
|
79
|
+
* is shared with every worker. It imports the world's memory as
|
|
80
|
+
* `env.memory`, which the wasm backing supplies. */
|
|
81
|
+
readonly wasm: WebAssembly.Module;
|
|
82
|
+
readonly export: string;
|
|
83
|
+
readonly js?: never;
|
|
84
|
+
} | {
|
|
85
|
+
/** An absolute module URL each worker imports. */
|
|
86
|
+
readonly js: string;
|
|
87
|
+
readonly export: string;
|
|
88
|
+
readonly wasm?: never;
|
|
89
|
+
};
|
|
90
|
+
/** One `(component, field)` pair a kernel takes, with the field name held to
|
|
91
|
+
* the component's own schema. */
|
|
92
|
+
export type ParallelColumn<D> = D extends ComponentDef<infer S> ? readonly [D, Extract<keyof S, string>] : never;
|
|
93
|
+
/**
|
|
94
|
+
* How a system runs across a pool of workers.
|
|
95
|
+
*
|
|
96
|
+
* The kernel receives, per matched archetype, one argument per declared column,
|
|
97
|
+
* then `begin`, `end` and `dt`. A js kernel takes a typed array spanning the
|
|
98
|
+
* whole column and indexes `begin` to `end`. A wasm kernel takes the absolute
|
|
99
|
+
* byte offset of the column's first row and addresses row `r` at
|
|
100
|
+
* `ptr + r * stride`, with the stride it knows from the field type.
|
|
101
|
+
*
|
|
102
|
+
* A parallel system stays a normal system: the same ordering, the same run
|
|
103
|
+
* conditions, the same sets. Its `fn` runs below the row threshold, on a world
|
|
104
|
+
* with no pool, and on a heap world.
|
|
105
|
+
*/
|
|
106
|
+
export interface ParallelConfig<D extends ComponentDef<any> = ComponentDef<any>> {
|
|
107
|
+
readonly kernel: ParallelKernel;
|
|
108
|
+
/** The kernel's argument order, one component and field for each. Every
|
|
109
|
+
* component named must be in `reads` or `writes` and in the query, and every
|
|
110
|
+
* component in `writes` must appear here. */
|
|
111
|
+
readonly columns: readonly ParallelColumn<D>[];
|
|
112
|
+
/** The total matched row count below which the system runs `fn` on the main
|
|
113
|
+
* thread. The default is a placeholder, and the caller must tune it. The
|
|
114
|
+
* crossover is a property of the machine and of the kernel, not of the
|
|
115
|
+
* engine, so no default is right for every world. */
|
|
116
|
+
readonly minRows?: number;
|
|
117
|
+
/** The query the kernel runs over. Defaults to the first entry of `queries`,
|
|
118
|
+
* resolved as a require-only query. Pass one built with `not` to get a
|
|
119
|
+
* require-and-exclude match. */
|
|
120
|
+
readonly query?: Query<any>;
|
|
121
|
+
}
|
|
74
122
|
export interface SystemConfig extends SystemAccessConfig {
|
|
75
123
|
fn?(ctx: SystemContext, deltaTime: number): void;
|
|
76
124
|
name?: string;
|
|
@@ -79,35 +127,40 @@ export interface SystemConfig extends SystemAccessConfig {
|
|
|
79
127
|
dispose?: () => void;
|
|
80
128
|
/** Components the system queries (via a captured `ecs.query(...)`), one
|
|
81
129
|
* group per query.
|
|
82
|
-
*
|
|
130
|
+
* Optional, when provided, `registerSystem` validates `queries ⊆ reads ∪
|
|
83
131
|
* writes` in `DEV` (`_assertQueriesDeclared`): a query term
|
|
84
132
|
* reads each listed component, so this fails fast at registration instead of
|
|
85
133
|
* at the first iteration's `accessCheck`. */
|
|
86
134
|
queries?: readonly (readonly ComponentDef[])[];
|
|
87
|
-
/** Grant this system
|
|
88
|
-
*
|
|
89
|
-
* `
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
135
|
+
/** Grant this system full world access. It may read, write, add, remove and
|
|
136
|
+
* destroy any component, sparse, relation, or resource without declaring
|
|
137
|
+
* them. `accessCheck` skips its whole span in `DEV`, and a production build
|
|
138
|
+
* compiles that check out already. Trusted engine or host machinery that
|
|
139
|
+
* mutates components unknown at registration needs this. The host→ECS
|
|
140
|
+
* command-apply system is the canonical case, and a save and load or a debug
|
|
141
|
+
* system is another. It matches Bevy's "exclusive system" in spirit, where
|
|
142
|
+
* full access also means the system runs alone. This schedule is sequential
|
|
143
|
+
* today, so here it is purely the access grant. Use it sparingly. A normal
|
|
144
|
+
* system declares exactly what it touches. */
|
|
97
145
|
exclusive?: boolean;
|
|
98
146
|
/** Opt this system into pluggable-backend execution. When set **and**
|
|
99
147
|
* a `ComputeBackend` is attached to the ECS, the `Schedule` runs
|
|
100
|
-
* `backend.run(backendHandle)` in place of `fn
|
|
148
|
+
* `backend.run(backendHandle)` in place of `fn`. Otherwise `fn` runs as the
|
|
101
149
|
* TS fallback (a no-op `fn` ⇒ the system is effectively skipped when no
|
|
102
|
-
* backend is attached). The handle is opaque to the engine
|
|
103
|
-
* backend. The system still declares its `reads
|
|
150
|
+
* backend is attached). The handle is opaque to the engine, minted by the
|
|
151
|
+
* backend. The system still declares its `reads` and `writes` so the access span
|
|
104
152
|
* around the backend call authorises the shared-memory it touches, and so the
|
|
105
153
|
* scheduler can order it. See `ComputeBackend`. */
|
|
106
154
|
backendHandle?: BackendSystemHandle;
|
|
155
|
+
/** Opt this system into worker execution. When set **and** a pool is
|
|
156
|
+
* attached **and** the matched row count clears `parallel.minRows`, the
|
|
157
|
+
* schedule runs the kernel across the pool in place of `fn`. Otherwise `fn`
|
|
158
|
+
* runs, and the two must compute the same thing. See `ParallelConfig`. */
|
|
159
|
+
parallel?: ParallelConfig;
|
|
107
160
|
}
|
|
108
161
|
/**
|
|
109
162
|
* The type-level access record a `SystemContext` is parameterized by. Each
|
|
110
|
-
* field is the
|
|
163
|
+
* field is the union of handle types the system declared for that operation
|
|
111
164
|
* (`never` = declared nothing). The interface itself is the permissive
|
|
112
165
|
* default: every field `any`-typed, `destroy` undetermined.
|
|
113
166
|
*/
|
|
@@ -125,29 +178,29 @@ export interface SystemAccess {
|
|
|
125
178
|
resourceWrite: ResourceKey<any>;
|
|
126
179
|
}
|
|
127
180
|
/** `unknown` if `D` is in the system's declared read surface, else an error tuple. */
|
|
128
|
-
export type DeclaredRead<A extends SystemAccess, D> = [D] extends [A["read"]] ? unknown : ["component is not declared in this system's reads
|
|
181
|
+
export type DeclaredRead<A extends SystemAccess, D> = [D] extends [A["read"]] ? unknown : ["component is not declared in this system's reads or writes", D];
|
|
129
182
|
/** `unknown` if `D` is in the system's declared write surface, else an error tuple. */
|
|
130
183
|
export type DeclaredWrite<A extends SystemAccess, D> = [D] extends [A["write"]] ? unknown : ["component is not declared in this system's writes", D];
|
|
131
184
|
/** `unknown` if `D` is an authorised addComponent target, else an error tuple. */
|
|
132
|
-
export type DeclaredAdd<A extends SystemAccess, D> = [D] extends [A["add"]] ? unknown : ["component is not declared in this system's writes
|
|
185
|
+
export type DeclaredAdd<A extends SystemAccess, D> = [D] extends [A["add"]] ? unknown : ["component is not declared in this system's writes, spawns or transitions.add", D];
|
|
133
186
|
/** `unknown` if `D` is an authorised removeComponent target, else an error tuple. */
|
|
134
|
-
export type DeclaredRemove<A extends SystemAccess, D> = [D] extends [A["remove"]] ? unknown : ["component is not declared in this system's despawns
|
|
135
|
-
export type DeclaredSparseRead<A extends SystemAccess, D> = [D] extends [A["sparseRead"]] ? unknown : ["sparse component is not declared in this system's sparseReads
|
|
187
|
+
export type DeclaredRemove<A extends SystemAccess, D> = [D] extends [A["remove"]] ? unknown : ["component is not declared in this system's despawns or transitions.remove", D];
|
|
188
|
+
export type DeclaredSparseRead<A extends SystemAccess, D> = [D] extends [A["sparseRead"]] ? unknown : ["sparse component is not declared in this system's sparseReads or sparseWrites", D];
|
|
136
189
|
export type DeclaredSparseWrite<A extends SystemAccess, D> = [D] extends [A["sparseWrite"]] ? unknown : ["sparse component is not declared in this system's sparseWrites", D];
|
|
137
190
|
/** Relations are one nominal type, so this only distinguishes "declared some
|
|
138
|
-
* relation access" from "declared none"
|
|
191
|
+
* relation access" from "declared none", the runtime check owns the rest.
|
|
139
192
|
* Keyed on the call site's inferred `D` (like the component asserts) rather
|
|
140
193
|
* than on `RelationDef` directly: a conditional whose check type is not a
|
|
141
194
|
* signature type parameter resolves under the compiler's variance-annotation
|
|
142
195
|
* validation markers and falsely flags the `out A` declaration (TS2636). */
|
|
143
|
-
export type DeclaredRelationRead<A extends SystemAccess, D> = [D] extends [A["relationRead"]] ? unknown : ["no relation is declared in this system's relationReads
|
|
196
|
+
export type DeclaredRelationRead<A extends SystemAccess, D> = [D] extends [A["relationRead"]] ? unknown : ["no relation is declared in this system's relationReads or relationWrites"];
|
|
144
197
|
export type DeclaredRelationWrite<A extends SystemAccess, D> = [D] extends [A["relationWrite"]] ? unknown : ["no relation is declared in this system's relationWrites"];
|
|
145
|
-
export type DeclaredResourceRead<A extends SystemAccess, K> = [K] extends [A["resourceRead"]] ? unknown : ["resource key is not declared in this system's resourceReads
|
|
198
|
+
export type DeclaredResourceRead<A extends SystemAccess, K> = [K] extends [A["resourceRead"]] ? unknown : ["resource key is not declared in this system's resourceReads or resourceWrites", K];
|
|
146
199
|
export type DeclaredResourceWrite<A extends SystemAccess, K> = [K] extends [A["resourceWrite"]] ? unknown : ["resource key is not declared in this system's resourceWrites", K];
|
|
147
200
|
/** `commands.despawn` argument: blocked (with a readable error) only when
|
|
148
|
-
* the access record
|
|
201
|
+
* the access record proves no despawns were declared. */
|
|
149
202
|
export type DespawnArg<A extends SystemAccess> = [A["destroy"]] extends [false] ? {
|
|
150
|
-
"this system declares no despawns
|
|
203
|
+
"this system declares no despawns, so despawn is not permitted": never;
|
|
151
204
|
} : EntityID;
|
|
152
205
|
export type DenseAccessDecl = readonly ComponentDef<any>[];
|
|
153
206
|
export type SpawnsAccessDecl = readonly (readonly ComponentDef<any>[] | Template<any>)[];
|
|
@@ -165,7 +218,7 @@ type TransitionRemoveDefs<T> = T extends {
|
|
|
165
218
|
readonly remove: readonly (infer D extends ComponentDef<any>)[];
|
|
166
219
|
} ? D : never;
|
|
167
220
|
/**
|
|
168
|
-
* Compute the `SystemAccess` record for a set of declared access lists
|
|
221
|
+
* Compute the `SystemAccess` record for a set of declared access lists,
|
|
169
222
|
* the type-level `computeSets` (access_check.ts).
|
|
170
223
|
*/
|
|
171
224
|
export type DeclaredAccess<R extends DenseAccessDecl, W extends DenseAccessDecl, Sp extends SpawnsAccessDecl = readonly never[], De extends DespawnsAccessDecl = readonly never[], Tr extends TransitionsAccessDecl = readonly never[], SR extends SparseAccessDecl = readonly never[], SW extends SparseAccessDecl = readonly never[], RR extends RelationsAccessDecl = readonly never[], RW extends RelationsAccessDecl = readonly never[], QR extends ResourcesAccessDecl = readonly never[], QW extends ResourcesAccessDecl = readonly never[]> = {
|
|
@@ -184,10 +237,10 @@ export type DeclaredAccess<R extends DenseAccessDecl, W extends DenseAccessDecl,
|
|
|
184
237
|
/**
|
|
185
238
|
* The config shape the typed `registerSystem` overload infers. Structurally a
|
|
186
239
|
* `SystemConfig`, but every declaration list is its own type parameter (one
|
|
187
|
-
* inference site each
|
|
240
|
+
* inference site each, inferring a single config-object type parameter breaks
|
|
188
241
|
* contextual typing of `fn`), `queries` is constrained to `reads ∪ writes`
|
|
189
|
-
* (the compile-time declared-access lint), and `fn`
|
|
190
|
-
* context. `fn` and `onAdded` use
|
|
242
|
+
* (the compile-time declared-access lint), and `fn` and `onAdded` receive the narrowed
|
|
243
|
+
* context. `fn` and `onAdded` use method syntax deliberately: methods relate
|
|
191
244
|
* bivariantly, which is what lets an explicitly-annotated permissive
|
|
192
245
|
* `fn(ctx: SystemContext, dt)` (the escape hatch) keep compiling.
|
|
193
246
|
* `exclusive: true` configs take the dedicated permissive overload instead.
|
|
@@ -211,15 +264,26 @@ export interface TypedSystemConfig<R extends DenseAccessDecl, W extends DenseAcc
|
|
|
211
264
|
onAdded?(ctx: SystemContext<A>): void;
|
|
212
265
|
onRemoved?(): void;
|
|
213
266
|
dispose?(): void;
|
|
214
|
-
/** `boolean`, not `false`, so a config
|
|
215
|
-
* `exclusive` is `boolean | undefined`) still matches this overload
|
|
267
|
+
/** `boolean`, not `false`, so a config value typed `SystemConfig` (whose
|
|
268
|
+
* `exclusive` is `boolean | undefined`) still matches this overload. A
|
|
216
269
|
* literal `exclusive: true` config matches the dedicated permissive
|
|
217
270
|
* overload first by declaration order. */
|
|
218
271
|
exclusive?: boolean;
|
|
219
272
|
backendHandle?: BackendSystemHandle;
|
|
273
|
+
/** The column list is held to `reads ∪ writes` at the type layer, the same
|
|
274
|
+
* mirror `queries` carries, and each field name to its component's schema. */
|
|
275
|
+
readonly parallel?: ParallelConfig<R[number] | W[number]>;
|
|
220
276
|
}
|
|
221
277
|
export interface SystemDescriptor extends Readonly<SystemConfig> {
|
|
222
278
|
readonly id: SystemID;
|
|
279
|
+
/** @internal What one routed dispatch reads, resolved at registration.
|
|
280
|
+
* It hangs off the descriptor so the dispatch site resolves it with one
|
|
281
|
+
* property load instead of a keyed lookup. Absent on every system no route
|
|
282
|
+
* claims, and on every world that installed no route.
|
|
283
|
+
*
|
|
284
|
+
* Opaque. The plugin that built it is the only reader, so the core carries
|
|
285
|
+
* neither the plan's type nor the module that shapes it. */
|
|
286
|
+
readonly routePlan?: object;
|
|
223
287
|
readonly spawns: readonly (readonly ComponentDef[])[];
|
|
224
288
|
readonly despawns: readonly ComponentDef[];
|
|
225
289
|
readonly transitions: readonly SystemTransition[];
|
|
@@ -228,23 +292,44 @@ export interface SystemDescriptor extends Readonly<SystemConfig> {
|
|
|
228
292
|
}
|
|
229
293
|
/** @internal Normalize an authored access config into the declaration shape
|
|
230
294
|
* a `SystemDescriptor` carries: absent optional fields become shared frozen
|
|
231
|
-
* empties
|
|
232
|
-
* component
|
|
295
|
+
* empties. A `Template` reference in `spawns` or in `despawns` expands to its
|
|
296
|
+
* component list. Pure, does not mutate `config`. */
|
|
233
297
|
export declare function _normalizeAccess(config: SystemAccessConfig): SystemAccessDeclaration;
|
|
234
298
|
/** @internal Declared-access lint: in `DEV`, validate that every
|
|
235
299
|
* component a system lists in `queries` is covered by `reads ∪ writes`. A query
|
|
236
|
-
* term reads each listed component's presence
|
|
300
|
+
* term reads each listed component's presence and columns, so querying one the
|
|
237
301
|
* system never declared read access to would throw at the first iteration
|
|
238
|
-
* (`accessCheck`)
|
|
239
|
-
* registration instead. `exclusive`
|
|
240
|
-
*
|
|
302
|
+
* (`accessCheck`). This surfaces the drift between the two declarations at
|
|
303
|
+
* registration instead. An `exclusive` system (full access, empty reads and
|
|
304
|
+
* writes) is skipped, and so is a bare-function or two-argument overload,
|
|
305
|
+
* which carries no `queries`. Pure,
|
|
241
306
|
* throws `QUERY_ACCESS_UNDECLARED` on a violation, naming the offending ids. */
|
|
242
307
|
export declare function _assertQueriesDeclared(config: SystemConfig): void;
|
|
243
|
-
/** @internal
|
|
308
|
+
/** @internal, empty access declaration shared by the bare-fn and 2-arg
|
|
244
309
|
* `registerSystem` overloads. Systems registered via those overloads
|
|
245
|
-
* have no declared access and therefore fail any runtime check
|
|
246
|
-
* config form when the system performs any ECS access.
|
|
247
|
-
* the package barrel
|
|
310
|
+
* have no declared access and therefore fail any runtime check. Use the
|
|
311
|
+
* config form when the system performs any ECS access. Not exported from
|
|
312
|
+
* the package barrel, call sites should never spread this directly. */
|
|
248
313
|
export declare const _INTERNAL_EMPTY_ACCESS: SystemAccessDeclaration;
|
|
314
|
+
/** @internal The config a bare-function registration produces. The access
|
|
315
|
+
* surface is unannotated, so a component touch fails the runtime check. The
|
|
316
|
+
* config form is how a system declares its per-system access.
|
|
317
|
+
*
|
|
318
|
+
* Footgun guard: a bare `SystemFn` is `(ctx, dt)`, arity
|
|
319
|
+
* ≤ 2. A 3-param function here is almost certainly the `(q, ctx, dt)`
|
|
320
|
+
* query form with its `queryFn` second arg forgotten, which would
|
|
321
|
+
* otherwise silently bind `q := SystemContext`, `ctx := dt`, and
|
|
322
|
+
* `dt := undefined` (a NaN trap on the first arithmetic). Fail fast
|
|
323
|
+
* in `DEV` instead. Compiled out of production builds. */
|
|
324
|
+
export declare function _createBareSystemConfig(fn: SystemFn): SystemConfig;
|
|
325
|
+
/** @internal DEV-only: refuse a config that can never run anything. `fn` is
|
|
326
|
+
* optional only for a backend-executed system, so a config with neither `fn`
|
|
327
|
+
* nor `backendHandle` is a registration the schedule can do nothing with. */
|
|
328
|
+
export declare function _assertSystemRunnable(config: SystemConfig): void;
|
|
329
|
+
/** @internal Freeze one registration into the handle the schedule orders by.
|
|
330
|
+
* The world owns the id counter and hands the next value in, so the descriptor
|
|
331
|
+
* carries the same brand every other system id does. Cold path, one call per
|
|
332
|
+
* registration. */
|
|
333
|
+
export declare function _createSystemDescriptor(config: SystemConfig, routePlan: object | undefined, nextId: number): SystemDescriptor;
|
|
249
334
|
export {};
|
|
250
335
|
//# sourceMappingURL=system.d.ts.map
|