@awesome-ecs/abstract 0.32.0 → 0.32.1

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/README.md CHANGED
@@ -1,125 +1,125 @@
1
- # Awesome ECS - Abstract Package
2
-
3
- ## Overview
4
-
5
- The Abstract package defines all core interfaces and abstractions for the Entity-Component-System (ECS) framework. It provides the foundational contracts that all other packages implement, including:
6
-
7
- - **Components**: Data-storage contracts
8
- - **Entities**: Container contracts for components and relationships
9
- - **Pipelines**: Middleware-based execution chains
10
- - **Systems**: Modular logic execution patterns
11
- - **Utilities**: Serialization, events, and scheduling
12
-
13
- This package has **zero external dependencies** and serves as the contract layer for the entire ECS framework.
14
-
15
- ## Core Concepts
16
-
17
- ### Components (`src/components/`)
18
-
19
- Components are **data-only containers**. They should never contain business logic.
20
-
21
- ```typescript
22
- import { IComponent } from "@awesome-ecs/abstract";
23
-
24
- export class HealthComponent implements IComponent {
25
- readonly componentType = ComponentType.health;
26
- readonly isSerializable = true; // Include in snapshots
27
-
28
- current: number = 100;
29
- max: number = 100;
30
- }
31
- ```
32
-
33
- **Key interfaces:**
34
- - `IComponent`: Base component interface with `componentType` and `isSerializable`
35
- - `IdentityComponent`: Mandatory component tracking entity UID and model
36
-
37
- ### Entities (`src/entities/`)
38
-
39
- Entities are immutable **containers of components** and **proxies to other entities**. They never directly reference other entities—they use proxies for loose coupling.
40
-
41
- ```typescript
42
- export class GridEntity extends EntityBase<GridModel> {
43
- // Strongly-typed component getters
44
- get coordinates(): CoordinatesComponent {
45
- return this.getComponent(ComponentType.coordinates);
46
- }
47
-
48
- // Entity proxies for relationships (not direct references)
49
- get sceneProxy(): EntityProxy<SceneEntity> {
50
- return this.getProxy(EntityType.scene);
51
- }
52
- }
53
- ```
54
-
55
- **Key files:**
56
- - `entity.ts`: Base `IEntity` interface and `EntityTypeUid` types
57
- - `entity-proxies.ts`: `EntityProxy` for loose-coupling relationships
58
- - `entity-snapshot.ts`: `IEntitySnapshot` for serialization
59
- - `entity-queue.ts`: `IEntityUpdate` and `IEntityUpdateQueue` for batching changes
60
- - `entity-repository.ts`: `IEntityRepository` for entity lookups
61
- - `entity-scheduler.ts`: `IEntityScheduler` for deferred updates
62
- - `entity-events.ts`: `IEntityEvents` for reactive patterns
63
-
64
- ### Pipelines (`src/pipelines/`)
65
-
66
- Pipelines execute **middleware chains** with two phases:
67
-
68
- 1. **dispatch(context)**: Main execution phase
69
- 2. **cleanup(context)**: Resource cleanup phase
70
-
71
- ```typescript
72
- export interface IPipeline<TContext extends IPipelineContext> {
73
- use(middleware: IMiddleware<TContext>): this;
74
- dispatch(context: Partial<TContext>): void | Promise<void>;
75
- cleanup(context: Partial<TContext>): void | Promise<void>;
76
- }
77
- ```
78
-
79
- **Key files:**
80
- - `pipeline.ts`: Core `IPipeline` interface
81
- - `middleware.ts`: `IMiddleware` contract (action + optional cleanup)
82
- - `middleware-runner.ts`: Middleware execution engine
83
- - `pipeline-context.ts`: Context passed to middleware
84
- - `pipeline-runner.ts`: Pipeline execution orchestration
85
-
86
- ### Systems (`src/systems/`)
87
-
88
- Systems are **modular logic units** that operate on entities. They implement the middleware pattern.
89
-
90
- **Pipeline-based systems:**
91
- - `system-middleware.ts`: `ISystemMiddleware<TEntity>` - middleware for a specific entity type
92
- - `system-context.ts`: Context passed to system middleware (entity, events, repository, etc.)
93
-
94
- **Module-based organization:**
95
- - `systems-module.ts`: `ISystemsModule<TEntity>` - groups related systems targeting an entity type
96
- - `systems-module-builder.ts`: `ISystemsModuleBuilder<TEntity>` - fluent builder for pipeline registration
97
- - `systems-module-repository.ts`: Module lifecycle and registration
98
-
99
- **Runtime execution:**
100
- - `systems-runtime.ts`: `ISystemsRuntime` - core tick-based execution loop
101
- - `systems-runtime-context.ts`: Context for runtime execution
102
- - `systems-runtime-middleware.ts`: Middleware for runtime operations
103
-
104
- ### Utilities (`src/utils/`)
105
-
106
- - `types.ts`: Common types (`Immutable`, `BooleanProps`, `Readonly`)
107
- - `json-serializer.ts`: JSON serialization contracts
108
- - `logger.ts`: Logging interface
109
- - `performance-timer.ts`: Performance measurement
110
-
111
- ## Key Design Principles
112
-
113
- 1. **Components are data-only** - no behavior, just properties
114
- 2. **Entities are immutable** - modifications through systems only
115
- 3. **Relationships use proxies** - loose coupling between entities
116
- 4. **Systems are middleware** - pluggable into pipelines
117
- 5. **Pipelines are composable** - middleware chains with dispatch + cleanup
118
-
119
- ## What's NOT in Abstract
120
-
121
- - Concrete entity implementations (→ @awesome-ecs/core)
122
- - System module base classes (→ @awesome-ecs/core)
123
- - Component factories (→ @awesome-ecs/core)
124
- - Multi-threading (→ @awesome-ecs/workers)
125
- - AI patterns (→ @awesome-ecs/ai)
1
+ # Awesome ECS - Abstract Package
2
+
3
+ ## Overview
4
+
5
+ The Abstract package defines all core interfaces and abstractions for the Entity-Component-System (ECS) framework. It provides the foundational contracts that all other packages implement, including:
6
+
7
+ - **Components**: Data-storage contracts
8
+ - **Entities**: Container contracts for components and relationships
9
+ - **Pipelines**: Middleware-based execution chains
10
+ - **Systems**: Modular logic execution patterns
11
+ - **Utilities**: Serialization, events, and scheduling
12
+
13
+ This package has **zero external dependencies** and serves as the contract layer for the entire ECS framework.
14
+
15
+ ## Core Concepts
16
+
17
+ ### Components (`src/components/`)
18
+
19
+ Components are **data-only containers**. They should never contain business logic.
20
+
21
+ ```typescript
22
+ import { IComponent } from "@awesome-ecs/abstract";
23
+
24
+ export class HealthComponent implements IComponent {
25
+ readonly componentType = ComponentType.health;
26
+ readonly isSerializable = true; // Include in snapshots
27
+
28
+ current: number = 100;
29
+ max: number = 100;
30
+ }
31
+ ```
32
+
33
+ **Key interfaces:**
34
+ - `IComponent`: Base component interface with `componentType` and `isSerializable`
35
+ - `IdentityComponent`: Mandatory component tracking entity UID and model
36
+
37
+ ### Entities (`src/entities/`)
38
+
39
+ Entities are immutable **containers of components** and **proxies to other entities**. They never directly reference other entities—they use proxies for loose coupling.
40
+
41
+ ```typescript
42
+ export class GridEntity extends EntityBase<GridModel> {
43
+ // Strongly-typed component getters
44
+ get coordinates(): CoordinatesComponent {
45
+ return this.getComponent(ComponentType.coordinates);
46
+ }
47
+
48
+ // Entity proxies for relationships (not direct references)
49
+ get sceneProxy(): EntityProxy<SceneEntity> {
50
+ return this.getProxy(EntityType.scene);
51
+ }
52
+ }
53
+ ```
54
+
55
+ **Key files:**
56
+ - `entity.ts`: Base `IEntity` interface and `EntityTypeUid` types
57
+ - `entity-proxies.ts`: `EntityProxy` for loose-coupling relationships
58
+ - `entity-snapshot.ts`: `IEntitySnapshot` for serialization
59
+ - `entity-queue.ts`: `IEntityUpdate` and `IEntityUpdateQueue` for batching changes
60
+ - `entity-repository.ts`: `IEntityRepository` for entity lookups
61
+ - `entity-scheduler.ts`: `IEntityScheduler` for deferred updates
62
+ - `entity-events.ts`: `IEntityEvents` for reactive patterns
63
+
64
+ ### Pipelines (`src/pipelines/`)
65
+
66
+ Pipelines execute **middleware chains** with two phases:
67
+
68
+ 1. **dispatch(context)**: Main execution phase
69
+ 2. **cleanup(context)**: Resource cleanup phase
70
+
71
+ ```typescript
72
+ export interface IPipeline<TContext extends IPipelineContext> {
73
+ use(middleware: IMiddleware<TContext>): this;
74
+ dispatch(context: Partial<TContext>): void | Promise<void>;
75
+ cleanup(context: Partial<TContext>): void | Promise<void>;
76
+ }
77
+ ```
78
+
79
+ **Key files:**
80
+ - `pipeline.ts`: Core `IPipeline` interface
81
+ - `middleware.ts`: `IMiddleware` contract (action + optional cleanup)
82
+ - `middleware-runner.ts`: Middleware execution engine
83
+ - `pipeline-context.ts`: Context passed to middleware
84
+ - `pipeline-runner.ts`: Pipeline execution orchestration
85
+
86
+ ### Systems (`src/systems/`)
87
+
88
+ Systems are **modular logic units** that operate on entities. They implement the middleware pattern.
89
+
90
+ **Pipeline-based systems:**
91
+ - `system-middleware.ts`: `ISystemMiddleware<TEntity>` - middleware for a specific entity type
92
+ - `system-context.ts`: Context passed to system middleware (entity, events, repository, etc.)
93
+
94
+ **Module-based organization:**
95
+ - `systems-module.ts`: `ISystemsModule<TEntity>` - groups related systems targeting an entity type
96
+ - `systems-module-builder.ts`: `ISystemsModuleBuilder<TEntity>` - fluent builder for pipeline registration
97
+ - `systems-module-repository.ts`: Module lifecycle and registration
98
+
99
+ **Runtime execution:**
100
+ - `systems-runtime.ts`: `ISystemsRuntime` - core tick-based execution loop
101
+ - `systems-runtime-context.ts`: Context for runtime execution
102
+ - `systems-runtime-middleware.ts`: Middleware for runtime operations
103
+
104
+ ### Utilities (`src/utils/`)
105
+
106
+ - `types.ts`: Common types (`Immutable`, `BooleanProps`, `Readonly`)
107
+ - `json-serializer.ts`: JSON serialization contracts
108
+ - `logger.ts`: Logging interface
109
+ - `performance-timer.ts`: Performance measurement
110
+
111
+ ## Key Design Principles
112
+
113
+ 1. **Components are data-only** - no behavior, just properties
114
+ 2. **Entities are immutable** - modifications through systems only
115
+ 3. **Relationships use proxies** - loose coupling between entities
116
+ 4. **Systems are middleware** - pluggable into pipelines
117
+ 5. **Pipelines are composable** - middleware chains with dispatch + cleanup
118
+
119
+ ## What's NOT in Abstract
120
+
121
+ - Concrete entity implementations (→ @awesome-ecs/core)
122
+ - System module base classes (→ @awesome-ecs/core)
123
+ - Component factories (→ @awesome-ecs/core)
124
+ - Multi-threading (→ @awesome-ecs/workers)
125
+ - AI patterns (→ @awesome-ecs/ai)
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/components/identity-component.ts"],"sourcesContent":["import { EntityTypeUid, IEntityModel } from '../entities/entity';\r\nimport { Immutable } from '../utils/types';\r\nimport { IComponent } from './component';\r\n\r\n/**\r\n * The `BasicComponentType` enum defines the types of basic components available.\r\n */\r\nexport enum BasicComponentType {\r\n identity = 'identity'\r\n}\r\n\r\n/**\r\n * The mandatory metadata component for every entity.\r\n * Contains core information that defines what an entity is and when it was last updated.\r\n * This component is immutable after creation and uniquely identifies each entity.\r\n *\r\n * @template TModel - The entity model type containing initialization data.\r\n */\r\nexport interface IdentityComponent<TModel extends IEntityModel> extends IComponent {\r\n /**\r\n * The entity type classification.\r\n * Categorizes entities into logical types, allowing systems to selectively operate on specific entity categories.\r\n */\r\n readonly entityType: EntityTypeUid;\r\n\r\n /**\r\n * The initialization model for this entity.\r\n * Provides the minimal data structure used when the entity was first created.\r\n * Serves as a reference point for the entity's initial configuration.\r\n *\r\n * @type {Immutable<TModel>}\r\n */\r\n readonly model: Immutable<TModel>;\r\n\r\n /**\r\n * The timestamp of the entity's last system update.\r\n * Useful for calculating elapsed time (delta time) between consecutive updates.\r\n * Helps systems make time-aware decisions.\r\n *\r\n * @type {Date | undefined}\r\n */\r\n readonly lastUpdated?: Date;\r\n}\r\n"],"mappings":";;;;;AAOA,IAAY,qBAAL,yBAAA,oBAAA;CACL,mBAAA,cAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/components/identity-component.ts"],"sourcesContent":["import { EntityTypeUid, IEntityModel } from '../entities/entity';\nimport { Immutable } from '../utils/types';\nimport { IComponent } from './component';\n\n/**\n * The `BasicComponentType` enum defines the types of basic components available.\n */\nexport enum BasicComponentType {\n identity = 'identity'\n}\n\n/**\n * The mandatory metadata component for every entity.\n * Contains core information that defines what an entity is and when it was last updated.\n * This component is immutable after creation and uniquely identifies each entity.\n *\n * @template TModel - The entity model type containing initialization data.\n */\nexport interface IdentityComponent<TModel extends IEntityModel> extends IComponent {\n /**\n * The entity type classification.\n * Categorizes entities into logical types, allowing systems to selectively operate on specific entity categories.\n */\n readonly entityType: EntityTypeUid;\n\n /**\n * The initialization model for this entity.\n * Provides the minimal data structure used when the entity was first created.\n * Serves as a reference point for the entity's initial configuration.\n *\n * @type {Immutable<TModel>}\n */\n readonly model: Immutable<TModel>;\n\n /**\n * The timestamp of the entity's last system update.\n * Useful for calculating elapsed time (delta time) between consecutive updates.\n * Helps systems make time-aware decisions.\n *\n * @type {Date | undefined}\n */\n readonly lastUpdated?: Date;\n}\n"],"mappings":";;;;;AAOA,IAAY,qBAAL,yBAAA,oBAAA;CACL,mBAAA,cAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import { _ as ConfigRecord, f as ComponentTypeUid, g as ConfigOption, h as ConfigCustomControlOptions, m as IComponentWithConfig, n as IdentityComponent, p as IComponent, t as BasicComponentType } from "../index-C0jDrUBA.cjs";
1
+ import { _ as ConfigRecord, f as ComponentTypeUid, g as ConfigOption, h as ConfigCustomControlOptions, m as IComponentWithConfig, n as IdentityComponent, p as IComponent, t as BasicComponentType } from "../index-C5nragoq.cjs";
2
2
  export { BasicComponentType, ComponentTypeUid, ConfigCustomControlOptions, ConfigOption, ConfigRecord, IComponent, IComponentWithConfig, IdentityComponent };
