@ecsia/schema 0.1.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/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/index.d.ts +303 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Andy Aragon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# @ecsia/schema
|
|
2
|
+
|
|
3
|
+
The type-level vocabulary for [**ecsia**](https://github.com/andymai/ecsia) — a fast,
|
|
4
|
+
type-safe Entity Component System for TypeScript.
|
|
5
|
+
|
|
6
|
+
`@ecsia/schema` provides the field tokens and the 1..8 arity query inference that the kernel
|
|
7
|
+
and umbrella build on. It is almost entirely compile-time machinery.
|
|
8
|
+
|
|
9
|
+
> **Status:** 0.1.0, unpublished. Most users want the umbrella package
|
|
10
|
+
> [`ecsia`](https://www.npmjs.com/package/ecsia), which re-exports everything you need. This
|
|
11
|
+
> package is pulled in transitively; you rarely depend on it directly.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
pnpm add @ecsia/schema # not yet published — local workspace for now
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Links
|
|
20
|
+
|
|
21
|
+
- Repository & full docs: https://github.com/andymai/ecsia
|
|
22
|
+
- Umbrella package: [`ecsia`](https://github.com/andymai/ecsia)
|
|
23
|
+
|
|
24
|
+
## License
|
|
25
|
+
|
|
26
|
+
[MIT](./LICENSE) © Andy Aragon
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
export type ScalarToken = 'bool' | 'i8' | 'u8' | 'u8c' | 'i16' | 'u16' | 'i32' | 'u32' | 'f32' | 'f64' | 'eid';
|
|
2
|
+
export interface VecToken<E extends ScalarToken, N extends number> {
|
|
3
|
+
readonly kind: 'vec';
|
|
4
|
+
readonly elem: E;
|
|
5
|
+
readonly len: N;
|
|
6
|
+
}
|
|
7
|
+
export interface StaticStringToken<C extends readonly string[]> {
|
|
8
|
+
readonly kind: 'staticString';
|
|
9
|
+
readonly choices: C;
|
|
10
|
+
}
|
|
11
|
+
export interface ObjectToken<T> {
|
|
12
|
+
readonly kind: 'object';
|
|
13
|
+
readonly __t?: T;
|
|
14
|
+
}
|
|
15
|
+
export type RichToken = 'string';
|
|
16
|
+
export interface FieldSpec<F extends BaseFieldToken> {
|
|
17
|
+
readonly __fieldSpec: true;
|
|
18
|
+
readonly token: F;
|
|
19
|
+
readonly default: unknown;
|
|
20
|
+
}
|
|
21
|
+
export type BaseFieldToken = ScalarToken | RichToken | VecToken<ScalarToken, number> | StaticStringToken<readonly string[]> | ObjectToken<unknown>;
|
|
22
|
+
export type FieldToken = BaseFieldToken | FieldSpec<BaseFieldToken>;
|
|
23
|
+
/** Unwrap a {@link FieldSpec} to its inner token; a bare token passes through. */
|
|
24
|
+
export type TokenOf<F extends FieldToken> = F extends FieldSpec<infer T> ? T : F;
|
|
25
|
+
export declare const vec: <E extends ScalarToken, N extends number>(elem: E, len: N) => VecToken<E, N>;
|
|
26
|
+
export declare const vec2: <E extends ScalarToken = "f32">(elem?: E) => VecToken<E, 2>;
|
|
27
|
+
export declare const vec3: <E extends ScalarToken = "f32">(elem?: E) => VecToken<E, 3>;
|
|
28
|
+
export declare const vec4: <E extends ScalarToken = "f32">(elem?: E) => VecToken<E, 4>;
|
|
29
|
+
export declare const staticString: <const C extends readonly string[]>(...choices: C) => StaticStringToken<C>;
|
|
30
|
+
export declare const object: <T>() => ObjectToken<T>;
|
|
31
|
+
export declare const field: <const F extends BaseFieldToken>(token: F, opts: {
|
|
32
|
+
default: FieldValue<F>;
|
|
33
|
+
}) => FieldSpec<F>;
|
|
34
|
+
declare const __brand: unique symbol;
|
|
35
|
+
type Brand<T, B extends string> = T & {
|
|
36
|
+
readonly [__brand]: B;
|
|
37
|
+
};
|
|
38
|
+
export type EntityHandle = Brand<number, 'EntityHandle'>;
|
|
39
|
+
export type ComponentId = Brand<number, 'ComponentId'>;
|
|
40
|
+
export type RelationId = Brand<number, 'RelationId'>;
|
|
41
|
+
export type SystemId = Brand<number, 'SystemId'>;
|
|
42
|
+
export type ArchetypeId = Brand<number, 'ArchetypeId'>;
|
|
43
|
+
export type WorldId = Brand<number, 'WorldId'>;
|
|
44
|
+
export type EntityIndex = Brand<number, 'EntityIndex'>;
|
|
45
|
+
export type Tick = Brand<number, 'Tick'>;
|
|
46
|
+
export type ScalarValue<T extends ScalarToken> = T extends 'bool' ? boolean : T extends 'eid' ? EntityHandle : number;
|
|
47
|
+
export interface VecView<E extends ScalarToken, N extends number> {
|
|
48
|
+
readonly length: N;
|
|
49
|
+
[index: number]: ScalarValue<E>;
|
|
50
|
+
x: ScalarValue<E>;
|
|
51
|
+
y: N extends 1 ? never : ScalarValue<E>;
|
|
52
|
+
z: N extends 1 | 2 ? never : ScalarValue<E>;
|
|
53
|
+
w: N extends 1 | 2 | 3 ? never : ScalarValue<E>;
|
|
54
|
+
}
|
|
55
|
+
export interface ReadonlyVecView<E extends ScalarToken, N extends number> {
|
|
56
|
+
readonly length: N;
|
|
57
|
+
readonly [index: number]: ScalarValue<E>;
|
|
58
|
+
readonly x: ScalarValue<E>;
|
|
59
|
+
readonly y: N extends 1 ? never : ScalarValue<E>;
|
|
60
|
+
readonly z: N extends 1 | 2 ? never : ScalarValue<E>;
|
|
61
|
+
readonly w: N extends 1 | 2 | 3 ? never : ScalarValue<E>;
|
|
62
|
+
}
|
|
63
|
+
export type FieldValue<F extends FieldToken> = F extends FieldSpec<infer Inner> ? FieldValue<Inner> : F extends 'string' ? string : F extends ScalarToken ? ScalarValue<F> : F extends VecToken<infer E, infer N> ? VecView<E, N> : F extends StaticStringToken<infer C> ? C[number] : F extends ObjectToken<infer T> ? T : never;
|
|
64
|
+
export type TypedArrayCtor = Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor;
|
|
65
|
+
export interface FieldDescriptor {
|
|
66
|
+
readonly name: string;
|
|
67
|
+
readonly token: FieldToken;
|
|
68
|
+
/** null iff object-token (not column-backed). */
|
|
69
|
+
readonly ctor: TypedArrayCtor | null;
|
|
70
|
+
readonly bytesPerElem: number;
|
|
71
|
+
/** Slots per row: 1 scalar, N vec, 1 staticString index, 0 object. */
|
|
72
|
+
readonly stride: number;
|
|
73
|
+
/** false for object-token AND 'string'; gates worker use. */
|
|
74
|
+
readonly shareable: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* The sidecar kind for a non-column rich field; undefined for column-backed fields.
|
|
77
|
+
* `ctor === null ⟺ rich !== undefined ⟺ shareable === false`.
|
|
78
|
+
*/
|
|
79
|
+
readonly rich?: 'string' | 'object';
|
|
80
|
+
readonly encode: (v: unknown) => number;
|
|
81
|
+
readonly decode: (slot: number) => unknown;
|
|
82
|
+
/** staticString only. */
|
|
83
|
+
readonly choices?: readonly string[];
|
|
84
|
+
readonly default: unknown;
|
|
85
|
+
readonly needsExplicitInit: boolean;
|
|
86
|
+
}
|
|
87
|
+
export type StorageStrategy = 'packed' | 'sparse';
|
|
88
|
+
export interface ComponentOptions {
|
|
89
|
+
readonly storage?: StorageStrategy;
|
|
90
|
+
readonly maxHistory?: number;
|
|
91
|
+
}
|
|
92
|
+
export type Schema = Readonly<Record<string, FieldToken>>;
|
|
93
|
+
type FieldValueRW<F extends FieldToken, RW extends 'r' | 'w'> = F extends FieldSpec<infer Inner> ? FieldValueRW<Inner, RW> : F extends VecToken<infer E, infer N> ? RW extends 'r' ? ReadonlyVecView<E, N> : VecView<E, N> : F extends ObjectToken<infer T> ? RW extends 'r' ? Readonly<T> : T : FieldValue<F>;
|
|
94
|
+
export type ReadView<S extends Schema> = {
|
|
95
|
+
readonly [K in keyof S]: FieldValueRW<S[K], 'r'>;
|
|
96
|
+
};
|
|
97
|
+
export type WriteView<S extends Schema> = {
|
|
98
|
+
-readonly [K in keyof S]: FieldValueRW<S[K], 'w'>;
|
|
99
|
+
};
|
|
100
|
+
export interface ComponentDef<S extends Schema, N extends string = string> {
|
|
101
|
+
readonly schema: S;
|
|
102
|
+
readonly fields: readonly FieldDescriptor[];
|
|
103
|
+
/** Assigned at world registration; UNREGISTERED (-1) until then. */
|
|
104
|
+
readonly id: ComponentId;
|
|
105
|
+
readonly name: N;
|
|
106
|
+
readonly options: Required<ComponentOptions>;
|
|
107
|
+
readonly __nominalBrand?: string;
|
|
108
|
+
/** phantom carriers — never assigned a value; exist purely for inference. */
|
|
109
|
+
readonly __read?: ReadView<S>;
|
|
110
|
+
readonly __write?: WriteView<S>;
|
|
111
|
+
}
|
|
112
|
+
export type SchemaOf<C> = C extends ComponentDef<infer S> ? S : never;
|
|
113
|
+
export type ReadOf<C> = ReadView<SchemaOf<C>>;
|
|
114
|
+
export type WriteOf<C> = WriteView<SchemaOf<C>>;
|
|
115
|
+
export type SpawnTuple<C extends ComponentDef<Schema> = ComponentDef<Schema>> = readonly [
|
|
116
|
+
C,
|
|
117
|
+
Partial<WriteView<SchemaOf<C>>>
|
|
118
|
+
];
|
|
119
|
+
export type SpawnArg = ComponentDef<Schema> | SpawnTuple;
|
|
120
|
+
/**
|
|
121
|
+
* Per-element constraint: when an arg is a `[def, values]` tuple, re-type its value slot as the partial
|
|
122
|
+
* write view of THAT def's schema so each tuple's values are checked against its own component.
|
|
123
|
+
*/
|
|
124
|
+
export type SpawnArgFor<E> = E extends readonly [infer C, unknown] ? C extends ComponentDef<Schema> ? readonly [C, Partial<WriteView<SchemaOf<C>>>] : E : E;
|
|
125
|
+
export interface AccessorInstance {
|
|
126
|
+
__idx: number;
|
|
127
|
+
}
|
|
128
|
+
export interface TypedArrayLike {
|
|
129
|
+
readonly length: number;
|
|
130
|
+
[index: number]: number;
|
|
131
|
+
}
|
|
132
|
+
export interface ColumnBinding {
|
|
133
|
+
view: TypedArrayLike;
|
|
134
|
+
readonly byteOffset: number;
|
|
135
|
+
readonly element: string;
|
|
136
|
+
}
|
|
137
|
+
export type AccessorFactory<S extends Schema> = (columns: ReadonlyArray<ColumnBinding>) => new () => WriteView<S> & AccessorInstance & {
|
|
138
|
+
__rebind(newBacking: SharedArrayBuffer | ArrayBuffer): void;
|
|
139
|
+
};
|
|
140
|
+
export declare const NO_ENTITY: EntityHandle;
|
|
141
|
+
export declare const NULL_ENTITY: EntityHandle;
|
|
142
|
+
export declare const MAX_QUERY_ARITY = 8;
|
|
143
|
+
export interface RelationDef<P extends Schema | void> {
|
|
144
|
+
readonly id: RelationId;
|
|
145
|
+
readonly name: string;
|
|
146
|
+
readonly payload: P extends Schema ? P : null;
|
|
147
|
+
readonly exclusive: boolean;
|
|
148
|
+
readonly cascade: 'none' | 'deleteSubject' | 'removeRelation';
|
|
149
|
+
/** phantom payload carriers — never assigned a value; exist purely for inference. */
|
|
150
|
+
readonly __payloadRead?: P extends Schema ? ReadView<P> : never;
|
|
151
|
+
readonly __payloadWrite?: P extends Schema ? WriteView<P> : never;
|
|
152
|
+
}
|
|
153
|
+
export interface RelationOptions {
|
|
154
|
+
readonly exclusive?: boolean;
|
|
155
|
+
readonly cascade?: 'none' | 'deleteSubject' | 'removeRelation';
|
|
156
|
+
}
|
|
157
|
+
/** The wildcard target sentinel: `Pair(R, Wildcard)` matches every `R`-pair via the presence bit. */
|
|
158
|
+
export declare const Wildcard: unique symbol;
|
|
159
|
+
export type WildcardToken = typeof Wildcard;
|
|
160
|
+
export interface PairDef<R extends RelationDef<Schema | void>> {
|
|
161
|
+
readonly relation: R;
|
|
162
|
+
readonly target: EntityHandle | WildcardToken;
|
|
163
|
+
/** Synthetic ComponentId minted at addPair; UNREGISTERED (-1) for a query-only pair. */
|
|
164
|
+
readonly id: ComponentId;
|
|
165
|
+
/** A pair carries its relation's payload schema as its read/write views. */
|
|
166
|
+
readonly __read?: R extends RelationDef<infer P> ? (P extends Schema ? ReadView<P> : Record<never, never>) : Record<never, never>;
|
|
167
|
+
readonly __write?: R extends RelationDef<infer P> ? (P extends Schema ? WriteView<P> : Record<never, never>) : Record<never, never>;
|
|
168
|
+
}
|
|
169
|
+
export interface ReadTerm<C> {
|
|
170
|
+
readonly __term: 'read';
|
|
171
|
+
readonly c: C;
|
|
172
|
+
}
|
|
173
|
+
export interface WriteTerm<C> {
|
|
174
|
+
readonly __term: 'write';
|
|
175
|
+
readonly c: C;
|
|
176
|
+
}
|
|
177
|
+
export interface HasTerm<C> {
|
|
178
|
+
readonly __term: 'has';
|
|
179
|
+
readonly c: C;
|
|
180
|
+
}
|
|
181
|
+
export interface WithoutTerm<C> {
|
|
182
|
+
readonly __term: 'without';
|
|
183
|
+
readonly c: C;
|
|
184
|
+
}
|
|
185
|
+
export interface OptionalTerm<C> {
|
|
186
|
+
readonly __term: 'optional';
|
|
187
|
+
readonly c: C;
|
|
188
|
+
}
|
|
189
|
+
export declare const read: <C>(c: C) => ReadTerm<C>;
|
|
190
|
+
export declare const write: <C>(c: C) => WriteTerm<C>;
|
|
191
|
+
export declare const has: <C>(c: C) => HasTerm<C>;
|
|
192
|
+
export declare const without: <C>(c: C) => WithoutTerm<C>;
|
|
193
|
+
export declare const optional: <C>(c: C) => OptionalTerm<C>;
|
|
194
|
+
export type QueryTerm = ReadTerm<unknown> | WriteTerm<unknown> | HasTerm<unknown> | WithoutTerm<unknown> | OptionalTerm<unknown> | PairDef<RelationDef<Schema | void>> | ComponentDef<Schema>;
|
|
195
|
+
export type Has<C extends ComponentDef<Schema>> = {
|
|
196
|
+
readonly [K in CompKey<C>]: ReadOf<C>;
|
|
197
|
+
};
|
|
198
|
+
export type HasWrite<C extends ComponentDef<Schema>> = {
|
|
199
|
+
[K in CompKey<C>]: WriteOf<C>;
|
|
200
|
+
};
|
|
201
|
+
export type CompKey<C> = C extends {
|
|
202
|
+
name: infer N extends string;
|
|
203
|
+
} ? N : never;
|
|
204
|
+
type PairValue<P extends PairDef<RelationDef<Schema | void>>, RW extends 'r' | 'w'> = P extends PairDef<infer R> ? R extends RelationDef<infer Pay> ? Pay extends Schema ? RW extends 'r' ? ReadView<Pay> : WriteView<Pay> : Record<never, never> : Record<never, never> : Record<never, never>;
|
|
205
|
+
export type TermElement<T> = T extends WriteTerm<infer C> ? {
|
|
206
|
+
[K in CompKey<C>]: WriteOf<C>;
|
|
207
|
+
} : T extends ReadTerm<infer C> ? {
|
|
208
|
+
[K in CompKey<C>]: ReadOf<C>;
|
|
209
|
+
} : T extends OptionalTerm<infer C> ? {
|
|
210
|
+
[K in CompKey<C>]: ReadOf<C> | undefined;
|
|
211
|
+
} : T extends HasTerm<infer _C> ? Record<never, never> : T extends WithoutTerm<infer _C> ? Record<never, never> : T extends PairDef<RelationDef<Schema | void>> ? T extends {
|
|
212
|
+
relation: {
|
|
213
|
+
name: infer N extends string;
|
|
214
|
+
};
|
|
215
|
+
} ? {
|
|
216
|
+
[K in N]: PairValue<T, 'r'>;
|
|
217
|
+
} : Record<never, never> : T extends ComponentDef<Schema> ? {
|
|
218
|
+
[K in CompKey<T>]: ReadOf<T>;
|
|
219
|
+
} : Record<never, never>;
|
|
220
|
+
export type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
221
|
+
export type QueryElement<Terms extends readonly QueryTerm[]> = readonly QueryTerm[] extends Terms ? LooseQueryElement : UnionToIntersection<{
|
|
222
|
+
[I in keyof Terms]: TermElement<Terms[I]>;
|
|
223
|
+
}[number]>;
|
|
224
|
+
export type LooseQueryElement = Readonly<Record<string, Readonly<Record<string, unknown>>>> & {
|
|
225
|
+
handle: EntityHandle;
|
|
226
|
+
};
|
|
227
|
+
export interface QueryChunk {
|
|
228
|
+
/** Rows in this chunk (the archetype's dense row count). Iterate `0..count`. */
|
|
229
|
+
readonly count: number;
|
|
230
|
+
/** Dense row→EntityHandle list (row `r`'s entity is `entities[r]`). */
|
|
231
|
+
readonly entities: Uint32Array;
|
|
232
|
+
/** The live typed column view for `def.field`. Stride-1 scalars index by row directly. */
|
|
233
|
+
column<S extends Schema>(def: ComponentDef<S>, field: string): ArrayLike<number> & {
|
|
234
|
+
[i: number]: number;
|
|
235
|
+
};
|
|
236
|
+
/** Slots per row for `def.field` (1 scalar, N vec): row `r` starts at `r * stride`. */
|
|
237
|
+
stride<S extends Schema>(def: ComponentDef<S>, field: string): number;
|
|
238
|
+
}
|
|
239
|
+
export interface Query<Terms extends readonly QueryTerm[]> {
|
|
240
|
+
readonly terms: Terms;
|
|
241
|
+
/** Iterate every matching entity; `e` is the pooled element (do NOT store it across iterations). */
|
|
242
|
+
each(fn: (e: QueryElement<Terms> & {
|
|
243
|
+
handle: EntityHandle;
|
|
244
|
+
}) => void): void;
|
|
245
|
+
[Symbol.iterator](): Iterator<QueryElement<Terms> & {
|
|
246
|
+
handle: EntityHandle;
|
|
247
|
+
}>;
|
|
248
|
+
/** Opt-in SoA fast path: one reused {@link QueryChunk} per matched hot archetype, with
|
|
249
|
+
* raw typed column views + a row span. Bypasses the per-row accessor AND the reactivity write log. */
|
|
250
|
+
eachChunk(fn: (chunk: QueryChunk) => void): void;
|
|
251
|
+
/** Flavor declarations (chainable). */
|
|
252
|
+
added(): this;
|
|
253
|
+
removed(): this;
|
|
254
|
+
changed(...components: ComponentDef<Schema>[]): this;
|
|
255
|
+
/** Flavor result iterators (entities entered/left/changed this frame). */
|
|
256
|
+
eachAdded(fn: (e: QueryElement<Terms> & {
|
|
257
|
+
handle: EntityHandle;
|
|
258
|
+
}) => void): void;
|
|
259
|
+
eachRemoved(fn: (index: number, handle: EntityHandle) => void): void;
|
|
260
|
+
eachChanged(fn: (e: QueryElement<Terms> & {
|
|
261
|
+
handle: EntityHandle;
|
|
262
|
+
}) => void): void;
|
|
263
|
+
/** Count of currently-matching entities. O(1). */
|
|
264
|
+
readonly count: number;
|
|
265
|
+
}
|
|
266
|
+
export interface LooseQuery {
|
|
267
|
+
readonly terms: readonly QueryTerm[];
|
|
268
|
+
each<EL = LooseQueryElement>(fn: (e: EL & {
|
|
269
|
+
handle: EntityHandle;
|
|
270
|
+
}) => void): void;
|
|
271
|
+
[Symbol.iterator](): Iterator<LooseQueryElement>;
|
|
272
|
+
/** Opt-in SoA fast path: see {@link Query.eachChunk}. */
|
|
273
|
+
eachChunk(fn: (chunk: QueryChunk) => void): void;
|
|
274
|
+
/** Flavor declarations (chainable). */
|
|
275
|
+
added(): this;
|
|
276
|
+
removed(): this;
|
|
277
|
+
changed(...components: ComponentDef<Schema>[]): this;
|
|
278
|
+
eachAdded<EL = LooseQueryElement>(fn: (e: EL & {
|
|
279
|
+
handle: EntityHandle;
|
|
280
|
+
}) => void): void;
|
|
281
|
+
eachRemoved(fn: (index: number, handle: EntityHandle) => void): void;
|
|
282
|
+
eachChanged<EL = LooseQueryElement>(fn: (e: EL & {
|
|
283
|
+
handle: EntityHandle;
|
|
284
|
+
}) => void): void;
|
|
285
|
+
/** Count of currently-matching entities. O(1). */
|
|
286
|
+
readonly count: number;
|
|
287
|
+
}
|
|
288
|
+
export interface WorldQuery {
|
|
289
|
+
<T0 extends QueryTerm>(...terms: [T0]): Query<[T0]>;
|
|
290
|
+
<T0 extends QueryTerm, T1 extends QueryTerm>(...terms: [T0, T1]): Query<[T0, T1]>;
|
|
291
|
+
<T0 extends QueryTerm, T1 extends QueryTerm, T2 extends QueryTerm>(...terms: [T0, T1, T2]): Query<[T0, T1, T2]>;
|
|
292
|
+
<T0 extends QueryTerm, T1 extends QueryTerm, T2 extends QueryTerm, T3 extends QueryTerm>(...terms: [T0, T1, T2, T3]): Query<[T0, T1, T2, T3]>;
|
|
293
|
+
<T0 extends QueryTerm, T1 extends QueryTerm, T2 extends QueryTerm, T3 extends QueryTerm, T4 extends QueryTerm>(...terms: [T0, T1, T2, T3, T4]): Query<[T0, T1, T2, T3, T4]>;
|
|
294
|
+
<T0 extends QueryTerm, T1 extends QueryTerm, T2 extends QueryTerm, T3 extends QueryTerm, T4 extends QueryTerm, T5 extends QueryTerm>(...terms: [T0, T1, T2, T3, T4, T5]): Query<[T0, T1, T2, T3, T4, T5]>;
|
|
295
|
+
<T0 extends QueryTerm, T1 extends QueryTerm, T2 extends QueryTerm, T3 extends QueryTerm, T4 extends QueryTerm, T5 extends QueryTerm, T6 extends QueryTerm>(...terms: [T0, T1, T2, T3, T4, T5, T6]): Query<[T0, T1, T2, T3, T4, T5, T6]>;
|
|
296
|
+
<T0 extends QueryTerm, T1 extends QueryTerm, T2 extends QueryTerm, T3 extends QueryTerm, T4 extends QueryTerm, T5 extends QueryTerm, T6 extends QueryTerm, T7 extends QueryTerm>(...terms: [T0, T1, T2, T3, T4, T5, T6, T7]): Query<[T0, T1, T2, T3, T4, T5, T6, T7]>;
|
|
297
|
+
/** 9+: degraded overload — returns a LooseQuery whose element is the typed LooseQueryElement and
|
|
298
|
+
* whose `each` is generic-on-element for the explicit Has/HasWrite escape hatch. Compile
|
|
299
|
+
* time stays bounded: the catch-all stops the variadic fold entirely. */
|
|
300
|
+
(...terms: QueryTerm[]): LooseQuery;
|
|
301
|
+
}
|
|
302
|
+
export {};
|
|
303
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// @ecsia/schema — type-level field tokens + per-component inference.
|
|
2
|
+
// Type-only for the inference surface; the runtime carries only the token constructors so
|
|
3
|
+
// `vec`/`staticString`/`object` call-sites stay literal-typed. @ecsia/core consumes these; the
|
|
4
|
+
// dependency is one-directional (schema never imports core) to keep the graph acyclic.
|
|
5
|
+
// Token constructors — keep call-sites literal-typed without caller `as const`.
|
|
6
|
+
export const vec = (elem, len) => ({
|
|
7
|
+
kind: 'vec',
|
|
8
|
+
elem,
|
|
9
|
+
len,
|
|
10
|
+
});
|
|
11
|
+
export const vec2 = (elem) => vec((elem ?? 'f32'), 2);
|
|
12
|
+
export const vec3 = (elem) => vec((elem ?? 'f32'), 3);
|
|
13
|
+
export const vec4 = (elem) => vec((elem ?? 'f32'), 4);
|
|
14
|
+
export const staticString = (...choices) => ({
|
|
15
|
+
kind: 'staticString',
|
|
16
|
+
choices,
|
|
17
|
+
});
|
|
18
|
+
export const object = () => ({ kind: 'object' });
|
|
19
|
+
// Wrap any token with a user-overridable default. Additive: bare tokens still
|
|
20
|
+
// work unwrapped; `field(token, { default })` carries the default through to the FieldDescriptor.
|
|
21
|
+
export const field = (token, opts) => ({
|
|
22
|
+
__fieldSpec: true,
|
|
23
|
+
token,
|
|
24
|
+
default: opts.default,
|
|
25
|
+
});
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// +
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
export const NO_ENTITY = 0xffffffff;
|
|
30
|
+
export const NULL_ENTITY = NO_ENTITY;
|
|
31
|
+
export const MAX_QUERY_ARITY = 8;
|
|
32
|
+
export const read = (c) => ({ __term: 'read', c });
|
|
33
|
+
export const write = (c) => ({ __term: 'write', c });
|
|
34
|
+
export const has = (c) => ({ __term: 'has', c });
|
|
35
|
+
export const without = (c) => ({ __term: 'without', c });
|
|
36
|
+
export const optional = (c) => ({ __term: 'optional', c });
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,0FAA0F;AAC1F,+FAA+F;AAC/F,uFAAuF;AA6DvF,gFAAgF;AAChF,MAAM,CAAC,MAAM,GAAG,GAAG,CAA0C,IAAO,EAAE,GAAM,EAAkB,EAAE,CAAC,CAAC;IAChG,IAAI,EAAE,KAAK;IACX,IAAI;IACJ,GAAG;CACJ,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAgC,IAAQ,EAAkB,EAAE,CAC9E,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAM,EAAE,CAAU,CAAC,CAAA;AACvC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAgC,IAAQ,EAAkB,EAAE,CAC9E,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAM,EAAE,CAAU,CAAC,CAAA;AACvC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAgC,IAAQ,EAAkB,EAAE,CAC9E,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAM,EAAE,CAAU,CAAC,CAAA;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAoC,GAAG,OAAU,EAAwB,EAAE,CAAC,CAAC;IACvG,IAAI,EAAE,cAAc;IACpB,OAAO;CACR,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAsB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AAEnE,8EAA8E;AAC9E,kGAAkG;AAClG,MAAM,CAAC,MAAM,KAAK,GAAG,CAAiC,KAAQ,EAAE,IAAgC,EAAgB,EAAE,CAAC,CAAC;IAClH,WAAW,EAAE,IAAI;IACjB,KAAK;IACL,OAAO,EAAE,IAAI,CAAC,OAAO;CACtB,CAAC,CAAA;AAsMF,8EAA8E;AAC9E,IAAI;AACJ,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG,UAA0B,CAAA;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAA;AAEpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAA;AAiEhC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,CAAI,EAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;AACrE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAI,CAAI,EAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,CAAI,EAAc,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,CAAI,EAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;AAC9E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,CAAI,EAAmB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ecsia/schema",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Component schema tokens and query type inference for ecsia.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ecs",
|
|
7
|
+
"entity-component-system",
|
|
8
|
+
"ecsia",
|
|
9
|
+
"schema",
|
|
10
|
+
"type-level",
|
|
11
|
+
"typescript",
|
|
12
|
+
"data-oriented"
|
|
13
|
+
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"author": "Andy Aragon",
|
|
16
|
+
"homepage": "https://github.com/andymai/ecsia",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/andymai/ecsia.git",
|
|
20
|
+
"directory": "packages/schema"
|
|
21
|
+
},
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/andymai/ecsia/issues"
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=22.13"
|
|
27
|
+
},
|
|
28
|
+
"type": "module",
|
|
29
|
+
"sideEffects": false,
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"default": "./dist/index.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"main": "./dist/index.js",
|
|
37
|
+
"types": "./dist/index.d.ts",
|
|
38
|
+
"files": [
|
|
39
|
+
"dist"
|
|
40
|
+
],
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "tsc -b"
|
|
46
|
+
}
|
|
47
|
+
}
|