@awesome-ecs/abstract 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -124
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.cts +2 -2
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs.map +1 -1
- package/dist/entities/index.cjs +4 -0
- package/dist/entities/index.cjs.map +1 -1
- package/dist/entities/index.d.cts +3 -3
- package/dist/entities/index.d.mts +3 -3
- package/dist/entities/index.mjs +4 -1
- package/dist/entities/index.mjs.map +1 -1
- package/dist/factories/index.cjs.map +1 -1
- package/dist/factories/index.d.cts +1 -1
- package/dist/factories/index.d.mts +1 -1
- package/dist/factories/index.mjs.map +1 -1
- package/dist/{index-DXbpfhHa.d.mts → index-B3DqdxE6.d.mts} +2 -2
- package/dist/{index--9JJtMKF.d.mts → index-BanhgPCc.d.mts} +34 -22
- package/dist/{index-CPGVaS-_.d.cts → index-BivyWazf.d.cts} +183 -172
- package/dist/{index-0hg5PXZe.d.cts → index-CSaKdQe-.d.cts} +34 -22
- package/dist/{index-BOS-47DQ.d.mts → index-DGyDijY7.d.mts} +183 -172
- package/dist/{index-HeCQLTSE.d.cts → index-DMZSrHoB.d.cts} +134 -101
- package/dist/{index-Tznk33g6.d.mts → index-Dbwzlrgp.d.mts} +134 -101
- package/dist/{index-Bl7Cf9gi.d.cts → index-aVjnG975.d.cts} +2 -2
- package/dist/pipelines/index.d.cts +1 -1
- package/dist/pipelines/index.d.mts +1 -1
- package/dist/systems/index.cjs.map +1 -1
- package/dist/systems/index.d.cts +11 -5
- package/dist/systems/index.d.mts +11 -5
- package/dist/systems/index.mjs.map +1 -1
- package/dist/{types-COxeVghs.d.cts → types-BaCGIrym.d.cts} +1 -1
- package/dist/{types-UnqKSA14.d.mts → types-BaCGIrym.d.mts} +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +2 -2
- package/dist/utils/index.d.mts +2 -2
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as Immutable } from "./types-
|
|
3
|
-
import { b as IEntityConfigSnapshot,
|
|
4
|
-
import { c as IMiddleware, l as IPipelineContext, o as IPipeline, u as PipelineDispatch } from "./index-
|
|
1
|
+
import { T as ConfigRecord, a as IEntityProxy, b as ComponentTypeUid, f as IEntity, h as IEntitySpec, i as EntityProxyManyLookup, n as EntityProxy, p as IEntityModel, r as EntityProxyLookup, u as EntityTypeUid } from "./index-Dbwzlrgp.mjs";
|
|
2
|
+
import { r as Immutable } from "./types-BaCGIrym.mjs";
|
|
3
|
+
import { b as IEntityConfigSnapshot, c as IEntityUpdate, g as IEntityEvent, h as EntityEventUid, m as EntityEventSubscriptionOptions, u as IEntitySnapshot, y as IEventData } from "./index-BanhgPCc.mjs";
|
|
4
|
+
import { c as IMiddleware, l as IPipelineContext, o as IPipeline, u as PipelineDispatch } from "./index-B3DqdxE6.mjs";
|
|
5
5
|
|
|
6
|
+
//#region src/utils/dispatch-sequential.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* Executes a function for each item in an iterable, sequentially.
|
|
9
|
+
*
|
|
10
|
+
* Uses a sync fast-path: iterates synchronously until the first Promise is
|
|
11
|
+
* encountered, then switches to async for the remainder. If no item produces
|
|
12
|
+
* a Promise, the entire call stays synchronous with zero async overhead.
|
|
13
|
+
*
|
|
14
|
+
* @param items - The iterable to iterate over.
|
|
15
|
+
* @param fn - The function to call for each item. May return void or a Promise.
|
|
16
|
+
* @returns void if all calls were synchronous, or a Promise if any were async.
|
|
17
|
+
*/
|
|
18
|
+
declare function dispatchSequential<T>(items: Iterable<T>, fn: (item: T) => void | Promise<void>): void | Promise<void>;
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/utils/json-serializer.d.ts
|
|
21
|
+
/**
|
|
22
|
+
* Custom JSON serialization and deserialization interface.
|
|
23
|
+
* Allows different serialization strategies for handling complex types.
|
|
24
|
+
* Used for entity snapshots, events, and any data needing JSON conversion.
|
|
25
|
+
*/
|
|
26
|
+
interface IJsonSerializer {
|
|
27
|
+
/**
|
|
28
|
+
* Converts an object to a serializable JSON representation.
|
|
29
|
+
* Handles types that don't serialize naturally (dates, maps, custom objects, etc.).
|
|
30
|
+
* @param value - The object to serialize.
|
|
31
|
+
* @returns A JSON-serializable representation.
|
|
32
|
+
*/
|
|
33
|
+
serializeCustom(value: object): string;
|
|
34
|
+
/**
|
|
35
|
+
* Converts a JSON string back to its original object type.
|
|
36
|
+
* Reconstructs complex types from their serialized form.
|
|
37
|
+
* @template TObject - The target object type.
|
|
38
|
+
* @param text - The JSON string to deserialize.
|
|
39
|
+
* @returns The deserialized object of the specified type.
|
|
40
|
+
*/
|
|
41
|
+
parseCustom<TObject>(text: string): TObject;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
6
44
|
//#region src/utils/logger.d.ts
|
|
7
45
|
/**
|
|
8
46
|
* Logger interface for debug and diagnostic output.
|
|
@@ -78,6 +116,103 @@ interface ILoggerOptions {
|
|
|
78
116
|
enabled: Map<LogLevel, boolean>;
|
|
79
117
|
}
|
|
80
118
|
//#endregion
|
|
119
|
+
//#region src/utils/performance.d.ts
|
|
120
|
+
type TickMetricEntry = {
|
|
121
|
+
name: string;
|
|
122
|
+
category: string;
|
|
123
|
+
totalMs: number;
|
|
124
|
+
count: number;
|
|
125
|
+
};
|
|
126
|
+
type TickSnapshot = {
|
|
127
|
+
tickIndex: number;
|
|
128
|
+
tickDurationMs: number;
|
|
129
|
+
fps: number;
|
|
130
|
+
queueSize: number;
|
|
131
|
+
timestamp: number;
|
|
132
|
+
metrics: TickMetricEntry[];
|
|
133
|
+
render?: RenderSnapshot;
|
|
134
|
+
};
|
|
135
|
+
type RenderSnapshot = {
|
|
136
|
+
frameTimeMs: number;
|
|
137
|
+
renderTimeMs: number;
|
|
138
|
+
gpuFrameTimeMs: number;
|
|
139
|
+
drawCalls: number;
|
|
140
|
+
activeMeshesEvalMs: number;
|
|
141
|
+
cameraRenderMs: number;
|
|
142
|
+
totalVertices: number;
|
|
143
|
+
activeIndices: number;
|
|
144
|
+
};
|
|
145
|
+
type MiddlewareMetricsSummary = {
|
|
146
|
+
name: string;
|
|
147
|
+
category: PipelineCategoryName;
|
|
148
|
+
count: number;
|
|
149
|
+
totalMs: number;
|
|
150
|
+
avgMs: number;
|
|
151
|
+
minMs: number;
|
|
152
|
+
maxMs: number;
|
|
153
|
+
lastMs: number;
|
|
154
|
+
};
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/utils/performance-timer.d.ts
|
|
157
|
+
/**
|
|
158
|
+
* Unique identifier for a timer instance.
|
|
159
|
+
*/
|
|
160
|
+
type PerformanceTimerUid = number;
|
|
161
|
+
/**
|
|
162
|
+
* Options for identifying and categorizing performance metrics.
|
|
163
|
+
* Used by pipeline factories and performance decorators.
|
|
164
|
+
*/
|
|
165
|
+
type PerformanceMetricOptions = {
|
|
166
|
+
name?: string;
|
|
167
|
+
category?: string;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Record of a completed timer measurement.
|
|
171
|
+
* Captures timing information for performance analysis and profiling.
|
|
172
|
+
*/
|
|
173
|
+
interface PerformanceTimeEntry {
|
|
174
|
+
/**
|
|
175
|
+
* The name identifying this timer.
|
|
176
|
+
*/
|
|
177
|
+
name: string;
|
|
178
|
+
/**
|
|
179
|
+
* The category of this metric (e.g. 'module', 'runtime', 'system').
|
|
180
|
+
*/
|
|
181
|
+
category?: string;
|
|
182
|
+
/**
|
|
183
|
+
* Timestamp in milliseconds when the timer started.
|
|
184
|
+
*/
|
|
185
|
+
startedAt: number;
|
|
186
|
+
/**
|
|
187
|
+
* Timestamp in milliseconds when the timer ended.
|
|
188
|
+
*/
|
|
189
|
+
endedAt?: number;
|
|
190
|
+
/**
|
|
191
|
+
* Duration in milliseconds that elapsed.
|
|
192
|
+
*/
|
|
193
|
+
msPassed?: number;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Interface for measuring operation duration.
|
|
197
|
+
* Provides start/stop functionality for performance profiling.
|
|
198
|
+
* Used throughout the system to collect timing metrics.
|
|
199
|
+
*/
|
|
200
|
+
interface IPerformanceTimer {
|
|
201
|
+
/**
|
|
202
|
+
* Starts a new timer.
|
|
203
|
+
* @param name - Label for this timer (used in results).
|
|
204
|
+
* @param category - Optional category for grouping metrics.
|
|
205
|
+
* @returns A unique identifier for this timer instance.
|
|
206
|
+
*/
|
|
207
|
+
startTimer(name: string, category?: string): PerformanceTimerUid;
|
|
208
|
+
/**
|
|
209
|
+
* Stops a timer and returns the recorded metrics.
|
|
210
|
+
* @param timerUid - The timer identifier returned by startTimer.
|
|
211
|
+
* @returns Complete timing entry with start, end, and duration.
|
|
212
|
+
*/
|
|
213
|
+
endTimer(timerUid: PerformanceTimerUid): PerformanceTimeEntry;
|
|
214
|
+
}
|
|
215
|
+
//#endregion
|
|
81
216
|
//#region src/systems/pipeline/system-context-config.d.ts
|
|
82
217
|
/**
|
|
83
218
|
* Config-specific API for the current system execution.
|
|
@@ -286,30 +421,18 @@ interface ISystemContextProxies {
|
|
|
286
421
|
* @param proxy - The entity reference to remove.
|
|
287
422
|
*/
|
|
288
423
|
remove(proxy: IEntityProxy): void;
|
|
289
|
-
/**
|
|
290
|
-
* Removes all entity references from the current entity.
|
|
291
|
-
* Optionally filter by target entity type.
|
|
292
|
-
* @param targetType - If provided, only removes references to entities of this type.
|
|
293
|
-
*/
|
|
294
|
-
removeAll(targetType?: EntityTypeUid): void;
|
|
295
424
|
/**
|
|
296
425
|
* Retrieves a single reference of a specific entity type from the current entity.
|
|
297
426
|
* @param targetType - The entity type to find.
|
|
298
427
|
* @returns The first matching proxy, or null if not found.
|
|
299
428
|
*/
|
|
300
|
-
|
|
429
|
+
getProxy<TEntity extends IEntity = IEntity>(targetType: EntityProxyLookup<TEntity>): EntityProxy<TEntity> | null;
|
|
301
430
|
/**
|
|
302
431
|
* Retrieves all references to entities of a specific type from the current entity.
|
|
303
432
|
* @param targetType - The entity type to find.
|
|
304
433
|
* @returns Array of matching proxies.
|
|
305
434
|
*/
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Retrieves all entity references from the current entity.
|
|
309
|
-
* Organized by target entity type.
|
|
310
|
-
* @returns Map of entity type to their proxies.
|
|
311
|
-
*/
|
|
312
|
-
getAll(): ReadonlyMap<EntityTypeUid, Readonly<IEntityProxy[]>>;
|
|
435
|
+
getProxies<TEntity extends IEntity = IEntity>(targetType: EntityProxyManyLookup<TEntity>): Readonly<EntityProxy<TEntity>[]>;
|
|
313
436
|
}
|
|
314
437
|
//#endregion
|
|
315
438
|
//#region src/systems/pipeline/system-context-repository.d.ts
|
|
@@ -333,7 +456,28 @@ interface ISystemContextRepository {
|
|
|
333
456
|
* @param proxy - Reference to the entity.
|
|
334
457
|
* @returns The immutable entity instance.
|
|
335
458
|
*/
|
|
336
|
-
getEntity<TEntity extends IEntity>(proxy: EntityProxy<TEntity> |
|
|
459
|
+
getEntity<TEntity extends IEntity>(proxy: EntityProxy<TEntity> | null | undefined): TEntity | undefined;
|
|
460
|
+
/**
|
|
461
|
+
* Retrieves an entity from storage based on its type.
|
|
462
|
+
* @template TEntity - The expected entity type.
|
|
463
|
+
* @param targetType - Reference to the entity type.
|
|
464
|
+
* @returns The immutable entity instance.
|
|
465
|
+
*/
|
|
466
|
+
getEntity<TEntity extends IEntity>(targetType: EntityProxyLookup<TEntity> | null | undefined): TEntity | undefined;
|
|
467
|
+
/**
|
|
468
|
+
* Retrieves an entity from storage based on its type or proxy.
|
|
469
|
+
* @template TEntity - The expected entity type.
|
|
470
|
+
* @param proxyOrTargetType - Reference to the entity proxy or type.
|
|
471
|
+
* @returns The immutable entity instance.
|
|
472
|
+
*/
|
|
473
|
+
getEntity<TEntity extends IEntity>(proxy: EntityProxy<TEntity> | EntityProxyLookup<TEntity> | null | undefined): TEntity | undefined;
|
|
474
|
+
/**
|
|
475
|
+
* Retrieves all entities from the current entity's proxy relationships.
|
|
476
|
+
* @template TEntity - The expected entity type.
|
|
477
|
+
* @param targetType - Reference to the entity type.
|
|
478
|
+
* @returns The immutable entity instances.
|
|
479
|
+
*/
|
|
480
|
+
getEntities<TEntity extends IEntity>(targetType: EntityProxyManyLookup<TEntity> | null | undefined): Readonly<TEntity[]>;
|
|
337
481
|
/**
|
|
338
482
|
* Enqueues an entity for update.
|
|
339
483
|
* Triggers the update pipeline for the entity.
|
|
@@ -377,30 +521,6 @@ interface ISystemContextScheduler {
|
|
|
377
521
|
hasSchedule(target?: IEntityProxy): boolean;
|
|
378
522
|
}
|
|
379
523
|
//#endregion
|
|
380
|
-
//#region src/utils/json-serializer.d.ts
|
|
381
|
-
/**
|
|
382
|
-
* Custom JSON serialization and deserialization interface.
|
|
383
|
-
* Allows different serialization strategies for handling complex types.
|
|
384
|
-
* Used for entity snapshots, events, and any data needing JSON conversion.
|
|
385
|
-
*/
|
|
386
|
-
interface IJsonSerializer {
|
|
387
|
-
/**
|
|
388
|
-
* Converts an object to a serializable JSON representation.
|
|
389
|
-
* Handles types that don't serialize naturally (dates, maps, custom objects, etc.).
|
|
390
|
-
* @param value - The object to serialize.
|
|
391
|
-
* @returns A JSON-serializable representation.
|
|
392
|
-
*/
|
|
393
|
-
serializeCustom(value: object): string;
|
|
394
|
-
/**
|
|
395
|
-
* Converts a JSON string back to its original object type.
|
|
396
|
-
* Reconstructs complex types from their serialized form.
|
|
397
|
-
* @template TObject - The target object type.
|
|
398
|
-
* @param text - The JSON string to deserialize.
|
|
399
|
-
* @returns The deserialized object of the specified type.
|
|
400
|
-
*/
|
|
401
|
-
parseCustom<TObject>(text: string): TObject;
|
|
402
|
-
}
|
|
403
|
-
//#endregion
|
|
404
524
|
//#region src/systems/pipeline/system-context-snapshot.d.ts
|
|
405
525
|
/**
|
|
406
526
|
* System context API for entity serialization and state transfer.
|
|
@@ -452,7 +572,7 @@ interface ISystemContext<TEntity extends IEntity> extends IPipelineContext {
|
|
|
452
572
|
/**
|
|
453
573
|
* The entity currently being processed by this middleware.
|
|
454
574
|
*/
|
|
455
|
-
readonly entity: TEntity
|
|
575
|
+
readonly entity: Immutable<TEntity>;
|
|
456
576
|
/**
|
|
457
577
|
* Config metadata and config-update API for the current update.
|
|
458
578
|
*/
|
|
@@ -513,9 +633,7 @@ interface IMutableSystemContext<TEntity extends IEntity> extends ISystemContext<
|
|
|
513
633
|
//#endregion
|
|
514
634
|
//#region src/factories/context-factory.d.ts
|
|
515
635
|
interface IContextFactory {
|
|
516
|
-
|
|
517
|
-
getContext<TEntity extends IEntity>(entityUid: EntityUid): IMutableSystemContext<TEntity> | undefined;
|
|
518
|
-
disposeEntity(entityUid: EntityUid): void;
|
|
636
|
+
createContext<TEntity extends IEntity>(entity: Immutable<TEntity>, registry?: MiddlewareRegistryReadonly): IMutableSystemContext<TEntity>;
|
|
519
637
|
}
|
|
520
638
|
//#endregion
|
|
521
639
|
//#region src/factories/pipeline-factory.d.ts
|
|
@@ -559,117 +677,6 @@ interface IPipelineFactory {
|
|
|
559
677
|
createPipeline<TContext extends IPipelineContext>(options?: PipelineOptions): IPipeline<TContext>;
|
|
560
678
|
}
|
|
561
679
|
//#endregion
|
|
562
|
-
//#region src/utils/dispatch-sequential.d.ts
|
|
563
|
-
/**
|
|
564
|
-
* Executes a function for each item in an iterable, sequentially.
|
|
565
|
-
*
|
|
566
|
-
* Uses a sync fast-path: iterates synchronously until the first Promise is
|
|
567
|
-
* encountered, then switches to async for the remainder. If no item produces
|
|
568
|
-
* a Promise, the entire call stays synchronous with zero async overhead.
|
|
569
|
-
*
|
|
570
|
-
* @param items - The iterable to iterate over.
|
|
571
|
-
* @param fn - The function to call for each item. May return void or a Promise.
|
|
572
|
-
* @returns void if all calls were synchronous, or a Promise if any were async.
|
|
573
|
-
*/
|
|
574
|
-
declare function dispatchSequential<T>(items: Iterable<T>, fn: (item: T) => void | Promise<void>): void | Promise<void>;
|
|
575
|
-
//#endregion
|
|
576
|
-
//#region src/utils/performance.d.ts
|
|
577
|
-
type TickMetricEntry = {
|
|
578
|
-
name: string;
|
|
579
|
-
category: string;
|
|
580
|
-
totalMs: number;
|
|
581
|
-
count: number;
|
|
582
|
-
};
|
|
583
|
-
type TickSnapshot = {
|
|
584
|
-
tickIndex: number;
|
|
585
|
-
tickDurationMs: number;
|
|
586
|
-
fps: number;
|
|
587
|
-
queueSize: number;
|
|
588
|
-
timestamp: number;
|
|
589
|
-
metrics: TickMetricEntry[];
|
|
590
|
-
render?: RenderSnapshot;
|
|
591
|
-
};
|
|
592
|
-
type RenderSnapshot = {
|
|
593
|
-
frameTimeMs: number;
|
|
594
|
-
renderTimeMs: number;
|
|
595
|
-
gpuFrameTimeMs: number;
|
|
596
|
-
drawCalls: number;
|
|
597
|
-
activeMeshesEvalMs: number;
|
|
598
|
-
cameraRenderMs: number;
|
|
599
|
-
totalVertices: number;
|
|
600
|
-
activeIndices: number;
|
|
601
|
-
};
|
|
602
|
-
type MiddlewareMetricsSummary = {
|
|
603
|
-
name: string;
|
|
604
|
-
category: PipelineCategoryName;
|
|
605
|
-
count: number;
|
|
606
|
-
totalMs: number;
|
|
607
|
-
avgMs: number;
|
|
608
|
-
minMs: number;
|
|
609
|
-
maxMs: number;
|
|
610
|
-
lastMs: number;
|
|
611
|
-
};
|
|
612
|
-
//#endregion
|
|
613
|
-
//#region src/utils/performance-timer.d.ts
|
|
614
|
-
/**
|
|
615
|
-
* Unique identifier for a timer instance.
|
|
616
|
-
*/
|
|
617
|
-
type PerformanceTimerUid = number;
|
|
618
|
-
/**
|
|
619
|
-
* Options for identifying and categorizing performance metrics.
|
|
620
|
-
* Used by pipeline factories and performance decorators.
|
|
621
|
-
*/
|
|
622
|
-
type PerformanceMetricOptions = {
|
|
623
|
-
name?: string;
|
|
624
|
-
category?: string;
|
|
625
|
-
};
|
|
626
|
-
/**
|
|
627
|
-
* Record of a completed timer measurement.
|
|
628
|
-
* Captures timing information for performance analysis and profiling.
|
|
629
|
-
*/
|
|
630
|
-
interface PerformanceTimeEntry {
|
|
631
|
-
/**
|
|
632
|
-
* The name identifying this timer.
|
|
633
|
-
*/
|
|
634
|
-
name: string;
|
|
635
|
-
/**
|
|
636
|
-
* The category of this metric (e.g. 'module', 'runtime', 'system').
|
|
637
|
-
*/
|
|
638
|
-
category?: string;
|
|
639
|
-
/**
|
|
640
|
-
* Timestamp in milliseconds when the timer started.
|
|
641
|
-
*/
|
|
642
|
-
startedAt: number;
|
|
643
|
-
/**
|
|
644
|
-
* Timestamp in milliseconds when the timer ended.
|
|
645
|
-
*/
|
|
646
|
-
endedAt?: number;
|
|
647
|
-
/**
|
|
648
|
-
* Duration in milliseconds that elapsed.
|
|
649
|
-
*/
|
|
650
|
-
msPassed?: number;
|
|
651
|
-
}
|
|
652
|
-
/**
|
|
653
|
-
* Interface for measuring operation duration.
|
|
654
|
-
* Provides start/stop functionality for performance profiling.
|
|
655
|
-
* Used throughout the system to collect timing metrics.
|
|
656
|
-
*/
|
|
657
|
-
interface IPerformanceTimer {
|
|
658
|
-
/**
|
|
659
|
-
* Starts a new timer.
|
|
660
|
-
* @param name - Label for this timer (used in results).
|
|
661
|
-
* @param category - Optional category for grouping metrics.
|
|
662
|
-
* @returns A unique identifier for this timer instance.
|
|
663
|
-
*/
|
|
664
|
-
startTimer(name: string, category?: string): PerformanceTimerUid;
|
|
665
|
-
/**
|
|
666
|
-
* Stops a timer and returns the recorded metrics.
|
|
667
|
-
* @param timerUid - The timer identifier returned by startTimer.
|
|
668
|
-
* @returns Complete timing entry with start, end, and duration.
|
|
669
|
-
*/
|
|
670
|
-
endTimer(timerUid: PerformanceTimerUid): PerformanceTimeEntry;
|
|
671
|
-
}
|
|
672
|
-
//#endregion
|
|
673
680
|
//#region src/systems/system-type.d.ts
|
|
674
681
|
/**
|
|
675
682
|
* The five phases of entity system execution in each frame.
|
|
@@ -721,13 +728,6 @@ interface ISystemsModule<TEntity extends IEntity> {
|
|
|
721
728
|
* The builder instance used to construct this module.
|
|
722
729
|
*/
|
|
723
730
|
readonly builder: ISystemsModuleBuilderReadonly<TEntity>;
|
|
724
|
-
/**
|
|
725
|
-
* Optional factory function to initialize new entity instances.
|
|
726
|
-
* If provided, is called when a new entity of this type is created.
|
|
727
|
-
* @param model - The initialization model.
|
|
728
|
-
* @returns The initialized entity.
|
|
729
|
-
*/
|
|
730
|
-
readonly initEntity?: (model: IEntityModel) => TEntity;
|
|
731
731
|
}
|
|
732
732
|
//#endregion
|
|
733
733
|
//#region src/systems/module/systems-module-builder.d.ts
|
|
@@ -753,9 +753,10 @@ interface ISystemsModuleBuilderReadonly<TEntity extends IEntity> {
|
|
|
753
753
|
*/
|
|
754
754
|
readonly scopeRoot: boolean;
|
|
755
755
|
/**
|
|
756
|
-
* Whether this entity type is a scoped proxy. When initialized, the entity registers itself in the inherited scope, making it resolvable via `context.proxies.
|
|
756
|
+
* Whether this entity type is a scoped proxy. When initialized, the entity registers itself in the inherited scope, making it resolvable via `context.proxies.getProxy()` by any entity in the same scope.
|
|
757
757
|
*/
|
|
758
758
|
readonly scopedProxy: boolean;
|
|
759
|
+
readonly entitySpec?: IEntitySpec<TEntity>;
|
|
759
760
|
}
|
|
760
761
|
/**
|
|
761
762
|
* Builder pattern interface for constructing system modules.
|
|
@@ -781,13 +782,23 @@ interface ISystemsModuleBuilder<TEntity extends IEntity> extends ISystemsModuleB
|
|
|
781
782
|
addEventSystems(uid: EntityEventUid, systems: Immutable<ISystemEventMiddleware<TEntity>[]>): this;
|
|
782
783
|
/**
|
|
783
784
|
* Integrates an entire module's pipelines into this builder.
|
|
784
|
-
*
|
|
785
|
-
*
|
|
785
|
+
*
|
|
786
|
+
* Composition is gated by structural assignability: the host's `TEntity` must extend
|
|
787
|
+
* the inner module's `TInner`. In other words, the host entity contract must contain
|
|
788
|
+
* every field the inner module reads from `context.entity`.
|
|
789
|
+
*
|
|
790
|
+
* @template TInner - The inner module's entity type; must be assignable from `TEntity`.
|
|
786
791
|
* @param module - The module to integrate.
|
|
787
792
|
* @param systemType - Optional specific pipeline to integrate from module. If omitted, integrates all.
|
|
788
793
|
* @returns This builder for method chaining.
|
|
789
794
|
*/
|
|
790
|
-
addModule<
|
|
795
|
+
addModule<TInner extends IEntity>(module: TEntity extends TInner ? ISystemsModule<TInner> : never, systemType?: SystemType): this;
|
|
796
|
+
/**
|
|
797
|
+
* Declares this module's entity creation spec. `type` carries the entity type UID;
|
|
798
|
+
* `init` constructs and returns the entity at first creation. The dispatcher validates
|
|
799
|
+
* at runtime that the returned entity's `identity.entityType` matches `type`.
|
|
800
|
+
*/
|
|
801
|
+
setEntity(spec: IEntitySpec<TEntity>): this;
|
|
791
802
|
/**
|
|
792
803
|
* Marks this entity type as a scope root.
|
|
793
804
|
* When initialized, a new scope is auto-generated and all child entities inherit it.
|
|
@@ -797,7 +808,7 @@ interface ISystemsModuleBuilder<TEntity extends IEntity> extends ISystemsModuleB
|
|
|
797
808
|
/**
|
|
798
809
|
* Marks this entity type as a scoped proxy.
|
|
799
810
|
* When initialized, the entity registers itself in the inherited scope,
|
|
800
|
-
* making it resolvable via `context.proxies.
|
|
811
|
+
* making it resolvable via `context.proxies.getProxy()` by any entity in the same scope.
|
|
801
812
|
* @returns This builder for method chaining.
|
|
802
813
|
*/
|
|
803
814
|
setScopedProxy(): this;
|
|
@@ -819,5 +830,5 @@ interface ISystemsFactory {
|
|
|
819
830
|
createSystemsModuleBuilder<TEntity extends IEntity>(name: string): ISystemsModuleBuilder<TEntity>;
|
|
820
831
|
}
|
|
821
832
|
//#endregion
|
|
822
|
-
export {
|
|
823
|
-
//# sourceMappingURL=index-
|
|
833
|
+
export { ISystemContextConfigReadonly as A, ILoggerOptions as B, ISystemEventMiddleware as C, SystemMiddlewareName as D, MiddlewareRegistryReadonly as E, MiddlewareMetricsSummary as F, IJsonSerializer as H, RenderSnapshot as I, TickMetricEntry as L, PerformanceMetricOptions as M, PerformanceTimeEntry as N, SystemModuleName as O, PerformanceTimerUid as P, TickSnapshot as R, SystemContextControlTarget as S, MiddlewareRegistry as T, dispatchSequential as U, LogLevel as V, IMutableSystemContextEvents as _, SystemType as a, ISystemContextControlState as b, PipelineCategoryName as c, IMutableSystemContext as d, ISystemContext as f, ISystemContextProxies as g, ISystemContextRepository as h, ISystemsModule as i, IPerformanceTimer as j, ISystemContextConfig as k, PipelineOptions as l, ISystemContextScheduler as m, ISystemsModuleBuilder as n, IPipelineFactory as o, ISystemContextSnapshot as p, ISystemsModuleBuilderReadonly as r, PipelineCategory as s, ISystemsFactory as t, IContextFactory as u, ISystemContextEvents as v, ISystemMiddleware as w, SystemContextControlState as x, ISystemContextControl as y, ILogger as z };
|
|
834
|
+
//# sourceMappingURL=index-DGyDijY7.d.mts.map
|