@@ -1,2 +1,2 @@
1
- import { _ as ConfigRecord, f as ComponentTypeUid, g as ConfigOption, h as ConfigCustomControlOptions, m as IComponentWithConfig, n as IdentityComponent, p as IComponent, t as BasicComponentType } from "../index-b5BtWAvO.mjs";
1
+ import { _ as ConfigRecord, f as ComponentTypeUid, g as ConfigOption, h as ConfigCustomControlOptions, m as IComponentWithConfig, n as IdentityComponent, p as IComponent, t as BasicComponentType } from "../index-BlP67nCr.mjs";
2
2
  export { BasicComponentType, ComponentTypeUid, ConfigCustomControlOptions, ConfigOption, ConfigRecord, IComponent, IComponentWithConfig, IdentityComponent };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/components/identity-component.ts"],"sourcesContent":["import { EntityTypeUid, IEntityModel } from '../entities/entity';\r\nimport { Immutable } from '../utils/types';\r\nimport { IComponent } from './component';\r\n\r\n/**\r\n * The `BasicComponentType` enum defines the types of basic components available.\r\n */\r\nexport enum BasicComponentType {\r\n identity = 'identity'\r\n}\r\n\r\n/**\r\n * The mandatory metadata component for every entity.\r\n * Contains core information that defines what an entity is and when it was last updated.\r\n * This component is immutable after creation and uniquely identifies each entity.\r\n *\r\n * @template TModel - The entity model type containing initialization data.\r\n */\r\nexport interface IdentityComponent<TModel extends IEntityModel> extends IComponent {\r\n /**\r\n * The entity type classification.\r\n * Categorizes entities into logical types, allowing systems to selectively operate on specific entity categories.\r\n */\r\n readonly entityType: EntityTypeUid;\r\n\r\n /**\r\n * The initialization model for this entity.\r\n * Provides the minimal data structure used when the entity was first created.\r\n * Serves as a reference point for the entity's initial configuration.\r\n *\r\n * @type {Immutable<TModel>}\r\n */\r\n readonly model: Immutable<TModel>;\r\n\r\n /**\r\n * The timestamp of the entity's last system update.\r\n * Useful for calculating elapsed time (delta time) between consecutive updates.\r\n * Helps systems make time-aware decisions.\r\n *\r\n * @type {Date | undefined}\r\n */\r\n readonly lastUpdated?: Date;\r\n}\r\n"],"mappings":";;;;AAOA,IAAY,qBAAL,yBAAA,oBAAA;CACL,mBAAA,cAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/components/identity-component.ts"],"sourcesContent":["import { EntityTypeUid, IEntityModel } from '../entities/entity';\nimport { Immutable } from '../utils/types';\nimport { IComponent } from './component';\n\n/**\n * The `BasicComponentType` enum defines the types of basic components available.\n */\nexport enum BasicComponentType {\n identity = 'identity'\n}\n\n/**\n * The mandatory metadata component for every entity.\n * Contains core information that defines what an entity is and when it was last updated.\n * This component is immutable after creation and uniquely identifies each entity.\n *\n * @template TModel - The entity model type containing initialization data.\n */\nexport interface IdentityComponent<TModel extends IEntityModel> extends IComponent {\n /**\n * The entity type classification.\n * Categorizes entities into logical types, allowing systems to selectively operate on specific entity categories.\n */\n readonly entityType: EntityTypeUid;\n\n /**\n * The initialization model for this entity.\n * Provides the minimal data structure used when the entity was first created.\n * Serves as a reference point for the entity's initial configuration.\n *\n * @type {Immutable<TModel>}\n */\n readonly model: Immutable<TModel>;\n\n /**\n * The timestamp of the entity's last system update.\n * Useful for calculating elapsed time (delta time) between consecutive updates.\n * Helps systems make time-aware decisions.\n *\n * @type {Date | undefined}\n */\n readonly lastUpdated?: Date;\n}\n"],"mappings":";;;;AAOA,IAAY,qBAAL,yBAAA,oBAAA;CACL,mBAAA,cAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/entities/entity-queue.ts","../../src/entities/entity-scheduler.ts"],"sourcesContent":["import { IEntityModel } from './entity';\r\nimport { IEntityConfigSnapshot } from './entity-config';\r\nimport { IEntityProxy } from './entity-proxies';\r\nimport { IEntitySnapshot } from './entity-snapshot';\r\n\r\n/**\r\n * Specifies the action to be performed on an entity.\r\n * Updates are categorized to enable different processing paths in the runtime.\r\n */\r\nexport enum EntityUpdateType {\r\n /**\r\n * Indicates the entity should be updated with new data.\r\n */\r\n update = 'update',\r\n /**\r\n * Indicates the entity should be removed from the system.\r\n */\r\n remove = 'remove'\r\n}\r\n\r\n/**\r\n * Represents a queued entity state change or removal.\r\n * Updates flow through the system to be processed by entity update handlers.\r\n */\r\nexport interface IEntityUpdate {\r\n /**\r\n * The type of operation: update or remove.\r\n */\r\n readonly type: EntityUpdateType;\r\n\r\n /**\r\n * The entity being affected by this update.\r\n */\r\n readonly entity: IEntityProxy;\r\n\r\n /**\r\n * Optional model data for initialization or reconfiguration.\r\n */\r\n readonly model?: IEntityModel;\r\n\r\n /**\r\n * Optional serialized state to apply to the entity.\r\n */\r\n readonly snapshot?: IEntitySnapshot;\r\n\r\n /**\r\n * Optional config-only component state to apply to the entity.\r\n * When present on an update, the runtime applies it after `snapshot` and\r\n * includes the config system phase in the same tick.\r\n */\r\n readonly config?: IEntityConfigSnapshot;\r\n}\r\n\r\n/**\r\n * Queue interface for managing pending entity updates.\r\n * Different implementations may use different prioritization strategies (e.g., priority queues, FIFO, ordered by entity type).\r\n * Updates are consumed by the runtime and dispatched to appropriate entity systems.\r\n */\r\nexport interface IEntityUpdateQueue {\r\n /**\r\n * The current number of updates in the queue.\r\n */\r\n readonly size: number;\r\n\r\n /**\r\n * Adds an update to the queue for processing.\r\n * @param change - The update to queue.\r\n */\r\n enqueue(change: IEntityUpdate): void;\r\n\r\n /**\r\n * Removes and returns the next update from the queue.\r\n * The specific update returned depends on the queue's prioritization strategy.\r\n * @returns The next queued update.\r\n */\r\n dequeue(): IEntityUpdate;\r\n\r\n /**\r\n * Views the next update without removing it.\r\n * Useful for inspection before dequeuing.\r\n * @returns The next update in the queue.\r\n */\r\n peek(): IEntityUpdate;\r\n\r\n /**\r\n * Returns a read-only snapshot of all queued updates without removing them.\r\n * Useful for inspection/debugging UIs.\r\n * @returns An array of all currently queued updates.\r\n */\r\n items(): ReadonlyArray<IEntityUpdate>;\r\n\r\n /**\r\n * Removes all updates from the queue.\r\n */\r\n clear(): void;\r\n}\r\n","import { EntityTypeUid } from './entity';\r\nimport { IEntityProxy } from './entity-proxies';\r\n\r\n/**\r\n * Describes a scheduled entity update, including the target entity and optional interval.\r\n */\r\nexport type EntitySchedule = {\r\n readonly proxy: IEntityProxy;\r\n readonly intervalMs?: number;\r\n};\r\n\r\n/**\r\n * Controls which scheduling modes are paused.\r\n */\r\nexport enum SchedulerPauseType {\r\n /** Pause both interval timers and frame subscriptions. */\r\n full = 'full',\r\n /** Pause only frame subscriptions. Interval timers continue firing. */\r\n perFrame = 'perFrame',\r\n /** Pause only interval timers. Frame subscriptions continue. */\r\n intervals = 'intervals'\r\n}\r\n\r\n/**\r\n * Manages time-based scheduling of entity updates.\r\n *\r\n * Entities can be scheduled with an interval (timer-driven) or without one (per-frame).\r\n * The runtime pulls pending entities each tick via the {@link pending} iterator,\r\n * which yields both per-frame subscriptions and interval entities whose timer has fired.\r\n */\r\nexport interface IEntityScheduler {\r\n /**\r\n * Returns all currently scheduled entities with their configuration.\r\n * Useful for inspection and debugging.\r\n */\r\n readonly schedules: ReadonlyArray<EntitySchedule>;\r\n\r\n /**\r\n * Yields entities pending processing this tick: per-frame subscriptions\r\n * followed by interval entities whose timer has fired since the last drain.\r\n * Iterating drains the due interval buckets; a second iteration without\r\n * timer advancement yields only per-frame subscriptions.\r\n */\r\n readonly pending: IterableIterator<IEntityProxy>;\r\n\r\n /**\r\n * The set of entities scheduled for per-frame updates (no interval).\r\n */\r\n readonly frameSubscriptions: ReadonlySet<IEntityProxy>;\r\n\r\n /**\r\n * Entity types currently excluded from {@link pending} iteration.\r\n */\r\n readonly skippedEntityTypes: ReadonlySet<EntityTypeUid>;\r\n\r\n /**\r\n * The number of entities currently awaiting processing:\r\n * per-frame subscriptions (if not paused) plus interval entities whose timer has fired.\r\n */\r\n readonly pendingCount: number;\r\n\r\n /**\r\n * Whether the scheduler is currently paused in any mode.\r\n */\r\n readonly isPaused: boolean;\r\n\r\n /**\r\n * Registers or replaces an entity schedule.\r\n * @param entityProxy - The entity to schedule.\r\n * @param intervalMs - Update frequency in milliseconds. If omitted, the entity is scheduled per-frame.\r\n */\r\n schedule(entityProxy: IEntityProxy, intervalMs?: number): void;\r\n\r\n /**\r\n * Unregisters an entity from the scheduler.\r\n * @param entityProxy - The entity to unschedule.\r\n */\r\n remove(entityProxy: IEntityProxy): void;\r\n\r\n /**\r\n * Checks if an entity is currently scheduled for updates.\r\n * @param entityProxy - The entity to check.\r\n * @returns True if the entity is scheduled, false otherwise.\r\n */\r\n has(entityProxy: IEntityProxy): boolean;\r\n\r\n /**\r\n * Removes all schedules and clears all timers.\r\n */\r\n clear(): void;\r\n\r\n /**\r\n * Excludes an entity type from {@link pending} iteration.\r\n * Entities remain registered; only yielding is suppressed.\r\n */\r\n skipEntityType(entityType: EntityTypeUid): void;\r\n\r\n /**\r\n * Re-includes a previously skipped entity type in {@link pending} iteration.\r\n */\r\n unskipEntityType(entityType: EntityTypeUid): void;\r\n\r\n /**\r\n * Pauses the scheduler.\r\n * @param type - Which scheduling modes to pause. Defaults to {@link SchedulerPauseType.full}.\r\n */\r\n pause(type?: SchedulerPauseType): void;\r\n\r\n /**\r\n * Resumes the scheduler from any paused state.\r\n */\r\n resume(): void;\r\n}\r\n"],"mappings":";;;;;;AASA,IAAY,mBAAL,yBAAA,kBAAA;;;;CAIL,iBAAA,YAAA;;;;CAIA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA;;;;;;ACJA,IAAY,qBAAL,yBAAA,oBAAA;;CAEL,mBAAA,UAAA;;CAEA,mBAAA,cAAA;;CAEA,mBAAA,eAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/entities/entity-queue.ts","../../src/entities/entity-scheduler.ts"],"sourcesContent":["import { IEntityModel } from './entity';\nimport { IEntityConfigSnapshot } from './entity-config';\nimport { IEntityProxy } from './entity-proxies';\nimport { IEntitySnapshot } from './entity-snapshot';\n\n/**\n * Specifies the action to be performed on an entity.\n * Updates are categorized to enable different processing paths in the runtime.\n */\nexport enum EntityUpdateType {\n /**\n * Indicates the entity should be updated with new data.\n */\n update = 'update',\n /**\n * Indicates the entity should be removed from the system.\n */\n remove = 'remove'\n}\n\n/**\n * Represents a queued entity state change or removal.\n * Updates flow through the system to be processed by entity update handlers.\n */\nexport interface IEntityUpdate {\n /**\n * The type of operation: update or remove.\n */\n readonly type: EntityUpdateType;\n\n /**\n * The entity being affected by this update.\n */\n readonly entity: IEntityProxy;\n\n /**\n * Optional model data for initialization or reconfiguration.\n */\n readonly model?: IEntityModel;\n\n /**\n * Optional serialized state to apply to the entity.\n */\n readonly snapshot?: IEntitySnapshot;\n\n /**\n * Optional config-only component state to apply to the entity.\n * When present on an update, the runtime applies it after `snapshot` and\n * includes the config system phase in the same tick.\n */\n readonly config?: IEntityConfigSnapshot;\n}\n\n/**\n * Queue interface for managing pending entity updates.\n * Different implementations may use different prioritization strategies (e.g., priority queues, FIFO, ordered by entity type).\n * Updates are consumed by the runtime and dispatched to appropriate entity systems.\n */\nexport interface IEntityUpdateQueue {\n /**\n * The current number of updates in the queue.\n */\n readonly size: number;\n\n /**\n * Adds an update to the queue for processing.\n * @param change - The update to queue.\n */\n enqueue(change: IEntityUpdate): void;\n\n /**\n * Removes and returns the next update from the queue.\n * The specific update returned depends on the queue's prioritization strategy.\n * @returns The next queued update.\n */\n dequeue(): IEntityUpdate;\n\n /**\n * Views the next update without removing it.\n * Useful for inspection before dequeuing.\n * @returns The next update in the queue.\n */\n peek(): IEntityUpdate;\n\n /**\n * Returns a read-only snapshot of all queued updates without removing them.\n * Useful for inspection/debugging UIs.\n * @returns An array of all currently queued updates.\n */\n items(): ReadonlyArray<IEntityUpdate>;\n\n /**\n * Removes all updates from the queue.\n */\n clear(): void;\n}\n","import { EntityTypeUid } from './entity';\nimport { IEntityProxy } from './entity-proxies';\n\n/**\n * Describes a scheduled entity update, including the target entity and optional interval.\n */\nexport type EntitySchedule = {\n readonly proxy: IEntityProxy;\n readonly intervalMs?: number;\n};\n\n/**\n * Controls which scheduling modes are paused.\n */\nexport enum SchedulerPauseType {\n /** Pause both interval timers and frame subscriptions. */\n full = 'full',\n /** Pause only frame subscriptions. Interval timers continue firing. */\n perFrame = 'perFrame',\n /** Pause only interval timers. Frame subscriptions continue. */\n intervals = 'intervals'\n}\n\n/**\n * Manages time-based scheduling of entity updates.\n *\n * Entities can be scheduled with an interval (timer-driven) or without one (per-frame).\n * The runtime pulls pending entities each tick via the {@link pending} iterator,\n * which yields both per-frame subscriptions and interval entities whose timer has fired.\n */\nexport interface IEntityScheduler {\n /**\n * Returns all currently scheduled entities with their configuration.\n * Useful for inspection and debugging.\n */\n readonly schedules: ReadonlyArray<EntitySchedule>;\n\n /**\n * Yields entities pending processing this tick: per-frame subscriptions\n * followed by interval entities whose timer has fired since the last drain.\n * Iterating drains the due interval buckets; a second iteration without\n * timer advancement yields only per-frame subscriptions.\n */\n readonly pending: IterableIterator<IEntityProxy>;\n\n /**\n * The set of entities scheduled for per-frame updates (no interval).\n */\n readonly frameSubscriptions: ReadonlySet<IEntityProxy>;\n\n /**\n * Entity types currently excluded from {@link pending} iteration.\n */\n readonly skippedEntityTypes: ReadonlySet<EntityTypeUid>;\n\n /**\n * The number of entities currently awaiting processing:\n * per-frame subscriptions (if not paused) plus interval entities whose timer has fired.\n */\n readonly pendingCount: number;\n\n /**\n * Whether the scheduler is currently paused in any mode.\n */\n readonly isPaused: boolean;\n\n /**\n * Registers or replaces an entity schedule.\n * @param entityProxy - The entity to schedule.\n * @param intervalMs - Update frequency in milliseconds. If omitted, the entity is scheduled per-frame.\n */\n schedule(entityProxy: IEntityProxy, intervalMs?: number): void;\n\n /**\n * Unregisters an entity from the scheduler.\n * @param entityProxy - The entity to unschedule.\n */\n remove(entityProxy: IEntityProxy): void;\n\n /**\n * Checks if an entity is currently scheduled for updates.\n * @param entityProxy - The entity to check.\n * @returns True if the entity is scheduled, false otherwise.\n */\n has(entityProxy: IEntityProxy): boolean;\n\n /**\n * Removes all schedules and clears all timers.\n */\n clear(): void;\n\n /**\n * Excludes an entity type from {@link pending} iteration.\n * Entities remain registered; only yielding is suppressed.\n */\n skipEntityType(entityType: EntityTypeUid): void;\n\n /**\n * Re-includes a previously skipped entity type in {@link pending} iteration.\n */\n unskipEntityType(entityType: EntityTypeUid): void;\n\n /**\n * Pauses the scheduler.\n * @param type - Which scheduling modes to pause. Defaults to {@link SchedulerPauseType.full}.\n */\n pause(type?: SchedulerPauseType): void;\n\n /**\n * Resumes the scheduler from any paused state.\n */\n resume(): void;\n}\n"],"mappings":";;;;;;AASA,IAAY,mBAAL,yBAAA,kBAAA;;;;CAIL,iBAAA,YAAA;;;;CAIA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA;;;;;;ACJA,IAAY,qBAAL,yBAAA,oBAAA;;CAEL,mBAAA,UAAA;;CAEA,mBAAA,cAAA;;CAEA,mBAAA,eAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- import { a as IEntity, c as IEntityProxy, d as TypedEntityProxy, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy, u as RequiredProxies } from "../index-C0jDrUBA.cjs";
