ecspresso 0.0.0 → 0.0.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/dist/index.d.ts +323 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +7 -2
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
declare module "src/resource-manager" {
|
|
2
|
+
export default class ResourceManager<ResourceTypes extends Record<string, any> = Record<string, any>> {
|
|
3
|
+
private resources;
|
|
4
|
+
/**
|
|
5
|
+
* Add a resource to the manager
|
|
6
|
+
* @param label The resource key
|
|
7
|
+
* @param resource The resource value
|
|
8
|
+
* @returns The added resource
|
|
9
|
+
*/
|
|
10
|
+
add<K extends keyof ResourceTypes>(label: K, resource: ResourceTypes[K]): ResourceTypes[K];
|
|
11
|
+
/**
|
|
12
|
+
* Get a resource from the manager
|
|
13
|
+
* @param label The resource key
|
|
14
|
+
* @returns The resource value
|
|
15
|
+
* @throws Error if resource not found
|
|
16
|
+
*/
|
|
17
|
+
get<K extends keyof ResourceTypes>(label: K): ResourceTypes[K];
|
|
18
|
+
/**
|
|
19
|
+
* Get a resource from the manager, returning undefined if not found
|
|
20
|
+
* @param label The resource key
|
|
21
|
+
* @returns The resource value or undefined if not found
|
|
22
|
+
*/
|
|
23
|
+
getOptional<K extends keyof ResourceTypes>(label: K): ResourceTypes[K] | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a resource exists
|
|
26
|
+
* @param label The resource key
|
|
27
|
+
* @returns True if the resource exists
|
|
28
|
+
*/
|
|
29
|
+
has<K extends keyof ResourceTypes>(label: K): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Remove a resource
|
|
32
|
+
* @param label The resource key
|
|
33
|
+
* @returns True if the resource was removed
|
|
34
|
+
*/
|
|
35
|
+
remove<K extends keyof ResourceTypes>(label: K): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Get all resource keys
|
|
38
|
+
* @returns Array of resource keys
|
|
39
|
+
*/
|
|
40
|
+
getKeys(): Array<keyof ResourceTypes>;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
declare module "src/event-bus" {
|
|
44
|
+
export default class EventBus<EventTypes> {
|
|
45
|
+
private handlers;
|
|
46
|
+
/**
|
|
47
|
+
* Subscribe to an event
|
|
48
|
+
*/
|
|
49
|
+
subscribe<E extends keyof EventTypes>(eventType: E, callback: (data: EventTypes[E]) => void): () => void;
|
|
50
|
+
/**
|
|
51
|
+
* Subscribe to an event once
|
|
52
|
+
*/
|
|
53
|
+
once<E extends keyof EventTypes>(eventType: E, callback: (data: EventTypes[E]) => void): () => void;
|
|
54
|
+
/**
|
|
55
|
+
* Internal method to add an event handler
|
|
56
|
+
*/
|
|
57
|
+
private addHandler;
|
|
58
|
+
publish<E extends keyof EventTypes>(eventType: E, data?: EventTypes[E]): void;
|
|
59
|
+
clear(): void;
|
|
60
|
+
clearEvent<E extends keyof EventTypes>(eventType: E): void;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
declare module "src/types" {
|
|
64
|
+
import type ResourceManager from "src/resource-manager";
|
|
65
|
+
import type EventBus from "src/event-bus";
|
|
66
|
+
import type EntityManager from "src/entity-manager";
|
|
67
|
+
export interface Entity<ComponentTypes> {
|
|
68
|
+
id: number;
|
|
69
|
+
components: Partial<ComponentTypes>;
|
|
70
|
+
}
|
|
71
|
+
export interface EventHandler<T> {
|
|
72
|
+
callback: (data: T) => void;
|
|
73
|
+
once: boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface FilteredEntity<ComponentTypes, WithComponents extends keyof ComponentTypes = never, WithoutComponents extends keyof ComponentTypes = never> {
|
|
76
|
+
id: number;
|
|
77
|
+
components: Omit<Partial<ComponentTypes>, WithoutComponents> & {
|
|
78
|
+
[ComponentName in WithComponents]: ComponentTypes[ComponentName];
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export interface QueryConfig<ComponentTypes, WithComponents extends keyof ComponentTypes, WithoutComponents extends keyof ComponentTypes> {
|
|
82
|
+
with: ReadonlyArray<WithComponents>;
|
|
83
|
+
without?: ReadonlyArray<WithoutComponents>;
|
|
84
|
+
}
|
|
85
|
+
export interface System<ComponentTypes, WithComponents extends keyof ComponentTypes = never, WithoutComponents extends keyof ComponentTypes = never, EventTypes extends Record<string, any> = Record<string, any>, ResourceTypes extends Record<string, any> = Record<string, any>> {
|
|
86
|
+
label: string;
|
|
87
|
+
entityQueries?: {
|
|
88
|
+
[queryName: string]: QueryConfig<ComponentTypes, WithComponents, WithoutComponents>;
|
|
89
|
+
};
|
|
90
|
+
process?(queries: {
|
|
91
|
+
[queryName: string]: Array<FilteredEntity<ComponentTypes, WithComponents, WithoutComponents>>;
|
|
92
|
+
} | Array<FilteredEntity<ComponentTypes, WithComponents, WithoutComponents>>, deltaTime: number, entityManager: EntityManager<ComponentTypes>, resourceManager: ResourceManager<ResourceTypes>, eventBus: EventBus<EventTypes>): void;
|
|
93
|
+
onAttach?(entityManager: EntityManager<ComponentTypes>, resourceManager: ResourceManager<ResourceTypes>, eventBus: EventBus<EventTypes>): void;
|
|
94
|
+
onDetach?(entityManager: EntityManager<ComponentTypes>, resourceManager: ResourceManager<ResourceTypes>, eventBus: EventBus<EventTypes>): void;
|
|
95
|
+
eventHandlers?: {
|
|
96
|
+
[EventName in keyof EventTypes]?: {
|
|
97
|
+
handler(data: EventTypes[EventName], entityManager: EntityManager<ComponentTypes>, resourceManager: ResourceManager<ResourceTypes>, eventBus: EventBus<EventTypes>): void;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
declare module "src/entity-manager" {
|
|
103
|
+
import type { Entity, FilteredEntity } from "src/types";
|
|
104
|
+
export default class EntityManager<ComponentTypes> {
|
|
105
|
+
private nextId;
|
|
106
|
+
private entities;
|
|
107
|
+
private componentIndices;
|
|
108
|
+
createEntity(): Entity<ComponentTypes>;
|
|
109
|
+
addComponent<ComponentName extends keyof ComponentTypes>(entityOrId: number | Entity<ComponentTypes>, componentName: ComponentName, data: ComponentTypes[ComponentName]): this;
|
|
110
|
+
removeComponent<ComponentName extends keyof ComponentTypes>(entityId: number, componentName: ComponentName): void;
|
|
111
|
+
getComponent<ComponentName extends keyof ComponentTypes>(entityId: number, componentName: ComponentName): ComponentTypes[ComponentName] | null;
|
|
112
|
+
getEntitiesWithComponents<WithComponents extends keyof ComponentTypes = never, WithoutComponents extends keyof ComponentTypes = never>(required?: ReadonlyArray<WithComponents>, excluded?: ReadonlyArray<WithoutComponents>): Array<FilteredEntity<ComponentTypes, WithComponents extends never ? never : WithComponents, WithoutComponents extends never ? never : WithoutComponents>>;
|
|
113
|
+
removeEntity(entityId: number): boolean;
|
|
114
|
+
getEntity(entityId: number): Entity<ComponentTypes> | undefined;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
declare module "src/system-builder" {
|
|
118
|
+
import Bundle from "src/bundle";
|
|
119
|
+
import type EntityManager from "src/entity-manager";
|
|
120
|
+
import type EventBus from "src/event-bus";
|
|
121
|
+
import type ResourceManager from "src/resource-manager";
|
|
122
|
+
import type { FilteredEntity, System } from "src/types";
|
|
123
|
+
/**
|
|
124
|
+
* Builder class for creating type-safe ECS Systems with proper query inference
|
|
125
|
+
*/
|
|
126
|
+
export class SystemBuilder<ComponentTypes extends Record<string, any> = Record<string, any>, EventTypes extends Record<string, any> = Record<string, any>, ResourceTypes extends Record<string, any> = Record<string, any>, Queries extends Record<string, QueryDefinition<ComponentTypes>> = {}> {
|
|
127
|
+
private _label;
|
|
128
|
+
private _bundle;
|
|
129
|
+
private queries;
|
|
130
|
+
private processFunction?;
|
|
131
|
+
private attachFunction?;
|
|
132
|
+
private detachFunction?;
|
|
133
|
+
private eventHandlers?;
|
|
134
|
+
constructor(_label: string, _bundle?: Bundle<ComponentTypes, EventTypes, ResourceTypes>);
|
|
135
|
+
get label(): string;
|
|
136
|
+
get bundle(): Bundle<ComponentTypes, EventTypes, ResourceTypes>;
|
|
137
|
+
/**
|
|
138
|
+
* Add a query definition to the system
|
|
139
|
+
*/
|
|
140
|
+
addQuery<QueryName extends string, WithComponents extends keyof ComponentTypes, WithoutComponents extends keyof ComponentTypes = never>(name: QueryName, definition: {
|
|
141
|
+
with: ReadonlyArray<WithComponents>;
|
|
142
|
+
without?: ReadonlyArray<WithoutComponents>;
|
|
143
|
+
}): SystemBuilder<ComponentTypes, EventTypes, ResourceTypes, Queries & Record<QueryName, QueryDefinition<ComponentTypes, WithComponents, WithoutComponents>>>;
|
|
144
|
+
/**
|
|
145
|
+
* Set the system's process function that runs each update
|
|
146
|
+
*/
|
|
147
|
+
setProcess(process: ProcessFunction<ComponentTypes, EventTypes, ResourceTypes, Queries>): SystemBuilder<ComponentTypes, EventTypes, ResourceTypes, Queries>;
|
|
148
|
+
/**
|
|
149
|
+
* Set the onAttach lifecycle hook
|
|
150
|
+
*/
|
|
151
|
+
setOnAttach(onAttach: LifecycleFunction<ComponentTypes, EventTypes, ResourceTypes>): SystemBuilder<ComponentTypes, EventTypes, ResourceTypes, Queries>;
|
|
152
|
+
/**
|
|
153
|
+
* Set the onDetach lifecycle hook
|
|
154
|
+
*/
|
|
155
|
+
setOnDetach(onDetach: LifecycleFunction<ComponentTypes, EventTypes, ResourceTypes>): SystemBuilder<ComponentTypes, EventTypes, ResourceTypes, Queries>;
|
|
156
|
+
/**
|
|
157
|
+
* Set event handlers for the system
|
|
158
|
+
*/
|
|
159
|
+
setEventHandlers(handlers: {
|
|
160
|
+
[EventName in keyof EventTypes]?: {
|
|
161
|
+
handler(data: EventTypes[EventName], entityManager: EntityManager<ComponentTypes>, resourceManager: ResourceManager<ResourceTypes>, eventBus: EventBus<EventTypes>): void;
|
|
162
|
+
};
|
|
163
|
+
}): SystemBuilder<ComponentTypes, EventTypes, ResourceTypes, Queries>;
|
|
164
|
+
/**
|
|
165
|
+
* Build the final system object
|
|
166
|
+
*/
|
|
167
|
+
build(): System<ComponentTypes, any, any, EventTypes, ResourceTypes>;
|
|
168
|
+
}
|
|
169
|
+
type QueryDefinition<ComponentTypes, WithComponents extends keyof ComponentTypes = any, WithoutComponents extends keyof ComponentTypes = any> = {
|
|
170
|
+
with: ReadonlyArray<WithComponents>;
|
|
171
|
+
without?: ReadonlyArray<WithoutComponents>;
|
|
172
|
+
};
|
|
173
|
+
type QueryResults<ComponentTypes, Queries extends Record<string, QueryDefinition<ComponentTypes>>> = {
|
|
174
|
+
[QueryName in keyof Queries]: QueryName extends string ? FilteredEntity<ComponentTypes, Queries[QueryName] extends QueryDefinition<ComponentTypes, infer W, any> ? W : never, Queries[QueryName] extends QueryDefinition<ComponentTypes, any, infer WO> ? WO : never>[] : never;
|
|
175
|
+
};
|
|
176
|
+
type ProcessFunction<ComponentTypes, EventTypes extends Record<string, any>, ResourceTypes extends Record<string, any>, Queries extends Record<string, QueryDefinition<ComponentTypes>>> = (queries: QueryResults<ComponentTypes, Queries>, deltaTime: number, entityManager: EntityManager<ComponentTypes>, resourceManager: ResourceManager<ResourceTypes>, eventBus: EventBus<EventTypes>) => void;
|
|
177
|
+
type LifecycleFunction<ComponentTypes, EventTypes extends Record<string, any>, ResourceTypes extends Record<string, any>> = (entityManager: EntityManager<ComponentTypes>, resourceManager: ResourceManager<ResourceTypes>, eventBus: EventBus<EventTypes>) => void;
|
|
178
|
+
}
|
|
179
|
+
declare module "src/bundle" {
|
|
180
|
+
import { SystemBuilder } from "src/system-builder";
|
|
181
|
+
/**
|
|
182
|
+
* Bundle class that encapsulates a set of components, resources, events, and systems
|
|
183
|
+
* that can be merged into a ECSpresso instance
|
|
184
|
+
*/
|
|
185
|
+
export default class Bundle<ComponentTypes extends Record<string, any> = Record<string, any>, EventTypes extends Record<string, any> = Record<string, any>, ResourceTypes extends Record<string, any> = Record<string, any>> {
|
|
186
|
+
private _systems;
|
|
187
|
+
private _resources;
|
|
188
|
+
private _id;
|
|
189
|
+
constructor(id?: string);
|
|
190
|
+
/**
|
|
191
|
+
* Get the unique ID of this bundle
|
|
192
|
+
*/
|
|
193
|
+
get id(): string;
|
|
194
|
+
/**
|
|
195
|
+
* Set the ID of this bundle
|
|
196
|
+
* @internal Used by combineBundles
|
|
197
|
+
*/
|
|
198
|
+
set id(value: string);
|
|
199
|
+
/**
|
|
200
|
+
* Add a system to this bundle
|
|
201
|
+
*/
|
|
202
|
+
addSystem(label: string): SystemBuilder<ComponentTypes, EventTypes, ResourceTypes, {}>;
|
|
203
|
+
/**
|
|
204
|
+
* Add a resource to this bundle
|
|
205
|
+
* @param label The resource key
|
|
206
|
+
* @param resource The resource value
|
|
207
|
+
*/
|
|
208
|
+
addResource<K extends keyof ResourceTypes>(label: K, resource: ResourceTypes[K]): this;
|
|
209
|
+
/**
|
|
210
|
+
* Get all systems defined in this bundle
|
|
211
|
+
* Returns built System objects instead of SystemBuilders
|
|
212
|
+
*/
|
|
213
|
+
getSystems(): import("src").System<ComponentTypes, any, any, EventTypes, ResourceTypes>[];
|
|
214
|
+
/**
|
|
215
|
+
* Get all resources defined in this bundle
|
|
216
|
+
*/
|
|
217
|
+
getResources(): Map<keyof ResourceTypes, ResourceTypes[keyof ResourceTypes]>;
|
|
218
|
+
/**
|
|
219
|
+
* Get a specific resource by key
|
|
220
|
+
* @param key The resource key
|
|
221
|
+
* @returns The resource value or undefined if not found
|
|
222
|
+
*/
|
|
223
|
+
getResource<K extends keyof ResourceTypes>(key: K): ResourceTypes[K] | undefined;
|
|
224
|
+
/**
|
|
225
|
+
* Get all system builders in this bundle
|
|
226
|
+
*/
|
|
227
|
+
getSystemBuilders(): SystemBuilder<ComponentTypes, EventTypes, ResourceTypes, any>[];
|
|
228
|
+
/**
|
|
229
|
+
* Check if this bundle has a specific resource
|
|
230
|
+
* @param key The resource key to check
|
|
231
|
+
* @returns True if the resource exists
|
|
232
|
+
*/
|
|
233
|
+
hasResource<K extends keyof ResourceTypes>(key: K): boolean;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Utility type for merging two types
|
|
237
|
+
*/
|
|
238
|
+
export type Merge<T1, T2> = T1 & T2;
|
|
239
|
+
export type MergeAll<T extends any[]> = T extends [infer First, ...infer Rest] ? Rest extends [] ? First : Merge<First, MergeAll<Rest>> : {};
|
|
240
|
+
export function mergeBundles<Bundles extends Array<Bundle<any, any, any>>>(id: string, ...bundles: Bundles): Bundle<MergeAll<{
|
|
241
|
+
[K in keyof Bundles]: Bundles[K] extends Bundle<infer C, any, any> ? C : never;
|
|
242
|
+
}>, MergeAll<{
|
|
243
|
+
[K in keyof Bundles]: Bundles[K] extends Bundle<any, infer E, any> ? E : never;
|
|
244
|
+
}>, MergeAll<{
|
|
245
|
+
[K in keyof Bundles]: Bundles[K] extends Bundle<any, any, infer R> ? R : never;
|
|
246
|
+
}>>;
|
|
247
|
+
}
|
|
248
|
+
declare module "src/ecspresso" {
|
|
249
|
+
import EntityManager from "src/entity-manager";
|
|
250
|
+
import EventBus from "src/event-bus";
|
|
251
|
+
import ResourceManager from "src/resource-manager";
|
|
252
|
+
import type Bundle from "src/bundle";
|
|
253
|
+
export default class ECSpresso<ComponentTypes extends Record<string, any> = Record<string, any>, EventTypes extends Record<string, any> = Record<string, any>, ResourceTypes extends Record<string, any> = Record<string, any>> {
|
|
254
|
+
static readonly VERSION: string;
|
|
255
|
+
private _entityManager;
|
|
256
|
+
private _systems;
|
|
257
|
+
private _eventBus;
|
|
258
|
+
private _resourceManager;
|
|
259
|
+
private _installedBundles;
|
|
260
|
+
constructor();
|
|
261
|
+
/**
|
|
262
|
+
* Install one or more bundles into this ECS instance
|
|
263
|
+
*/
|
|
264
|
+
install<Bundles extends Array<Bundle<any, any, any>>>(...bundles: Bundles): this;
|
|
265
|
+
/**
|
|
266
|
+
* Remove a system by its label
|
|
267
|
+
*/
|
|
268
|
+
removeSystem(label: string): boolean;
|
|
269
|
+
/**
|
|
270
|
+
* Check if a resource exists
|
|
271
|
+
*/
|
|
272
|
+
hasResource<K extends keyof ResourceTypes>(key: K): boolean;
|
|
273
|
+
/**
|
|
274
|
+
* Get a resource if it exists, or undefined if not
|
|
275
|
+
*/
|
|
276
|
+
getResource<K extends keyof ResourceTypes>(key: K): ResourceTypes[K] | undefined;
|
|
277
|
+
/**
|
|
278
|
+
* Get a resource, throws error if not found
|
|
279
|
+
*/
|
|
280
|
+
getResourceOrThrow<K extends keyof ResourceTypes>(key: K): ResourceTypes[K];
|
|
281
|
+
/**
|
|
282
|
+
* Add a resource to the ECS instance
|
|
283
|
+
*/
|
|
284
|
+
addResource<K extends keyof ResourceTypes>(key: K, resource: ResourceTypes[K]): this;
|
|
285
|
+
/**
|
|
286
|
+
* Check if an entity has a component
|
|
287
|
+
*/
|
|
288
|
+
hasComponent<K extends keyof ComponentTypes>(entityId: number, componentName: K): boolean;
|
|
289
|
+
/**
|
|
290
|
+
* Get all entities with specific components
|
|
291
|
+
*/
|
|
292
|
+
getEntitiesWithComponents(withComponents: (keyof ComponentTypes)[], withoutComponents?: (keyof ComponentTypes)[]): import("src").FilteredEntity<ComponentTypes, keyof ComponentTypes extends infer T ? T extends keyof ComponentTypes ? T extends never ? never : T : never : never, keyof ComponentTypes extends infer T_1 ? T_1 extends keyof ComponentTypes ? T_1 extends never ? never : T_1 : never : never>[];
|
|
293
|
+
/**
|
|
294
|
+
* Update all systems
|
|
295
|
+
*/
|
|
296
|
+
update(deltaTime: number): void;
|
|
297
|
+
get entityManager(): EntityManager<ComponentTypes>;
|
|
298
|
+
get eventBus(): EventBus<EventTypes>;
|
|
299
|
+
get resourceManager(): ResourceManager<ResourceTypes>;
|
|
300
|
+
/**
|
|
301
|
+
* Get all installed bundle IDs
|
|
302
|
+
*/
|
|
303
|
+
get installedBundles(): string[];
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
declare module "src/bundle.test" { }
|
|
307
|
+
declare module "src/ecspresso.test" { }
|
|
308
|
+
declare module "src/event-bus.test" { }
|
|
309
|
+
declare module "src/index" {
|
|
310
|
+
import ECSpresso from "src/ecspresso";
|
|
311
|
+
import { SystemBuilder } from "src/system-builder";
|
|
312
|
+
import Bundle, { mergeBundles } from "src/bundle";
|
|
313
|
+
export * from "src/types";
|
|
314
|
+
export { default as EntityManager } from "src/entity-manager";
|
|
315
|
+
export { default as EventBus } from "src/event-bus";
|
|
316
|
+
export { default as ResourceManager } from "src/resource-manager";
|
|
317
|
+
export { SystemBuilder };
|
|
318
|
+
export { Bundle, mergeBundles };
|
|
319
|
+
export default ECSpresso;
|
|
320
|
+
}
|
|
321
|
+
declare module "src/resource-manager.test" { }
|
|
322
|
+
declare module "src/system-builder.test" { }
|
|
323
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/resource-manager.ts","../src/event-bus.ts","../src/types.ts","../src/entity-manager.ts","../src/system-builder.ts","../src/bundle.ts","../src/ecspresso.ts","../src/bundle.test.ts","../src/ecspresso.test.ts","../src/event-bus.test.ts","../src/index.ts","../src/resource-manager.test.ts","../src/system-builder.test.ts"],"names":[],"mappings":";IAAA,MAAM,CAAC,OAAO,OACR,eAAe,CAAC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;QACpF,OAAO,CAAC,SAAS,CAA2E;QAE5F;;;;;WAKG;QACH,GAAG,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QAK1F;;;;;WAKG;QACH,GAAG,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QAQ9D;;;;WAIG;QACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;QAKlF;;;;WAIG;QACH,GAAG,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO;QAIrD;;;;WAIG;QACH,MAAM,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO;QAIxD;;;WAGG;QACH,OAAO,IAAI,KAAK,CAAC,MAAM,aAAa,CAAC;KAGrC;;;IC9DD,MAAM,CAAC,OAAO,OACR,QAAQ,CAAC,UAAU;QACxB,OAAO,CAAC,QAAQ,CAA8D;QAE9E;;WAEG;QACH,SAAS,CAAC,CAAC,SAAS,MAAM,UAAU,EACnC,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,GACrC,MAAM,IAAI;QAIb;;WAEG;QACH,IAAI,CAAC,CAAC,SAAS,MAAM,UAAU,EAC9B,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,GACrC,MAAM,IAAI;QAIb;;WAEG;QACH,OAAO,CAAC,UAAU;QA4BlB,OAAO,CAAC,CAAC,SAAS,MAAM,UAAU,EACjC,SAAS,EAAE,CAAC,EACZ,IAAI,GAAE,UAAU,CAAC,CAAC,CAA8B,GAC9C,IAAI;QA2BP,KAAK,IAAI,IAAI;QAIb,UAAU,CAAC,CAAC,SAAS,MAAM,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI;KAG1D;;;IC9FD,OAAO,KAAK,eAAe,6BAA2B;IACtD,OAAO,KAAK,QAAQ,sBAAoB;IACxC,OAAO,KAAK,aAAa,2BAAyB;IAElD,MAAM,WACI,MAAM,CAAC,cAAc;QAC9B,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KACpC;IAED,MAAM,WACI,YAAY,CAAC,CAAC;QACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC;KACd;IAED,MAAM,WACI,cAAc,CACpB,cAAc,EACd,cAAc,SAAS,MAAM,cAAc,GAAG,KAAK,EACnD,iBAAiB,SAAS,MAAM,cAAc,GAAG,KAAK;QAEtD,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,GAAG;aAC1D,aAAa,IAAI,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC;SACnE,CAAC;KACL;IAED,MAAM,WACI,WAAW,CACpB,cAAc,EACd,cAAc,SAAS,MAAM,cAAc,EAC3C,iBAAiB,SAAS,MAAM,cAAc;QAE9C,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;KAC3C;IAED,MAAM,WACI,MAAM,CACf,cAAc,EACd,cAAc,SAAS,MAAM,cAAc,GAAG,KAAK,EACnD,iBAAiB,SAAS,MAAM,cAAc,GAAG,KAAK,EACtD,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5D,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;QAE/D,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE;YACf,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;SACpF,CAAC;QACF,OAAO,CAAC,CACP,OAAO,EAAE;YACR,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;SAC9F,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,EAC5E,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,EAC5C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,EAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC5B,IAAI,CAAC;QAGR,QAAQ,CAAC,CACR,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,EAC5C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,EAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC5B,IAAI,CAAC;QACR,QAAQ,CAAC,CACR,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,EAC5C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,EAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC5B,IAAI,CAAC;QAGR,aAAa,CAAC,EAAE;aACd,SAAS,IAAI,MAAM,UAAU,CAAC,CAAC,EAAE;gBACjC,OAAO,CACN,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAC3B,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,EAC5C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,EAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC5B,IAAI,CAAC;aACR;SACD,CAAC;KACF;;;ICnFD,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAgB;IAEtD,MAAM,CAAC,OAAO,OACR,aAAa,CAAC,cAAc;QACjC,OAAO,CAAC,MAAM,CAAa;QAC3B,OAAO,CAAC,QAAQ,CAAkD;QAClE,OAAO,CAAC,gBAAgB,CAAqD;QAE7E,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC;QAQtC,YAAY,CAAC,aAAa,SAAS,MAAM,cAAc,EACtD,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,EAC3C,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC;QAkBpC,eAAe,CAAC,aAAa,SAAS,MAAM,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;QAU1G,YAAY,CAAC,aAAa,SAAS,MAAM,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI;QAQ9I,yBAAyB,CACxB,cAAc,SAAS,MAAM,cAAc,GAAG,KAAK,EACnD,iBAAiB,SAAS,MAAM,cAAc,GAAG,KAAK,EAEtD,QAAQ,GAAE,aAAa,CAAC,cAAc,CAAa,EACnD,QAAQ,GAAE,aAAa,CAAC,iBAAiB,CAAa,GACpD,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,SAAS,KAAK,GAAG,KAAK,GAAG,cAAc,EAAE,iBAAiB,SAAS,KAAK,GAAG,KAAK,GAAG,iBAAiB,CAAC,CAAC;QAuC5J,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;QAavC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,SAAS;KAG/D;;;ICpHD,OAAO,MAAM,mBAAiB;IAC9B,OAAO,KAAK,aAAa,2BAAyB;IAClD,OAAO,KAAK,QAAQ,sBAAoB;IACxC,OAAO,KAAK,eAAe,6BAA2B;IACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAgB;IAEtD;;OAEG;IACH,MAAM,OAAO,aAAa,CACzB,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5D,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/D,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE;QAkBnE,OAAO,CAAC,MAAM;QACd,OAAO,CAAC,OAAO;QAjBhB,OAAO,CAAC,OAAO,CAA0B;QACzC,OAAO,CAAC,eAAe,CAAC,CAAsE;QAC9F,OAAO,CAAC,cAAc,CAAC,CAA+D;QACtF,OAAO,CAAC,cAAc,CAAC,CAA+D;QACtF,OAAO,CAAC,aAAa,CAAC,CASpB;oBAGO,MAAM,EAAE,MAAM,EACd,OAAO,oDAA0D;QAG1E,IAAI,KAAK,WAER;QAED,IAAI,MAAM,sDAET;QAED;;WAEG;QACH,QAAQ,CACP,SAAS,SAAS,MAAM,EACxB,cAAc,SAAS,MAAM,cAAc,EAC3C,iBAAiB,SAAS,MAAM,cAAc,GAAG,KAAK,EAEtD,IAAI,EAAE,SAAS,EACf,UAAU,EAAE;YACX,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;YACpC,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;SAC3C,GACC,aAAa,CACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAC/F;QAWD;;WAEG;QACH,UAAU,CACT,OAAO,EAAE,eAAe,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,GAC1E,aAAa,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC;QAKpE;;WAEG;QACH,WAAW,CACV,QAAQ,EAAE,iBAAiB,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,GACpE,aAAa,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC;QAKpE;;WAEG;QACH,WAAW,CACV,QAAQ,EAAE,iBAAiB,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,GACpE,aAAa,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC;QAKpE;;WAEG;QACH,gBAAgB,CACf,QAAQ,EAAE;aACR,SAAS,IAAI,MAAM,UAAU,CAAC,CAAC,EAAE;gBACjC,OAAO,CACN,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAC3B,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,EAC5C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,EAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC5B,IAAI,CAAC;aACR;SACD,GACC,aAAa,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC;QAKpE;;WAEG;QACH,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC;KAwBpE;IAGD,KAAK,eAAe,CACnB,cAAc,EACd,cAAc,SAAS,MAAM,cAAc,GAAG,GAAG,EACjD,iBAAiB,SAAS,MAAM,cAAc,GAAG,GAAG,IACjD;QACH,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;KAC3C,CAAC;IAEF,KAAK,YAAY,CAChB,cAAc,EACd,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,IAC5D;SACF,SAAS,IAAI,MAAM,OAAO,GAAG,SAAS,SAAS,MAAM,GACnD,cAAc,CACf,cAAc,EACd,OAAO,CAAC,SAAS,CAAC,SAAS,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,EACpF,OAAO,CAAC,SAAS,CAAC,SAAS,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CACtF,EAAE,GACD,KAAK;KACR,CAAC;IAEF,KAAK,eAAe,CACnB,cAAc,EACd,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,IAC5D,CACH,OAAO,EAAE,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,EAC9C,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,EAC5C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,EAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,KAC1B,IAAI,CAAC;IAEV,KAAK,iBAAiB,CACrB,cAAc,EACd,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACtC,CACH,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,EAC5C,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,EAC/C,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,KAC1B,IAAI,CAAC;;;IClMV,OAAO,EAAE,aAAa,EAAE,2BAAyB;IASjD;;;OAGG;IACH,MAAM,CAAC,OAAO,OAAO,MAAM,CAC1B,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5D,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;QAE/D,OAAO,CAAC,QAAQ,CAAuE;QACvF,OAAO,CAAC,UAAU,CAA2E;QAC7F,OAAO,CAAC,GAAG,CAAS;oBAER,EAAE,CAAC,EAAE,MAAM;QAIvB;;WAEG;QACH,IAAI,EAAE,IAAI,MAAM,CAEf;QAED;;;WAGG;QACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAEnB;QAED;;WAEG;QACH,SAAS,CAAC,KAAK,EAAE,MAAM;QAQvB;;;;WAIG;QACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;QAK/E;;;WAGG;QACH,UAAU;QAIV;;WAEG;QACH,YAAY,IAAI,GAAG,CAAC,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,aAAa,CAAC,CAAC;QAI5E;;;;WAIG;QACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;QAIhF;;WAEG;QACH,iBAAiB,IAAI,aAAa,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE;QAIpF;;;;WAIG;QACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO;KAG3D;IAED;;OAEG;IAEH,MAAM,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAcpC,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAC7E,IAAI,SAAS,EAAE,GACd,KAAK,GAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,GACpC,EAAE,CAAC;IAEJ,MAAM,UAAU,YAAY,CAC3B,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAE5C,EAAE,EAAE,MAAM,EACV,GAAG,OAAO,EAAE,OAAO,GACjB,MAAM,CACR,QAAQ,CAAC;SAAG,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;KAAE,CAAC,EAC5F,QAAQ,CAAC;SAAG,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;KAAE,CAAC,EAC5F,QAAQ,CAAC;SAAG,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;KAAE,CAAC,CAC5F,CAmBA;;;IC1JD,OAAO,aAAa,2BAAyB;IAC7C,OAAO,QAAQ,sBAAoB;IACnC,OAAO,eAAe,6BAA2B;IAEjD,OAAO,KAAK,MAAM,mBAAiB;IAInC,MAAM,CAAC,OAAO,OACR,SAAS,CACd,cAAc,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5D,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;QAE/D,gBAAuB,OAAO,SAAW;QACzC,OAAO,CAAC,cAAc,CAAgC;QACtD,OAAO,CAAC,QAAQ,CAAqE;QACrF,OAAO,CAAC,SAAS,CAAuB;QACxC,OAAO,CAAC,gBAAgB,CAAiC;QACzD,OAAO,CAAC,iBAAiB,CAA0B;;QAQnD;;WAEG;QACH,OAAO,CACN,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAC3C,GAAG,OAAO,EAAE,OAAO,GAAG,IAAI;QAkE5B;;WAEG;QACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;QAkBpC;;WAEG;QACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO;QAI3D;;WAEG;QACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;QAIhF;;WAEG;QACH,kBAAkB,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;QAI3E;;WAEG;QACH,WAAW,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;QAKpF;;WAEG;QACH,YAAY,CAAC,CAAC,SAAS,MAAM,cAAc,EAC1C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,GACd,OAAO;QAKV;;WAEG;QACH,yBAAyB,CACxB,cAAc,EAAE,CAAC,MAAM,cAAc,CAAC,EAAE,EACxC,iBAAiB,GAAE,CAAC,MAAM,cAAc,CAAC,EAAO;QAQjD;;WAEG;QACH,MAAM,CAAC,SAAS,EAAE,MAAM;QAyCxB,IAAI,aAAa,kCAEhB;QAED,IAAI,QAAQ,yBAEX;QAED,IAAI,eAAe,mCAElB;QAED;;WAEG;QACH,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAE/B;KACD;;;;;;II1OD,OAAO,SAAS,sBAAoB;IACpC,OAAO,EAAE,aAAa,EAAE,2BAAyB;IACjD,OAAO,MAAM,EAAE,EAAE,YAAY,EAAE,mBAAiB;IAEhD,0BAAwB;IACxB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,2BAAyB;IAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,sBAAoB;IAClD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,6BAA2B;IAChE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAChC,eAAe,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class M{nextId=1;entities=new Map;componentIndices=new Map;createEntity(){let f=this.nextId++,g={id:f,components:{}};return this.entities.set(f,g),g}addComponent(f,g,
|
|
1
|
+
class M{nextId=1;entities=new Map;componentIndices=new Map;createEntity(){let f=this.nextId++,g={id:f,components:{}};return this.entities.set(f,g),g}addComponent(f,g,j){let J=typeof f==="number"?this.entities.get(f):f;if(!J)throw new Error(`Entity ${f} does not exist`);if(J.components[g]=j,!this.componentIndices.has(g))this.componentIndices.set(g,new Set);return this.componentIndices.get(g)?.add(J.id),this}removeComponent(f,g){let j=this.entities.get(f);if(!j)throw new Error(`Entity ${f} does not exist`);delete j.components[g],this.componentIndices.get(g)?.delete(f)}getComponent(f,g){let j=this.entities.get(f);if(!j)throw new Error(`Entity ${f} does not exist`);return j.components[g]||null}getEntitiesWithComponents(f=[],g=[]){if(f.length===0){if(g.length===0)return Array.from(this.entities.values());return Array.from(this.entities.values()).filter((E)=>{return g.every((F)=>!(F in E.components))})}let j=f.reduce((E,F)=>{let K=this.componentIndices.get(F),U=K?K.size:0,X=this.componentIndices.get(E)?.size??1/0;return U<X?F:E},f[0]);return Array.from(this.componentIndices.get(j)||[]).filter((E)=>{let F=this.entities.get(E);return F&&f.every((K)=>(K in F.components))&&g.every((K)=>!(K in F.components))}).map((E)=>this.entities.get(E))}removeEntity(f){let g=this.entities.get(f);if(!g)return!1;for(let j of Object.keys(g.components))this.componentIndices.get(j)?.delete(f);return this.entities.delete(f)}getEntity(f){return this.entities.get(f)}}class P{handlers=new Map;subscribe(f,g){return this.addHandler(f,g,!1)}once(f,g){return this.addHandler(f,g,!0)}addHandler(f,g,j){if(!this.handlers.has(f))this.handlers.set(f,[]);let J={callback:g,once:j};return this.handlers.get(f).push(J),()=>{let E=this.handlers.get(f);if(E){let F=E.indexOf(J);if(F!==-1)E.splice(F,1)}}}publish(f,g=void 0){let j=this.handlers.get(f);if(!j)return;let J=[...j],E=[];for(let F of J)if(F.callback(g),F.once)E.push(F);if(E.length>0)for(let F of E){let K=j.indexOf(F);if(K!==-1)j.splice(K,1)}}clear(){this.handlers.clear()}clearEvent(f){this.handlers.delete(f)}}class Q{resources=new Map;add(f,g){return this.resources.set(f,g),g}get(f){let g=this.resources.get(f);if(g===void 0)throw new Error(`Resource ${String(f)} not found`);return g}getOptional(f){return this.resources.get(f)}has(f){return this.resources.has(f)}remove(f){return this.resources.delete(f)}getKeys(){return Array.from(this.resources.keys())}}var Y="0.0.1";class V{static VERSION=Y;_entityManager;_systems=[];_eventBus;_resourceManager;_installedBundles=new Set;constructor(){this._entityManager=new M,this._eventBus=new P,this._resourceManager=new Q}install(...f){for(let g of f){if(this._installedBundles.has(g.id)){console.warn(`Bundle ${g.id} is already installed`);continue}let j=g.getSystems();if(!j.length)console.warn(`Bundle ${g.id} has no systems`);for(let E of j){let F=E;if(this._systems.push(F),F.onAttach)F.onAttach(this._entityManager,this._resourceManager,this._eventBus);if(F.eventHandlers)for(let K in F.eventHandlers){let U=F.eventHandlers[K];if(U?.handler){let X=(Z)=>{U.handler(Z,this._entityManager,this._resourceManager,this._eventBus)};this._eventBus.subscribe(K,X)}}}let J=g.getResources();for(let[E,F]of J.entries())this._resourceManager.add(E,F);this._installedBundles.add(g.id)}return this}removeSystem(f){let g=this._systems.findIndex((J)=>J.label===f);if(g===-1)return!1;let j=this._systems[g];if(!j)return!1;return j.onDetach?.(this._entityManager,this._resourceManager,this._eventBus),this._systems.splice(g,1),!0}hasResource(f){return this._resourceManager.has(f)}getResource(f){return this._resourceManager.getOptional(f)}getResourceOrThrow(f){return this._resourceManager.get(f)}addResource(f,g){return this._resourceManager.add(f,g),this}hasComponent(f,g){return this._entityManager.getComponent(f,g)!==null}getEntitiesWithComponents(f,g=[]){return this._entityManager.getEntitiesWithComponents(f,g)}update(f){for(let g of this._systems){if(!g.process)continue;let j={};if(g.entityQueries){for(let J in g.entityQueries){let E=g.entityQueries[J];if(E)j[J]=this._entityManager.getEntitiesWithComponents(E.with,E.without||[])}g.process(j,f,this._entityManager,this._resourceManager,this._eventBus)}else g.process([],f,this._entityManager,this._resourceManager,this._eventBus)}}get entityManager(){return this._entityManager}get eventBus(){return this._eventBus}get resourceManager(){return this._resourceManager}get installedBundles(){return Array.from(this._installedBundles)}}function $(){return`bundle_${Date.now().toString(36)}_${Math.random().toString(36).substring(2,9)}`}class L{_systems=[];_resources=new Map;_id;constructor(f){this._id=f||$()}get id(){return this._id}set id(f){this._id=f}addSystem(f){let g=new W(f,this);return this._systems.push(g),g}addResource(f,g){return this._resources.set(f,g),this}getSystems(){return this._systems.map((f)=>f.build())}getResources(){return new Map(this._resources)}getResource(f){return this._resources.get(f)}getSystemBuilders(){return[...this._systems]}hasResource(f){return this._resources.has(f)}}function D(f,...g){if(g.length===0)return new L(f);let j=new L(f);for(let J of g){for(let E of J.getSystemBuilders())j.addSystem(E);for(let[E,F]of J.getResources().entries())j.addResource(E,F)}return j}class W{_label;_bundle;queries={};processFunction;attachFunction;detachFunction;eventHandlers;constructor(f,g=new L){this._label=f;this._bundle=g}get label(){return this._label}get bundle(){return this._bundle}addQuery(f,g){let j=this;return j.queries={...this.queries,[f]:g},j}setProcess(f){return this.processFunction=f,this}setOnAttach(f){return this.attachFunction=f,this}setOnDetach(f){return this.detachFunction=f,this}setEventHandlers(f){return this.eventHandlers=f,this}build(){let f={label:this._label,entityQueries:this.queries};if(this.processFunction)f.process=this.processFunction;if(this.attachFunction)f.onAttach=this.attachFunction;if(this.detachFunction)f.onDetach=this.detachFunction;if(this.eventHandlers)f.eventHandlers=this.eventHandlers;return f}}var i=V;export{D as mergeBundles,i as default,W as SystemBuilder,Q as ResourceManager,P as EventBus,M as EntityManager,L as Bundle};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=281E4BB1A8D4F83A64756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
"import ECSpresso from './ecspresso';\nimport { SystemBuilder } from './system-builder';\nimport Bundle, { mergeBundles } from './bundle';\n\nexport * from './types';\nexport { default as EntityManager } from './entity-manager';\nexport { default as EventBus } from './event-bus';\nexport { default as ResourceManager } from './resource-manager';\nexport { SystemBuilder };\nexport { Bundle, mergeBundles };\nexport default ECSpresso;\n"
|
|
12
12
|
],
|
|
13
13
|
"mappings": "AAEA,MACM,CAA8B,CAC3B,OAAiB,EACjB,SAAgD,IAAI,IACpD,iBAA2D,IAAI,IAEvE,YAAY,EAA2B,CACtC,IAAM,EAAK,KAAK,SACV,EAAiC,CAAE,KAAI,WAAY,CAAC,CAAE,EAE5D,OADA,KAAK,SAAS,IAAI,EAAI,CAAM,EACrB,EAIR,YAAwD,CACvD,EACA,EACA,EACC,CACD,IAAM,EAAS,OAAO,IAAe,SACpC,KAAK,SAAS,IAAI,CAAU,EAC5B,EAED,IAAK,EAAQ,MAAM,IAAI,MAAM,UAAU,kBAA2B,EAKlE,GAHA,EAAO,WAAW,GAAiB,GAG9B,KAAK,iBAAiB,IAAI,CAAa,EAC3C,KAAK,iBAAiB,IAAI,EAAe,IAAI,GAAK,EAGnD,OADA,KAAK,iBAAiB,IAAI,CAAa,GAAG,IAAI,EAAO,EAAE,EAChD,KAGR,eAA2D,CAAC,EAAkB,EAA8B,CAC3G,IAAM,EAAS,KAAK,SAAS,IAAI,CAAQ,EACzC,IAAK,EAAQ,MAAM,IAAI,MAAM,UAAU,kBAAyB,EAEhE,OAAO,EAAO,WAAW,GAGzB,KAAK,iBAAiB,IAAI,CAAa,GAAG,OAAO,CAAQ,EAG1D,YAAwD,CAAC,EAAkB,EAAoE,CAC9I,IAAM,EAAS,KAAK,SAAS,IAAI,CAAQ,EAEzC,IAAK,EAAQ,MAAM,IAAI,MAAM,UAAU,kBAAyB,EAEhE,OAAO,EAAO,WAAW,IAAkB,KAG5C,yBAGC,CACA,EAA0C,CAAC,EAC3C,EAA6C,CAAC,EAC8G,CAE5J,GAAI,EAAS,SAAW,EAAG,CAC1B,GAAI,EAAS,SAAW,EACvB,OAAO,MAAM,KAAK,KAAK,SAAS,OAAO,CAAC,EAGzC,OAAO,MACL,KAAK,KAAK,SAAS,OAAO,CAAC,EAC3B,OAAO,CAAC,IAAW,CACnB,OAAO,EAAS,MAAM,OAAU,KAAQ,EAAO,WAAW,EAC1D,EAIH,IAAM,EAAoB,EAAS,OAAO,CAAC,EAAU,IAAS,CAC7D,IAAM,EAAM,KAAK,iBAAiB,IAAI,CAAI,EACpC,EAAc,EAAM,EAAI,KAAO,EAC/B,EAAe,KAAK,iBAAiB,IAAI,CAAS,GAAG,MAAQ,IAEnE,OAAO,EAAc,EAAe,EAAO,GACzC,EAAS,EAAE,EAMd,OAHmB,MAAM,KAAK,KAAK,iBAAiB,IAAI,CAAiB,GAAK,CAAC,CAAC,EAI9E,OAAO,KAAM,CACb,IAAM,EAAS,KAAK,SAAS,IAAI,CAAE,EACnC,OACC,GACA,EAAS,MAAM,MAAQ,KAAQ,EAAO,WAAU,GAChD,EAAS,MAAM,OAAU,KAAQ,EAAO,WAAW,EAEpD,EACA,IAAI,KAAM,KAAK,SAAS,IAAI,CAAE,CAAE,EAGnC,YAAY,CAAC,EAA2B,CACvC,IAAM,EAAS,KAAK,SAAS,IAAI,CAAQ,EACzC,IAAK,EAAQ,MAAO,GAGpB,QAAW,KAAiB,OAAO,KAAK,EAAO,UAAU,EACxD,KAAK,iBAAiB,IAAI,CAAa,GAAG,OAAO,CAAQ,EAI1D,OAAO,KAAK,SAAS,OAAO,CAAQ,EAGrC,SAAS,CAAC,EAAsD,CAC/D,OAAO,KAAK,SAAS,IAAI,CAAQ,EAEnC,CClHA,MACM,CAAqB,CAClB,SAA4D,IAAI,IAKxE,SAAqC,CACpC,EACA,EACa,CACb,OAAO,KAAK,WAAW,EAAW,EAAU,EAAK,EAMlD,IAAgC,CAC/B,EACA,EACa,CACb,OAAO,KAAK,WAAW,EAAW,EAAU,EAAI,EAMzC,UAAsC,CAC7C,EACA,EACA,EACa,CACb,IAAK,KAAK,SAAS,IAAI,CAAS,EAC/B,KAAK,SAAS,IAAI,EAAW,CAAC,CAAC,EAGhC,IAAM,EAAuC,CAC5C,WACA,MACD,EAKA,OAHA,KAAK,SAAS,IAAI,CAAS,EAAG,KAAK,CAAO,EAGnC,IAAM,CACZ,IAAM,EAAW,KAAK,SAAS,IAAI,CAAS,EAC5C,GAAI,EAAU,CACb,IAAM,EAAQ,EAAS,QAAQ,CAAO,EACtC,GAAI,IAAU,GACb,EAAS,OAAO,EAAO,CAAC,IAM5B,OAAmC,CAClC,EACA,EAAsB,OACf,CACP,IAAM,EAAW,KAAK,SAAS,IAAI,CAAS,EAC5C,IAAK,EAAU,OAGf,IAAM,EAAiB,CAAC,GAAG,CAAQ,EAG7B,EAAwC,CAAC,EAE/C,QAAW,KAAW,EAErB,GADA,EAAQ,SAAS,CAAI,EACjB,EAAQ,KACX,EAAiB,KAAK,CAAO,EAI/B,GAAI,EAAiB,OAAS,EAC7B,QAAW,KAAW,EAAkB,CACvC,IAAM,EAAQ,EAAS,QAAQ,CAAO,EACtC,GAAI,IAAU,GACb,EAAS,OAAO,EAAO,CAAC,GAM5B,KAAK,EAAS,CACb,KAAK,SAAS,MAAM,EAGrB,UAAsC,CAAC,EAAoB,CAC1D,KAAK,SAAS,OAAO,CAAS,EAEhC,CC9FA,MACM,CAAiF,CAC9E,UAA0E,IAAI,IAQtF,GAAkC,CAAC,EAAU,EAA8C,CAE1F,OADA,KAAK,UAAU,IAAI,EAAO,CAAQ,EAC3B,EASR,GAAkC,CAAC,EAA4B,CAC9D,IAAM,EAAW,KAAK,UAAU,IAAI,CAAK,EACzC,GAAI,IAAa,OAChB,MAAM,IAAI,MAAM,YAAY,OAAO,CAAK,aAAa,EAEtD,OAAO,EAQR,WAA0C,CAAC,EAAwC,CAElF,OADiB,KAAK,UAAU,IAAI,CAAK,EAS1C,GAAkC,CAAC,EAAmB,CACrD,OAAO,KAAK,UAAU,IAAI,CAAK,EAQhC,MAAqC,CAAC,EAAmB,CACxD,OAAO,KAAK,UAAU,OAAO,CAAK,EAOnC,OAAO,EAA+B,CACrC,OAAO,MAAM,KAAK,KAAK,UAAU,KAAK,CAAC,EAEzC,eCxDA,MACM,CAIJ,OACsB,SAAU,EACzB,eACA,SAA0E,CAAC,EAC3E,UACA,iBACA,kBAAiC,IAAI,IAE7C,WAAW,EAAG,CACb,KAAK,eAAiB,IAAI,EAC1B,KAAK,UAAY,IAAI,EACrB,KAAK,iBAAmB,IAAI,EAM7B,OAEC,IAAI,EAAwB,CAC5B,QAAW,KAAU,EAAS,CAE7B,GAAI,KAAK,kBAAkB,IAAI,EAAO,EAAE,EAAG,CAC1C,QAAQ,KAAK,UAAU,EAAO,yBAAyB,EACvD,SAGD,IAAM,EAAU,EAAO,WAAW,EAGlC,IAAK,EAAQ,OACZ,QAAQ,KAAK,UAAU,EAAO,mBAAmB,EAIlD,QAAW,KAAU,EAAS,CAE7B,IAAM,EAAc,EAIpB,GAHA,KAAK,SAAS,KAAK,CAAW,EAG1B,EAAY,SACf,EAAY,SACX,KAAK,eACL,KAAK,iBACL,KAAK,SACN,EAID,GAAI,EAAY,cACf,QAAW,KAAa,EAAY,cAAe,CAClD,IAAM,EAAU,EAAY,cAAc,GAC1C,GAAI,GAAS,QAAS,CAErB,IAAM,EAAiB,CAAC,IAAc,CACrC,EAAQ,QACP,EACA,KAAK,eACL,KAAK,iBACL,KAAK,SACN,GAGD,KAAK,UAAU,UAAU,EAAW,CAAc,IAOtD,IAAM,EAAY,EAAO,aAAa,EACtC,QAAY,EAAK,KAAU,EAAU,QAAQ,EAG5C,KAAK,iBAAiB,IAAI,EAAuC,CAAY,EAI9E,KAAK,kBAAkB,IAAI,EAAO,EAAE,EAGrC,OAAO,KAMR,YAAY,CAAC,EAAwB,CACpC,IAAM,EAAQ,KAAK,SAAS,UAAU,KAAU,EAAO,QAAU,CAAK,EACtE,GAAI,IAAU,GAAI,MAAO,GAEzB,IAAM,EAAS,KAAK,SAAS,GAC7B,IAAK,EAAQ,MAAO,GAUpB,OARA,EAAO,WACN,KAAK,eACL,KAAK,iBACL,KAAK,SACN,EAGA,KAAK,SAAS,OAAO,EAAO,CAAC,EACtB,GAMR,WAA0C,CAAC,EAAiB,CAC3D,OAAO,KAAK,iBAAiB,IAAI,CAAG,EAMrC,WAA0C,CAAC,EAAsC,CAChF,OAAO,KAAK,iBAAiB,YAAY,CAAG,EAM7C,kBAAiD,CAAC,EAA0B,CAC3E,OAAO,KAAK,iBAAiB,IAAI,CAAG,EAMrC,WAA0C,CAAC,EAAQ,EAAkC,CAEpF,OADA,KAAK,iBAAiB,IAAI,EAAK,CAAQ,EAChC,KAMR,YAA4C,CAC3C,EACA,EACU,CAEV,OADkB,KAAK,eAAe,aAAa,EAAU,CAAa,IACrD,KAMtB,yBAAyB,CACxB,EACA,EAA8C,CAAC,EAC9C,CACD,OAAO,KAAK,eAAe,0BAC1B,EACA,CACD,EAMD,MAAM,CAAC,EAAmB,CACzB,QAAW,KAAU,KAAK,SAAU,CACnC,IAAK,EAAO,QAAS,SAGrB,IAAM,EAAsC,CAAC,EAG7C,GAAI,EAAO,cAAe,CACzB,QAAW,KAAa,EAAO,cAAe,CAC7C,IAAM,EAAQ,EAAO,cAAc,GACnC,GAAI,EACH,EAAa,GAAa,KAAK,eAAe,0BAC7C,EAAM,KACN,EAAM,SAAW,CAAC,CACnB,EAKF,EAAO,QACN,EACA,EACA,KAAK,eACL,KAAK,iBACL,KAAK,SACN,EAGA,OAAO,QACN,CAAC,EACD,EACA,KAAK,eACL,KAAK,iBACL,KAAK,SACN,MAMC,cAAa,EAAG,CACnB,OAAO,KAAK,kBAGT,SAAQ,EAAG,CACd,OAAO,KAAK,aAGT,gBAAe,EAAG,CACrB,OAAO,KAAK,oBAMT,iBAAgB,EAAa,CAChC,OAAO,MAAM,KAAK,KAAK,iBAAiB,EAE1C,CCrOA,SAAS,CAAgB,EAAW,CACnC,MAAO,UAAU,KAAK,IAAI,EAAE,SAAS,EAAE,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,CAAC,IAOtF,MAAqB,CAInB,CACO,SAA4E,CAAC,EAC7E,WAA2E,IAAI,IAC/E,IAER,WAAW,CAAC,EAAa,CACxB,KAAK,IAAM,GAAM,EAAiB,KAM/B,GAAE,EAAW,CAChB,OAAO,KAAK,OAOT,GAAE,CAAC,EAAe,CACrB,KAAK,IAAM,EAMZ,SAAS,CAAC,EAAe,CACxB,IAAM,EAAS,IAAI,EAAc,EAAO,IAAI,EAI5C,OAFA,KAAK,SAAS,KAAK,CAAM,EAElB,EAQR,WAA0C,CAAC,EAAU,EAA4B,CAEhF,OADA,KAAK,WAAW,IAAI,EAAO,CAAQ,EAC5B,KAOR,UAAU,EAAG,CACZ,OAAO,KAAK,SAAS,IAAI,KAAU,EAAO,MAAM,CAAC,EAMlD,YAAY,EAAiE,CAC5E,OAAO,IAAI,IAAI,KAAK,UAAU,EAQ/B,WAA0C,CAAC,EAAsC,CAChF,OAAO,KAAK,WAAW,IAAI,CAAG,EAM/B,iBAAiB,EAAoE,CACpF,MAAO,CAAC,GAAG,KAAK,QAAQ,EAQzB,WAA0C,CAAC,EAAiB,CAC3D,OAAO,KAAK,WAAW,IAAI,CAAG,EAEhC,CAyBO,SAAS,CAEf,CACA,KACG,EAKF,CACD,GAAI,EAAQ,SAAW,EACtB,OAAO,IAAI,EAAO,CAAE,EAGrB,IAAM,EAAW,IAAI,EAAO,CAAE,EAE9B,QAAW,KAAU,EAAS,CAC7B,QAAW,KAAU,EAAO,kBAAkB,EAC7C,EAAS,UAAU,CAAa,EAIjC,QAAY,EAAO,KAAa,EAAO,aAAa,EAAE,QAAQ,EAC7D,EAAS,YAAY,EAAc,CAAQ,EAI7C,OAAO,EChJD,MAAM,CAKX,CAiBQ,OACA,QAjBD,QAAmB,CAAC,EACpB,gBACA,eACA,eACA,cAWR,WAAW,CACF,EACA,EAAU,IAAI,EACrB,CAFO,cACA,kBAGL,MAAK,EAAG,CACX,OAAO,KAAK,UAGT,OAAM,EAAG,CACZ,OAAO,KAAK,QAMb,QAIC,CACA,EACA,EASC,CAGD,IAAM,EAAa,KAKnB,OAJA,EAAW,QAAU,IACjB,KAAK,SACP,GAAO,CACT,EACO,EAMR,UAAU,CACT,EACoE,CAEpE,OADA,KAAK,gBAAkB,EAChB,KAMR,WAAW,CACV,EACoE,CAEpE,OADA,KAAK,eAAiB,EACf,KAMR,WAAW,CACV,EACoE,CAEpE,OADA,KAAK,eAAiB,EACf,KAMR,gBAAgB,CACf,EAUoE,CAEpE,OADA,KAAK,cAAgB,EACd,KAMR,KAAK,EAAgE,CACpE,IAAM,EAAsE,CAC3E,MAAO,KAAK,OACZ,cAAe,KAAK,OACrB,EAEA,GAAI,KAAK,gBACR,EAAO,QAAU,KAAK,gBAGvB,GAAI,KAAK,eACR,EAAO,SAAW,KAAK,eAGxB,GAAI,KAAK,eACR,EAAO,SAAW,KAAK,eAGxB,GAAI,KAAK,cACR,EAAO,cAAgB,KAAK,cAG7B,OAAO,EAET,CC1IA,IAAe",
|
|
14
|
-
"debugId": "
|
|
14
|
+
"debugId": "281E4BB1A8D4F83A64756E2164756E21",
|
|
15
15
|
"names": []
|
|
16
16
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ecspresso",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1",
|
|
4
4
|
"main": "src/index.ts",
|
|
5
5
|
"module": "src/index.ts",
|
|
6
6
|
"description": "A minimal Entity-Component-System library for typescript and javascript.",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/david0178418/ecspresso"
|
|
10
|
+
},
|
|
7
11
|
"keywords": [
|
|
8
12
|
"game",
|
|
9
13
|
"gamedev",
|
|
@@ -25,8 +29,9 @@
|
|
|
25
29
|
],
|
|
26
30
|
"scripts": {
|
|
27
31
|
"build:clean": "rm -rf dist",
|
|
32
|
+
"build:types": "bun tsc -p tsconfig.build.json",
|
|
28
33
|
"build:ts": "bun build --target=browser --sourcemap=linked --minify --outdir=dist src/index.ts",
|
|
29
|
-
"build": "bun build:clean && bun build:ts",
|
|
34
|
+
"build": "bun build:clean && bun build:ts && bun build:types",
|
|
30
35
|
"prepublishOnly": "bun run build"
|
|
31
36
|
},
|
|
32
37
|
"type": "module"
|