@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
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { batch as u, createSignal as f } from "solid-js";
|
|
2
|
+
import { createStore as b } from "solid-js/store";
|
|
3
|
+
const w = "solid";
|
|
4
|
+
class y {
|
|
5
|
+
eid = 0;
|
|
6
|
+
_cols;
|
|
7
|
+
constructor(e) {
|
|
8
|
+
this._cols = e;
|
|
9
|
+
}
|
|
10
|
+
field(e) {
|
|
11
|
+
return this._cols[e];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
class m {
|
|
15
|
+
eid = 0;
|
|
16
|
+
row = 0;
|
|
17
|
+
_cols = /* @__PURE__ */ new Map();
|
|
18
|
+
_arch;
|
|
19
|
+
_def;
|
|
20
|
+
constructor(e) {
|
|
21
|
+
this._def = e;
|
|
22
|
+
}
|
|
23
|
+
bind(e) {
|
|
24
|
+
this._arch = e, this._cols.clear();
|
|
25
|
+
}
|
|
26
|
+
field(e) {
|
|
27
|
+
let s = this._cols.get(e);
|
|
28
|
+
return s === void 0 && (s = this._arch.getColumnRead(this._def, e), this._cols.set(e, s)), s[this.row];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function g(_, e) {
|
|
32
|
+
const s = _?.id;
|
|
33
|
+
if (typeof s != "number")
|
|
34
|
+
throw new TypeError(
|
|
35
|
+
`${e}: the definition is not a dense component, got ${String(_)}. Pass a dense component definition`
|
|
36
|
+
);
|
|
37
|
+
return s;
|
|
38
|
+
}
|
|
39
|
+
class p {
|
|
40
|
+
keys;
|
|
41
|
+
pending = /* @__PURE__ */ new Set();
|
|
42
|
+
cid;
|
|
43
|
+
wantsSet;
|
|
44
|
+
_owner;
|
|
45
|
+
_changes;
|
|
46
|
+
_def;
|
|
47
|
+
_project;
|
|
48
|
+
_cursor;
|
|
49
|
+
_entityReader;
|
|
50
|
+
_columnReader;
|
|
51
|
+
_setKeys;
|
|
52
|
+
/** What the view holds now, and the seed of a cell made later. The key set
|
|
53
|
+
* is derived from it, so a publish or a delete that changes its size marks
|
|
54
|
+
* the key signal dirty. */
|
|
55
|
+
_values = /* @__PURE__ */ new Map();
|
|
56
|
+
/** The cells a caller asked for. Two maps rather than one of pairs, so the
|
|
57
|
+
* publish takes one lookup and the accessor lookup stays off that path. */
|
|
58
|
+
_cellGet = /* @__PURE__ */ new Map();
|
|
59
|
+
_cellSet = /* @__PURE__ */ new Map();
|
|
60
|
+
_equals;
|
|
61
|
+
_keysDirty = !1;
|
|
62
|
+
_baseline;
|
|
63
|
+
_disposed = !1;
|
|
64
|
+
constructor(e, s, t, i, n, h, o) {
|
|
65
|
+
this._owner = e, this._changes = s.changes, this.cid = t, this._def = i, this._project = n, this.wantsSet = h === "entity", this._cursor = s.world.cursorRead(i), this._entityReader = new y(this._cursor), this._columnReader = h === "column" ? new m(i) : null, this._equals = o === void 0 ? void 0 : (r, l) => r === l || r !== void 0 && l !== void 0 && o(r, l), this._baseline = s.store.changeTick;
|
|
66
|
+
const [d, c] = f([]);
|
|
67
|
+
this.keys = d, this._setKeys = c;
|
|
68
|
+
}
|
|
69
|
+
cell(e) {
|
|
70
|
+
let s = this._cellGet.get(e);
|
|
71
|
+
if (s === void 0) {
|
|
72
|
+
const t = this._values.get(e), [i, n] = this._equals === void 0 ? f(t) : f(t, { equals: this._equals });
|
|
73
|
+
s = i, this._cellGet.set(e, i), this._cellSet.set(e, n);
|
|
74
|
+
}
|
|
75
|
+
return s;
|
|
76
|
+
}
|
|
77
|
+
/** Publish every current enabled member. Cold path, and the caller wraps it
|
|
78
|
+
* in a `batch`. */
|
|
79
|
+
seed() {
|
|
80
|
+
const e = this._changes.collectEnabledWith(this.cid);
|
|
81
|
+
for (let s = 0; s < e.length; s++) this._publishOne(e[s]);
|
|
82
|
+
this._flushKeys();
|
|
83
|
+
}
|
|
84
|
+
publish(e) {
|
|
85
|
+
if (this._columnReader !== null)
|
|
86
|
+
this._changes.forEachChangedArchetype(this.cid, this._baseline, this._onArchetype), this._baseline = e;
|
|
87
|
+
else {
|
|
88
|
+
const s = this._changes.drainSet(this.cid, e), t = s.scanned;
|
|
89
|
+
for (let n = 0; n < t.length; n++) this._publishOne(t[n]);
|
|
90
|
+
const i = s.listed;
|
|
91
|
+
for (let n = 0; n < i.length; n++) {
|
|
92
|
+
const h = i[n];
|
|
93
|
+
this._isPublishable(h) && this._publishOne(h);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
this.pending.size !== 0 && (this.pending.forEach(this._resolvePending), this.pending.clear()), this._flushKeys();
|
|
97
|
+
}
|
|
98
|
+
dispose() {
|
|
99
|
+
this._disposed || (this._disposed = !0, this._owner._remove(this));
|
|
100
|
+
}
|
|
101
|
+
/** One archetype of the column grain. Bound once, so the sweep allocates no
|
|
102
|
+
* closure per tick. */
|
|
103
|
+
_onArchetype = (e) => {
|
|
104
|
+
const s = this._columnReader;
|
|
105
|
+
s.bind(e);
|
|
106
|
+
const t = e.entityIds, i = e.entityCount;
|
|
107
|
+
for (let n = 0; n < i; n++) {
|
|
108
|
+
s.row = n;
|
|
109
|
+
const h = t[n];
|
|
110
|
+
s.eid = h, this._writeRow(h, this._project(s));
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
/** One entity the structural hook recorded. Bound once, for the same
|
|
114
|
+
* reason as `_onArchetype`. */
|
|
115
|
+
_resolvePending = (e) => {
|
|
116
|
+
this._isPublishable(e) ? this._publishOne(e) : this._deleteOne(e);
|
|
117
|
+
};
|
|
118
|
+
_isPublishable(e) {
|
|
119
|
+
const s = this._changes;
|
|
120
|
+
return s.isAlive(e) && s.hasComponent(e, this._def) && !s.isDisabled(e);
|
|
121
|
+
}
|
|
122
|
+
_publishOne(e) {
|
|
123
|
+
this._cursor.at(e), this._entityReader.eid = e, this._writeRow(e, this._project(this._entityReader));
|
|
124
|
+
}
|
|
125
|
+
_writeRow(e, s) {
|
|
126
|
+
const t = this._values.size;
|
|
127
|
+
this._values.set(e, s), this._values.size !== t && (this._keysDirty = !0);
|
|
128
|
+
const i = this._cellSet.get(e);
|
|
129
|
+
i !== void 0 && i(s);
|
|
130
|
+
}
|
|
131
|
+
/** Drop the row. A row the view never held writes nothing, so a spawn and a
|
|
132
|
+
* despawn inside one tick leave Solid untouched. */
|
|
133
|
+
_deleteOne(e) {
|
|
134
|
+
if (!this._values.delete(e)) return;
|
|
135
|
+
this._keysDirty = !0;
|
|
136
|
+
const s = this._cellSet.get(e);
|
|
137
|
+
s !== void 0 && s(void 0);
|
|
138
|
+
}
|
|
139
|
+
_flushKeys() {
|
|
140
|
+
this._keysDirty && (this._keysDirty = !1, this._setKeys(Array.from(this._values.keys())));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
class v {
|
|
144
|
+
value;
|
|
145
|
+
pending = /* @__PURE__ */ new Set();
|
|
146
|
+
cid;
|
|
147
|
+
wantsSet = !0;
|
|
148
|
+
_owner;
|
|
149
|
+
_changes;
|
|
150
|
+
_def;
|
|
151
|
+
_eid;
|
|
152
|
+
_fields;
|
|
153
|
+
/** The values the store held at creation, the reset target of a remove and
|
|
154
|
+
* of a disable. A Solid store has no row to delete here, so the channel
|
|
155
|
+
* states its empty value instead of a blind zero. */
|
|
156
|
+
_defaults;
|
|
157
|
+
_cursor;
|
|
158
|
+
_cols;
|
|
159
|
+
_write;
|
|
160
|
+
_disposed = !1;
|
|
161
|
+
constructor(e, s, t, i, n, h) {
|
|
162
|
+
this._owner = e, this._changes = s.changes, this.cid = t, this._def = i, this._eid = n, this._fields = h, this._cursor = s.world.cursorRead(i), this._cols = this._cursor;
|
|
163
|
+
const o = {};
|
|
164
|
+
for (let l = 0; l < h.length; l++) o[h[l]] = 0;
|
|
165
|
+
const [d, c] = b(o);
|
|
166
|
+
this.value = d, this._write = c;
|
|
167
|
+
const r = [];
|
|
168
|
+
for (let l = 0; l < h.length; l++) r.push(o[h[l]]);
|
|
169
|
+
this._defaults = r;
|
|
170
|
+
}
|
|
171
|
+
/** Publish the target's current fields, when it is there to read. Cold
|
|
172
|
+
* path, and the caller wraps it in a `batch`. */
|
|
173
|
+
seed() {
|
|
174
|
+
this._isPublishable() && this._publish();
|
|
175
|
+
}
|
|
176
|
+
publish(e) {
|
|
177
|
+
const s = this._changes.drainSet(this.cid, e), t = s.scanned;
|
|
178
|
+
let i = !1;
|
|
179
|
+
for (let n = 0; n < t.length; n++) t[n] === this._eid && (i = !0);
|
|
180
|
+
if (!i) {
|
|
181
|
+
const n = s.listed;
|
|
182
|
+
for (let h = 0; h < n.length; h++)
|
|
183
|
+
n[h] === this._eid && this._isPublishable() && (i = !0);
|
|
184
|
+
}
|
|
185
|
+
i && this._publish(), this.pending.size !== 0 && (this.pending.has(this._eid) && (this._isPublishable() ? this._publish() : this._reset()), this.pending.clear());
|
|
186
|
+
}
|
|
187
|
+
dispose() {
|
|
188
|
+
this._disposed || (this._disposed = !0, this._owner._remove(this));
|
|
189
|
+
}
|
|
190
|
+
_isPublishable() {
|
|
191
|
+
const e = this._changes, s = this._eid;
|
|
192
|
+
return e.isAlive(s) && e.hasComponent(s, this._def) && !e.isDisabled(s);
|
|
193
|
+
}
|
|
194
|
+
_publish() {
|
|
195
|
+
this._cursor.at(this._eid);
|
|
196
|
+
const e = this._fields;
|
|
197
|
+
for (let s = 0; s < e.length; s++) this._write(e[s], this._cols[e[s]]);
|
|
198
|
+
}
|
|
199
|
+
_reset() {
|
|
200
|
+
const e = this._fields;
|
|
201
|
+
for (let s = 0; s < e.length; s++) this._write(e[s], this._defaults[s]);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
class S {
|
|
205
|
+
_host;
|
|
206
|
+
_views = [];
|
|
207
|
+
_byCid = /* @__PURE__ */ new Map();
|
|
208
|
+
constructor(e) {
|
|
209
|
+
this._host = e, e.changes.addStructuralHook(this._onStructural), e.onSettle(this._onSettle);
|
|
210
|
+
}
|
|
211
|
+
component(e, s, t = {}) {
|
|
212
|
+
const i = g(e, "solid.component"), n = new p(
|
|
213
|
+
this,
|
|
214
|
+
this._host,
|
|
215
|
+
i,
|
|
216
|
+
e,
|
|
217
|
+
s,
|
|
218
|
+
t.grain ?? "entity",
|
|
219
|
+
t.eq
|
|
220
|
+
);
|
|
221
|
+
return this._add(n), (t.seedExisting ?? !0) && u(() => n.seed()), n;
|
|
222
|
+
}
|
|
223
|
+
fields(e, s, t = {}) {
|
|
224
|
+
const i = (d) => {
|
|
225
|
+
const c = {};
|
|
226
|
+
for (let r = 0; r < s.length; r++) c[s[r]] = d.field(s[r]);
|
|
227
|
+
return c;
|
|
228
|
+
}, n = t.eq ?? ((d, c) => {
|
|
229
|
+
const r = d, l = c;
|
|
230
|
+
for (let a = 0; a < s.length; a++) if (r[s[a]] !== l[s[a]]) return !1;
|
|
231
|
+
return !0;
|
|
232
|
+
}), h = g(e, "solid.fields"), o = new p(
|
|
233
|
+
this,
|
|
234
|
+
this._host,
|
|
235
|
+
h,
|
|
236
|
+
e,
|
|
237
|
+
i,
|
|
238
|
+
t.grain ?? "entity",
|
|
239
|
+
n
|
|
240
|
+
);
|
|
241
|
+
return this._add(o), (t.seedExisting ?? !0) && u(() => o.seed()), o;
|
|
242
|
+
}
|
|
243
|
+
singleton(e, s, t, i = {}) {
|
|
244
|
+
const n = g(e, "solid.singleton"), h = new v(this, this._host, n, e, s, t);
|
|
245
|
+
return this._add(h), (i.seedExisting ?? !0) && u(() => h.seed()), h;
|
|
246
|
+
}
|
|
247
|
+
/** Drop a view and recompute its component's ask. Idempotent through the
|
|
248
|
+
* view's own disposed flag. */
|
|
249
|
+
_remove(e) {
|
|
250
|
+
const s = this._views.indexOf(e);
|
|
251
|
+
s >= 0 && this._views.splice(s, 1);
|
|
252
|
+
const t = this._byCid.get(e.cid);
|
|
253
|
+
if (t !== void 0) {
|
|
254
|
+
const i = t.indexOf(e);
|
|
255
|
+
i >= 0 && t.splice(i, 1), t.length === 0 && this._byCid.delete(e.cid);
|
|
256
|
+
}
|
|
257
|
+
this._reconfigure(e.cid);
|
|
258
|
+
}
|
|
259
|
+
_add(e) {
|
|
260
|
+
this._views.push(e);
|
|
261
|
+
let s = this._byCid.get(e.cid);
|
|
262
|
+
s === void 0 && (s = [], this._byCid.set(e.cid, s)), s.push(e), this._reconfigure(e.cid);
|
|
263
|
+
}
|
|
264
|
+
/** The OR of every live view's ask for `cid`. All-false on the last
|
|
265
|
+
* dispose, which is the same as never asking. Cold path. */
|
|
266
|
+
_reconfigure(e) {
|
|
267
|
+
const s = this._byCid.get(e);
|
|
268
|
+
let t = !1, i = !1;
|
|
269
|
+
if (s !== void 0)
|
|
270
|
+
for (let h = 0; h < s.length; h++)
|
|
271
|
+
t = !0, s[h].wantsSet && (i = !0);
|
|
272
|
+
const n = {
|
|
273
|
+
add: t,
|
|
274
|
+
remove: t,
|
|
275
|
+
disable: t,
|
|
276
|
+
enable: t,
|
|
277
|
+
set: i
|
|
278
|
+
};
|
|
279
|
+
this._host.changes.configureObservation(w, e, n);
|
|
280
|
+
}
|
|
281
|
+
/** Record the round's structural events, and write nothing. A view resolves
|
|
282
|
+
* them at settle, so an entity that arrives and leaves inside one tick
|
|
283
|
+
* never reaches Solid. */
|
|
284
|
+
_onStructural = (e) => {
|
|
285
|
+
this._views.length !== 0 && (this._record(e.addComp, e.addEid, e.addLen), this._record(e.remComp, e.remEid, e.remLen), this._record(e.disComp, e.disEid, e.disLen), this._record(e.enaComp, e.enaEid, e.enaLen));
|
|
286
|
+
};
|
|
287
|
+
_record(e, s, t) {
|
|
288
|
+
for (let i = 0; i < t; i++) {
|
|
289
|
+
const n = this._byCid.get(e[i]);
|
|
290
|
+
if (n === void 0) continue;
|
|
291
|
+
const h = s[i];
|
|
292
|
+
for (let o = 0; o < n.length; o++) n[o].pending.add(h);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/** The run tick of the settle in progress. It reaches `_publishAll` through
|
|
296
|
+
* a field so the batched body can be bound once. */
|
|
297
|
+
_run = 0;
|
|
298
|
+
_publishAll = () => {
|
|
299
|
+
const e = this._views, s = this._run;
|
|
300
|
+
for (let t = 0; t < e.length; t++) e[t].publish(s);
|
|
301
|
+
};
|
|
302
|
+
/** One Solid flush for the whole plugin, whatever the number of views.
|
|
303
|
+
* A world with no view calls `batch` never. */
|
|
304
|
+
_onSettle = (e) => {
|
|
305
|
+
this._views.length !== 0 && (this._run = e, u(this._publishAll));
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
function k() {
|
|
309
|
+
return {
|
|
310
|
+
name: "solid",
|
|
311
|
+
requires: [],
|
|
312
|
+
install(_) {
|
|
313
|
+
return { solid: new S(_) };
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
export {
|
|
318
|
+
k as solid
|
|
319
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { WorkerPool, AttachWorkersOptions } from './pool.cjs';
|
|
2
|
+
import { ParallelPlan } from './plan.cjs';
|
|
3
|
+
import { Plugin, PluginHost, SystemRoutePlanner } from '../../core/ecs/plugin.cjs';
|
|
4
|
+
import { SystemConfig } from '../../core/ecs/system.cjs';
|
|
5
|
+
export { WorkerPool, DEFAULT_JOIN_TIMEOUT_MS } from './pool.cjs';
|
|
6
|
+
export type { AttachWorkersOptions } from './pool.cjs';
|
|
7
|
+
/**
|
|
8
|
+
* Start, report and stop the one pool a world runs its parallel systems on.
|
|
9
|
+
*
|
|
10
|
+
* It is also what the world calls back into. `plan` runs at registration, for
|
|
11
|
+
* every system, and claims the ones that declare `parallel`. The dispose hook
|
|
12
|
+
* runs with the world. Both are the plugin's half of the seam, not surface a
|
|
13
|
+
* caller uses.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ECSWorkers implements SystemRoutePlanner {
|
|
16
|
+
private readonly _memory;
|
|
17
|
+
private readonly _changes;
|
|
18
|
+
private readonly _control;
|
|
19
|
+
/** Resolve the default query of a `parallel` config, which is the first
|
|
20
|
+
* entry of `queries` read as a with-only query. */
|
|
21
|
+
private readonly _resolveQuery;
|
|
22
|
+
private readonly _fieldId;
|
|
23
|
+
/** Every parallel plan, in registration order. The pool loads a kernel for
|
|
24
|
+
* each and clears them all on detach. */
|
|
25
|
+
private readonly _plans;
|
|
26
|
+
private _pool;
|
|
27
|
+
/** @internal Built by `workers()`, never by a caller. */
|
|
28
|
+
constructor(host: PluginHost);
|
|
29
|
+
/** The attached pool, or `null`. */
|
|
30
|
+
get pool(): WorkerPool | null;
|
|
31
|
+
/**
|
|
32
|
+
* Start a pool of workers and run this world's parallel systems on it.
|
|
33
|
+
*
|
|
34
|
+
* Each worker gets the store bytes, the store base and a control buffer, and
|
|
35
|
+
* loads the kernel of every parallel system already registered. The promise
|
|
36
|
+
* resolves when every worker is parked on the barrier with its kernels in
|
|
37
|
+
* hand. A system registered later runs `fn` until `pool.settled()` resolves.
|
|
38
|
+
*
|
|
39
|
+
* The world's backing must be `shared` or `wasm`, because a worker reads the
|
|
40
|
+
* bytes directly. The host must be able to block on `Atomics.wait`, which a
|
|
41
|
+
* browser main thread refuses. One pool per world.
|
|
42
|
+
*
|
|
43
|
+
* The host parks on every pass, so a worker that dies would park it for the
|
|
44
|
+
* life of the process. `joinTimeoutMs` bounds that wait, fails the frame
|
|
45
|
+
* with `PARALLEL_KERNEL_FAILED`, and leaves every later frame on the
|
|
46
|
+
* sequential body until the caller detaches.
|
|
47
|
+
*
|
|
48
|
+
* Cold path. Call it once, outside any frame.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const pool = await world.workers.attach({ count: 4 });
|
|
52
|
+
* // later
|
|
53
|
+
* await world.workers.detach();
|
|
54
|
+
*/
|
|
55
|
+
attach(options?: AttachWorkersOptions): Promise<WorkerPool>;
|
|
56
|
+
/** Stop the workers and put every parallel system back on its `fn`.
|
|
57
|
+
* Resolves at once on a world that holds no pool. */
|
|
58
|
+
detach(): Promise<void>;
|
|
59
|
+
/** @internal The registration seam. Resolves one `parallel` config into the
|
|
60
|
+
* plan the dispatch reads, and refuses what a worker cannot serve. The
|
|
61
|
+
* world asks about every system, so a system that declares no `parallel`
|
|
62
|
+
* answers `undefined` and keeps its own `fn`. */
|
|
63
|
+
plan(config: SystemConfig): ParallelPlan | undefined;
|
|
64
|
+
/** @internal The world is going away. The workers hold the store bytes and
|
|
65
|
+
* keep the process alive, so they stop with it. `ECS.dispose` is
|
|
66
|
+
* synchronous and the stop is not, so this starts it and awaits nothing. */
|
|
67
|
+
dispose(): void;
|
|
68
|
+
}
|
|
69
|
+
/** The world surface this plugin adds. */
|
|
70
|
+
export interface WorkersPlugin {
|
|
71
|
+
readonly workers: ECSWorkers;
|
|
72
|
+
}
|
|
73
|
+
/** The workers plugin, for `ECS.create({ plugins: [workers()] })`. */
|
|
74
|
+
export declare function workers(): Plugin<WorkersPlugin>;
|
|
75
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { WorkerPool, AttachWorkersOptions } from './pool.js';
|
|
2
|
+
import { ParallelPlan } from './plan.js';
|
|
3
|
+
import { Plugin, PluginHost, SystemRoutePlanner } from '../../core/ecs/plugin.js';
|
|
4
|
+
import { SystemConfig } from '../../core/ecs/system.js';
|
|
5
|
+
export { WorkerPool, DEFAULT_JOIN_TIMEOUT_MS } from './pool.js';
|
|
6
|
+
export type { AttachWorkersOptions } from './pool.js';
|
|
7
|
+
/**
|
|
8
|
+
* Start, report and stop the one pool a world runs its parallel systems on.
|
|
9
|
+
*
|
|
10
|
+
* It is also what the world calls back into. `plan` runs at registration, for
|
|
11
|
+
* every system, and claims the ones that declare `parallel`. The dispose hook
|
|
12
|
+
* runs with the world. Both are the plugin's half of the seam, not surface a
|
|
13
|
+
* caller uses.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ECSWorkers implements SystemRoutePlanner {
|
|
16
|
+
private readonly _memory;
|
|
17
|
+
private readonly _changes;
|
|
18
|
+
private readonly _control;
|
|
19
|
+
/** Resolve the default query of a `parallel` config, which is the first
|
|
20
|
+
* entry of `queries` read as a with-only query. */
|
|
21
|
+
private readonly _resolveQuery;
|
|
22
|
+
private readonly _fieldId;
|
|
23
|
+
/** Every parallel plan, in registration order. The pool loads a kernel for
|
|
24
|
+
* each and clears them all on detach. */
|
|
25
|
+
private readonly _plans;
|
|
26
|
+
private _pool;
|
|
27
|
+
/** @internal Built by `workers()`, never by a caller. */
|
|
28
|
+
constructor(host: PluginHost);
|
|
29
|
+
/** The attached pool, or `null`. */
|
|
30
|
+
get pool(): WorkerPool | null;
|
|
31
|
+
/**
|
|
32
|
+
* Start a pool of workers and run this world's parallel systems on it.
|
|
33
|
+
*
|
|
34
|
+
* Each worker gets the store bytes, the store base and a control buffer, and
|
|
35
|
+
* loads the kernel of every parallel system already registered. The promise
|
|
36
|
+
* resolves when every worker is parked on the barrier with its kernels in
|
|
37
|
+
* hand. A system registered later runs `fn` until `pool.settled()` resolves.
|
|
38
|
+
*
|
|
39
|
+
* The world's backing must be `shared` or `wasm`, because a worker reads the
|
|
40
|
+
* bytes directly. The host must be able to block on `Atomics.wait`, which a
|
|
41
|
+
* browser main thread refuses. One pool per world.
|
|
42
|
+
*
|
|
43
|
+
* The host parks on every pass, so a worker that dies would park it for the
|
|
44
|
+
* life of the process. `joinTimeoutMs` bounds that wait, fails the frame
|
|
45
|
+
* with `PARALLEL_KERNEL_FAILED`, and leaves every later frame on the
|
|
46
|
+
* sequential body until the caller detaches.
|
|
47
|
+
*
|
|
48
|
+
* Cold path. Call it once, outside any frame.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const pool = await world.workers.attach({ count: 4 });
|
|
52
|
+
* // later
|
|
53
|
+
* await world.workers.detach();
|
|
54
|
+
*/
|
|
55
|
+
attach(options?: AttachWorkersOptions): Promise<WorkerPool>;
|
|
56
|
+
/** Stop the workers and put every parallel system back on its `fn`.
|
|
57
|
+
* Resolves at once on a world that holds no pool. */
|
|
58
|
+
detach(): Promise<void>;
|
|
59
|
+
/** @internal The registration seam. Resolves one `parallel` config into the
|
|
60
|
+
* plan the dispatch reads, and refuses what a worker cannot serve. The
|
|
61
|
+
* world asks about every system, so a system that declares no `parallel`
|
|
62
|
+
* answers `undefined` and keeps its own `fn`. */
|
|
63
|
+
plan(config: SystemConfig): ParallelPlan | undefined;
|
|
64
|
+
/** @internal The world is going away. The workers hold the store bytes and
|
|
65
|
+
* keep the process alive, so they stop with it. `ECS.dispose` is
|
|
66
|
+
* synchronous and the stop is not, so this starts it and awaits nothing. */
|
|
67
|
+
dispose(): void;
|
|
68
|
+
}
|
|
69
|
+
/** The world surface this plugin adds. */
|
|
70
|
+
export interface WorkersPlugin {
|
|
71
|
+
readonly workers: ECSWorkers;
|
|
72
|
+
}
|
|
73
|
+
/** The workers plugin, for `ECS.create({ plugins: [workers()] })`. */
|
|
74
|
+
export declare function workers(): Plugin<WorkersPlugin>;
|
|
75
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;KAoBK;AAEL,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAA4C,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACrF,OAAO,KAAK,EAEX,MAAM,EACN,UAAU,EAGV,kBAAkB,EAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,UAAW,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC;uDACmD;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;IACrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAC7E;6CACyC;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,KAAK,CAA2B;IAExC,yDAAyD;gBAC7C,IAAI,EAAE,UAAU;IAe5B,oCAAoC;IACpC,IAAW,IAAI,IAAI,UAAU,GAAG,IAAI,CAEnC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmCxE;yDACqD;IACxC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC;;;qDAGiD;IAC1C,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS;IAuB3D;;gFAE4E;IACrE,OAAO,IAAI,IAAI;CAItB;AAED,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC7B;AAED,sEAAsE;AACtE,wBAAgB,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,CAO/C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/***
|
|
2
|
+
* `node:worker_threads`, reached without a specifier a bundler can see.
|
|
3
|
+
*
|
|
4
|
+
* The pool and the worker entry both need the node threads module, and both
|
|
5
|
+
* ship in a bundle an app may compile for the browser. A literal
|
|
6
|
+
* `import("node:worker_threads")` is visible to the bundler, so the bundler
|
|
7
|
+
* reports an externalized node builtin and ships a stub module in its place.
|
|
8
|
+
* The report is noise, because the browser branch never evaluates the call, and
|
|
9
|
+
* an app author cannot act on it.
|
|
10
|
+
*
|
|
11
|
+
* `process.getBuiltinModule` reads the builtin with no specifier for a bundler
|
|
12
|
+
* to resolve. Node gained it after the version this package supports, so the
|
|
13
|
+
* fallback builds the specifier at run time, which no bundler resolves either.
|
|
14
|
+
***/
|
|
15
|
+
type NodeThreads = typeof import("node:worker_threads");
|
|
16
|
+
/**
|
|
17
|
+
* The node threads module, on a node-compatible runtime.
|
|
18
|
+
*
|
|
19
|
+
* The caller decides that the runtime is node-compatible. On a browser this
|
|
20
|
+
* rejects, because there is no builtin to read. Cold path, and a caller runs it
|
|
21
|
+
* once for each pool and once for each worker.
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadNodeThreads(): Promise<NodeThreads>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=node_threads.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/***
|
|
2
|
+
* `node:worker_threads`, reached without a specifier a bundler can see.
|
|
3
|
+
*
|
|
4
|
+
* The pool and the worker entry both need the node threads module, and both
|
|
5
|
+
* ship in a bundle an app may compile for the browser. A literal
|
|
6
|
+
* `import("node:worker_threads")` is visible to the bundler, so the bundler
|
|
7
|
+
* reports an externalized node builtin and ships a stub module in its place.
|
|
8
|
+
* The report is noise, because the browser branch never evaluates the call, and
|
|
9
|
+
* an app author cannot act on it.
|
|
10
|
+
*
|
|
11
|
+
* `process.getBuiltinModule` reads the builtin with no specifier for a bundler
|
|
12
|
+
* to resolve. Node gained it after the version this package supports, so the
|
|
13
|
+
* fallback builds the specifier at run time, which no bundler resolves either.
|
|
14
|
+
***/
|
|
15
|
+
type NodeThreads = typeof import("node:worker_threads");
|
|
16
|
+
/**
|
|
17
|
+
* The node threads module, on a node-compatible runtime.
|
|
18
|
+
*
|
|
19
|
+
* The caller decides that the runtime is node-compatible. On a browser this
|
|
20
|
+
* rejects, because there is no builtin to read. Cold path, and a caller runs it
|
|
21
|
+
* once for each pool and once for each worker.
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadNodeThreads(): Promise<NodeThreads>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=node_threads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node_threads.d.ts","sourceRoot":"","sources":["../../../src/plugins/workers/node_threads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;KAaK;AAEL,KAAK,WAAW,GAAG,cAAc,qBAAqB,CAAC,CAAC;AAMxD;;;;;;GAMG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAS5D"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ComponentDef } from '../../core/ecs/component.cjs';
|
|
2
|
+
import { Query } from '../../core/ecs/query.cjs';
|
|
3
|
+
import { ParallelConfig, SystemConfig } from '../../core/ecs/system.cjs';
|
|
4
|
+
/**
|
|
5
|
+
* The total matched row count below which a parallel system runs `fn` on the
|
|
6
|
+
* main thread.
|
|
7
|
+
*
|
|
8
|
+
* Measured, and deliberately conservative. A probe sweeps a memory-bound body
|
|
9
|
+
* and a compute-bound one, each as a `js` kernel and as a `wasm` kernel, over
|
|
10
|
+
* the shared backing and the wasm backing, on more than one engine family. This
|
|
11
|
+
* value sits above every crossover it found. So a world that never tunes it
|
|
12
|
+
* never pays a pooled frame that the sequential frame would have won.
|
|
13
|
+
*
|
|
14
|
+
* One number cannot serve two costs, and this one serves the memory-bound case.
|
|
15
|
+
* A compute-bound body crosses far earlier, and this value costs it most of its
|
|
16
|
+
* gain. Give such a system its own `minRows`.
|
|
17
|
+
*
|
|
18
|
+
* The crossover also rises with the worker count, because the barrier grows
|
|
19
|
+
* while the work for each worker shrinks. The plan cannot scale by that count,
|
|
20
|
+
* because the pool attaches after the plan is built.
|
|
21
|
+
*
|
|
22
|
+
* `parallel.minRows` from the caller always wins, and zero is a value.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_PARALLEL_MIN_ROWS = 200000;
|
|
25
|
+
/** What one dispatch reads. Mutable, because the pool fills `slot` and `ready`
|
|
26
|
+
* when the workers report the kernel loaded. */
|
|
27
|
+
export interface ParallelPlan {
|
|
28
|
+
/** The kernel's slot in the pool, or -1 before the pool takes it. */
|
|
29
|
+
slot: number;
|
|
30
|
+
/** Whether every worker holds the kernel. False until then, and the system
|
|
31
|
+
* runs `fn` in the meantime. */
|
|
32
|
+
ready: boolean;
|
|
33
|
+
readonly exportName: string;
|
|
34
|
+
/** The query whose archetypes the kernel runs over. */
|
|
35
|
+
readonly query: Query<any>;
|
|
36
|
+
readonly include: Uint32Array;
|
|
37
|
+
readonly exclude: Uint32Array | null;
|
|
38
|
+
/** `(component_id, field_id)` pairs, flat, in the kernel's argument order. */
|
|
39
|
+
readonly specs: Int32Array;
|
|
40
|
+
readonly minRows: number;
|
|
41
|
+
/** The components whose changed tick the join stamps. */
|
|
42
|
+
readonly writes: readonly ComponentDef<any>[];
|
|
43
|
+
readonly kernel: ParallelConfig["kernel"];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Refuse a parallel config a worker cannot serve. Dev guard, and it runs at
|
|
47
|
+
* registration so the fault names the config instead of a frame.
|
|
48
|
+
*
|
|
49
|
+
* `query` is the resolved first query, because the dense-only rule is a
|
|
50
|
+
* property of the query and not of the declaration list.
|
|
51
|
+
*/
|
|
52
|
+
export declare function assertParallelConfig(config: SystemConfig, query: Query<any>): void;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve one parallel config into the plan the dispatch reads. Runs in every
|
|
55
|
+
* build, because the masks and the column specs are not diagnostics.
|
|
56
|
+
*
|
|
57
|
+
* `fieldId` maps a field name to the id the descriptor carries, which is the
|
|
58
|
+
* world's own mapping.
|
|
59
|
+
*/
|
|
60
|
+
export declare function createParallelPlan(parallel: ParallelConfig, query: Query<any>, writes: readonly ComponentDef<any>[], fieldId: (def: ComponentDef<any>, field: string) => number): ParallelPlan;
|
|
61
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ComponentDef } from '../../core/ecs/component.js';
|
|
2
|
+
import { Query } from '../../core/ecs/query.js';
|
|
3
|
+
import { ParallelConfig, SystemConfig } from '../../core/ecs/system.js';
|
|
4
|
+
/**
|
|
5
|
+
* The total matched row count below which a parallel system runs `fn` on the
|
|
6
|
+
* main thread.
|
|
7
|
+
*
|
|
8
|
+
* Measured, and deliberately conservative. A probe sweeps a memory-bound body
|
|
9
|
+
* and a compute-bound one, each as a `js` kernel and as a `wasm` kernel, over
|
|
10
|
+
* the shared backing and the wasm backing, on more than one engine family. This
|
|
11
|
+
* value sits above every crossover it found. So a world that never tunes it
|
|
12
|
+
* never pays a pooled frame that the sequential frame would have won.
|
|
13
|
+
*
|
|
14
|
+
* One number cannot serve two costs, and this one serves the memory-bound case.
|
|
15
|
+
* A compute-bound body crosses far earlier, and this value costs it most of its
|
|
16
|
+
* gain. Give such a system its own `minRows`.
|
|
17
|
+
*
|
|
18
|
+
* The crossover also rises with the worker count, because the barrier grows
|
|
19
|
+
* while the work for each worker shrinks. The plan cannot scale by that count,
|
|
20
|
+
* because the pool attaches after the plan is built.
|
|
21
|
+
*
|
|
22
|
+
* `parallel.minRows` from the caller always wins, and zero is a value.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_PARALLEL_MIN_ROWS = 200000;
|
|
25
|
+
/** What one dispatch reads. Mutable, because the pool fills `slot` and `ready`
|
|
26
|
+
* when the workers report the kernel loaded. */
|
|
27
|
+
export interface ParallelPlan {
|
|
28
|
+
/** The kernel's slot in the pool, or -1 before the pool takes it. */
|
|
29
|
+
slot: number;
|
|
30
|
+
/** Whether every worker holds the kernel. False until then, and the system
|
|
31
|
+
* runs `fn` in the meantime. */
|
|
32
|
+
ready: boolean;
|
|
33
|
+
readonly exportName: string;
|
|
34
|
+
/** The query whose archetypes the kernel runs over. */
|
|
35
|
+
readonly query: Query<any>;
|
|
36
|
+
readonly include: Uint32Array;
|
|
37
|
+
readonly exclude: Uint32Array | null;
|
|
38
|
+
/** `(component_id, field_id)` pairs, flat, in the kernel's argument order. */
|
|
39
|
+
readonly specs: Int32Array;
|
|
40
|
+
readonly minRows: number;
|
|
41
|
+
/** The components whose changed tick the join stamps. */
|
|
42
|
+
readonly writes: readonly ComponentDef<any>[];
|
|
43
|
+
readonly kernel: ParallelConfig["kernel"];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Refuse a parallel config a worker cannot serve. Dev guard, and it runs at
|
|
47
|
+
* registration so the fault names the config instead of a frame.
|
|
48
|
+
*
|
|
49
|
+
* `query` is the resolved first query, because the dense-only rule is a
|
|
50
|
+
* property of the query and not of the declaration list.
|
|
51
|
+
*/
|
|
52
|
+
export declare function assertParallelConfig(config: SystemConfig, query: Query<any>): void;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve one parallel config into the plan the dispatch reads. Runs in every
|
|
55
|
+
* build, because the masks and the column specs are not diagnostics.
|
|
56
|
+
*
|
|
57
|
+
* `fieldId` maps a field name to the id the descriptor carries, which is the
|
|
58
|
+
* world's own mapping.
|
|
59
|
+
*/
|
|
60
|
+
export declare function createParallelPlan(parallel: ParallelConfig, query: Query<any>, writes: readonly ComponentDef<any>[], fieldId: (def: ComponentDef<any>, field: string) => number): ParallelPlan;
|
|
61
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/plugins/workers/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;KAYK;AAGL,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAEjD;gDACgD;AAChD,MAAM,WAAW,YAAY;IAC5B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb;oCACgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CAC1C;AA8ED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CA0GlF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,EAAE,SAAS,YAAY,CAAC,GAAG,CAAC,EAAE,EACpC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GACxD,YAAY,CAmBd"}
|