2
- import { _ as IEntityContextCache, a as EntityUpdateType, c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, h as IEntityEventsManager, i as IEntityRepository, l as IEntitySnapshotProvider, m as IEntityEventsDispatcher, n as IEntityScheduler, o as IEntityUpdate, p as IEntityEvent, r as SchedulerPauseType, s as IEntityUpdateQueue, t as EntitySchedule, u as EntityEventSubscriptionFilter, v as IEntityConfigSnapshot } from "../index-BGLTfuj8.cjs";
1
+ import { a as IEntity, c as IEntityProxy, d as TypedEntityProxy, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy, u as RequiredProxies } from "../index-C5nragoq.cjs";
2
+ import { _ as IEntityContextCache, a as EntityUpdateType, c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, h as IEntityEventsManager, i as IEntityRepository, l as IEntitySnapshotProvider, m as IEntityEventsDispatcher, n as IEntityScheduler, o as IEntityUpdate, p as IEntityEvent, r as SchedulerPauseType, s as IEntityUpdateQueue, t as EntitySchedule, u as EntityEventSubscriptionFilter, v as IEntityConfigSnapshot } from "../index-BOsrKTWm.cjs";
3
3
  export { EntityEventSubscriptionFilter, EntityEventSubscriptionOptions, EntityEventUid, EntityProxy, EntitySchedule, EntityTypeUid, EntityUid, EntityUpdateType, IEntity, IEntityConfigSnapshot, IEntityContextCache, IEntityEvent, IEntityEventsDispatcher, IEntityEventsManager, IEntityModel, IEntityProxy, IEntityProxyRepository, IEntityRepository, IEntityScheduler, IEntitySnapshot, IEntitySnapshotProvider, IEntityUpdate, IEntityUpdateQueue, IEventData, RequiredProxies, SchedulerPauseType, TypedEntityProxy };
