@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,126 @@
|
|
|
1
|
+
import { ComponentDef, ComponentID } from './component.js';
|
|
2
|
+
import { SparseComponentID } from './sparse_store.js';
|
|
3
|
+
import { RelationDef } from './relation.js';
|
|
4
|
+
import { BitSet } from '../../type_primitives/index.js';
|
|
5
|
+
/** The non-dense query terms, carried as one frozen record.
|
|
6
|
+
*
|
|
7
|
+
* Every term here leaves the dense component mask alone, so a query that
|
|
8
|
+
* carries one still shares its parent's live archetype list. They travel
|
|
9
|
+
* together through each derive (`and`, `not`, `or`) and through each
|
|
10
|
+
* driver seam below, so one parameter replaces the run of positional lists
|
|
11
|
+
* those signatures used to repeat.
|
|
12
|
+
*
|
|
13
|
+
* A query that carries none of them holds `NO_TERMS`. That is why
|
|
14
|
+
* `_carryNondense` decides with one reference comparison, where it used to
|
|
15
|
+
* test each term in turn. The old shape spread one term across a constructor
|
|
16
|
+
* parameter, a carry test and a `new Query` argument, and a term added to two
|
|
17
|
+
* of the three went unnoticed. Add a term by adding a field here and a line to
|
|
18
|
+
* `deriveTerms`.
|
|
19
|
+
*
|
|
20
|
+
* Cold path. Read once per `forEach` call, never per row. */
|
|
21
|
+
/** An archetype-level term a plugin contributes.
|
|
22
|
+
*
|
|
23
|
+
* The engine already answers three archetype questions with a bit mask: hold
|
|
24
|
+
* these, hold none of these, hold one of these. A term answers a fourth in
|
|
25
|
+
* whatever way the plugin wants, over the same input. `or(and(A, B), C)` is
|
|
26
|
+
* one, and so is any predicate over the component mask.
|
|
27
|
+
*
|
|
28
|
+
* Where it runs. Once per archetype, per query, at the rebuild the store's
|
|
29
|
+
* dirty epoch triggers. Never per row, and never per drive. A query that
|
|
30
|
+
* carries no term reaches a rebuild body byte-identical to today's.
|
|
31
|
+
*
|
|
32
|
+
* What the caller guarantees. `matches` is pure and stable: one archetype
|
|
33
|
+
* gives one answer for the life of the world. The archetype list is rebuilt
|
|
34
|
+
* from scratch on each epoch, so an unstable term does not corrupt the list,
|
|
35
|
+
* but it does make the matched set depend on when the epoch last advanced,
|
|
36
|
+
* which nothing else in the query engine does.
|
|
37
|
+
*
|
|
38
|
+
* Cold path. Build the term once and hold it. */
|
|
39
|
+
export interface ArchetypeTerm {
|
|
40
|
+
/** Names the term in a dev refusal. Diagnostics only, never a cache key. */
|
|
41
|
+
readonly name: string;
|
|
42
|
+
/** True when an archetype whose component mask is `mask` belongs. */
|
|
43
|
+
matches(mask: BitSet): boolean;
|
|
44
|
+
}
|
|
45
|
+
/** One operand of `and`, `or` or `not`. A component definition is a leaf, and
|
|
46
|
+
* holding it is the whole question. Any `ArchetypeTerm` is a node, which is
|
|
47
|
+
* how one combinator nests inside another. */
|
|
48
|
+
export type ArchetypeExpr = ComponentDef<any> | ArchetypeTerm;
|
|
49
|
+
/** Every operand holds. `and()` over nothing matches every archetype, the
|
|
50
|
+
* identity of the conjunction, so a fold over an empty list narrows nothing.
|
|
51
|
+
*
|
|
52
|
+
* Pair it with `where`: `q.where(and(Pos, Vel))`. Prefer `q.and(Pos, Vel)`
|
|
53
|
+
* when the operands are a flat list of definitions, because a dense term sets
|
|
54
|
+
* a mask bit and picks the archetypes, where an expression tests each one.
|
|
55
|
+
*
|
|
56
|
+
* Cold path. Build the expression once and hold it, because `where` caches on
|
|
57
|
+
* the term's identity. */
|
|
58
|
+
export declare function and(...terms: ArchetypeExpr[]): ArchetypeTerm;
|
|
59
|
+
/** One operand holds, or more. `or()` over nothing matches no archetype, the
|
|
60
|
+
* identity of the disjunction. Cold path, same caching rule as `and`. */
|
|
61
|
+
export declare function or(...terms: ArchetypeExpr[]): ArchetypeTerm;
|
|
62
|
+
/** No operand holds. Several operands read as one negated disjunction, which
|
|
63
|
+
* is the same set as the conjunction of each negation, so `not(A, B)` matches
|
|
64
|
+
* exactly what `Query.not(A, B)` matches. `not()` over nothing matches every
|
|
65
|
+
* archetype. Cold path, same caching rule as `and`. */
|
|
66
|
+
export declare function not(...terms: ArchetypeExpr[]): ArchetypeTerm;
|
|
67
|
+
export interface QueryTerms {
|
|
68
|
+
/** Sparse membership a matched entity must hold. Also carries the backing
|
|
69
|
+
* sparse id of each `(R, *)` relation term, which is how the wildcard
|
|
70
|
+
* reuses the sparse-match driver unchanged. */
|
|
71
|
+
readonly sparseIncludes: readonly SparseComponentID[];
|
|
72
|
+
/** Sparse membership a matched entity must not hold. */
|
|
73
|
+
readonly sparseExcludes: readonly SparseComponentID[];
|
|
74
|
+
/** Fetch-if-present terms. Does not narrow the matched set. Authorizes
|
|
75
|
+
* `getOptionalColumnRead` under `DEV`. */
|
|
76
|
+
readonly optionalTerms: readonly ComponentID[];
|
|
77
|
+
/** Include disabled rows. Widens the iteration bound from the enabled
|
|
78
|
+
* count to the total count. */
|
|
79
|
+
readonly includesDisabled: boolean;
|
|
80
|
+
/** `(R, *)` terms, recorded for the `DEV` `relationReads` access check
|
|
81
|
+
* alone. The driver reads the backing sparse id off `sparseIncludes`. */
|
|
82
|
+
readonly relationIncludes: readonly RelationDef[];
|
|
83
|
+
readonly relationExcludes: readonly RelationDef[];
|
|
84
|
+
/** Depth-ordering term. Reorders the matched entities, parents first. */
|
|
85
|
+
readonly hierarchyTerm: HierarchyTerm | null;
|
|
86
|
+
/** Archetype-level terms a plugin contributed. Narrows the matched set
|
|
87
|
+
* without touching the dense mask, so the derived query still shares the
|
|
88
|
+
* parent's live archetype list and the narrowing happens at the rebuild.
|
|
89
|
+
* Empty for every query the core builds. */
|
|
90
|
+
readonly archetypeTerms: readonly ArchetypeTerm[];
|
|
91
|
+
}
|
|
92
|
+
/** The terms of a query that declares none. Shared by every dense-only query,
|
|
93
|
+
* so the common path allocates nothing and `_carryNondense` compares one
|
|
94
|
+
* reference. Frozen: a mutation here would reach every such query. */
|
|
95
|
+
export declare const NO_TERMS: QueryTerms;
|
|
96
|
+
/** Build the terms for a derived query.
|
|
97
|
+
*
|
|
98
|
+
* The result never equals `NO_TERMS`, and `_carryNondense` depends on that.
|
|
99
|
+
* Every caller adds a term and none removes one, so a derive always widens the
|
|
100
|
+
* record. The zero-argument forms (`optional()`, `andSparse()`) return the
|
|
101
|
+
* receiver before they reach here, which is what keeps the rule true. A future
|
|
102
|
+
* term that can be removed breaks it, and must collapse an emptied record back
|
|
103
|
+
* to `NO_TERMS` here.
|
|
104
|
+
*
|
|
105
|
+
* Cold path: one call per cache miss on a derive, never per row. */
|
|
106
|
+
export declare function deriveTerms(base: QueryTerms, patch: Partial<QueryTerms>): QueryTerms;
|
|
107
|
+
/** No depth limit on a `.hierarchy(R)` term, yield every matched entity
|
|
108
|
+
* regardless of its depth in the tree. The default `maxDepth`. */
|
|
109
|
+
export declare const HIERARCHY_UNBOUNDED: number;
|
|
110
|
+
/** A `.hierarchy(R)` depth-ordering term. Records the exclusive relation
|
|
111
|
+
* whose tree defines the order and the (optional) max depth to yield. Stored on
|
|
112
|
+
* the Query and consumed by the `forEachEntity` hierarchy match path. Absent
|
|
113
|
+
* (`null`) for the common case. */
|
|
114
|
+
export interface HierarchyTerm {
|
|
115
|
+
/** The exclusive relation whose chain and tree defines the depth ordering. */
|
|
116
|
+
readonly relation: RelationDef;
|
|
117
|
+
/** Inclusive max depth to yield, where a root is 0. The walk skips an entity
|
|
118
|
+
* deeper than this. `HIERARCHY_UNBOUNDED` for no limit (bitECS `Hierarchy()`
|
|
119
|
+
* depth arg). */
|
|
120
|
+
readonly maxDepth: number;
|
|
121
|
+
}
|
|
122
|
+
export declare function termCacheKey(queryId: number, sparseId: number): number;
|
|
123
|
+
export declare function appendSparse(terms: readonly SparseComponentID[], id: number): readonly SparseComponentID[];
|
|
124
|
+
export declare function appendOptional(terms: readonly ComponentID[], id: number): readonly ComponentID[];
|
|
125
|
+
export declare function appendRelation(terms: readonly RelationDef[], def: RelationDef): readonly RelationDef[];
|
|
126
|
+
//# sourceMappingURL=query_terms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query_terms.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/query_terms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;KAcK;AAEL,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAmBpD;;;;;;;;;;;;;;;6DAe6D;AAC7D;;;;;;;;;;;;;;;;;iDAiBiD;AACjD,MAAM,WAAW,aAAa;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAQD;;8CAE8C;AAC9C,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;AAoB9D;;;;;;;;0BAQ0B;AAC1B,wBAAgB,GAAG,CAAC,GAAG,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,CAY5D;AAED;yEACyE;AACzE,wBAAgB,EAAE,CAAC,GAAG,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,CAY3D;AAED;;;uDAGuD;AACvD,wBAAgB,GAAG,CAAC,GAAG,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,CAY5D;AAED,MAAM,WAAW,UAAU;IAC1B;;mDAE+C;IAC/C,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtD,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtD;8CAC0C;IAC1C,QAAQ,CAAC,aAAa,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/C;mCAC+B;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC;6EACyE;IACzE,QAAQ,CAAC,gBAAgB,EAAE,SAAS,WAAW,EAAE,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,WAAW,EAAE,CAAC;IAClD,yEAAyE;IACzE,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C;;;gDAG4C;IAC5C,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;CAClD;AAED;;sEAEsE;AACtE,eAAO,MAAM,QAAQ,EAAE,UASrB,CAAC;AAEH;;;;;;;;;oEASoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAWpF;AAED;kEACkE;AAClE,eAAO,MAAM,mBAAmB,QAA2B,CAAC;AAE5D;;;mCAGmC;AACnC,MAAM,WAAW,aAAa;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B;;qBAEiB;IACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAaD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQtE;AAMD,wBAAgB,YAAY,CAC3B,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,EAAE,EAAE,MAAM,GACR,SAAS,iBAAiB,EAAE,CAK9B;AAKD,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,WAAW,EAAE,CAKhG;AAID,wBAAgB,cAAc,CAC7B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,GAAG,EAAE,WAAW,GACd,SAAS,WAAW,EAAE,CAKxB"}
|
package/dist/core/ecs/ref.d.cts
CHANGED
|
@@ -1,50 +1,29 @@
|
|
|
1
1
|
import { ComponentSchema } from './component.cjs';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
/** Maps component schema to scalar get/set properties: { x: number, y: number }. */
|
|
2
|
+
import { AnyTypedArray, TypedArrayTag } from '../../type_primitives/index.cjs';
|
|
3
|
+
/** Maps component schema to scalar get and set properties: { x: number, y: number }. */
|
|
5
4
|
export type ComponentRef<S extends ComponentSchema> = {
|
|
6
5
|
-readonly [K in keyof S]: number;
|
|
7
6
|
};
|
|
8
7
|
/**
|
|
9
8
|
* Read-only view of a component reference. This is an **advisory** barrier,
|
|
10
9
|
* not a runtime safety boundary: the `readonly` properties block field writes
|
|
11
|
-
* at the type layer, but
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* at the type layer, but the shared prototype installs working get and set for
|
|
11
|
+
* both `ref()` and `refRead()`, so a deliberate cast can still write through
|
|
12
|
+
* (and would skip the change-tick bump `ref()` performs). Treat it as "I
|
|
13
|
+
* promise I am only reading". The typechecker holds the promise. Nothing else
|
|
14
|
+
* does: no lint and no runtime check enforces it.
|
|
16
15
|
*/
|
|
17
16
|
export type ReadonlyComponentRef<S extends ComponentSchema> = {
|
|
18
17
|
readonly [K in keyof S]: number;
|
|
19
18
|
};
|
|
20
|
-
/**
|
|
21
|
-
export interface RefColumnGroup {
|
|
22
|
-
readonly layout: ArchetypeColumnLayout;
|
|
23
|
-
readonly columns: ColumnBacking<AnyTypedArray>[];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Create a ComponentRef bound to a specific row in a column group.
|
|
27
|
-
* The prototype is built once per column group and cached; subsequent
|
|
28
|
-
* calls for the same group only allocate the lightweight ref object.
|
|
29
|
-
*/
|
|
30
|
-
export declare function createRef<S extends ComponentSchema>(group: RefColumnGroup, row: number): ComponentRef<S>;
|
|
31
|
-
interface CursorInternal {
|
|
32
|
-
/** The current archetype's row plane (`Archetype._bufs`), index-parallel with
|
|
33
|
-
* its `_flatColumns`. Re-read on every `at()`; safe to hold between `at()` and
|
|
34
|
-
* a field access because `_syncRowPlane` refills it in place. */
|
|
35
|
-
_bufs: AnyTypedArray[];
|
|
36
|
-
/** Where this component's columns start in `_bufs` for the current archetype. */
|
|
37
|
-
_off: number;
|
|
38
|
-
_row: number;
|
|
39
|
-
}
|
|
40
|
-
/** Mutable single-entity cursor: field get/set plus `at(entity)`. */
|
|
19
|
+
/** Mutable single-entity cursor: field get and set plus `at(entity)`. */
|
|
41
20
|
export type ComponentCursor<S extends ComponentSchema> = {
|
|
42
21
|
-readonly [K in keyof S]: number;
|
|
43
22
|
} & CursorSeek;
|
|
44
23
|
/**
|
|
45
24
|
* Read-only cursor. **Advisory**, exactly like `ReadonlyComponentRef`: the
|
|
46
25
|
* prototype carries working setters for both variants, so a deliberate cast
|
|
47
|
-
* can still write through
|
|
26
|
+
* can still write through, and would skip the change-tick bump the mutable
|
|
48
27
|
* variant performs.
|
|
49
28
|
*/
|
|
50
29
|
export type ReadonlyComponentCursor<S extends ComponentSchema> = {
|
|
@@ -57,27 +36,109 @@ export interface CursorSeek {
|
|
|
57
36
|
*
|
|
58
37
|
* Returns the cursor, so a single-expression read stays one expression:
|
|
59
38
|
* `ecs.cursor(Pos).at(e).x`. In a loop, prefer calling it as a statement and
|
|
60
|
-
* reading fields off the cursor
|
|
39
|
+
* reading fields off the cursor, that is the form the allocation-free path
|
|
61
40
|
* exists for.
|
|
62
41
|
*/
|
|
63
42
|
at(entity: import('./entity.cjs').EntityID): this;
|
|
64
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* The columns an accessor reads: one component's columns in one archetype,
|
|
46
|
+
* indexed by the global id of each field's name (`internFieldName`), with holes at
|
|
47
|
+
* the ids of names the component does not have. The archetype owns one such
|
|
48
|
+
* array for each component it holds (`Archetype._accCols`) and refills it in
|
|
49
|
+
* place whenever a buffer moves (grow, refresh), so a held array stays current.
|
|
50
|
+
*/
|
|
51
|
+
export type AccessorColumns = AnyTypedArray[];
|
|
52
|
+
/** The own state of an accessor: two reserved names that registration
|
|
53
|
+
* refuses as field names (`RESERVED_FIELD_NAMES`). Every accessor writes these
|
|
54
|
+
* two in the same order, and thus has the same shape. Write them as literals
|
|
55
|
+
* at a hot site. See the note at the top of the file. */
|
|
56
|
+
export interface Accessor {
|
|
57
|
+
__cols: AccessorColumns;
|
|
58
|
+
__row: number;
|
|
59
|
+
}
|
|
60
|
+
/** Field names a component cannot have, because an accessor owns them. `at`
|
|
61
|
+
* is not here: it is the cursor's own method, and only a cursor over the
|
|
62
|
+
* component rejects it, so a component with such a field keeps every other
|
|
63
|
+
* path. */
|
|
64
|
+
export declare const RESERVED_FIELD_NAMES: readonly string[];
|
|
65
65
|
/**
|
|
66
66
|
* `at()` needs the archetype and row for an entity, and only the Store can
|
|
67
67
|
* resolve those. Passing the whole Store into the cursor would hand it (and its
|
|
68
|
-
* users) the mutation surface
|
|
68
|
+
* users) the mutation surface. This is the one operation it actually needs,
|
|
69
69
|
* supplied as a closure by whoever creates the cursor.
|
|
70
70
|
*
|
|
71
|
-
* The binder also carries the mutable
|
|
71
|
+
* The binder also carries the mutable and read-only difference: `Store.cursorBinder`
|
|
72
72
|
* closes over whether to stamp the change tick, so the variant is settled once
|
|
73
73
|
* at creation instead of branched on per `at()`.
|
|
74
74
|
*/
|
|
75
|
-
export type CursorBinder = (cursor:
|
|
75
|
+
export type CursorBinder = (cursor: Accessor, entity: unknown) => void;
|
|
76
|
+
/** The DEV-only check a sparse cursor runs on `at()`: access, liveness and
|
|
77
|
+
* membership (`Store.sparseCursorCheck`). Production code never calls it, so
|
|
78
|
+
* the sparse `at` is one mask and one field write. */
|
|
79
|
+
export type SparseCursorCheck = (entity: unknown) => void;
|
|
80
|
+
/**
|
|
81
|
+
* The global id of field name `name`. The first call for a name assigns the
|
|
82
|
+
* id and installs the name's accessor on the shared prototype, with the
|
|
83
|
+
* literal that `kind` selects. A later call with a different `kind` replaces
|
|
84
|
+
* that accessor with the mixed one, one time. Every other call returns the id
|
|
85
|
+
* and changes nothing.
|
|
86
|
+
*/
|
|
87
|
+
export declare function internFieldName(name: string, kind: TypedArrayTag): number;
|
|
88
|
+
/** The global name id of each field of a component, in schema order. Made one
|
|
89
|
+
* time at component registration. The archetype places the component's columns
|
|
90
|
+
* at these ids in its accessor column arrays. */
|
|
91
|
+
export declare function fieldGids(fieldNames: readonly string[], fieldTypes: readonly TypedArrayTag[]): Int32Array;
|
|
92
|
+
/** The column at every id of a name the component does not have. An
|
|
93
|
+
* `AccessorColumns` array is packed with it (no holes), so a column load in an
|
|
94
|
+
* accessor never has to test for a hole. It is empty, so a read through it
|
|
95
|
+
* gives `undefined` and a write is dropped: the same silence a wrong field
|
|
96
|
+
* read had before, and DEV names the mistake through `checkedCol`. */
|
|
97
|
+
export declare const NO_COLUMN: AnyTypedArray;
|
|
76
98
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
|
|
99
|
+
* Create a ref bound to `row` of `cols`: one `Object.create` on the shared
|
|
100
|
+
* prototype and two field writes. Nothing else is allocated for each ref.
|
|
101
|
+
*/
|
|
102
|
+
export declare function createRef<S extends ComponentSchema>(cols: AccessorColumns, row: number): ComponentRef<S>;
|
|
103
|
+
/**
|
|
104
|
+
* Build a cursor over a component whose fields are `fieldNames`, bound by
|
|
105
|
+
* `bind`. One small object, and then nothing per entity. `at` is an own data
|
|
106
|
+
* property defined directly, and not assigned, so that an accessor named `at`
|
|
107
|
+
* on the shared prototype (a field of some other component) cannot intercept
|
|
108
|
+
* the write. `cols` is the column array the cursor starts on: a dense cursor
|
|
109
|
+
* starts on `EMPTY_COLS` and its binder writes the archetype's array on each
|
|
110
|
+
* `at()`. A sparse cursor starts on its store's array, which never changes
|
|
111
|
+
* identity, so its binder writes the row alone.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createCursor<S extends ComponentSchema>(fieldNames: readonly string[], bind: CursorBinder, cols?: AccessorColumns): ComponentCursor<S>;
|
|
114
|
+
/** What a mutable sparse cursor stamps on each `at()`: the sparse store's
|
|
115
|
+
* row ticks, `null` until the component tracks them, and its component-level
|
|
116
|
+
* change tick. The store object itself, seen through this shape. */
|
|
117
|
+
export interface SparseTickPlane {
|
|
118
|
+
ticks: Uint32Array | null;
|
|
119
|
+
changedTick: number;
|
|
120
|
+
}
|
|
121
|
+
/** Where the stamp's value comes from: the store's change tick. */
|
|
122
|
+
export interface ChangeClock {
|
|
123
|
+
readonly changeTick: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Build a cursor over a sparse component. The columns are id-indexed, so
|
|
127
|
+
* `at()` is one mask and one field write, and the column array is the store's
|
|
128
|
+
* own, given at creation and never replaced (the store refills it in place).
|
|
129
|
+
*
|
|
130
|
+
* This is a separate function with its own `at` literal, and not
|
|
131
|
+
* `createCursor` with a different binder, on purpose. A dense cursor's `at`
|
|
132
|
+
* calls its binder through one call site, and that site inlines the binder as
|
|
133
|
+
* long as it sees one function. A sparse binder is a different function, so a
|
|
134
|
+
* world with both kinds of cursor would make that site megamorphic and cost
|
|
135
|
+
* both kinds a call on every `at()`. Separate literals keep separate sites,
|
|
136
|
+
* one for each kind. Measured.
|
|
137
|
+
*
|
|
138
|
+
* A mutable cursor (`plane` given) also records the entity for the row grain
|
|
139
|
+
* of change detection, on each `at()`, as the dense cursor does: one load and
|
|
140
|
+
* one branch while the component keeps no row ticks, two stores once it does.
|
|
141
|
+
* The read-only cursor keeps the bare literal.
|
|
80
142
|
*/
|
|
81
|
-
export declare function
|
|
82
|
-
export {};
|
|
143
|
+
export declare function createSparseCursor<S extends ComponentSchema>(fieldNames: readonly string[], cols: AccessorColumns, check: SparseCursorCheck, plane?: SparseTickPlane | null, clock?: ChangeClock | null): ComponentCursor<S>;
|
|
83
144
|
//# sourceMappingURL=ref.d.ts.map
|
package/dist/core/ecs/ref.d.ts
CHANGED
|
@@ -1,50 +1,29 @@
|
|
|
1
1
|
import { ComponentSchema } from './component.js';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
/** Maps component schema to scalar get/set properties: { x: number, y: number }. */
|
|
2
|
+
import { AnyTypedArray, TypedArrayTag } from '../../type_primitives/index.js';
|
|
3
|
+
/** Maps component schema to scalar get and set properties: { x: number, y: number }. */
|
|
5
4
|
export type ComponentRef<S extends ComponentSchema> = {
|
|
6
5
|
-readonly [K in keyof S]: number;
|
|
7
6
|
};
|
|
8
7
|
/**
|
|
9
8
|
* Read-only view of a component reference. This is an **advisory** barrier,
|
|
10
9
|
* not a runtime safety boundary: the `readonly` properties block field writes
|
|
11
|
-
* at the type layer, but
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* at the type layer, but the shared prototype installs working get and set for
|
|
11
|
+
* both `ref()` and `refRead()`, so a deliberate cast can still write through
|
|
12
|
+
* (and would skip the change-tick bump `ref()` performs). Treat it as "I
|
|
13
|
+
* promise I am only reading". The typechecker holds the promise. Nothing else
|
|
14
|
+
* does: no lint and no runtime check enforces it.
|
|
16
15
|
*/
|
|
17
16
|
export type ReadonlyComponentRef<S extends ComponentSchema> = {
|
|
18
17
|
readonly [K in keyof S]: number;
|
|
19
18
|
};
|
|
20
|
-
/**
|
|
21
|
-
export interface RefColumnGroup {
|
|
22
|
-
readonly layout: ArchetypeColumnLayout;
|
|
23
|
-
readonly columns: ColumnBacking<AnyTypedArray>[];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Create a ComponentRef bound to a specific row in a column group.
|
|
27
|
-
* The prototype is built once per column group and cached; subsequent
|
|
28
|
-
* calls for the same group only allocate the lightweight ref object.
|
|
29
|
-
*/
|
|
30
|
-
export declare function createRef<S extends ComponentSchema>(group: RefColumnGroup, row: number): ComponentRef<S>;
|
|
31
|
-
interface CursorInternal {
|
|
32
|
-
/** The current archetype's row plane (`Archetype._bufs`), index-parallel with
|
|
33
|
-
* its `_flatColumns`. Re-read on every `at()`; safe to hold between `at()` and
|
|
34
|
-
* a field access because `_syncRowPlane` refills it in place. */
|
|
35
|
-
_bufs: AnyTypedArray[];
|
|
36
|
-
/** Where this component's columns start in `_bufs` for the current archetype. */
|
|
37
|
-
_off: number;
|
|
38
|
-
_row: number;
|
|
39
|
-
}
|
|
40
|
-
/** Mutable single-entity cursor: field get/set plus `at(entity)`. */
|
|
19
|
+
/** Mutable single-entity cursor: field get and set plus `at(entity)`. */
|
|
41
20
|
export type ComponentCursor<S extends ComponentSchema> = {
|
|
42
21
|
-readonly [K in keyof S]: number;
|
|
43
22
|
} & CursorSeek;
|
|
44
23
|
/**
|
|
45
24
|
* Read-only cursor. **Advisory**, exactly like `ReadonlyComponentRef`: the
|
|
46
25
|
* prototype carries working setters for both variants, so a deliberate cast
|
|
47
|
-
* can still write through
|
|
26
|
+
* can still write through, and would skip the change-tick bump the mutable
|
|
48
27
|
* variant performs.
|
|
49
28
|
*/
|
|
50
29
|
export type ReadonlyComponentCursor<S extends ComponentSchema> = {
|
|
@@ -57,27 +36,109 @@ export interface CursorSeek {
|
|
|
57
36
|
*
|
|
58
37
|
* Returns the cursor, so a single-expression read stays one expression:
|
|
59
38
|
* `ecs.cursor(Pos).at(e).x`. In a loop, prefer calling it as a statement and
|
|
60
|
-
* reading fields off the cursor
|
|
39
|
+
* reading fields off the cursor, that is the form the allocation-free path
|
|
61
40
|
* exists for.
|
|
62
41
|
*/
|
|
63
42
|
at(entity: import('./entity.js').EntityID): this;
|
|
64
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* The columns an accessor reads: one component's columns in one archetype,
|
|
46
|
+
* indexed by the global id of each field's name (`internFieldName`), with holes at
|
|
47
|
+
* the ids of names the component does not have. The archetype owns one such
|
|
48
|
+
* array for each component it holds (`Archetype._accCols`) and refills it in
|
|
49
|
+
* place whenever a buffer moves (grow, refresh), so a held array stays current.
|
|
50
|
+
*/
|
|
51
|
+
export type AccessorColumns = AnyTypedArray[];
|
|
52
|
+
/** The own state of an accessor: two reserved names that registration
|
|
53
|
+
* refuses as field names (`RESERVED_FIELD_NAMES`). Every accessor writes these
|
|
54
|
+
* two in the same order, and thus has the same shape. Write them as literals
|
|
55
|
+
* at a hot site. See the note at the top of the file. */
|
|
56
|
+
export interface Accessor {
|
|
57
|
+
__cols: AccessorColumns;
|
|
58
|
+
__row: number;
|
|
59
|
+
}
|
|
60
|
+
/** Field names a component cannot have, because an accessor owns them. `at`
|
|
61
|
+
* is not here: it is the cursor's own method, and only a cursor over the
|
|
62
|
+
* component rejects it, so a component with such a field keeps every other
|
|
63
|
+
* path. */
|
|
64
|
+
export declare const RESERVED_FIELD_NAMES: readonly string[];
|
|
65
65
|
/**
|
|
66
66
|
* `at()` needs the archetype and row for an entity, and only the Store can
|
|
67
67
|
* resolve those. Passing the whole Store into the cursor would hand it (and its
|
|
68
|
-
* users) the mutation surface
|
|
68
|
+
* users) the mutation surface. This is the one operation it actually needs,
|
|
69
69
|
* supplied as a closure by whoever creates the cursor.
|
|
70
70
|
*
|
|
71
|
-
* The binder also carries the mutable
|
|
71
|
+
* The binder also carries the mutable and read-only difference: `Store.cursorBinder`
|
|
72
72
|
* closes over whether to stamp the change tick, so the variant is settled once
|
|
73
73
|
* at creation instead of branched on per `at()`.
|
|
74
74
|
*/
|
|
75
|
-
export type CursorBinder = (cursor:
|
|
75
|
+
export type CursorBinder = (cursor: Accessor, entity: unknown) => void;
|
|
76
|
+
/** The DEV-only check a sparse cursor runs on `at()`: access, liveness and
|
|
77
|
+
* membership (`Store.sparseCursorCheck`). Production code never calls it, so
|
|
78
|
+
* the sparse `at` is one mask and one field write. */
|
|
79
|
+
export type SparseCursorCheck = (entity: unknown) => void;
|
|
80
|
+
/**
|
|
81
|
+
* The global id of field name `name`. The first call for a name assigns the
|
|
82
|
+
* id and installs the name's accessor on the shared prototype, with the
|
|
83
|
+
* literal that `kind` selects. A later call with a different `kind` replaces
|
|
84
|
+
* that accessor with the mixed one, one time. Every other call returns the id
|
|
85
|
+
* and changes nothing.
|
|
86
|
+
*/
|
|
87
|
+
export declare function internFieldName(name: string, kind: TypedArrayTag): number;
|
|
88
|
+
/** The global name id of each field of a component, in schema order. Made one
|
|
89
|
+
* time at component registration. The archetype places the component's columns
|
|
90
|
+
* at these ids in its accessor column arrays. */
|
|
91
|
+
export declare function fieldGids(fieldNames: readonly string[], fieldTypes: readonly TypedArrayTag[]): Int32Array;
|
|
92
|
+
/** The column at every id of a name the component does not have. An
|
|
93
|
+
* `AccessorColumns` array is packed with it (no holes), so a column load in an
|
|
94
|
+
* accessor never has to test for a hole. It is empty, so a read through it
|
|
95
|
+
* gives `undefined` and a write is dropped: the same silence a wrong field
|
|
96
|
+
* read had before, and DEV names the mistake through `checkedCol`. */
|
|
97
|
+
export declare const NO_COLUMN: AnyTypedArray;
|
|
76
98
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
|
|
99
|
+
* Create a ref bound to `row` of `cols`: one `Object.create` on the shared
|
|
100
|
+
* prototype and two field writes. Nothing else is allocated for each ref.
|
|
101
|
+
*/
|
|
102
|
+
export declare function createRef<S extends ComponentSchema>(cols: AccessorColumns, row: number): ComponentRef<S>;
|
|
103
|
+
/**
|
|
104
|
+
* Build a cursor over a component whose fields are `fieldNames`, bound by
|
|
105
|
+
* `bind`. One small object, and then nothing per entity. `at` is an own data
|
|
106
|
+
* property defined directly, and not assigned, so that an accessor named `at`
|
|
107
|
+
* on the shared prototype (a field of some other component) cannot intercept
|
|
108
|
+
* the write. `cols` is the column array the cursor starts on: a dense cursor
|
|
109
|
+
* starts on `EMPTY_COLS` and its binder writes the archetype's array on each
|
|
110
|
+
* `at()`. A sparse cursor starts on its store's array, which never changes
|
|
111
|
+
* identity, so its binder writes the row alone.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createCursor<S extends ComponentSchema>(fieldNames: readonly string[], bind: CursorBinder, cols?: AccessorColumns): ComponentCursor<S>;
|
|
114
|
+
/** What a mutable sparse cursor stamps on each `at()`: the sparse store's
|
|
115
|
+
* row ticks, `null` until the component tracks them, and its component-level
|
|
116
|
+
* change tick. The store object itself, seen through this shape. */
|
|
117
|
+
export interface SparseTickPlane {
|
|
118
|
+
ticks: Uint32Array | null;
|
|
119
|
+
changedTick: number;
|
|
120
|
+
}
|
|
121
|
+
/** Where the stamp's value comes from: the store's change tick. */
|
|
122
|
+
export interface ChangeClock {
|
|
123
|
+
readonly changeTick: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Build a cursor over a sparse component. The columns are id-indexed, so
|
|
127
|
+
* `at()` is one mask and one field write, and the column array is the store's
|
|
128
|
+
* own, given at creation and never replaced (the store refills it in place).
|
|
129
|
+
*
|
|
130
|
+
* This is a separate function with its own `at` literal, and not
|
|
131
|
+
* `createCursor` with a different binder, on purpose. A dense cursor's `at`
|
|
132
|
+
* calls its binder through one call site, and that site inlines the binder as
|
|
133
|
+
* long as it sees one function. A sparse binder is a different function, so a
|
|
134
|
+
* world with both kinds of cursor would make that site megamorphic and cost
|
|
135
|
+
* both kinds a call on every `at()`. Separate literals keep separate sites,
|
|
136
|
+
* one for each kind. Measured.
|
|
137
|
+
*
|
|
138
|
+
* A mutable cursor (`plane` given) also records the entity for the row grain
|
|
139
|
+
* of change detection, on each `at()`, as the dense cursor does: one load and
|
|
140
|
+
* one branch while the component keeps no row ticks, two stores once it does.
|
|
141
|
+
* The read-only cursor keeps the bare literal.
|
|
80
142
|
*/
|
|
81
|
-
export declare function
|
|
82
|
-
export {};
|
|
143
|
+
export declare function createSparseCursor<S extends ComponentSchema>(fieldNames: readonly string[], cols: AccessorColumns, check: SparseCursorCheck, plane?: SparseTickPlane | null, clock?: ChangeClock | null): ComponentCursor<S>;
|
|
83
144
|
//# sourceMappingURL=ref.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/ref.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2FK;AAEL,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAW1E,wFAAwF;AACxF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,eAAe,IAAI;IACrD,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,eAAe,IAAI;IAC7D,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CAC/B,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,eAAe,IAAI;IACxD,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CAChC,GAAG,UAAU,CAAC;AAEf;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,eAAe,IAAI;IAChE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CAC/B,GAAG,UAAU,CAAC;AAEf,MAAM,WAAW,UAAU;IAC1B;;;;;;;;OAQG;IACH,EAAE,CAAC,MAAM,EAAE,OAAO,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,EAAE,CAAC;AAE9C;;;yDAGyD;AACzD,MAAM,WAAW,QAAQ;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;WAGW;AACX,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAwB,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAEvE;;sDAEsD;AACtD,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAU1D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAezE;AAED;;iDAEiD;AACjD,wBAAgB,SAAS,CACxB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,UAAU,EAAE,SAAS,aAAa,EAAE,GAClC,UAAU,CAKZ;AAED;;;;sEAIsE;AACtE,eAAO,MAAM,SAAS,EAAE,aAAmC,CAAC;AA+I5D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,eAAe,EAClD,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,GACT,YAAY,CAAC,CAAC,CAAC,CAKjB;AA+DD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,EACrD,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,IAAI,EAAE,YAAY,EAClB,IAAI,GAAE,eAA4B,GAChC,eAAe,CAAC,CAAC,CAAC,CA2BpB;AAED;;oEAEoE;AACpE,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,eAAe,EAC3D,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,iBAAiB,EACxB,KAAK,GAAE,eAAe,GAAG,IAAW,EACpC,KAAK,GAAE,WAAW,GAAG,IAAW,GAC9B,eAAe,CAAC,CAAC,CAAC,CAyCpB"}
|