@vworlds/vecs 1.0.20 → 1.0.22
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 +84 -99
- package/dist/component.d.ts +5 -2
- package/dist/component.js +4 -57
- package/dist/component.js.map +1 -1
- package/dist/component_meta.d.ts +15 -8
- package/dist/component_meta.js +6 -4
- package/dist/component_meta.js.map +1 -1
- package/dist/dsl.d.ts +56 -11
- package/dist/dsl.js +55 -38
- package/dist/dsl.js.map +1 -1
- package/dist/entity/entity.base.d.ts +4 -3
- package/dist/entity/entity.base.js +4 -4
- package/dist/entity/entity.base.js.map +1 -1
- package/dist/entity/entity.components.d.ts +16 -7
- package/dist/entity/entity.components.js +48 -23
- package/dist/entity/entity.components.js.map +1 -1
- package/dist/entity/entity.d.ts +5 -1
- package/dist/entity/entity.js +5 -0
- package/dist/entity/entity.js.map +1 -1
- package/dist/entity/entity.lifecycle.js +25 -25
- package/dist/entity/entity.lifecycle.js.map +1 -1
- package/dist/entity/entity.queries.js +0 -6
- package/dist/entity/entity.queries.js.map +1 -1
- package/dist/entity/entity.relationships.d.ts +1 -1
- package/dist/entity/entity.relationships.js +7 -5
- package/dist/entity/entity.relationships.js.map +1 -1
- package/dist/entity/index.d.ts +1 -1
- package/dist/entity/index.js.map +1 -1
- package/dist/filter.d.ts +6 -6
- package/dist/filter.js +2 -1
- package/dist/filter.js.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/inject.d.ts +18 -17
- package/dist/inject.js +34 -34
- package/dist/inject.js.map +1 -1
- package/dist/module.d.ts +4 -4
- package/dist/module.js +0 -3
- package/dist/module.js.map +1 -1
- package/dist/modules/pipeline.d.ts +20 -0
- package/dist/modules/pipeline.js +57 -0
- package/dist/modules/pipeline.js.map +1 -0
- package/dist/modules/relationship_types.d.ts +37 -0
- package/dist/modules/relationship_types.js +39 -0
- package/dist/modules/relationship_types.js.map +1 -0
- package/dist/modules/relationships.d.ts +24 -0
- package/dist/modules/relationships.js +82 -0
- package/dist/modules/relationships.js.map +1 -0
- package/dist/modules/singleton.js +1 -2
- package/dist/modules/singleton.js.map +1 -1
- package/dist/package.json +2 -2
- package/dist/query/callbacks.d.ts +17 -0
- package/dist/query/callbacks.js +113 -0
- package/dist/query/callbacks.js.map +1 -0
- package/dist/query/constants.d.ts +1 -0
- package/dist/query/constants.js +2 -0
- package/dist/query/constants.js.map +1 -0
- package/dist/query/{query.03.tracking.d.ts → group.d.ts} +11 -9
- package/dist/query/group.js +31 -0
- package/dist/query/group.js.map +1 -0
- package/dist/query/grouped_query.d.ts +26 -0
- package/dist/query/grouped_query.js +121 -0
- package/dist/query/grouped_query.js.map +1 -0
- package/dist/query/grouped_query_registry.d.ts +4 -0
- package/dist/query/grouped_query_registry.js +11 -0
- package/dist/query/grouped_query_registry.js.map +1 -0
- package/dist/query/grouping.d.ts +24 -0
- package/dist/query/{query.07.groups.js → grouping.js} +29 -60
- package/dist/query/grouping.js.map +1 -0
- package/dist/query/index.d.ts +6 -6
- package/dist/query/index.js +6 -4
- package/dist/query/index.js.map +1 -1
- package/dist/query/query.d.ts +58 -28
- package/dist/query/query.js +334 -88
- package/dist/query/query.js.map +1 -1
- package/dist/system.d.ts +24 -54
- package/dist/system.js +47 -81
- package/dist/system.js.map +1 -1
- package/dist/terms/all_term.d.ts +2 -6
- package/dist/terms/all_term.js +2 -7
- package/dist/terms/all_term.js.map +1 -1
- package/dist/terms/any_term.d.ts +2 -6
- package/dist/terms/any_term.js +2 -7
- package/dist/terms/any_term.js.map +1 -1
- package/dist/terms/build.d.ts +9 -6
- package/dist/terms/build.js +17 -14
- package/dist/terms/build.js.map +1 -1
- package/dist/terms/component_term.d.ts +3 -3
- package/dist/terms/component_term.js.map +1 -1
- package/dist/terms/composite_build.d.ts +32 -0
- package/dist/terms/composite_build.js +28 -0
- package/dist/terms/composite_build.js.map +1 -0
- package/dist/terms/only_term.d.ts +3 -3
- package/dist/terms/only_term.js.map +1 -1
- package/dist/terms/predicate_term.d.ts +3 -3
- package/dist/terms/predicate_term.js +3 -3
- package/dist/terms/predicate_term.js.map +1 -1
- package/dist/terms/target_term.d.ts +3 -2
- package/dist/terms/target_term.js +11 -17
- package/dist/terms/target_term.js.map +1 -1
- package/dist/util/dense_set.js +1 -1
- package/dist/util/id_pool.d.ts +2 -0
- package/dist/util/id_pool.js +10 -0
- package/dist/util/id_pool.js.map +1 -1
- package/dist/util/ordered_set.js +15 -10
- package/dist/util/ordered_set.js.map +1 -1
- package/dist/world/world.components.d.ts +5 -9
- package/dist/world/world.components.js +16 -28
- package/dist/world/world.components.js.map +1 -1
- package/dist/world/world.d.ts +3 -6
- package/dist/world/world.entities.d.ts +2 -2
- package/dist/world/world.entities.js.map +1 -1
- package/dist/world/world.js +10 -10
- package/dist/world/world.js.map +1 -1
- package/dist/world/world.modules.d.ts +4 -7
- package/dist/world/world.modules.js +13 -10
- package/dist/world/world.modules.js.map +1 -1
- package/dist/world/world.pipeline.d.ts +5 -8
- package/dist/world/world.pipeline.js +24 -53
- package/dist/world/world.pipeline.js.map +1 -1
- package/dist/world/world.pools.d.ts +2 -1
- package/dist/world/world.pools.js.map +1 -1
- package/dist/world/world.queries.d.ts +3 -5
- package/dist/world/world.queries.js +11 -8
- package/dist/world/world.queries.js.map +1 -1
- package/package.json +2 -2
- package/dist/phase.d.ts +0 -29
- package/dist/phase.js +0 -24
- package/dist/phase.js.map +0 -1
- package/dist/query/query.00.base.d.ts +0 -23
- package/dist/query/query.00.base.js +0 -77
- package/dist/query/query.00.base.js.map +0 -1
- package/dist/query/query.01.reactive.d.ts +0 -7
- package/dist/query/query.01.reactive.js +0 -58
- package/dist/query/query.01.reactive.js.map +0 -1
- package/dist/query/query.02.lifecycle.d.ts +0 -6
- package/dist/query/query.02.lifecycle.js +0 -63
- package/dist/query/query.02.lifecycle.js.map +0 -1
- package/dist/query/query.03.tracking.js +0 -31
- package/dist/query/query.03.tracking.js.map +0 -1
- package/dist/query/query.04.callbacks.d.ts +0 -14
- package/dist/query/query.04.callbacks.js +0 -65
- package/dist/query/query.04.callbacks.js.map +0 -1
- package/dist/query/query.05.updates.d.ts +0 -14
- package/dist/query/query.05.updates.js +0 -81
- package/dist/query/query.05.updates.js.map +0 -1
- package/dist/query/query.06.predicate.d.ts +0 -13
- package/dist/query/query.06.predicate.js +0 -40
- package/dist/query/query.06.predicate.js.map +0 -1
- package/dist/query/query.07.groups.d.ts +0 -41
- package/dist/query/query.07.groups.js.map +0 -1
- package/dist/relationship.d.ts +0 -19
- package/dist/relationship.js +0 -18
- package/dist/relationship.js.map +0 -1
|
@@ -22,8 +22,8 @@ export class Components extends Relationships {
|
|
|
22
22
|
*
|
|
23
23
|
* Faster than {@link get} because no class to type id resolution is needed.
|
|
24
24
|
*/
|
|
25
|
-
_get(
|
|
26
|
-
return this._components.get(
|
|
25
|
+
_get(ceid) {
|
|
26
|
+
return this._components.get(ceid);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* @internal Apply a `Modified` command: fire `onSet` and route modified
|
|
@@ -89,55 +89,64 @@ export class Components extends Relationships {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
add(ref) {
|
|
92
|
-
const
|
|
92
|
+
const componentMeta = this.world.entity(ref).meta;
|
|
93
93
|
if (this.world.deferred) {
|
|
94
94
|
this.world._enqueue({
|
|
95
95
|
kind: 1 /* CommandKind.Set */,
|
|
96
96
|
entity: this,
|
|
97
|
-
meta,
|
|
97
|
+
meta: componentMeta,
|
|
98
98
|
props: undefined,
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
else {
|
|
102
|
-
this._set(
|
|
102
|
+
this._set(componentMeta, undefined);
|
|
103
103
|
}
|
|
104
104
|
return this;
|
|
105
105
|
}
|
|
106
106
|
attach(classOrComponent, component) {
|
|
107
107
|
const ComponentKey = component === undefined ? classOrComponent.constructor : classOrComponent;
|
|
108
108
|
const instance = component ?? classOrComponent;
|
|
109
|
-
const
|
|
109
|
+
const componentMeta = this.world.entity(ComponentKey).meta;
|
|
110
110
|
if (this.world.deferred) {
|
|
111
111
|
this.world._enqueue({
|
|
112
112
|
kind: 5 /* CommandKind.Attach */,
|
|
113
113
|
entity: this,
|
|
114
|
-
meta,
|
|
114
|
+
meta: componentMeta,
|
|
115
115
|
component: instance,
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
else {
|
|
119
|
-
this._attach(
|
|
119
|
+
this._attach(componentMeta, instance);
|
|
120
120
|
}
|
|
121
121
|
return this;
|
|
122
122
|
}
|
|
123
123
|
get(ref) {
|
|
124
|
-
const
|
|
125
|
-
return this._get(
|
|
124
|
+
const ceid = typeof ref === "number" ? ref : this.world.entity(ref).eid;
|
|
125
|
+
return this._get(ceid);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Return `true` when this entity has the referenced component attached.
|
|
129
|
+
*
|
|
130
|
+
* @param ref - Component class, numeric component type id, or entity component key.
|
|
131
|
+
*/
|
|
132
|
+
has(ref) {
|
|
133
|
+
const ceid = typeof ref === "number" ? ref : this.world.entity(ref).eid;
|
|
134
|
+
return this.componentBitmask.has(ceid);
|
|
126
135
|
}
|
|
127
136
|
getMut(ref, callback) {
|
|
128
137
|
if (callback === undefined && !this.world.deferred) {
|
|
129
138
|
throw new Error("Entity.getMut without a callback is only allowed in deferred mode");
|
|
130
139
|
}
|
|
131
|
-
const
|
|
132
|
-
if (
|
|
140
|
+
const componentMeta = this.world.entity(ref).meta;
|
|
141
|
+
if (componentMeta.isRelationship) {
|
|
133
142
|
throw new Error("Entity.getMut cannot mutate Relationship components; retarget with set");
|
|
134
143
|
}
|
|
135
|
-
const component = this._get(
|
|
144
|
+
const component = this._get(componentMeta.eid);
|
|
136
145
|
if (!component) {
|
|
137
146
|
return undefined;
|
|
138
147
|
}
|
|
139
148
|
callback?.(component);
|
|
140
|
-
this._markModified(
|
|
149
|
+
this._markModified(componentMeta);
|
|
141
150
|
return component;
|
|
142
151
|
}
|
|
143
152
|
/**
|
|
@@ -151,8 +160,8 @@ export class Components extends Relationships {
|
|
|
151
160
|
* @returns This entity, for chaining.
|
|
152
161
|
*/
|
|
153
162
|
modified(ref) {
|
|
154
|
-
const
|
|
155
|
-
return this._markModified(
|
|
163
|
+
const componentMeta = this.world.entity(ref).meta;
|
|
164
|
+
return this._markModified(componentMeta);
|
|
156
165
|
}
|
|
157
166
|
/** @internal Mark a component changed, coalescing duplicate pending notifications. */
|
|
158
167
|
_markModified(meta) {
|
|
@@ -169,26 +178,30 @@ export class Components extends Relationships {
|
|
|
169
178
|
return this;
|
|
170
179
|
}
|
|
171
180
|
remove(ref) {
|
|
172
|
-
const
|
|
181
|
+
const componentMeta = this.world.entity(ref).meta;
|
|
173
182
|
if (this.world.deferred) {
|
|
174
|
-
this.world._enqueue({
|
|
183
|
+
this.world._enqueue({
|
|
184
|
+
kind: 3 /* CommandKind.Remove */,
|
|
185
|
+
entity: this,
|
|
186
|
+
meta: componentMeta,
|
|
187
|
+
});
|
|
175
188
|
}
|
|
176
189
|
else {
|
|
177
|
-
this._remove(
|
|
190
|
+
this._remove(componentMeta);
|
|
178
191
|
}
|
|
179
192
|
}
|
|
180
193
|
set(ref, props) {
|
|
181
|
-
const
|
|
194
|
+
const componentMeta = this.world.entity(ref).meta;
|
|
182
195
|
if (this.world.deferred) {
|
|
183
196
|
this.world._enqueue({
|
|
184
197
|
kind: 1 /* CommandKind.Set */,
|
|
185
198
|
entity: this,
|
|
186
|
-
meta,
|
|
199
|
+
meta: componentMeta,
|
|
187
200
|
props,
|
|
188
201
|
});
|
|
189
202
|
}
|
|
190
203
|
else {
|
|
191
|
-
this._set(
|
|
204
|
+
this._set(componentMeta, props);
|
|
192
205
|
}
|
|
193
206
|
return this;
|
|
194
207
|
}
|
|
@@ -215,7 +228,7 @@ export class Components extends Relationships {
|
|
|
215
228
|
this._dirtyComponentBitmask.deleteBit(meta.bitPtr);
|
|
216
229
|
if (isUpdate) {
|
|
217
230
|
this.world._notifyComponentChanged(meta.eid, this);
|
|
218
|
-
this._queries.forEach((q) => q._notifyModified(this, meta, instance));
|
|
231
|
+
this._queries.forEach((q) => q._notifyModified(this, meta.eid, instance));
|
|
219
232
|
}
|
|
220
233
|
}
|
|
221
234
|
/** @internal Store a component instance and perform the shared add-side bookkeeping. */
|
|
@@ -240,5 +253,17 @@ export class Components extends Relationships {
|
|
|
240
253
|
this.world._notifyComponentAdded(meta.eid, this);
|
|
241
254
|
}
|
|
242
255
|
}
|
|
256
|
+
onAdd(handler) {
|
|
257
|
+
this.meta.onAdd(handler);
|
|
258
|
+
return this;
|
|
259
|
+
}
|
|
260
|
+
onRemove(handler) {
|
|
261
|
+
this.meta.onRemove(handler);
|
|
262
|
+
return this;
|
|
263
|
+
}
|
|
264
|
+
onSet(handler) {
|
|
265
|
+
this.meta.onSet(handler);
|
|
266
|
+
return this;
|
|
267
|
+
}
|
|
243
268
|
}
|
|
244
269
|
//# sourceMappingURL=entity.components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.components.js","sourceRoot":"","sources":["../../src/entity/entity.components.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,MAAM,OAAO,UAAW,SAAQ,aAAa;IAC3C;;;;OAIG;IACI,OAAO,CAAC,IAAmB,EAAE,SAA4B;QAC9D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc;YACnC,CAAC,CAAE,QAAqC,EAAE,MAAM;YAChD,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAG,SAA0B,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"entity.components.js","sourceRoot":"","sources":["../../src/entity/entity.components.ts"],"names":[],"mappings":"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"}
|
package/dist/entity/entity.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type ComponentType } from "../component_meta.js";
|
|
2
2
|
import { type World } from "../world/index.js";
|
|
3
3
|
import { IdentityEntity } from "./entity.identity.js";
|
|
4
|
-
|
|
4
|
+
/** Entity id assigned by a {@link World}. */
|
|
5
|
+
export type EID = number;
|
|
6
|
+
export type EntityClass<T extends Entity = Entity> = new (world: World, eid: EID, ownComponentClass?: ComponentType) => T;
|
|
5
7
|
/**
|
|
6
8
|
* A game object: a unique numeric id with an arbitrary set of
|
|
7
9
|
* {@link ComponentInstance | components} attached.
|
|
@@ -32,4 +34,6 @@ export type EntityClass<T extends Entity = Entity> = new (world: World, eid: num
|
|
|
32
34
|
* visible immediately.
|
|
33
35
|
*/
|
|
34
36
|
export declare class Entity extends IdentityEntity {
|
|
37
|
+
/** Attach this entity to `parent` through the built-in `ChildOf` relationship. */
|
|
38
|
+
childOf(parent: Entity): this;
|
|
35
39
|
}
|
package/dist/entity/entity.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ChildOf } from "../modules/relationship_types.js";
|
|
1
2
|
import { IdentityEntity } from "./entity.identity.js";
|
|
2
3
|
/**
|
|
3
4
|
* A game object: a unique numeric id with an arbitrary set of
|
|
@@ -29,5 +30,9 @@ import { IdentityEntity } from "./entity.identity.js";
|
|
|
29
30
|
* visible immediately.
|
|
30
31
|
*/
|
|
31
32
|
export class Entity extends IdentityEntity {
|
|
33
|
+
/** Attach this entity to `parent` through the built-in `ChildOf` relationship. */
|
|
34
|
+
childOf(parent) {
|
|
35
|
+
return this.set(ChildOf, { target: parent });
|
|
36
|
+
}
|
|
32
37
|
}
|
|
33
38
|
//# sourceMappingURL=entity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity/entity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity/entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAWtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,MAAO,SAAQ,cAAc;IACxC,kFAAkF;IAC3E,OAAO,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -10,15 +10,15 @@ export class Lifecycle extends Components {
|
|
|
10
10
|
if (this._destroyed) {
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
|
-
const
|
|
13
|
+
const entityMeta = this._meta;
|
|
14
14
|
// Mark destroyed up front so a carrier cleanup that re-enters this entity's
|
|
15
15
|
// `_destroy` (possible with exotic relationship topologies under Delete)
|
|
16
16
|
// hits the guard above instead of tearing down twice.
|
|
17
17
|
this._destroyed = true;
|
|
18
|
-
if (
|
|
19
|
-
const selfCarry = this._components.has(
|
|
20
|
-
if (
|
|
21
|
-
if (
|
|
18
|
+
if (entityMeta) {
|
|
19
|
+
const selfCarry = this._components.has(entityMeta.eid) ? 1 : 0;
|
|
20
|
+
if (entityMeta.usageCount > selfCarry) {
|
|
21
|
+
if (entityMeta.onDelete === CleanupPolicy.Throw) {
|
|
22
22
|
// The public `destroy()` already throws when an in-use component is
|
|
23
23
|
// destroyed; reaching here means usage grew between that check and
|
|
24
24
|
// this deferred apply. Abort instead of throwing so a mid-drain
|
|
@@ -27,20 +27,20 @@ export class Lifecycle extends Components {
|
|
|
27
27
|
this._destroyed = false;
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
this._applyOnDelete(
|
|
30
|
+
this._applyOnDelete(entityMeta, selfCarry);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
const entity = this;
|
|
34
34
|
this.world._notifyEntityDestroyed(entity);
|
|
35
|
-
this._components.forEach((c,
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
38
|
-
this._removeIncoming(c.target,
|
|
35
|
+
this._components.forEach((c, ceid) => {
|
|
36
|
+
const componentMeta = this.world.entity(ceid).meta;
|
|
37
|
+
if (componentMeta.isRelationship) {
|
|
38
|
+
this._removeIncoming(c.target, ceid);
|
|
39
39
|
}
|
|
40
|
-
this.componentBitmask.deleteBit(
|
|
41
|
-
this.world._notifyComponentRemoved(
|
|
42
|
-
|
|
43
|
-
const removeHandlers =
|
|
40
|
+
this.componentBitmask.deleteBit(componentMeta.bitPtr);
|
|
41
|
+
this.world._notifyComponentRemoved(ceid, entity);
|
|
42
|
+
componentMeta._decrementUsage();
|
|
43
|
+
const removeHandlers = componentMeta._onRemoveHandlers;
|
|
44
44
|
if (removeHandlers) {
|
|
45
45
|
removeHandlers.forEach((handler) => handler(entity, c));
|
|
46
46
|
}
|
|
@@ -51,8 +51,8 @@ export class Lifecycle extends Components {
|
|
|
51
51
|
this._events.emit("destroy");
|
|
52
52
|
this._events.removeAllListeners("destroy");
|
|
53
53
|
}
|
|
54
|
-
if (
|
|
55
|
-
this.world._classRegistry.delete(
|
|
54
|
+
if (entityMeta && entityMeta.usageCount === 0 && entityMeta.Class !== Object) {
|
|
55
|
+
this.world._classRegistry.delete(entityMeta.Class);
|
|
56
56
|
}
|
|
57
57
|
this.world._unregisterEntity(entity);
|
|
58
58
|
this._cleanupIncoming();
|
|
@@ -65,10 +65,10 @@ export class Lifecycle extends Components {
|
|
|
65
65
|
* After destruction the entity must not be used.
|
|
66
66
|
*/
|
|
67
67
|
destroy() {
|
|
68
|
-
const
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
const entityMeta = this._meta;
|
|
69
|
+
if (entityMeta &&
|
|
70
|
+
entityMeta.onDelete === CleanupPolicy.Throw &&
|
|
71
|
+
entityMeta.usageCount > (this._components.has(entityMeta.eid) ? 1 : 0)) {
|
|
72
72
|
throw new Error(`Cannot destroy entity ${this.eid}; component eid is still in use`);
|
|
73
73
|
}
|
|
74
74
|
if (this.world.deferred) {
|
|
@@ -87,23 +87,23 @@ export class Lifecycle extends Components {
|
|
|
87
87
|
// `onDelete = Throw`, its `_destroy` safe-aborts and it survives still holding
|
|
88
88
|
// this now-destroyed component eid. This is the same exotic policy-interaction
|
|
89
89
|
// class flagged in `_cleanupIncoming`; left for the relationship/query rework.
|
|
90
|
-
_applyOnDelete(
|
|
91
|
-
const ceid =
|
|
90
|
+
_applyOnDelete(entityMeta, selfCarry) {
|
|
91
|
+
const ceid = entityMeta.eid;
|
|
92
92
|
const carriers = [];
|
|
93
|
-
let remaining =
|
|
93
|
+
let remaining = entityMeta.usageCount - selfCarry;
|
|
94
94
|
this.world.entities.forEach((e) => {
|
|
95
95
|
if (remaining > 0 && e !== this && e._get(ceid) !== undefined) {
|
|
96
96
|
carriers.push(e);
|
|
97
97
|
remaining--;
|
|
98
98
|
}
|
|
99
99
|
});
|
|
100
|
-
const shouldDelete =
|
|
100
|
+
const shouldDelete = entityMeta.onDelete === CleanupPolicy.Delete;
|
|
101
101
|
for (const carrier of carriers) {
|
|
102
102
|
if (shouldDelete) {
|
|
103
103
|
carrier._destroy();
|
|
104
104
|
}
|
|
105
105
|
else {
|
|
106
|
-
carrier._remove(
|
|
106
|
+
carrier._remove(entityMeta);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.lifecycle.js","sourceRoot":"","sources":["../../src/entity/entity.lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,MAAM,OAAO,SAAU,SAAQ,UAAU;IACvC;;;;OAIG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,
|
|
1
|
+
{"version":3,"file":"entity.lifecycle.js","sourceRoot":"","sources":["../../src/entity/entity.lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,6 @@ export class Queries extends Base {
|
|
|
9
9
|
this._queries.add(q);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* @internal Return `true` when this entity is currently tracked by `q`.
|
|
14
|
-
*/
|
|
15
|
-
_isInQuery(q) {
|
|
16
|
-
return this._queries.has(q);
|
|
17
|
-
}
|
|
18
12
|
/**
|
|
19
13
|
* @internal Forget query `q` without firing exit callbacks. Called by
|
|
20
14
|
* {@link World} when a {@link Query.destroy} sweeps every entity.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.queries.js","sourceRoot":"","sources":["../../src/entity/entity.queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAC/B;;;OAGG;IACI,mBAAmB,CAAC,CAAQ;QACjC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"entity.queries.js","sourceRoot":"","sources":["../../src/entity/entity.queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAC/B;;;OAGG;IACI,mBAAmB,CAAC,CAAQ;QACjC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,CAAQ;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,CAAQ;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -3,7 +3,7 @@ import type { Entity } from "./entity.js";
|
|
|
3
3
|
import { Queries } from "./entity.queries.js";
|
|
4
4
|
export declare class Relationships extends Queries {
|
|
5
5
|
/** Return this entity's target through relationship `ref`, if present. */
|
|
6
|
-
parent(
|
|
6
|
+
parent(rel: ComponentRef): Entity | undefined;
|
|
7
7
|
/** Return entities targeting this one through relationship `ref`. */
|
|
8
8
|
children(ref: ComponentRef): ReadonlySet<Entity>;
|
|
9
9
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { CleanupPolicy } from "../component_meta.js";
|
|
1
|
+
import { CleanupPolicy, } from "../component_meta.js";
|
|
2
2
|
import { ArrayMap } from "../util/array_map.js";
|
|
3
3
|
import { DenseSet } from "../util/dense_set.js";
|
|
4
4
|
import { Queries } from "./entity.queries.js";
|
|
5
5
|
export class Relationships extends Queries {
|
|
6
6
|
/** Return this entity's target through relationship `ref`, if present. */
|
|
7
|
-
parent(
|
|
8
|
-
|
|
7
|
+
parent(rel) {
|
|
8
|
+
const relEid = typeof rel === "number" ? rel : this.world.entity(rel).eid;
|
|
9
|
+
return this._components.get(relEid)?.target;
|
|
9
10
|
}
|
|
10
11
|
/** Return entities targeting this one through relationship `ref`. */
|
|
11
12
|
children(ref) {
|
|
12
|
-
|
|
13
|
+
const relEid = typeof ref === "number" ? ref : this.world.entity(ref).eid;
|
|
14
|
+
return this._incoming?.get(relEid) ?? Relationships._emptyIncoming;
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* @internal Fast child set lookup by relationship eid — skips ref -> eid
|
|
@@ -37,7 +39,7 @@ export class Relationships extends Queries {
|
|
|
37
39
|
if (!relEntity) {
|
|
38
40
|
return;
|
|
39
41
|
}
|
|
40
|
-
const policy = relEntity.
|
|
42
|
+
const policy = relEntity.meta.onDeleteTarget;
|
|
41
43
|
for (const source of [...sources]) {
|
|
42
44
|
if (policy === CleanupPolicy.Delete) {
|
|
43
45
|
// If source is also an in-use component entity with onDelete Throw,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.relationships.js","sourceRoot":"","sources":["../../src/entity/entity.relationships.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"entity.relationships.js","sourceRoot":"","sources":["../../src/entity/entity.relationships.ts"],"names":[],"mappings":"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"}
|
package/dist/entity/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Entity, type EntityClass } from "./entity.js";
|
|
1
|
+
export { Entity, type EID, type EntityClass } from "./entity.js";
|
|
2
2
|
export { Identity } from "./entity.identity.js";
|
package/dist/entity/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA8B,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/filter.d.ts
CHANGED
|
@@ -52,7 +52,7 @@ export declare class Filter<R extends ComponentType[] = []> {
|
|
|
52
52
|
*
|
|
53
53
|
* @param callback - Receives only the matching entity.
|
|
54
54
|
*/
|
|
55
|
-
forEach(callback: (e: Entity) => void):
|
|
55
|
+
forEach(callback: (e: Entity) => void): this;
|
|
56
56
|
/**
|
|
57
57
|
* Walk all current world entities, call `callback` for each one that
|
|
58
58
|
* satisfies the filter's DSL, and inject the requested component instances.
|
|
@@ -68,19 +68,19 @@ export declare class Filter<R extends ComponentType[] = []> {
|
|
|
68
68
|
* @param callback - Receives the entity and a tuple of resolved component
|
|
69
69
|
* instances.
|
|
70
70
|
*/
|
|
71
|
-
forEach<J extends FanInjectTuple>(components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void):
|
|
71
|
+
forEach<J extends FanInjectTuple>(components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
72
72
|
/**
|
|
73
73
|
* As above, but pass `Entity` first to make the entity-first signature
|
|
74
74
|
* explicit. Identical behavior to the no-marker form.
|
|
75
75
|
*/
|
|
76
|
-
forEach<J extends FanInjectTuple>(cursor: typeof Entity, components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void):
|
|
76
|
+
forEach<J extends FanInjectTuple>(cursor: typeof Entity, components: readonly [...J], callback: (e: Entity, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
77
77
|
/**
|
|
78
78
|
* As above, but pass `Iter` first to receive a reused {@link Iter}
|
|
79
79
|
* cursor instead of the bare entity. The cursor exposes the visited entity
|
|
80
80
|
* (`it.entity`) and, in `it.src`, the source entity each resolved component
|
|
81
|
-
* was read from (the visited entity for direct components, the
|
|
82
|
-
* target for
|
|
81
|
+
* was read from (the visited entity for direct components, the
|
|
82
|
+
* relationship's target entity for ones injected via `target`).
|
|
83
83
|
*/
|
|
84
|
-
forEach<J extends FanInjectTuple>(cursor: typeof Iter, components: readonly [...J], callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void):
|
|
84
|
+
forEach<J extends FanInjectTuple>(cursor: typeof Iter, components: readonly [...J], callback: (it: Iter, resolved: MaybeResolvedInjectTuple<J, R>) => void): this;
|
|
85
85
|
private _forEachMatch;
|
|
86
86
|
}
|
package/dist/filter.js
CHANGED
|
@@ -51,7 +51,7 @@ export class Filter {
|
|
|
51
51
|
this.world.defer(() => {
|
|
52
52
|
this._forEachMatch(callback);
|
|
53
53
|
});
|
|
54
|
-
return;
|
|
54
|
+
return this;
|
|
55
55
|
}
|
|
56
56
|
const useIter = wantsIter(arg0);
|
|
57
57
|
const components = (isCursorMarker(arg0) ? arg1 : arg0);
|
|
@@ -60,6 +60,7 @@ export class Filter {
|
|
|
60
60
|
const invoke = makeInjectedInvoker(this.world, components, useIter, callback);
|
|
61
61
|
this._forEachMatch(invoke);
|
|
62
62
|
});
|
|
63
|
+
return this;
|
|
63
64
|
}
|
|
64
65
|
_forEachMatch(callback) {
|
|
65
66
|
const rootTerm = this.rootTerm;
|
package/dist/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAsC,MAAM,UAAU,CAAC;AAExE,OAAO,EACL,cAAc,EAEd,mBAAmB,EACnB,SAAS,GAIV,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,MAAM;IAIjB;IACE,6CAA6C;IAC7B,KAAY,EAC5B,GAAa;QADG,UAAK,GAAL,KAAK,CAAO;QAG5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAqDM,OAAO,CAAC,IAAa,EAAE,IAAc,EAAE,IAAc;QAC1D,oEAAoE;QACpE,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAA2B,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,OAAO;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAsC,MAAM,UAAU,CAAC;AAExE,OAAO,EACL,cAAc,EAEd,mBAAmB,EACnB,SAAS,GAIV,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,MAAM;IAIjB;IACE,6CAA6C;IAC7B,KAAY,EAC5B,GAAa;QADG,UAAK,GAAL,KAAK,CAAO;QAG5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAqDM,OAAO,CAAC,IAAa,EAAE,IAAc,EAAE,IAAc;QAC1D,oEAAoE;QACpE,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAA2B,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAgC,CAAC;QACvF,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAG3C,CAAC;QACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,QAA6B;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
export { System, type SystemQuery } from "./system.js";
|
|
2
|
-
export { Query, GroupedQuery, Group
|
|
2
|
+
export { Query, GroupedQuery, Group } from "./query/index.js";
|
|
3
|
+
export type { EntityTestFunc, MaybeRequired, QueryDSL } from "./dsl.js";
|
|
4
|
+
export { Iter } from "./inject.js";
|
|
5
|
+
export type { DownInject, FanInjectElement, FanInjectTuple, InjectElement, InjectTuple, MaybeResolvedInjectTuple, RequiredResolvedInjectTuple, TargetInject, } from "./inject.js";
|
|
3
6
|
export { DEFAULT_POOLS, World, type WorldOptions } from "./world/index.js";
|
|
4
7
|
export { Filter } from "./filter.js";
|
|
5
|
-
export { ChildOf,
|
|
6
|
-
export { CleanupPolicy, Component, type ComponentInstance, type ComponentClass, type ComponentMeta, type ComponentRef, } from "./component.js";
|
|
7
|
-
export { Entity, type EntityClass, Identity } from "./entity/index.js";
|
|
8
|
-
export { Module } from "./module.js";
|
|
8
|
+
export { ChildOf, DependsOn, SilenceSource } from "./modules/relationships.js";
|
|
9
|
+
export { CleanupPolicy, Component, Relationship, type ComponentInstance, type ComponentClass, type ComponentMeta, type ComponentRef, } from "./component.js";
|
|
10
|
+
export { Entity, type EID, type EntityClass, Identity } from "./entity/index.js";
|
|
11
|
+
export { Module, type ModuleConfig } from "./module.js";
|
|
9
12
|
export { IdentityModule } from "./modules/identity.js";
|
|
10
13
|
export { Singleton, SingletonModule } from "./modules/singleton.js";
|
|
11
|
-
export {
|
|
14
|
+
export { Traversable, RelationshipsModule } from "./modules/relationships.js";
|
|
15
|
+
export { BUILTIN_PIPELINE_PHASES, insertPhaseAfter, ON_LOAD, ON_STORE, ON_UPDATE, ON_VALIDATE, POST_LOAD, POST_UPDATE, PRE_STORE, PRE_UPDATE, Phase, PipelineModule, } from "./modules/pipeline.js";
|
|
12
16
|
export { getDSLKey } from "./dsl.js";
|
|
13
17
|
export { Term, TermEventKind, type TermConsumer } from "./terms/term.js";
|
|
14
18
|
export { IntervalTickSource, RateTickSource, type ITickSource } from "./timer.js";
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
export { System } from "./system.js";
|
|
2
|
-
export { Query, GroupedQuery, Group
|
|
2
|
+
export { Query, GroupedQuery, Group } from "./query/index.js";
|
|
3
|
+
export { Iter } from "./inject.js";
|
|
3
4
|
export { DEFAULT_POOLS, World } from "./world/index.js";
|
|
4
5
|
export { Filter } from "./filter.js";
|
|
5
|
-
export { ChildOf,
|
|
6
|
-
export { CleanupPolicy, Component, } from "./component.js";
|
|
6
|
+
export { ChildOf, DependsOn, SilenceSource } from "./modules/relationships.js";
|
|
7
|
+
export { CleanupPolicy, Component, Relationship, } from "./component.js";
|
|
7
8
|
export { Entity, Identity } from "./entity/index.js";
|
|
8
9
|
export { Module } from "./module.js";
|
|
9
10
|
export { IdentityModule } from "./modules/identity.js";
|
|
10
11
|
export { Singleton, SingletonModule } from "./modules/singleton.js";
|
|
12
|
+
export { Traversable, RelationshipsModule } from "./modules/relationships.js";
|
|
13
|
+
export { BUILTIN_PIPELINE_PHASES, insertPhaseAfter, ON_LOAD, ON_STORE, ON_UPDATE, ON_VALIDATE, POST_LOAD, POST_UPDATE, PRE_STORE, PRE_UPDATE, Phase, PipelineModule, } from "./modules/pipeline.js";
|
|
11
14
|
export { getDSLKey } from "./dsl.js";
|
|
12
15
|
export { Term } from "./terms/term.js";
|
|
13
16
|
export { IntervalTickSource, RateTickSource } from "./timer.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAWnC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAqB,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,GAKb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAA8B,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,IAAI,EAAoC,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAoB,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,4BAA4B,EAAqB,MAAM,mBAAmB,CAAC"}
|