@@ -1,3 +1,3 @@
1
- import { a as IEntity, c as IEntityProxy, d as TypedEntityProxy, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy, u as RequiredProxies } from "../index-b5BtWAvO.mjs";
2
- import { _ as IEntityContextCache, a as EntityUpdateType, c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, h as IEntityEventsManager, i as IEntityRepository, l as IEntitySnapshotProvider, m as IEntityEventsDispatcher, n as IEntityScheduler, o as IEntityUpdate, p as IEntityEvent, r as SchedulerPauseType, s as IEntityUpdateQueue, t as EntitySchedule, u as EntityEventSubscriptionFilter, v as IEntityConfigSnapshot } from "../index-C1hRAjM-.mjs";
1
+ import { a as IEntity, c as IEntityProxy, d as TypedEntityProxy, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy, u as RequiredProxies } from "../index-BlP67nCr.mjs";
2
+ import { _ as IEntityContextCache, a as EntityUpdateType, c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, h as IEntityEventsManager, i as IEntityRepository, l as IEntitySnapshotProvider, m as IEntityEventsDispatcher, n as IEntityScheduler, o as IEntityUpdate, p as IEntityEvent, r as SchedulerPauseType, s as IEntityUpdateQueue, t as EntitySchedule, u as EntityEventSubscriptionFilter, v as IEntityConfigSnapshot } from "../index-vpjRaGIC.mjs";
3
3
  export { EntityEventSubscriptionFilter, EntityEventSubscriptionOptions, EntityEventUid, EntityProxy, EntitySchedule, EntityTypeUid, EntityUid, EntityUpdateType, IEntity, IEntityConfigSnapshot, IEntityContextCache, IEntityEvent, IEntityEventsDispatcher, IEntityEventsManager, IEntityModel, IEntityProxy, IEntityProxyRepository, IEntityRepository, IEntityScheduler, IEntitySnapshot, IEntitySnapshotProvider, IEntityUpdate, IEntityUpdateQueue, IEventData, RequiredProxies, SchedulerPauseType, TypedEntityProxy };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/entities/entity-queue.ts","../../src/entities/entity-scheduler.ts"],"sourcesContent":["import { IEntityModel } from './entity';\r\nimport { IEntityConfigSnapshot } from './entity-config';\r\nimport { IEntityProxy } from './entity-proxies';\r\nimport { IEntitySnapshot } from './entity-snapshot';\r\n\r\n/**\r\n * Specifies the action to be performed on an entity.\r\n * Updates are categorized to enable different processing paths in the runtime.\r\n */\r\nexport enum EntityUpdateType {\r\n /**\r\n * Indicates the entity should be updated with new data.\r\n */\r\n update = 'update',\r\n /**\r\n * Indicates the entity should be removed from the system.\r\n */\r\n remove = 'remove'\r\n}\r\n\r\n/**\r\n * Represents a queued entity state change or removal.\r\n * Updates flow through the system to be processed by entity update handlers.\r\n */\r\nexport interface IEntityUpdate {\r\n /**\r\n * The type of operation: update or remove.\r\n */\r\n readonly type: EntityUpdateType;\r\n\r\n /**\r\n * The entity being affected by this update.\r\n */\r\n readonly entity: IEntityProxy;\r\n\r\n /**\r\n * Optional model data for initialization or reconfiguration.\r\n */\r\n readonly model?: IEntityModel;\r\n\r\n /**\r\n * Optional serialized state to apply to the entity.\r\n */\r\n readonly snapshot?: IEntitySnapshot;\r\n\r\n /**\r\n * Optional config-only component state to apply to the entity.\r\n * When present on an update, the runtime applies it after `snapshot` and\r\n * includes the config system phase in the same tick.\r\n */\r\n readonly config?: IEntityConfigSnapshot;\r\n}\r\n\r\n/**\r\n * Queue interface for managing pending entity updates.\r\n * Different implementations may use different prioritization strategies (e.g., priority queues, FIFO, ordered by entity type).\r\n * Updates are consumed by the runtime and dispatched to appropriate entity systems.\r\n */\r\nexport interface IEntityUpdateQueue {\r\n /**\r\n * The current number of updates in the queue.\r\n */\r\n readonly size: number;\r\n\r\n /**\r\n * Adds an update to the queue for processing.\r\n * @param change - The update to queue.\r\n */\r\n enqueue(change: IEntityUpdate): void;\r\n\r\n /**\r\n * Removes and returns the next update from the queue.\r\n * The specific update returned depends on the queue's prioritization strategy.\r\n * @returns The next queued update.\r\n */\r\n dequeue(): IEntityUpdate;\r\n\r\n /**\r\n * Views the next update without removing it.\r\n * Useful for inspection before dequeuing.\r\n * @returns The next update in the queue.\r\n */\r\n peek(): IEntityUpdate;\r\n\r\n /**\r\n * Returns a read-only snapshot of all queued updates without removing them.\r\n * Useful for inspection/debugging UIs.\r\n * @returns An array of all currently queued updates.\r\n */\r\n items(): ReadonlyArray<IEntityUpdate>;\r\n\r\n /**\r\n * Removes all updates from the queue.\r\n */\r\n clear(): void;\r\n}\r\n","import { EntityTypeUid } from './entity';\r\nimport { IEntityProxy } from './entity-proxies';\r\n\r\n/**\r\n * Describes a scheduled entity update, including the target entity and optional interval.\r\n */\r\nexport type EntitySchedule = {\r\n readonly proxy: IEntityProxy;\r\n readonly intervalMs?: number;\r\n};\r\n\r\n/**\r\n * Controls which scheduling modes are paused.\r\n */\r\nexport enum SchedulerPauseType {\r\n /** Pause both interval timers and frame subscriptions. */\r\n full = 'full',\r\n /** Pause only frame subscriptions. Interval timers continue firing. */\r\n perFrame = 'perFrame',\r\n /** Pause only interval timers. Frame subscriptions continue. */\r\n intervals = 'intervals'\r\n}\r\n\r\n/**\r\n * Manages time-based scheduling of entity updates.\r\n *\r\n * Entities can be scheduled with an interval (timer-driven) or without one (per-frame).\r\n * The runtime pulls pending entities each tick via the {@link pending} iterator,\r\n * which yields both per-frame subscriptions and interval entities whose timer has fired.\r\n */\r\nexport interface IEntityScheduler {\r\n /**\r\n * Returns all currently scheduled entities with their configuration.\r\n * Useful for inspection and debugging.\r\n */\r\n readonly schedules: ReadonlyArray<EntitySchedule>;\r\n\r\n /**\r\n * Yields entities pending processing this tick: per-frame subscriptions\r\n * followed by interval entities whose timer has fired since the last drain.\r\n * Iterating drains the due interval buckets; a second iteration without\r\n * timer advancement yields only per-frame subscriptions.\r\n */\r\n readonly pending: IterableIterator<IEntityProxy>;\r\n\r\n /**\r\n * The set of entities scheduled for per-frame updates (no interval).\r\n */\r\n readonly frameSubscriptions: ReadonlySet<IEntityProxy>;\r\n\r\n /**\r\n * Entity types currently excluded from {@link pending} iteration.\r\n */\r\n readonly skippedEntityTypes: ReadonlySet<EntityTypeUid>;\r\n\r\n /**\r\n * The number of entities currently awaiting processing:\r\n * per-frame subscriptions (if not paused) plus interval entities whose timer has fired.\r\n */\r\n readonly pendingCount: number;\r\n\r\n /**\r\n * Whether the scheduler is currently paused in any mode.\r\n */\r\n readonly isPaused: boolean;\r\n\r\n /**\r\n * Registers or replaces an entity schedule.\r\n * @param entityProxy - The entity to schedule.\r\n * @param intervalMs - Update frequency in milliseconds. If omitted, the entity is scheduled per-frame.\r\n */\r\n schedule(entityProxy: IEntityProxy, intervalMs?: number): void;\r\n\r\n /**\r\n * Unregisters an entity from the scheduler.\r\n * @param entityProxy - The entity to unschedule.\r\n */\r\n remove(entityProxy: IEntityProxy): void;\r\n\r\n /**\r\n * Checks if an entity is currently scheduled for updates.\r\n * @param entityProxy - The entity to check.\r\n * @returns True if the entity is scheduled, false otherwise.\r\n */\r\n has(entityProxy: IEntityProxy): boolean;\r\n\r\n /**\r\n * Removes all schedules and clears all timers.\r\n */\r\n clear(): void;\r\n\r\n /**\r\n * Excludes an entity type from {@link pending} iteration.\r\n * Entities remain registered; only yielding is suppressed.\r\n */\r\n skipEntityType(entityType: EntityTypeUid): void;\r\n\r\n /**\r\n * Re-includes a previously skipped entity type in {@link pending} iteration.\r\n */\r\n unskipEntityType(entityType: EntityTypeUid): void;\r\n\r\n /**\r\n * Pauses the scheduler.\r\n * @param type - Which scheduling modes to pause. Defaults to {@link SchedulerPauseType.full}.\r\n */\r\n pause(type?: SchedulerPauseType): void;\r\n\r\n /**\r\n * Resumes the scheduler from any paused state.\r\n */\r\n resume(): void;\r\n}\r\n"],"mappings":";;;;;AASA,IAAY,mBAAL,yBAAA,kBAAA;;;;CAIL,iBAAA,YAAA;;;;CAIA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA;;;;;;ACJA,IAAY,qBAAL,yBAAA,oBAAA;;CAEL,mBAAA,UAAA;;CAEA,mBAAA,cAAA;;CAEA,mBAAA,eAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/entities/entity-queue.ts","../../src/entities/entity-scheduler.ts"],"sourcesContent":["import { IEntityModel } from './entity';\nimport { IEntityConfigSnapshot } from './entity-config';\nimport { IEntityProxy } from './entity-proxies';\nimport { IEntitySnapshot } from './entity-snapshot';\n\n/**\n * Specifies the action to be performed on an entity.\n * Updates are categorized to enable different processing paths in the runtime.\n */\nexport enum EntityUpdateType {\n /**\n * Indicates the entity should be updated with new data.\n */\n update = 'update',\n /**\n * Indicates the entity should be removed from the system.\n */\n remove = 'remove'\n}\n\n/**\n * Represents a queued entity state change or removal.\n * Updates flow through the system to be processed by entity update handlers.\n */\nexport interface IEntityUpdate {\n /**\n * The type of operation: update or remove.\n */\n readonly type: EntityUpdateType;\n\n /**\n * The entity being affected by this update.\n */\n readonly entity: IEntityProxy;\n\n /**\n * Optional model data for initialization or reconfiguration.\n */\n readonly model?: IEntityModel;\n\n /**\n * Optional serialized state to apply to the entity.\n */\n readonly snapshot?: IEntitySnapshot;\n\n /**\n * Optional config-only component state to apply to the entity.\n * When present on an update, the runtime applies it after `snapshot` and\n * includes the config system phase in the same tick.\n */\n readonly config?: IEntityConfigSnapshot;\n}\n\n/**\n * Queue interface for managing pending entity updates.\n * Different implementations may use different prioritization strategies (e.g., priority queues, FIFO, ordered by entity type).\n * Updates are consumed by the runtime and dispatched to appropriate entity systems.\n */\nexport interface IEntityUpdateQueue {\n /**\n * The current number of updates in the queue.\n */\n readonly size: number;\n\n /**\n * Adds an update to the queue for processing.\n * @param change - The update to queue.\n */\n enqueue(change: IEntityUpdate): void;\n\n /**\n * Removes and returns the next update from the queue.\n * The specific update returned depends on the queue's prioritization strategy.\n * @returns The next queued update.\n */\n dequeue(): IEntityUpdate;\n\n /**\n * Views the next update without removing it.\n * Useful for inspection before dequeuing.\n * @returns The next update in the queue.\n */\n peek(): IEntityUpdate;\n\n /**\n * Returns a read-only snapshot of all queued updates without removing them.\n * Useful for inspection/debugging UIs.\n * @returns An array of all currently queued updates.\n */\n items(): ReadonlyArray<IEntityUpdate>;\n\n /**\n * Removes all updates from the queue.\n */\n clear(): void;\n}\n","import { EntityTypeUid } from './entity';\nimport { IEntityProxy } from './entity-proxies';\n\n/**\n * Describes a scheduled entity update, including the target entity and optional interval.\n */\nexport type EntitySchedule = {\n readonly proxy: IEntityProxy;\n readonly intervalMs?: number;\n};\n\n/**\n * Controls which scheduling modes are paused.\n */\nexport enum SchedulerPauseType {\n /** Pause both interval timers and frame subscriptions. */\n full = 'full',\n /** Pause only frame subscriptions. Interval timers continue firing. */\n perFrame = 'perFrame',\n /** Pause only interval timers. Frame subscriptions continue. */\n intervals = 'intervals'\n}\n\n/**\n * Manages time-based scheduling of entity updates.\n *\n * Entities can be scheduled with an interval (timer-driven) or without one (per-frame).\n * The runtime pulls pending entities each tick via the {@link pending} iterator,\n * which yields both per-frame subscriptions and interval entities whose timer has fired.\n */\nexport interface IEntityScheduler {\n /**\n * Returns all currently scheduled entities with their configuration.\n * Useful for inspection and debugging.\n */\n readonly schedules: ReadonlyArray<EntitySchedule>;\n\n /**\n * Yields entities pending processing this tick: per-frame subscriptions\n * followed by interval entities whose timer has fired since the last drain.\n * Iterating drains the due interval buckets; a second iteration without\n * timer advancement yields only per-frame subscriptions.\n */\n readonly pending: IterableIterator<IEntityProxy>;\n\n /**\n * The set of entities scheduled for per-frame updates (no interval).\n */\n readonly frameSubscriptions: ReadonlySet<IEntityProxy>;\n\n /**\n * Entity types currently excluded from {@link pending} iteration.\n */\n readonly skippedEntityTypes: ReadonlySet<EntityTypeUid>;\n\n /**\n * The number of entities currently awaiting processing:\n * per-frame subscriptions (if not paused) plus interval entities whose timer has fired.\n */\n readonly pendingCount: number;\n\n /**\n * Whether the scheduler is currently paused in any mode.\n */\n readonly isPaused: boolean;\n\n /**\n * Registers or replaces an entity schedule.\n * @param entityProxy - The entity to schedule.\n * @param intervalMs - Update frequency in milliseconds. If omitted, the entity is scheduled per-frame.\n */\n schedule(entityProxy: IEntityProxy, intervalMs?: number): void;\n\n /**\n * Unregisters an entity from the scheduler.\n * @param entityProxy - The entity to unschedule.\n */\n remove(entityProxy: IEntityProxy): void;\n\n /**\n * Checks if an entity is currently scheduled for updates.\n * @param entityProxy - The entity to check.\n * @returns True if the entity is scheduled, false otherwise.\n */\n has(entityProxy: IEntityProxy): boolean;\n\n /**\n * Removes all schedules and clears all timers.\n */\n clear(): void;\n\n /**\n * Excludes an entity type from {@link pending} iteration.\n * Entities remain registered; only yielding is suppressed.\n */\n skipEntityType(entityType: EntityTypeUid): void;\n\n /**\n * Re-includes a previously skipped entity type in {@link pending} iteration.\n */\n unskipEntityType(entityType: EntityTypeUid): void;\n\n /**\n * Pauses the scheduler.\n * @param type - Which scheduling modes to pause. Defaults to {@link SchedulerPauseType.full}.\n */\n pause(type?: SchedulerPauseType): void;\n\n /**\n * Resumes the scheduler from any paused state.\n */\n resume(): void;\n}\n"],"mappings":";;;;;AASA,IAAY,mBAAL,yBAAA,kBAAA;;;;CAIL,iBAAA,YAAA;;;;CAIA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA;;;;;;ACJA,IAAY,qBAAL,yBAAA,oBAAA;;CAEL,mBAAA,UAAA;;CAEA,mBAAA,cAAA;;CAEA,mBAAA,eAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/factories/pipeline-factory.ts"],"sourcesContent":["import { IPipelineContext } from '../pipelines';\r\nimport { IPipeline } from '../pipelines/pipeline';\r\n\r\n/**\r\n * Category identifier for grouping performance metrics.\r\n * Typed as string to allow extension beyond the built-in {@link PipelineCategory} values.\r\n */\r\nexport type PipelineCategoryName = string;\r\n\r\n/**\r\n * Built-in metric categories for classifying pipeline and middleware performance entries.\r\n *\r\n * - `module` — System module pipelines (initialize, config, update, render, sync phases).\r\n * - `runtime` — Runtime orchestration pipeline and its middleware.\r\n * - `system` — Individual system middleware within a module pipeline.\r\n */\r\nexport enum PipelineCategory {\r\n module = 'module',\r\n runtime = 'runtime',\r\n system = 'system'\r\n}\r\n\r\n/**\r\n * Options for identifying and categorizing performance metrics on pipelines.\r\n */\r\nexport type PipelineOptions = {\r\n /** Display name for the pipeline in performance metrics. */\r\n pipelineName: string;\r\n /** Category assigned to pipeline-level metric entries. */\r\n pipelineCategory: PipelineCategoryName;\r\n /** Category assigned to per-middleware metric entries within this pipeline. */\r\n middlewareCategory: PipelineCategoryName;\r\n};\r\n\r\n/**\r\n * Creates pipeline instances for various contexts.\r\n * Abstracts pipeline creation to support different implementations.\r\n * Used by the system to instantiate pipelines without coupling to specific implementations.\r\n */\r\nexport interface IPipelineFactory {\r\n /**\r\n * Creates a new pipeline for the specified context type.\r\n * @template TContext - The context type for the pipeline. Must extend IPipelineContext.\r\n * @param options - Optional performance metric options (name, category) for the pipeline.\r\n * @returns A new pipeline instance ready for middleware registration.\r\n */\r\n createPipeline<TContext extends IPipelineContext>(options?: PipelineOptions): IPipeline<TContext>;\r\n}\r\n"],"mappings":";;;;;;;;;AAgBA,IAAY,mBAAL,yBAAA,kBAAA;CACL,iBAAA,YAAA;CACA,iBAAA,aAAA;CACA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/factories/pipeline-factory.ts"],"sourcesContent":["import { IPipelineContext } from '../pipelines';\nimport { IPipeline } from '../pipelines/pipeline';\n\n/**\n * Category identifier for grouping performance metrics.\n * Typed as string to allow extension beyond the built-in {@link PipelineCategory} values.\n */\nexport type PipelineCategoryName = string;\n\n/**\n * Built-in metric categories for classifying pipeline and middleware performance entries.\n *\n * - `module` — System module pipelines (initialize, config, update, render, sync phases).\n * - `runtime` — Runtime orchestration pipeline and its middleware.\n * - `system` — Individual system middleware within a module pipeline.\n */\nexport enum PipelineCategory {\n module = 'module',\n runtime = 'runtime',\n system = 'system'\n}\n\n/**\n * Options for identifying and categorizing performance metrics on pipelines.\n */\nexport type PipelineOptions = {\n /** Display name for the pipeline in performance metrics. */\n pipelineName: string;\n /** Category assigned to pipeline-level metric entries. */\n pipelineCategory: PipelineCategoryName;\n /** Category assigned to per-middleware metric entries within this pipeline. */\n middlewareCategory: PipelineCategoryName;\n};\n\n/**\n * Creates pipeline instances for various contexts.\n * Abstracts pipeline creation to support different implementations.\n * Used by the system to instantiate pipelines without coupling to specific implementations.\n */\nexport interface IPipelineFactory {\n /**\n * Creates a new pipeline for the specified context type.\n * @template TContext - The context type for the pipeline. Must extend IPipelineContext.\n * @param options - Optional performance metric options (name, category) for the pipeline.\n * @returns A new pipeline instance ready for middleware registration.\n */\n createPipeline<TContext extends IPipelineContext>(options?: PipelineOptions): IPipeline<TContext>;\n}\n"],"mappings":";;;;;;;;;AAgBA,IAAY,mBAAL,yBAAA,kBAAA;CACL,iBAAA,YAAA;CACA,iBAAA,aAAA;CACA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import { d as IPipelineFactory, f as PipelineCategory, h as IContextFactory, m as PipelineOptions, n as IRuntimeFactory, p as PipelineCategoryName, t as ISystemsFactory } from "../index-B1OYkMOx.cjs";
1
+ import { d as IPipelineFactory, f as PipelineCategory, h as IContextFactory, m as PipelineOptions, n as IRuntimeFactory, p as PipelineCategoryName, t as ISystemsFactory } from "../index-BJFNTFDd.cjs";
2
2
  export { IContextFactory, IPipelineFactory, IRuntimeFactory, ISystemsFactory, PipelineCategory, PipelineCategoryName, PipelineOptions };
@@ -1,2 +1,2 @@
1
- import { d as IPipelineFactory, f as PipelineCategory, h as IContextFactory, m as PipelineOptions, n as IRuntimeFactory, p as PipelineCategoryName, t as ISystemsFactory } from "../index-D3rS2RFG.mjs";
1
+ import { d as IPipelineFactory, f as PipelineCategory, h as IContextFactory, m as PipelineOptions, n as IRuntimeFactory, p as PipelineCategoryName, t as ISystemsFactory } from "../index-BD7sDB60.mjs";
2
2
  export { IContextFactory, IPipelineFactory, IRuntimeFactory, ISystemsFactory, PipelineCategory, PipelineCategoryName, PipelineOptions };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/factories/pipeline-factory.ts"],"sourcesContent":["import { IPipelineContext } from '../pipelines';\r\nimport { IPipeline } from '../pipelines/pipeline';\r\n\r\n/**\r\n * Category identifier for grouping performance metrics.\r\n * Typed as string to allow extension beyond the built-in {@link PipelineCategory} values.\r\n */\r\nexport type PipelineCategoryName = string;\r\n\r\n/**\r\n * Built-in metric categories for classifying pipeline and middleware performance entries.\r\n *\r\n * - `module` — System module pipelines (initialize, config, update, render, sync phases).\r\n * - `runtime` — Runtime orchestration pipeline and its middleware.\r\n * - `system` — Individual system middleware within a module pipeline.\r\n */\r\nexport enum PipelineCategory {\r\n module = 'module',\r\n runtime = 'runtime',\r\n system = 'system'\r\n}\r\n\r\n/**\r\n * Options for identifying and categorizing performance metrics on pipelines.\r\n */\r\nexport type PipelineOptions = {\r\n /** Display name for the pipeline in performance metrics. */\r\n pipelineName: string;\r\n /** Category assigned to pipeline-level metric entries. */\r\n pipelineCategory: PipelineCategoryName;\r\n /** Category assigned to per-middleware metric entries within this pipeline. */\r\n middlewareCategory: PipelineCategoryName;\r\n};\r\n\r\n/**\r\n * Creates pipeline instances for various contexts.\r\n * Abstracts pipeline creation to support different implementations.\r\n * Used by the system to instantiate pipelines without coupling to specific implementations.\r\n */\r\nexport interface IPipelineFactory {\r\n /**\r\n * Creates a new pipeline for the specified context type.\r\n * @template TContext - The context type for the pipeline. Must extend IPipelineContext.\r\n * @param options - Optional performance metric options (name, category) for the pipeline.\r\n * @returns A new pipeline instance ready for middleware registration.\r\n */\r\n createPipeline<TContext extends IPipelineContext>(options?: PipelineOptions): IPipeline<TContext>;\r\n}\r\n"],"mappings":";;;;;;;;AAgBA,IAAY,mBAAL,yBAAA,kBAAA;CACL,iBAAA,YAAA;CACA,iBAAA,aAAA;CACA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/factories/pipeline-factory.ts"],"sourcesContent":["import { IPipelineContext } from '../pipelines';\nimport { IPipeline } from '../pipelines/pipeline';\n\n/**\n * Category identifier for grouping performance metrics.\n * Typed as string to allow extension beyond the built-in {@link PipelineCategory} values.\n */\nexport type PipelineCategoryName = string;\n\n/**\n * Built-in metric categories for classifying pipeline and middleware performance entries.\n *\n * - `module` — System module pipelines (initialize, config, update, render, sync phases).\n * - `runtime` — Runtime orchestration pipeline and its middleware.\n * - `system` — Individual system middleware within a module pipeline.\n */\nexport enum PipelineCategory {\n module = 'module',\n runtime = 'runtime',\n system = 'system'\n}\n\n/**\n * Options for identifying and categorizing performance metrics on pipelines.\n */\nexport type PipelineOptions = {\n /** Display name for the pipeline in performance metrics. */\n pipelineName: string;\n /** Category assigned to pipeline-level metric entries. */\n pipelineCategory: PipelineCategoryName;\n /** Category assigned to per-middleware metric entries within this pipeline. */\n middlewareCategory: PipelineCategoryName;\n};\n\n/**\n * Creates pipeline instances for various contexts.\n * Abstracts pipeline creation to support different implementations.\n * Used by the system to instantiate pipelines without coupling to specific implementations.\n */\nexport interface IPipelineFactory {\n /**\n * Creates a new pipeline for the specified context type.\n * @template TContext - The context type for the pipeline. Must extend IPipelineContext.\n * @param options - Optional performance metric options (name, category) for the pipeline.\n * @returns A new pipeline instance ready for middleware registration.\n */\n createPipeline<TContext extends IPipelineContext>(options?: PipelineOptions): IPipeline<TContext>;\n}\n"],"mappings":";;;;;;;;AAgBA,IAAY,mBAAL,yBAAA,kBAAA;CACL,iBAAA,YAAA;CACA,iBAAA,aAAA;CACA,iBAAA,YAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,6 +1,6 @@
1
- import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy } from "./index-b5BtWAvO.mjs";
1
+ import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy } from "./index-BlP67nCr.mjs";
2
2
  import { r as Immutable } from "./types-C1ojaDL4.mjs";
3
- import { c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, o as IEntityUpdate, p as IEntityEvent, v as IEntityConfigSnapshot } from "./index-C1hRAjM-.mjs";
3
+ import { c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, o as IEntityUpdate, p as IEntityEvent, v as IEntityConfigSnapshot } from "./index-vpjRaGIC.mjs";
4
4
  import { c as IMiddleware, l as IPipelineContext, o as IPipeline, u as PipelineRuntime } from "./index-CeqaKmWR.mjs";
5
5
 
6
6
  //#region src/utils/logger.d.ts
@@ -981,4 +981,4 @@ interface ISystemsFactory {
981
981
  }
982
982
  //#endregion
983
983
  export { ISystemContextRepository as A, SystemModuleName as B, TickSnapshot as C, ISystemContextSnapshot as D, ISystemContext as E, SystemContextControlState as F, LogLevel as G, ISystemContextConfigReadonly as H, ISystemMiddleware as I, MiddlewareRegistry as L, ISystemContextEvents as M, ISystemContextControl as N, IJsonSerializer as O, ISystemContextControlState as P, MiddlewareRegistryReadonly as R, TickMetricEntry as S, IMutableSystemContext as T, ILogger as U, ISystemContextConfig as V, ILoggerOptions as W, PerformanceMetricOptions as _, ISystemsRuntime as a, MiddlewareMetricsSummary as b, ISystemsModuleBuilder as c, IPipelineFactory as d, PipelineCategory as f, IPerformanceTimer as g, IContextFactory as h, ISystemsRuntimeContext as i, ISystemContextProxies as j, ISystemContextScheduler as k, ISystemsModuleBuilderReadonly as l, PipelineOptions as m, IRuntimeFactory as n, ISystemsModuleRepository as o, PipelineCategoryName as p, ISystemsRuntimeMiddleware as r, ISystemsModule as s, ISystemsFactory as t, SystemType as u, PerformanceTimeEntry as v, dispatchSequential as w, RenderSnapshot as x, PerformanceTimerUid as y, SystemMiddlewareName as z };
984
- //# sourceMappingURL=index-D3rS2RFG.d.mts.map
984
+ //# sourceMappingURL=index-BD7sDB60.d.mts.map
@@ -1,6 +1,6 @@
1
- import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy } from "./index-C0jDrUBA.cjs";
1
+ import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, l as IEntityProxyRepository, o as IEntityModel, r as EntityTypeUid, s as EntityProxy } from "./index-C5nragoq.cjs";
2
2
  import { r as Immutable } from "./types-Bbmnq4ni.cjs";
3
- import { c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, o as IEntityUpdate, p as IEntityEvent, v as IEntityConfigSnapshot } from "./index-BGLTfuj8.cjs";
3
+ import { c as IEntitySnapshot, d as EntityEventSubscriptionOptions, f as EntityEventUid, g as IEventData, o as IEntityUpdate, p as IEntityEvent, v as IEntityConfigSnapshot } from "./index-BOsrKTWm.cjs";
4
4
  import { c as IMiddleware, l as IPipelineContext, o as IPipeline, u as PipelineRuntime } from "./index-DMTkNY1e.cjs";
5
5
 
6
6
  //#region src/utils/logger.d.ts
@@ -981,4 +981,4 @@ interface ISystemsFactory {
981
981
  }
982
982
  //#endregion
983
983
  export { ISystemContextRepository as A, SystemModuleName as B, TickSnapshot as C, ISystemContextSnapshot as D, ISystemContext as E, SystemContextControlState as F, LogLevel as G, ISystemContextConfigReadonly as H, ISystemMiddleware as I, MiddlewareRegistry as L, ISystemContextEvents as M, ISystemContextControl as N, IJsonSerializer as O, ISystemContextControlState as P, MiddlewareRegistryReadonly as R, TickMetricEntry as S, IMutableSystemContext as T, ILogger as U, ISystemContextConfig as V, ILoggerOptions as W, PerformanceMetricOptions as _, ISystemsRuntime as a, MiddlewareMetricsSummary as b, ISystemsModuleBuilder as c, IPipelineFactory as d, PipelineCategory as f, IPerformanceTimer as g, IContextFactory as h, ISystemsRuntimeContext as i, ISystemContextProxies as j, ISystemContextScheduler as k, ISystemsModuleBuilderReadonly as l, PipelineOptions as m, IRuntimeFactory as n, ISystemsModuleRepository as o, PipelineCategoryName as p, ISystemsRuntimeMiddleware as r, ISystemsModule as s, ISystemsFactory as t, SystemType as u, PerformanceTimeEntry as v, dispatchSequential as w, RenderSnapshot as x, PerformanceTimerUid as y, SystemMiddlewareName as z };
984
- //# sourceMappingURL=index-B1OYkMOx.d.cts.map
984
+ //# sourceMappingURL=index-BJFNTFDd.d.cts.map
@@ -1,4 +1,4 @@
1
- import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, n as IdentityComponent, o as IEntityModel, p as IComponent, r as EntityTypeUid } from "./index-C0jDrUBA.cjs";
1
+ import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, n as IdentityComponent, o as IEntityModel, p as IComponent, r as EntityTypeUid } from "./index-C5nragoq.cjs";
2
2
  import { n as DeepPartial } from "./types-Bbmnq4ni.cjs";
3
3
 
4
4
  //#region src/entities/entity-config.d.ts
@@ -491,4 +491,4 @@ interface IEntityScheduler {
491
491
  }
492
492
  //#endregion
493
493
  export { IEntityContextCache as _, EntityUpdateType as a, IEntitySnapshot as c, EntityEventSubscriptionOptions as d, EntityEventUid as f, IEventData as g, IEntityEventsManager as h, IEntityRepository as i, IEntitySnapshotProvider as l, IEntityEventsDispatcher as m, IEntityScheduler as n, IEntityUpdate as o, IEntityEvent as p, SchedulerPauseType as r, IEntityUpdateQueue as s, EntitySchedule as t, EntityEventSubscriptionFilter as u, IEntityConfigSnapshot as v };
494
- //# sourceMappingURL=index-BGLTfuj8.d.cts.map
494
+ //# sourceMappingURL=index-BOsrKTWm.d.cts.map
@@ -20,15 +20,16 @@ import { r as Immutable } from "./types-C1ojaDL4.mjs";
20
20
  */
21
21
  interface ConfigCustomControlOptions<TValue> {}
22
22
  /**
23
- * A generic configuration object for a component, where keys are config paths and values are the corresponding config values.
23
+ * A generic configuration object for a component, where keys are config paths
24
+ * and values are the corresponding config values.
24
25
  */
25
- type ConfigRecord = Record<string, unknown>;
26
+ type ConfigRecord = Record<string, any>;
26
27
  /**
27
28
  * Defines a single configuration option for a specific key in a component's config record.
28
29
  * If the config value is itself a nested config record, it can include an `inner` array of further config options.
29
30
  */
30
- type ConfigOption<TConfig extends object> = keyof TConfig & string extends infer K ? K extends keyof TConfig & string ? ConfigOptionForKey<TConfig, K> : never : never;
31
- type ConfigOptionForKey<TConfig extends object, K extends keyof TConfig & string> = ConfigOptionForValue<NonNullable<TConfig[K]>, K>;
31
+ type ConfigOption<TConfig extends ConfigRecord> = keyof TConfig & string extends infer K ? K extends keyof TConfig & string ? ConfigOptionForKey<TConfig, K> : never : never;
32
+ type ConfigOptionForKey<TConfig extends ConfigRecord, K extends keyof TConfig & string> = ConfigOptionForValue<NonNullable<TConfig[K]>, K>;
32
33
  type ConfigOptionForValue<TValue, K extends string> = ConfigNestedOptionForValue<TValue, K> | ConfigLeafOptionForValue<TValue, K> | ConfigCustomControlOption<TValue, K>;
33
34
  type ConfigNestedOptionForValue<TValue, K extends string> = TValue extends readonly unknown[] ? never : TValue extends ((...args: never[]) => unknown) ? never : TValue extends object ? ConfigNestedOption<TValue, K> : never;
34
35
  type ConfigLeafOptionForValue<TValue, K extends string> = [TValue] extends [number] ? ConfigNumberOption<K> | ConfigChoiceOption<K, Extract<TValue, ConfigChoiceValue>> : [TValue] extends [boolean] ? ConfigBooleanOption<K> | ConfigChoiceOption<K, Extract<TValue, ConfigChoiceValue>> : [TValue] extends [string] ? ConfigStringOption<K> | ConfigColorOption<K> | ConfigChoiceOption<K, Extract<TValue, ConfigChoiceValue>> : never;
@@ -328,4 +329,4 @@ interface IdentityComponent<TModel extends IEntityModel> extends IComponent {
328
329
  }
329
330
  //#endregion
330
331
  export { ConfigRecord as _, IEntity as a, IEntityProxy as c, TypedEntityProxy as d, ComponentTypeUid as f, ConfigOption as g, ConfigCustomControlOptions as h, EntityUid as i, IEntityProxyRepository as l, IComponentWithConfig as m, IdentityComponent as n, IEntityModel as o, IComponent as p, EntityTypeUid as r, EntityProxy as s, BasicComponentType as t, RequiredProxies as u };
331
- //# sourceMappingURL=index-b5BtWAvO.d.mts.map
332
+ //# sourceMappingURL=index-BlP67nCr.d.mts.map
@@ -20,15 +20,16 @@ import { r as Immutable } from "./types-Bbmnq4ni.cjs";
20
20
  */
21
21
  interface ConfigCustomControlOptions<TValue> {}
22
22
  /**
23
- * A generic configuration object for a component, where keys are config paths and values are the corresponding config values.
23
+ * A generic configuration object for a component, where keys are config paths
24
+ * and values are the corresponding config values.
24
25
  */
25
- type ConfigRecord = Record<string, unknown>;
26
+ type ConfigRecord = Record<string, any>;
26
27
  /**
27
28
  * Defines a single configuration option for a specific key in a component's config record.
28
29
  * If the config value is itself a nested config record, it can include an `inner` array of further config options.
29
30
  */
30
- type ConfigOption<TConfig extends object> = keyof TConfig & string extends infer K ? K extends keyof TConfig & string ? ConfigOptionForKey<TConfig, K> : never : never;
31
- type ConfigOptionForKey<TConfig extends object, K extends keyof TConfig & string> = ConfigOptionForValue<NonNullable<TConfig[K]>, K>;
31
+ type ConfigOption<TConfig extends ConfigRecord> = keyof TConfig & string extends infer K ? K extends keyof TConfig & string ? ConfigOptionForKey<TConfig, K> : never : never;
32
+ type ConfigOptionForKey<TConfig extends ConfigRecord, K extends keyof TConfig & string> = ConfigOptionForValue<NonNullable<TConfig[K]>, K>;
32
33
  type ConfigOptionForValue<TValue, K extends string> = ConfigNestedOptionForValue<TValue, K> | ConfigLeafOptionForValue<TValue, K> | ConfigCustomControlOption<TValue, K>;
33
34
  type ConfigNestedOptionForValue<TValue, K extends string> = TValue extends readonly unknown[] ? never : TValue extends ((...args: never[]) => unknown) ? never : TValue extends object ? ConfigNestedOption<TValue, K> : never;
34
35
  type ConfigLeafOptionForValue<TValue, K extends string> = [TValue] extends [number] ? ConfigNumberOption<K> | ConfigChoiceOption<K, Extract<TValue, ConfigChoiceValue>> : [TValue] extends [boolean] ? ConfigBooleanOption<K> | ConfigChoiceOption<K, Extract<TValue, ConfigChoiceValue>> : [TValue] extends [string] ? ConfigStringOption<K> | ConfigColorOption<K> | ConfigChoiceOption<K, Extract<TValue, ConfigChoiceValue>> : never;
@@ -328,4 +329,4 @@ interface IdentityComponent<TModel extends IEntityModel> extends IComponent {
328
329
  }
329
330
  //#endregion
330
331
  export { ConfigRecord as _, IEntity as a, IEntityProxy as c, TypedEntityProxy as d, ComponentTypeUid as f, ConfigOption as g, ConfigCustomControlOptions as h, EntityUid as i, IEntityProxyRepository as l, IComponentWithConfig as m, IdentityComponent as n, IEntityModel as o, IComponent as p, EntityTypeUid as r, EntityProxy as s, BasicComponentType as t, RequiredProxies as u };
331
- //# sourceMappingURL=index-C0jDrUBA.d.cts.map
332
+ //# sourceMappingURL=index-C5nragoq.d.cts.map
@@ -1,4 +1,4 @@
1
- import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, n as IdentityComponent, o as IEntityModel, p as IComponent, r as EntityTypeUid } from "./index-b5BtWAvO.mjs";
1
+ import { _ as ConfigRecord, a as IEntity, c as IEntityProxy, f as ComponentTypeUid, i as EntityUid, n as IdentityComponent, o as IEntityModel, p as IComponent, r as EntityTypeUid } from "./index-BlP67nCr.mjs";
2
2
  import { n as DeepPartial } from "./types-C1ojaDL4.mjs";
3
3
 
4
4
  //#region src/entities/entity-config.d.ts
@@ -491,4 +491,4 @@ interface IEntityScheduler {
491
491
  }
492
492
  //#endregion
493
493
  export { IEntityContextCache as _, EntityUpdateType as a, IEntitySnapshot as c, EntityEventSubscriptionOptions as d, EntityEventUid as f, IEventData as g, IEntityEventsManager as h, IEntityRepository as i, IEntitySnapshotProvider as l, IEntityEventsDispatcher as m, IEntityScheduler as n, IEntityUpdate as o, IEntityEvent as p, SchedulerPauseType as r, IEntityUpdateQueue as s, EntitySchedule as t, EntityEventSubscriptionFilter as u, IEntityConfigSnapshot as v };
494
- //# sourceMappingURL=index-C1hRAjM-.d.mts.map
494
+ //# sourceMappingURL=index-vpjRaGIC.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/systems/pipeline/system-context-control.ts","../../src/systems/system-type.ts"],"sourcesContent":["import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { ISystemMiddleware } from './system-middleware';\n\nexport enum SystemContextControlState {\n none = 'none',\n enableCurrentSystem = 'enableCurrentSystem',\n disableCurrentSystem = 'disableCurrentSystem',\n enableCurrentModule = 'enableCurrentModule',\n disableCurrentModule = 'disableCurrentModule'\n}\n\n/**\n * Interface for controlling the execution of systems and modules within a system context.\n * This allows middleware to enable or disable specific systems or entire modules for the current entity.\n */\nexport interface ISystemContextControl {\n /**\n * Disables the current system for the current entity.\n */\n disableCurrentSystem(): void;\n\n /**\n * Re-enables the current system for the current entity.\n */\n enableCurrentSystem(): void;\n\n /**\n * Disables the current module for the current entity.\n */\n disableCurrentModule(): void;\n\n /**\n * Re-enables the current module for the current entity.\n */\n enableCurrentModule(): void;\n}\n\n/**\n * Extended system context interface that includes control state for middleware to manage system and module execution.\n * This allows middleware to query and modify the execution state of systems and modules during pipeline processing.\n */\nexport interface ISystemContextControlState extends ISystemContextControl {\n /**\n * Current state of system/module execution control, indicating whether the current system or module is enabled or disabled.\n */\n readonly state: SystemContextControlState;\n\n /**\n * Checks if a specific middleware is currently disabled in the context, allowing middleware to conditionally execute logic based on the enabled/disabled state of other middleware.\n * @param middleware - The middleware to check for disabled state.\n * @returns True if the specified middleware is currently disabled, false otherwise.\n */\n isMiddlewareDisabled(middleware: ISystemMiddleware<IEntity>): boolean;\n\n /**\n * Disables a specific middleware in the context.\n * @param middleware - The middleware to disable.\n */\n disableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables a specific middleware in the context.\n * @param middleware - The middleware to enable.\n */\n enableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Disables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to disable.\n */\n disableModule(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to enable.\n */\n enableModule(middleware: ISystemMiddleware<IEntity>): void;\n}\n","/**\r\n * The five phases of entity system execution in each frame.\r\n * Each phase serves a specific purpose in the entity lifecycle and can be extended by custom system types.\r\n * The runtime handles each phase in order, allowing systems to perform stage-specific operations.\r\n */\r\nexport enum SystemType {\r\n /**\r\n * Initial setup and resource allocation for the entity.\r\n * Runs once when the entity is first created or initialized.\r\n */\r\n initialize = 0,\r\n\r\n /**\r\n * Config application and config-dependent resource reconciliation.\r\n * Runs on entity creation and on updates that carry a config payload.\r\n */\r\n config = 1,\r\n\r\n /**\r\n * Main logic and state updates for the entity.\r\n * Runs on every update to change entity behavior and properties.\r\n */\r\n update = 2,\r\n\r\n /**\r\n * Output and visualization operations.\r\n * Runs after updates to render or display the entity state.\r\n */\r\n render = 3,\r\n\r\n /**\r\n * Synchronization and persistence.\r\n * Runs last to synchronize state with external systems or storage.\r\n */\r\n sync = 4\r\n}\r\n"],"mappings":";;AAGA,IAAY,4BAAL,yBAAA,2BAAA;CACL,0BAAA,UAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;;AACF,EAAA,CAAA,CAAA;;;;;;;;ACJA,IAAY,aAAL,yBAAA,YAAA;;;;;CAKL,WAAA,WAAA,gBAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,UAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/systems/pipeline/system-context-control.ts","../../src/systems/system-type.ts"],"sourcesContent":["import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { ISystemMiddleware } from './system-middleware';\n\nexport enum SystemContextControlState {\n none = 'none',\n enableCurrentSystem = 'enableCurrentSystem',\n disableCurrentSystem = 'disableCurrentSystem',\n enableCurrentModule = 'enableCurrentModule',\n disableCurrentModule = 'disableCurrentModule'\n}\n\n/**\n * Interface for controlling the execution of systems and modules within a system context.\n * This allows middleware to enable or disable specific systems or entire modules for the current entity.\n */\nexport interface ISystemContextControl {\n /**\n * Disables the current system for the current entity.\n */\n disableCurrentSystem(): void;\n\n /**\n * Re-enables the current system for the current entity.\n */\n enableCurrentSystem(): void;\n\n /**\n * Disables the current module for the current entity.\n */\n disableCurrentModule(): void;\n\n /**\n * Re-enables the current module for the current entity.\n */\n enableCurrentModule(): void;\n}\n\n/**\n * Extended system context interface that includes control state for middleware to manage system and module execution.\n * This allows middleware to query and modify the execution state of systems and modules during pipeline processing.\n */\nexport interface ISystemContextControlState extends ISystemContextControl {\n /**\n * Current state of system/module execution control, indicating whether the current system or module is enabled or disabled.\n */\n readonly state: SystemContextControlState;\n\n /**\n * Checks if a specific middleware is currently disabled in the context, allowing middleware to conditionally execute logic based on the enabled/disabled state of other middleware.\n * @param middleware - The middleware to check for disabled state.\n * @returns True if the specified middleware is currently disabled, false otherwise.\n */\n isMiddlewareDisabled(middleware: ISystemMiddleware<IEntity>): boolean;\n\n /**\n * Disables a specific middleware in the context.\n * @param middleware - The middleware to disable.\n */\n disableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables a specific middleware in the context.\n * @param middleware - The middleware to enable.\n */\n enableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Disables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to disable.\n */\n disableModule(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to enable.\n */\n enableModule(middleware: ISystemMiddleware<IEntity>): void;\n}\n","/**\n * The five phases of entity system execution in each frame.\n * Each phase serves a specific purpose in the entity lifecycle and can be extended by custom system types.\n * The runtime handles each phase in order, allowing systems to perform stage-specific operations.\n */\nexport enum SystemType {\n /**\n * Initial setup and resource allocation for the entity.\n * Runs once when the entity is first created or initialized.\n */\n initialize = 0,\n\n /**\n * Config application and config-dependent resource reconciliation.\n * Runs on entity creation and on updates that carry a config payload.\n */\n config = 1,\n\n /**\n * Main logic and state updates for the entity.\n * Runs on every update to change entity behavior and properties.\n */\n update = 2,\n\n /**\n * Output and visualization operations.\n * Runs after updates to render or display the entity state.\n */\n render = 3,\n\n /**\n * Synchronization and persistence.\n * Runs last to synchronize state with external systems or storage.\n */\n sync = 4\n}\n"],"mappings":";;AAGA,IAAY,4BAAL,yBAAA,2BAAA;CACL,0BAAA,UAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;;AACF,EAAA,CAAA,CAAA;;;;;;;;ACJA,IAAY,aAAL,yBAAA,YAAA;;;;;CAKL,WAAA,WAAA,gBAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,UAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import { A as ISystemContextRepository, B as SystemModuleName, D as ISystemContextSnapshot, E as ISystemContext, F as SystemContextControlState, H as ISystemContextConfigReadonly, I as ISystemMiddleware, L as MiddlewareRegistry, M as ISystemContextEvents, N as ISystemContextControl, P as ISystemContextControlState, R as MiddlewareRegistryReadonly, T as IMutableSystemContext, V as ISystemContextConfig, a as ISystemsRuntime, c as ISystemsModuleBuilder, i as ISystemsRuntimeContext, j as ISystemContextProxies, k as ISystemContextScheduler, l as ISystemsModuleBuilderReadonly, o as ISystemsModuleRepository, r as ISystemsRuntimeMiddleware, s as ISystemsModule, u as SystemType, z as SystemMiddlewareName } from "../index-B1OYkMOx.cjs";
1
+ import { A as ISystemContextRepository, B as SystemModuleName, D as ISystemContextSnapshot, E as ISystemContext, F as SystemContextControlState, H as ISystemContextConfigReadonly, I as ISystemMiddleware, L as MiddlewareRegistry, M as ISystemContextEvents, N as ISystemContextControl, P as ISystemContextControlState, R as MiddlewareRegistryReadonly, T as IMutableSystemContext, V as ISystemContextConfig, a as ISystemsRuntime, c as ISystemsModuleBuilder, i as ISystemsRuntimeContext, j as ISystemContextProxies, k as ISystemContextScheduler, l as ISystemsModuleBuilderReadonly, o as ISystemsModuleRepository, r as ISystemsRuntimeMiddleware, s as ISystemsModule, u as SystemType, z as SystemMiddlewareName } from "../index-BJFNTFDd.cjs";
2
2
  export { IMutableSystemContext, ISystemContext, ISystemContextConfig, ISystemContextConfigReadonly, ISystemContextControl, ISystemContextControlState, ISystemContextEvents, ISystemContextProxies, ISystemContextRepository, ISystemContextScheduler, ISystemContextSnapshot, ISystemMiddleware, ISystemsModule, ISystemsModuleBuilder, ISystemsModuleBuilderReadonly, ISystemsModuleRepository, ISystemsRuntime, ISystemsRuntimeContext, ISystemsRuntimeMiddleware, MiddlewareRegistry, MiddlewareRegistryReadonly, SystemContextControlState, SystemMiddlewareName, SystemModuleName, SystemType };
@@ -1,2 +1,2 @@
1
- import { A as ISystemContextRepository, B as SystemModuleName, D as ISystemContextSnapshot, E as ISystemContext, F as SystemContextControlState, H as ISystemContextConfigReadonly, I as ISystemMiddleware, L as MiddlewareRegistry, M as ISystemContextEvents, N as ISystemContextControl, P as ISystemContextControlState, R as MiddlewareRegistryReadonly, T as IMutableSystemContext, V as ISystemContextConfig, a as ISystemsRuntime, c as ISystemsModuleBuilder, i as ISystemsRuntimeContext, j as ISystemContextProxies, k as ISystemContextScheduler, l as ISystemsModuleBuilderReadonly, o as ISystemsModuleRepository, r as ISystemsRuntimeMiddleware, s as ISystemsModule, u as SystemType, z as SystemMiddlewareName } from "../index-D3rS2RFG.mjs";
1
+ import { A as ISystemContextRepository, B as SystemModuleName, D as ISystemContextSnapshot, E as ISystemContext, F as SystemContextControlState, H as ISystemContextConfigReadonly, I as ISystemMiddleware, L as MiddlewareRegistry, M as ISystemContextEvents, N as ISystemContextControl, P as ISystemContextControlState, R as MiddlewareRegistryReadonly, T as IMutableSystemContext, V as ISystemContextConfig, a as ISystemsRuntime, c as ISystemsModuleBuilder, i as ISystemsRuntimeContext, j as ISystemContextProxies, k as ISystemContextScheduler, l as ISystemsModuleBuilderReadonly, o as ISystemsModuleRepository, r as ISystemsRuntimeMiddleware, s as ISystemsModule, u as SystemType, z as SystemMiddlewareName } from "../index-BD7sDB60.mjs";
2
2
  export { IMutableSystemContext, ISystemContext, ISystemContextConfig, ISystemContextConfigReadonly, ISystemContextControl, ISystemContextControlState, ISystemContextEvents, ISystemContextProxies, ISystemContextRepository, ISystemContextScheduler, ISystemContextSnapshot, ISystemMiddleware, ISystemsModule, ISystemsModuleBuilder, ISystemsModuleBuilderReadonly, ISystemsModuleRepository, ISystemsRuntime, ISystemsRuntimeContext, ISystemsRuntimeMiddleware, MiddlewareRegistry, MiddlewareRegistryReadonly, SystemContextControlState, SystemMiddlewareName, SystemModuleName, SystemType };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/systems/pipeline/system-context-control.ts","../../src/systems/system-type.ts"],"sourcesContent":["import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { ISystemMiddleware } from './system-middleware';\n\nexport enum SystemContextControlState {\n none = 'none',\n enableCurrentSystem = 'enableCurrentSystem',\n disableCurrentSystem = 'disableCurrentSystem',\n enableCurrentModule = 'enableCurrentModule',\n disableCurrentModule = 'disableCurrentModule'\n}\n\n/**\n * Interface for controlling the execution of systems and modules within a system context.\n * This allows middleware to enable or disable specific systems or entire modules for the current entity.\n */\nexport interface ISystemContextControl {\n /**\n * Disables the current system for the current entity.\n */\n disableCurrentSystem(): void;\n\n /**\n * Re-enables the current system for the current entity.\n */\n enableCurrentSystem(): void;\n\n /**\n * Disables the current module for the current entity.\n */\n disableCurrentModule(): void;\n\n /**\n * Re-enables the current module for the current entity.\n */\n enableCurrentModule(): void;\n}\n\n/**\n * Extended system context interface that includes control state for middleware to manage system and module execution.\n * This allows middleware to query and modify the execution state of systems and modules during pipeline processing.\n */\nexport interface ISystemContextControlState extends ISystemContextControl {\n /**\n * Current state of system/module execution control, indicating whether the current system or module is enabled or disabled.\n */\n readonly state: SystemContextControlState;\n\n /**\n * Checks if a specific middleware is currently disabled in the context, allowing middleware to conditionally execute logic based on the enabled/disabled state of other middleware.\n * @param middleware - The middleware to check for disabled state.\n * @returns True if the specified middleware is currently disabled, false otherwise.\n */\n isMiddlewareDisabled(middleware: ISystemMiddleware<IEntity>): boolean;\n\n /**\n * Disables a specific middleware in the context.\n * @param middleware - The middleware to disable.\n */\n disableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables a specific middleware in the context.\n * @param middleware - The middleware to enable.\n */\n enableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Disables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to disable.\n */\n disableModule(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to enable.\n */\n enableModule(middleware: ISystemMiddleware<IEntity>): void;\n}\n","/**\r\n * The five phases of entity system execution in each frame.\r\n * Each phase serves a specific purpose in the entity lifecycle and can be extended by custom system types.\r\n * The runtime handles each phase in order, allowing systems to perform stage-specific operations.\r\n */\r\nexport enum SystemType {\r\n /**\r\n * Initial setup and resource allocation for the entity.\r\n * Runs once when the entity is first created or initialized.\r\n */\r\n initialize = 0,\r\n\r\n /**\r\n * Config application and config-dependent resource reconciliation.\r\n * Runs on entity creation and on updates that carry a config payload.\r\n */\r\n config = 1,\r\n\r\n /**\r\n * Main logic and state updates for the entity.\r\n * Runs on every update to change entity behavior and properties.\r\n */\r\n update = 2,\r\n\r\n /**\r\n * Output and visualization operations.\r\n * Runs after updates to render or display the entity state.\r\n */\r\n render = 3,\r\n\r\n /**\r\n * Synchronization and persistence.\r\n * Runs last to synchronize state with external systems or storage.\r\n */\r\n sync = 4\r\n}\r\n"],"mappings":";AAGA,IAAY,4BAAL,yBAAA,2BAAA;CACL,0BAAA,UAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;;AACF,EAAA,CAAA,CAAA;;;;;;;;ACJA,IAAY,aAAL,yBAAA,YAAA;;;;;CAKL,WAAA,WAAA,gBAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,UAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/systems/pipeline/system-context-control.ts","../../src/systems/system-type.ts"],"sourcesContent":["import { IEntity } from '@awesome-ecs/abstract/entities';\nimport { ISystemMiddleware } from './system-middleware';\n\nexport enum SystemContextControlState {\n none = 'none',\n enableCurrentSystem = 'enableCurrentSystem',\n disableCurrentSystem = 'disableCurrentSystem',\n enableCurrentModule = 'enableCurrentModule',\n disableCurrentModule = 'disableCurrentModule'\n}\n\n/**\n * Interface for controlling the execution of systems and modules within a system context.\n * This allows middleware to enable or disable specific systems or entire modules for the current entity.\n */\nexport interface ISystemContextControl {\n /**\n * Disables the current system for the current entity.\n */\n disableCurrentSystem(): void;\n\n /**\n * Re-enables the current system for the current entity.\n */\n enableCurrentSystem(): void;\n\n /**\n * Disables the current module for the current entity.\n */\n disableCurrentModule(): void;\n\n /**\n * Re-enables the current module for the current entity.\n */\n enableCurrentModule(): void;\n}\n\n/**\n * Extended system context interface that includes control state for middleware to manage system and module execution.\n * This allows middleware to query and modify the execution state of systems and modules during pipeline processing.\n */\nexport interface ISystemContextControlState extends ISystemContextControl {\n /**\n * Current state of system/module execution control, indicating whether the current system or module is enabled or disabled.\n */\n readonly state: SystemContextControlState;\n\n /**\n * Checks if a specific middleware is currently disabled in the context, allowing middleware to conditionally execute logic based on the enabled/disabled state of other middleware.\n * @param middleware - The middleware to check for disabled state.\n * @returns True if the specified middleware is currently disabled, false otherwise.\n */\n isMiddlewareDisabled(middleware: ISystemMiddleware<IEntity>): boolean;\n\n /**\n * Disables a specific middleware in the context.\n * @param middleware - The middleware to disable.\n */\n disableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables a specific middleware in the context.\n * @param middleware - The middleware to enable.\n */\n enableMiddleware(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Disables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to disable.\n */\n disableModule(middleware: ISystemMiddleware<IEntity>): void;\n\n /**\n * Enables an entire module of middleware in the context.\n * @param middleware - A middleware from the module to enable.\n */\n enableModule(middleware: ISystemMiddleware<IEntity>): void;\n}\n","/**\n * The five phases of entity system execution in each frame.\n * Each phase serves a specific purpose in the entity lifecycle and can be extended by custom system types.\n * The runtime handles each phase in order, allowing systems to perform stage-specific operations.\n */\nexport enum SystemType {\n /**\n * Initial setup and resource allocation for the entity.\n * Runs once when the entity is first created or initialized.\n */\n initialize = 0,\n\n /**\n * Config application and config-dependent resource reconciliation.\n * Runs on entity creation and on updates that carry a config payload.\n */\n config = 1,\n\n /**\n * Main logic and state updates for the entity.\n * Runs on every update to change entity behavior and properties.\n */\n update = 2,\n\n /**\n * Output and visualization operations.\n * Runs after updates to render or display the entity state.\n */\n render = 3,\n\n /**\n * Synchronization and persistence.\n * Runs last to synchronize state with external systems or storage.\n */\n sync = 4\n}\n"],"mappings":";AAGA,IAAY,4BAAL,yBAAA,2BAAA;CACL,0BAAA,UAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;CACA,0BAAA,yBAAA;CACA,0BAAA,0BAAA;;AACF,EAAA,CAAA,CAAA;;;;;;;;ACJA,IAAY,aAAL,yBAAA,YAAA;;;;;CAKL,WAAA,WAAA,gBAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,YAAA,KAAA;;;;;CAMA,WAAA,WAAA,UAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/utils/dispatch-sequential.ts","../../src/utils/logger.ts"],"sourcesContent":["/**\r\n * Executes a function for each item in an iterable, sequentially.\r\n *\r\n * Uses a sync fast-path: iterates synchronously until the first Promise is\r\n * encountered, then switches to async for the remainder. If no item produces\r\n * a Promise, the entire call stays synchronous with zero async overhead.\r\n *\r\n * @param items - The iterable to iterate over.\r\n * @param fn - The function to call for each item. May return void or a Promise.\r\n * @returns void if all calls were synchronous, or a Promise if any were async.\r\n */\r\nexport function dispatchSequential<T>(\r\n items: Iterable<T>,\r\n fn: (item: T) => void | Promise<void>\r\n): void | Promise<void> {\r\n const iterator = items[Symbol.iterator]();\r\n\r\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\r\n const result = fn(next.value);\r\n\r\n if (result instanceof Promise) {\r\n return continueAsync(iterator, fn, result);\r\n }\r\n }\r\n}\r\n\r\nasync function continueAsync<T>(\r\n iterator: Iterator<T>,\r\n fn: (item: T) => void | Promise<void>,\r\n pending: Promise<void>\r\n): Promise<void> {\r\n await pending;\r\n\r\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\r\n const result = fn(next.value);\r\n\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n}\r\n","/**\r\n * Logger interface for debug and diagnostic output.\r\n * Supports multiple log levels for controlling verbosity.\r\n * Implementations can target different outputs (console, file, remote, etc.).\r\n */\r\nexport interface ILogger {\r\n /**\r\n * Logs a message with a specified severity level.\r\n * @param level - The severity level of the message.\r\n * @param message - The primary message content.\r\n * @param args - Additional arguments to include in the log output.\r\n */\r\n log(level: LogLevel, message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs detailed diagnostic information.\r\n * Typically the lowest level, most verbose output.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n trace(message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs debug-level information.\r\n * Useful during development and troubleshooting.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n debug(message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs warning-level messages.\r\n * Indicates potentially problematic conditions.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n warn(message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs error-level messages.\r\n * Indicates error conditions that may require attention.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n error(message: any, ...args: any[]): void;\r\n}\r\n\r\n/**\r\n * Logging severity levels in increasing order.\r\n */\r\nexport enum LogLevel {\r\n /**\r\n * Most detailed, diagnostic-level logging.\r\n */\r\n trace,\r\n\r\n /**\r\n * Development and debugging information.\r\n */\r\n debug,\r\n\r\n /**\r\n * Warning-level conditions.\r\n */\r\n warn,\r\n\r\n /**\r\n * Error-level conditions.\r\n */\r\n error\r\n}\r\n\r\n/**\r\n * Configuration options for logger instances.\r\n */\r\nexport interface ILoggerOptions {\r\n /**\r\n * Enables/disables each log level.\r\n * If a level is disabled, log calls at that level are ignored.\r\n */\r\n enabled: Map<LogLevel, boolean>;\r\n}\r\n"],"mappings":";;;;;;;;;;;;;AAWA,SAAgB,mBACd,OACA,IACsB;CACtB,MAAM,WAAW,MAAM,OAAO,UAAU;CAExC,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,OAAO,cAAc,UAAU,IAAI,MAAM;CAE7C;AACF;AAEA,eAAe,cACb,UACA,IACA,SACe;CACf,MAAM;CAEN,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,MAAM;CAEV;AACF;;;;;;ACUA,IAAY,WAAL,yBAAA,UAAA;;;;CAIL,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,UAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/utils/dispatch-sequential.ts","../../src/utils/logger.ts"],"sourcesContent":["/**\n * Executes a function for each item in an iterable, sequentially.\n *\n * Uses a sync fast-path: iterates synchronously until the first Promise is\n * encountered, then switches to async for the remainder. If no item produces\n * a Promise, the entire call stays synchronous with zero async overhead.\n *\n * @param items - The iterable to iterate over.\n * @param fn - The function to call for each item. May return void or a Promise.\n * @returns void if all calls were synchronous, or a Promise if any were async.\n */\nexport function dispatchSequential<T>(\n items: Iterable<T>,\n fn: (item: T) => void | Promise<void>\n): void | Promise<void> {\n const iterator = items[Symbol.iterator]();\n\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\n const result = fn(next.value);\n\n if (result instanceof Promise) {\n return continueAsync(iterator, fn, result);\n }\n }\n}\n\nasync function continueAsync<T>(\n iterator: Iterator<T>,\n fn: (item: T) => void | Promise<void>,\n pending: Promise<void>\n): Promise<void> {\n await pending;\n\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\n const result = fn(next.value);\n\n if (result instanceof Promise) {\n await result;\n }\n }\n}\n","/**\n * Logger interface for debug and diagnostic output.\n * Supports multiple log levels for controlling verbosity.\n * Implementations can target different outputs (console, file, remote, etc.).\n */\nexport interface ILogger {\n /**\n * Logs a message with a specified severity level.\n * @param level - The severity level of the message.\n * @param message - The primary message content.\n * @param args - Additional arguments to include in the log output.\n */\n log(level: LogLevel, message: any, ...args: any[]): void;\n\n /**\n * Logs detailed diagnostic information.\n * Typically the lowest level, most verbose output.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n trace(message: any, ...args: any[]): void;\n\n /**\n * Logs debug-level information.\n * Useful during development and troubleshooting.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n debug(message: any, ...args: any[]): void;\n\n /**\n * Logs warning-level messages.\n * Indicates potentially problematic conditions.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n warn(message: any, ...args: any[]): void;\n\n /**\n * Logs error-level messages.\n * Indicates error conditions that may require attention.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n error(message: any, ...args: any[]): void;\n}\n\n/**\n * Logging severity levels in increasing order.\n */\nexport enum LogLevel {\n /**\n * Most detailed, diagnostic-level logging.\n */\n trace,\n\n /**\n * Development and debugging information.\n */\n debug,\n\n /**\n * Warning-level conditions.\n */\n warn,\n\n /**\n * Error-level conditions.\n */\n error\n}\n\n/**\n * Configuration options for logger instances.\n */\nexport interface ILoggerOptions {\n /**\n * Enables/disables each log level.\n * If a level is disabled, log calls at that level are ignored.\n */\n enabled: Map<LogLevel, boolean>;\n}\n"],"mappings":";;;;;;;;;;;;;AAWA,SAAgB,mBACd,OACA,IACsB;CACtB,MAAM,WAAW,MAAM,OAAO,UAAU;CAExC,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,OAAO,cAAc,UAAU,IAAI,MAAM;CAE7C;AACF;AAEA,eAAe,cACb,UACA,IACA,SACe;CACf,MAAM;CAEN,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,MAAM;CAEV;AACF;;;;;;ACUA,IAAY,WAAL,yBAAA,UAAA;;;;CAIL,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,UAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { a as ImmutableMap, c as ImmutableSet, i as ImmutableArray, l as Mutable, n as DeepPartial, o as ImmutableObject, r as Immutable, s as ImmutableObjectDeep, t as BooleanProps, u as MutableDeep } from "../types-Bbmnq4ni.cjs";
2
- import { C as TickSnapshot, G as LogLevel, O as IJsonSerializer, S as TickMetricEntry, U as ILogger, W as ILoggerOptions, _ as PerformanceMetricOptions, b as MiddlewareMetricsSummary, g as IPerformanceTimer, v as PerformanceTimeEntry, w as dispatchSequential, x as RenderSnapshot, y as PerformanceTimerUid } from "../index-B1OYkMOx.cjs";
2
+ import { C as TickSnapshot, G as LogLevel, O as IJsonSerializer, S as TickMetricEntry, U as ILogger, W as ILoggerOptions, _ as PerformanceMetricOptions, b as MiddlewareMetricsSummary, g as IPerformanceTimer, v as PerformanceTimeEntry, w as dispatchSequential, x as RenderSnapshot, y as PerformanceTimerUid } from "../index-BJFNTFDd.cjs";
3
3
  export { BooleanProps, DeepPartial, IJsonSerializer, ILogger, ILoggerOptions, IPerformanceTimer, Immutable, ImmutableArray, ImmutableMap, ImmutableObject, ImmutableObjectDeep, ImmutableSet, LogLevel, MiddlewareMetricsSummary, Mutable, MutableDeep, PerformanceMetricOptions, PerformanceTimeEntry, PerformanceTimerUid, RenderSnapshot, TickMetricEntry, TickSnapshot, dispatchSequential };
@@ -1,3 +1,3 @@
1
1
  import { a as ImmutableMap, c as ImmutableSet, i as ImmutableArray, l as Mutable, n as DeepPartial, o as ImmutableObject, r as Immutable, s as ImmutableObjectDeep, t as BooleanProps, u as MutableDeep } from "../types-C1ojaDL4.mjs";
2
- import { C as TickSnapshot, G as LogLevel, O as IJsonSerializer, S as TickMetricEntry, U as ILogger, W as ILoggerOptions, _ as PerformanceMetricOptions, b as MiddlewareMetricsSummary, g as IPerformanceTimer, v as PerformanceTimeEntry, w as dispatchSequential, x as RenderSnapshot, y as PerformanceTimerUid } from "../index-D3rS2RFG.mjs";
2
+ import { C as TickSnapshot, G as LogLevel, O as IJsonSerializer, S as TickMetricEntry, U as ILogger, W as ILoggerOptions, _ as PerformanceMetricOptions, b as MiddlewareMetricsSummary, g as IPerformanceTimer, v as PerformanceTimeEntry, w as dispatchSequential, x as RenderSnapshot, y as PerformanceTimerUid } from "../index-BD7sDB60.mjs";
3
3
  export { BooleanProps, DeepPartial, IJsonSerializer, ILogger, ILoggerOptions, IPerformanceTimer, Immutable, ImmutableArray, ImmutableMap, ImmutableObject, ImmutableObjectDeep, ImmutableSet, LogLevel, MiddlewareMetricsSummary, Mutable, MutableDeep, PerformanceMetricOptions, PerformanceTimeEntry, PerformanceTimerUid, RenderSnapshot, TickMetricEntry, TickSnapshot, dispatchSequential };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/utils/dispatch-sequential.ts","../../src/utils/logger.ts"],"sourcesContent":["/**\r\n * Executes a function for each item in an iterable, sequentially.\r\n *\r\n * Uses a sync fast-path: iterates synchronously until the first Promise is\r\n * encountered, then switches to async for the remainder. If no item produces\r\n * a Promise, the entire call stays synchronous with zero async overhead.\r\n *\r\n * @param items - The iterable to iterate over.\r\n * @param fn - The function to call for each item. May return void or a Promise.\r\n * @returns void if all calls were synchronous, or a Promise if any were async.\r\n */\r\nexport function dispatchSequential<T>(\r\n items: Iterable<T>,\r\n fn: (item: T) => void | Promise<void>\r\n): void | Promise<void> {\r\n const iterator = items[Symbol.iterator]();\r\n\r\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\r\n const result = fn(next.value);\r\n\r\n if (result instanceof Promise) {\r\n return continueAsync(iterator, fn, result);\r\n }\r\n }\r\n}\r\n\r\nasync function continueAsync<T>(\r\n iterator: Iterator<T>,\r\n fn: (item: T) => void | Promise<void>,\r\n pending: Promise<void>\r\n): Promise<void> {\r\n await pending;\r\n\r\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\r\n const result = fn(next.value);\r\n\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n}\r\n","/**\r\n * Logger interface for debug and diagnostic output.\r\n * Supports multiple log levels for controlling verbosity.\r\n * Implementations can target different outputs (console, file, remote, etc.).\r\n */\r\nexport interface ILogger {\r\n /**\r\n * Logs a message with a specified severity level.\r\n * @param level - The severity level of the message.\r\n * @param message - The primary message content.\r\n * @param args - Additional arguments to include in the log output.\r\n */\r\n log(level: LogLevel, message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs detailed diagnostic information.\r\n * Typically the lowest level, most verbose output.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n trace(message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs debug-level information.\r\n * Useful during development and troubleshooting.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n debug(message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs warning-level messages.\r\n * Indicates potentially problematic conditions.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n warn(message: any, ...args: any[]): void;\r\n\r\n /**\r\n * Logs error-level messages.\r\n * Indicates error conditions that may require attention.\r\n * @param message - The message to log.\r\n * @param args - Additional data.\r\n */\r\n error(message: any, ...args: any[]): void;\r\n}\r\n\r\n/**\r\n * Logging severity levels in increasing order.\r\n */\r\nexport enum LogLevel {\r\n /**\r\n * Most detailed, diagnostic-level logging.\r\n */\r\n trace,\r\n\r\n /**\r\n * Development and debugging information.\r\n */\r\n debug,\r\n\r\n /**\r\n * Warning-level conditions.\r\n */\r\n warn,\r\n\r\n /**\r\n * Error-level conditions.\r\n */\r\n error\r\n}\r\n\r\n/**\r\n * Configuration options for logger instances.\r\n */\r\nexport interface ILoggerOptions {\r\n /**\r\n * Enables/disables each log level.\r\n * If a level is disabled, log calls at that level are ignored.\r\n */\r\n enabled: Map<LogLevel, boolean>;\r\n}\r\n"],"mappings":";;;;;;;;;;;;AAWA,SAAgB,mBACd,OACA,IACsB;CACtB,MAAM,WAAW,MAAM,OAAO,UAAU;CAExC,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,OAAO,cAAc,UAAU,IAAI,MAAM;CAE7C;AACF;AAEA,eAAe,cACb,UACA,IACA,SACe;CACf,MAAM;CAEN,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,MAAM;CAEV;AACF;;;;;;ACUA,IAAY,WAAL,yBAAA,UAAA;;;;CAIL,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,UAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/utils/dispatch-sequential.ts","../../src/utils/logger.ts"],"sourcesContent":["/**\n * Executes a function for each item in an iterable, sequentially.\n *\n * Uses a sync fast-path: iterates synchronously until the first Promise is\n * encountered, then switches to async for the remainder. If no item produces\n * a Promise, the entire call stays synchronous with zero async overhead.\n *\n * @param items - The iterable to iterate over.\n * @param fn - The function to call for each item. May return void or a Promise.\n * @returns void if all calls were synchronous, or a Promise if any were async.\n */\nexport function dispatchSequential<T>(\n items: Iterable<T>,\n fn: (item: T) => void | Promise<void>\n): void | Promise<void> {\n const iterator = items[Symbol.iterator]();\n\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\n const result = fn(next.value);\n\n if (result instanceof Promise) {\n return continueAsync(iterator, fn, result);\n }\n }\n}\n\nasync function continueAsync<T>(\n iterator: Iterator<T>,\n fn: (item: T) => void | Promise<void>,\n pending: Promise<void>\n): Promise<void> {\n await pending;\n\n for (let next = iterator.next(); !next.done; next = iterator.next()) {\n const result = fn(next.value);\n\n if (result instanceof Promise) {\n await result;\n }\n }\n}\n","/**\n * Logger interface for debug and diagnostic output.\n * Supports multiple log levels for controlling verbosity.\n * Implementations can target different outputs (console, file, remote, etc.).\n */\nexport interface ILogger {\n /**\n * Logs a message with a specified severity level.\n * @param level - The severity level of the message.\n * @param message - The primary message content.\n * @param args - Additional arguments to include in the log output.\n */\n log(level: LogLevel, message: any, ...args: any[]): void;\n\n /**\n * Logs detailed diagnostic information.\n * Typically the lowest level, most verbose output.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n trace(message: any, ...args: any[]): void;\n\n /**\n * Logs debug-level information.\n * Useful during development and troubleshooting.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n debug(message: any, ...args: any[]): void;\n\n /**\n * Logs warning-level messages.\n * Indicates potentially problematic conditions.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n warn(message: any, ...args: any[]): void;\n\n /**\n * Logs error-level messages.\n * Indicates error conditions that may require attention.\n * @param message - The message to log.\n * @param args - Additional data.\n */\n error(message: any, ...args: any[]): void;\n}\n\n/**\n * Logging severity levels in increasing order.\n */\nexport enum LogLevel {\n /**\n * Most detailed, diagnostic-level logging.\n */\n trace,\n\n /**\n * Development and debugging information.\n */\n debug,\n\n /**\n * Warning-level conditions.\n */\n warn,\n\n /**\n * Error-level conditions.\n */\n error\n}\n\n/**\n * Configuration options for logger instances.\n */\nexport interface ILoggerOptions {\n /**\n * Enables/disables each log level.\n * If a level is disabled, log calls at that level are ignored.\n */\n enabled: Map<LogLevel, boolean>;\n}\n"],"mappings":";;;;;;;;;;;;AAWA,SAAgB,mBACd,OACA,IACsB;CACtB,MAAM,WAAW,MAAM,OAAO,UAAU;CAExC,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,OAAO,cAAc,UAAU,IAAI,MAAM;CAE7C;AACF;AAEA,eAAe,cACb,UACA,IACA,SACe;CACf,MAAM;CAEN,KAAK,IAAI,OAAO,SAAS,KAAK,GAAG,CAAC,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;EACnE,MAAM,SAAS,GAAG,KAAK,KAAK;EAE5B,IAAI,kBAAkB,SACpB,MAAM;CAEV;AACF;;;;;;ACUA,IAAY,WAAL,yBAAA,UAAA;;;;CAIL,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;;;CAKA,SAAA,SAAA,UAAA,KAAA;;;;CAKA,SAAA,SAAA,WAAA,KAAA;;AACF,EAAA,CAAA,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awesome-ecs/abstract",
3
- "version": "0.32.0",
3
+ "version": "0.32.1",
4
4
  "description": "A comprehensive Entity-Component-System (ECS) Architecture implementation. Abstract components.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -97,5 +97,5 @@
97
97
  "url": "https://github.com/privatebytes/awesome-ecs/issues"
98
98
  },
99
99
  "homepage": "https://github.com/privatebytes/awesome-ecs#readme",
100
- "gitHead": "0a5ee91c2d3cc1854cf92ec953c31a55c88b8353"
100
+ "gitHead": "79f0b8fa9500ab4ed4deaecb2d35b8a74f8ff4f7"
101
101
  }