@typeonce/ritmo 0.7.0 → 0.8.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/dist/Command.d.ts +102 -17
- package/dist/Command.d.ts.map +1 -1
- package/dist/Command.js +10 -8
- package/dist/Command.js.map +1 -1
- package/dist/Condition.d.ts +12 -1
- package/dist/Condition.d.ts.map +1 -1
- package/dist/Condition.js.map +1 -1
- package/dist/Debug.d.ts +63 -7
- package/dist/Debug.d.ts.map +1 -1
- package/dist/Descriptor.d.ts +36 -3
- package/dist/Descriptor.d.ts.map +1 -1
- package/dist/Descriptor.js +11 -3
- package/dist/Descriptor.js.map +1 -1
- package/dist/Entity.d.ts +12 -4
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js.map +1 -1
- package/dist/EntityScope.d.ts +20 -1
- package/dist/EntityScope.d.ts.map +1 -1
- package/dist/EntityScope.js +8 -2
- package/dist/EntityScope.js.map +1 -1
- package/dist/Machine.d.ts +55 -33
- package/dist/Machine.d.ts.map +1 -1
- package/dist/Machine.js +6 -2
- package/dist/Machine.js.map +1 -1
- package/dist/Query.d.ts +48 -4
- package/dist/Query.d.ts.map +1 -1
- package/dist/Query.js +32 -4
- package/dist/Query.js.map +1 -1
- package/dist/Runtime.d.ts +3 -0
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +330 -24
- package/dist/Runtime.js.map +1 -1
- package/dist/Schema.d.ts +141 -25
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +29 -3
- package/dist/Schema.js.map +1 -1
- package/dist/Snapshot.d.ts +14 -0
- package/dist/Snapshot.d.ts.map +1 -1
- package/dist/Snapshot.js.map +1 -1
- package/dist/System.d.ts +64 -7
- package/dist/System.d.ts.map +1 -1
- package/dist/System.js +32 -0
- package/dist/System.js.map +1 -1
- package/dist/internal/debug.d.ts +7 -0
- package/dist/internal/debug.d.ts.map +1 -1
- package/dist/internal/debug.js +97 -6
- package/dist/internal/debug.js.map +1 -1
- package/dist/internal/equal.d.ts +8 -0
- package/dist/internal/equal.d.ts.map +1 -0
- package/dist/internal/equal.js +38 -0
- package/dist/internal/equal.js.map +1 -0
- package/dist/internal/fragments.d.ts.map +1 -1
- package/dist/internal/fragments.js +11 -1
- package/dist/internal/fragments.js.map +1 -1
- package/dist/internal/game.d.ts.map +1 -1
- package/dist/internal/game.js +33 -5
- package/dist/internal/game.js.map +1 -1
- package/dist/internal/order.d.ts.map +1 -1
- package/dist/internal/order.js +4 -2
- package/dist/internal/order.js.map +1 -1
- package/dist/internal/queries.d.ts.map +1 -1
- package/dist/internal/queries.js +30 -8
- package/dist/internal/queries.js.map +1 -1
- package/dist/internal/requirements.d.ts +26 -0
- package/dist/internal/requirements.d.ts.map +1 -0
- package/dist/internal/requirements.js +46 -0
- package/dist/internal/requirements.js.map +1 -0
- package/package.json +1 -1
- package/src/Command.ts +149 -29
- package/src/Condition.ts +17 -1
- package/src/Debug.ts +64 -7
- package/src/Descriptor.ts +55 -10
- package/src/Entity.ts +13 -4
- package/src/EntityScope.ts +21 -2
- package/src/Machine.ts +68 -34
- package/src/Query.ts +71 -7
- package/src/Runtime.ts +336 -22
- package/src/Schema.ts +185 -28
- package/src/Snapshot.ts +4 -0
- package/src/System.ts +75 -6
- package/src/internal/debug.ts +104 -8
- package/src/internal/equal.ts +31 -0
- package/src/internal/fragments.ts +12 -2
- package/src/internal/game.ts +51 -5
- package/src/internal/order.ts +8 -4
- package/src/internal/queries.ts +34 -10
- package/src/internal/requirements.ts +71 -0
package/dist/internal/queries.js
CHANGED
|
@@ -125,11 +125,11 @@ export const makeQueryEngine = (world) => {
|
|
|
125
125
|
withoutRelations: query.withoutRelations,
|
|
126
126
|
withRelated: unique(withRelated),
|
|
127
127
|
withoutRelated: query.withoutRelated,
|
|
128
|
-
filters: query.filters.map((filter) => {
|
|
129
|
-
const ordinal = world.ordinalOf(
|
|
128
|
+
filters: query.filters.map((filter) => (filter.kind === "anyOf" ? filter.filters : [filter]).map((member) => {
|
|
129
|
+
const ordinal = world.ordinalOf(member.descriptor);
|
|
130
130
|
world.trackChanges(ordinal);
|
|
131
|
-
return { kind:
|
|
132
|
-
}),
|
|
131
|
+
return { kind: member.kind, ordinal };
|
|
132
|
+
})),
|
|
133
133
|
slots,
|
|
134
134
|
proofSlots,
|
|
135
135
|
writeSlots,
|
|
@@ -182,14 +182,36 @@ export const makeQueryEngine = (world) => {
|
|
|
182
182
|
};
|
|
183
183
|
const matchesFilters = (state, record, since) => {
|
|
184
184
|
for (const filter of state.filters) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
185
|
+
let matched = false;
|
|
186
|
+
for (const member of filter) {
|
|
187
|
+
matched = member.kind === "added"
|
|
188
|
+
? world.addedSince(record, member.ordinal, since)
|
|
189
|
+
: world.changedSince(record, member.ordinal, since);
|
|
190
|
+
if (matched)
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
188
193
|
if (!matched)
|
|
189
194
|
return false;
|
|
190
195
|
}
|
|
191
196
|
return true;
|
|
192
197
|
};
|
|
198
|
+
/**
|
|
199
|
+
* Ids that may pass one filter (may repeat), or `undefined` when a change
|
|
200
|
+
* log no longer covers `since`. An `anyOf` is the union of its members' logs.
|
|
201
|
+
*/
|
|
202
|
+
const filterCandidates = (filter, since) => {
|
|
203
|
+
if (filter.length === 1)
|
|
204
|
+
return world.changedCandidates(filter[0].ordinal, since);
|
|
205
|
+
const union = [];
|
|
206
|
+
for (const member of filter) {
|
|
207
|
+
const logged = world.changedCandidates(member.ordinal, since);
|
|
208
|
+
if (logged === undefined)
|
|
209
|
+
return undefined;
|
|
210
|
+
for (const id of logged)
|
|
211
|
+
union.push(id);
|
|
212
|
+
}
|
|
213
|
+
return union;
|
|
214
|
+
};
|
|
193
215
|
const relatedIds = (relation, id) => world.relatedSourceIds(relation, id).map(world.entityIdOf);
|
|
194
216
|
const makeCell = (plan, record) => {
|
|
195
217
|
switch (plan.mode) {
|
|
@@ -363,7 +385,7 @@ export const makeQueryEngine = (world) => {
|
|
|
363
385
|
// bounds the candidates for either filter.
|
|
364
386
|
let candidates;
|
|
365
387
|
for (const filter of state.filters) {
|
|
366
|
-
const logged =
|
|
388
|
+
const logged = filterCandidates(filter, since);
|
|
367
389
|
if (logged === undefined)
|
|
368
390
|
continue;
|
|
369
391
|
if (logged.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/internal/queries.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/internal/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,gBAAgB,MAAM,kBAAkB,CAAA;AAEpD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAGpC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAkDnC,MAAM,MAAM,GAAG,CAAI,MAAwB,EAAoB,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAEtF;;GAEG;AACH,MAAM,SAAS,GAAG,CAAC,MAAoB,EAAE,KAA+C,EAAU,EAAE;IAClG,MAAM,KAAK,GAAG,EAAE,CAAA;IAChB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;YACjC,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;SAClC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU;IACL,IAAI,CAA2B;IAC/B,EAAE,CAA2B;IAC7B,YAAY,CAAW;IACvB,MAAM,CAAY;IAClB,OAAO,CAAc;IAC9B,MAAM,CAAoB;IAC1B,SAAS,CAAoB;IAE7B,YAAY,KAAiB,EAAE,MAAoB;QACjD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;QACnE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC3E,CAAC;CACF;AAID,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,EAAE;IAC9C,MAAM,MAAM,GAAG,IAAI,OAAO,EAAwB,CAAA;IAClD,IAAI,WAAW,GAAG,CAAC,CAAA;IAEnB,MAAM,OAAO,GAAG,CAAC,KAAe,EAAc,EAAE;QAC9C,MAAM,QAAQ,GAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QAC3F,MAAM,aAAa,GAAiC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;QAC5E,MAAM,WAAW,GAAiC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAA;QACxE,MAAM,KAAK,GAAoB,EAAE,CAAA;QACjC,MAAM,UAAU,GAAqC,EAAE,CAAA;QACvD,MAAM,UAAU,GAAqC,EAAE,CAAA;QAEvD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC;gBACZ,KAAK,OAAO,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;oBAClD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACtB,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;oBAChC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5B,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;wBAChC,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI;4BACJ,IAAI,EAAE,OAAO;4BACb,OAAO;4BACP,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;4BAC9D,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;yBACpG,CAAC,CAAA;oBACJ,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;oBAC7C,CAAC;oBACD,MAAK;gBACP,CAAC;gBACD,KAAK,UAAU;oBACb,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;oBACnF,MAAK;gBACP,KAAK,cAAc;oBACjB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;oBACrC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;oBACpE,MAAK;gBACP,KAAK,aAAa;oBAChB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;oBACnC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;oBACpE,MAAK;gBACP,KAAK,kBAAkB,CAAC;gBACxB,KAAK,iBAAiB;oBACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;oBACpE,MAAK;YACT,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;QACvD,MAAM,YAAY,GAAG,MAAM,CAAC;YAC1B,GAAG,aAAa;YAChB,GAAG,KAAK,CAAC,gBAAgB;YACzB,GAAG,WAAW;YACd,GAAG,KAAK,CAAC,cAAc;SACxB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QAElC,OAAO;YACL,OAAO,EAAE,WAAW,EAAE;YACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;YACxB,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;YACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;YAChC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnE,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAClD,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;gBAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAA;YACvC,CAAC,CAAC,CACH;YACD,KAAK;YACL,UAAU;YACV,UAAU;YACV,aAAa;YACb,YAAY;YACZ,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,YAAY,EAAE,CAAC,CAAC;YAChB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,EAAE;SACZ,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,KAAe,EAAc,EAAE;QAC9C,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC1B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,gBAAgB,GAAG,CAAC,KAAiB,EAAE,MAAoB,EAAW,EAAE;QAC5E,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAA;QAC/C,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAA;QAC9C,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;QAC3E,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;QAC3E,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;QAC5E,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAA;QAC1E,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,KAAiB,EAAE,MAAoB,EAAE,KAAa,EAAW,EAAE;QACzF,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;gBAC5B,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO;oBAC/B,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;oBACjD,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBACrD,IAAI,OAAO;oBAAE,MAAK;YACpB,CAAC;YACD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;QAC5B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED;;;OAGG;IACH,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAE,KAAa,EAAqC,EAAE;QAChG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAClF,MAAM,KAAK,GAAkB,EAAE,CAAA;QAC/B,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC7D,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAA;YAC1C,KAAK,MAAM,EAAE,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,QAA+B,EAAE,EAAU,EAA4C,EAAE,CAC3G,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAE5D,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,MAAoB,EAAW,EAAE;QACjE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAClD,KAAK,OAAO;gBACV,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YAC9F,KAAK,UAAU;gBACb,OAAO,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACtD,KAAK,cAAc;gBACjB,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAE,CAAC,CAAC,CAAA;YACnG,KAAK,kBAAkB;gBACrB,OAAO,KAAK,CAAC,eAAe,CAC1B,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,EAClE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAE,CAAC,CACxE,CAAA;YACH,KAAK,aAAa;gBAChB,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;YACtE,KAAK,iBAAiB;gBACpB,OAAO,KAAK,CAAC,eAAe,CAC1B,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EACjE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAC3C,CAAA;QACL,CAAC;IACH,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,KAAiB,EAAE,MAAoB,EAAU,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEzG,MAAM,QAAQ,GAAG,CAAC,KAAiB,EAAE,MAAoB,EAAY,EAAE;QACrE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAkB,CAAA;QAC3B,CAAC;QACD,MAAM,IAAI,GAA4B,EAAE,CAAA;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1C,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,EAAyB,CAAA;QACpF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;QACrC,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAW,EAAE;QAC7C,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,eAAe,EAAE;YAAE,OAAO,IAAI,CAAA;QAC9F,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;QACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1D,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC;gBAAE,OAAO,IAAI,CAAA;QAC/F,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;QACvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACzD,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC;gBAAE,OAAO,IAAI,CAAA;QAC5F,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,IAAkB,EAAE,KAAmB,EAAU,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;IAEpF,MAAM,QAAQ,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAC3C,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,eAAe,EAAE,CAAA;QAC5C,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC7C,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACxC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,OAAoC,EAAE,EAAU,EAAU,EAAE;QAC3E,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAA;QACzB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YACjC,IAAI,OAAO,CAAC,MAAM,CAAE,CAAC,EAAE,GAAG,EAAE;gBAAE,GAAG,GAAG,MAAM,GAAG,CAAC,CAAA;;gBACzC,IAAI,GAAG,MAAM,CAAA;QACpB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IAED;;;;OAIG;IACH,MAAM,eAAe,GAAG,CAAC,KAAiB,EAA2C,EAAE;QACrF,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QAChF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/D,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC;gBAAE,OAAO,SAAS,CAAA;QACvG,CAAC;QACD,MAAM,QAAQ,GAAwB,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QACtC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAChE,MAAM,OAAO,GAAG,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAE,CAAC,CAAA;YACtG,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAA;YAC3C,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACnD,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK;gBAAE,OAAO,SAAS,CAAA;QAC/C,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED;;;OAGG;IACH,MAAM,oBAAoB,GAAG,CAAC,KAAiB,EAAE,QAAqC,EAAQ,EAAE;QAC9F,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAQ,CAAC,KAAK,EAAE,CAAA;QACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAA;QACvC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAQ;YACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACnB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YACzC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAA;YACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC/D,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;gBAChC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;YACnD,CAAC;iBAAM,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;QACvB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAM;QAE3B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACrC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QAED,IAAI,UAAU,GAA2B,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;QAC/D,IAAI,cAAc,GAAG,QAAQ,CAAA;QAC7B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACxC,IAAI,OAAO,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;gBAClC,UAAU,GAAG,OAAO,CAAA;gBACpB,cAAc,GAAG,OAAO,CAAC,IAAI,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAwB,EAAE,CAAA;QACvC,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAA;QACjB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;gBAAE,SAAQ;YAC9C,IAAI,MAAM,CAAC,EAAE,GAAG,QAAQ;gBAAE,MAAM,GAAG,KAAK,CAAA;YACxC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA;YACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE/B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;QACvB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;QAChE,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC,CAAA;IAED;;;OAGG;IACH,MAAM,IAAI,GAAG,CAAC,KAAe,EAAE,KAAa,EAA2B,EAAE;QACvE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,OAAQ,CAAA;QACvB,CAAC;QAED,sEAAsE;QACtE,2CAA2C;QAC3C,IAAI,UAA6C,CAAA;QACjD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YAC9C,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAQ;YAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAClC,IAAI,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;gBAAE,UAAU,GAAG,MAAM,CAAA;QACxF,CAAC;QAED,2EAA2E;QAC3E,uEAAuE;QACvE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAoB,EAAE,CAAA;YAClC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;YAChF,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,OAAO,GAAwB,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAQ;YAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACpC,IAAI,MAAM,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACtB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IACzD,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,CACV,EAAU,EACV,KAAe,EACf,KAAa,EACqC,EAAE;QACpD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9E,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IAChD,CAAC,CAAA;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;AACtB,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime side of `Schema.requires`: the requirement index built once per
|
|
3
|
+
* bound schema, used to expand `Game.System.spawns(...)`, to check commands
|
|
4
|
+
* when they are applied, and to check restored entities.
|
|
5
|
+
*
|
|
6
|
+
* The compile-time counterpart lives in `Command.ts` (spawn, insert, remove)
|
|
7
|
+
* and `Schema.ts` (`ValidateRequires`).
|
|
8
|
+
*/
|
|
9
|
+
import type { Descriptor } from "../Descriptor.ts";
|
|
10
|
+
import type { Schema } from "../Schema.ts";
|
|
11
|
+
type ComponentDescriptor = Descriptor<"component", string, any>;
|
|
12
|
+
export interface RequirementIndex {
|
|
13
|
+
/** Whether the schema declares any requirement. */
|
|
14
|
+
readonly empty: boolean;
|
|
15
|
+
/** Component name to the components it directly requires. */
|
|
16
|
+
readonly requires: ReadonlyMap<string, ReadonlyArray<ComponentDescriptor>>;
|
|
17
|
+
/** Component name to the components that directly require it. */
|
|
18
|
+
readonly requiredBy: ReadonlyMap<string, ReadonlyArray<ComponentDescriptor>>;
|
|
19
|
+
}
|
|
20
|
+
export declare const requirementIndex: (schema: Schema.Any) => RequirementIndex;
|
|
21
|
+
/** `components` and everything they require, transitively, without duplicates. */
|
|
22
|
+
export declare const withRequired: (index: RequirementIndex, components: ReadonlyArray<ComponentDescriptor>) => ReadonlyArray<ComponentDescriptor>;
|
|
23
|
+
/** The first requirement `held` breaks, as `[requirer, missing]`, or `undefined`. */
|
|
24
|
+
export declare const firstMissing: (index: RequirementIndex, held: (name: string) => boolean, names: Iterable<string>) => readonly [string, string] | undefined;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=requirements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/internal/requirements.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,KAAK,mBAAmB,GAAG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAC1E,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAA;CAC7E;AAQD,eAAO,MAAM,gBAAgB,WAAY,MAAM,CAAC,GAAG,KAAG,gBAUrD,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,YAAY,UAChB,gBAAgB,cACX,aAAa,CAAC,mBAAmB,CAAC,KAC7C,aAAa,CAAC,mBAAmB,CAYnC,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,YAAY,UAChB,gBAAgB,QACjB,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,SACxB,QAAQ,CAAC,MAAM,CAAC,KACtB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAO9B,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
const push = (map, key, value) => {
|
|
2
|
+
const list = map.get(key);
|
|
3
|
+
if (list === undefined)
|
|
4
|
+
map.set(key, [value]);
|
|
5
|
+
else if (!list.some((entry) => entry.name === value.name))
|
|
6
|
+
list.push(value);
|
|
7
|
+
};
|
|
8
|
+
export const requirementIndex = (schema) => {
|
|
9
|
+
const requires = new Map();
|
|
10
|
+
const requiredBy = new Map();
|
|
11
|
+
for (const requirement of schema.requires) {
|
|
12
|
+
for (const required of requirement.required) {
|
|
13
|
+
push(requires, requirement.component.name, required);
|
|
14
|
+
push(requiredBy, required.name, requirement.component);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return { empty: requires.size === 0, requires, requiredBy };
|
|
18
|
+
};
|
|
19
|
+
/** `components` and everything they require, transitively, without duplicates. */
|
|
20
|
+
export const withRequired = (index, components) => {
|
|
21
|
+
if (index.empty)
|
|
22
|
+
return components;
|
|
23
|
+
const result = [];
|
|
24
|
+
const seen = new Set();
|
|
25
|
+
const visit = (descriptor) => {
|
|
26
|
+
if (seen.has(descriptor.name))
|
|
27
|
+
return;
|
|
28
|
+
seen.add(descriptor.name);
|
|
29
|
+
result.push(descriptor);
|
|
30
|
+
for (const required of index.requires.get(descriptor.name) ?? [])
|
|
31
|
+
visit(required);
|
|
32
|
+
};
|
|
33
|
+
components.forEach(visit);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
/** The first requirement `held` breaks, as `[requirer, missing]`, or `undefined`. */
|
|
37
|
+
export const firstMissing = (index, held, names) => {
|
|
38
|
+
for (const name of names) {
|
|
39
|
+
for (const required of index.requires.get(name) ?? []) {
|
|
40
|
+
if (!held(required.name))
|
|
41
|
+
return [name, required.name];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=requirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/internal/requirements.ts"],"names":[],"mappings":"AAsBA,MAAM,IAAI,GAAG,CAAC,GAA4C,EAAE,GAAW,EAAE,KAA0B,EAAQ,EAAE;IAC3G,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzB,IAAI,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;SACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAkB,EAAoB,EAAE;IACvE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsC,CAAA;IAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsC,CAAA;IAChE,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1C,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACpD,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;AAC7D,CAAC,CAAA;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAuB,EACvB,UAA8C,EACV,EAAE;IACtC,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,UAAU,CAAA;IAClC,MAAM,MAAM,GAA+B,EAAE,CAAA;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,KAAK,GAAG,CAAC,UAA+B,EAAQ,EAAE;QACtD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAM;QACrC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACvB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IACnF,CAAC,CAAA;IACD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzB,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAuB,EACvB,IAA+B,EAC/B,KAAuB,EACgB,EAAE;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
package/package.json
CHANGED
package/src/Command.ts
CHANGED
|
@@ -65,7 +65,7 @@ import * as Entity from "./Entity.ts"
|
|
|
65
65
|
import type * as EntityScope from "./EntityScope.ts"
|
|
66
66
|
import type * as Relation from "./Relation.ts"
|
|
67
67
|
import * as Result from "./Result.ts"
|
|
68
|
-
import type { Schema } from "./Schema.ts"
|
|
68
|
+
import type { RequirementPair, Schema } from "./Schema.ts"
|
|
69
69
|
|
|
70
70
|
/**
|
|
71
71
|
* Type-level helpers for staged entity construction.
|
|
@@ -206,9 +206,10 @@ export type DeferredCommand<S extends Schema.Any> = {
|
|
|
206
206
|
export interface InternalWorld<S extends Schema.Any> {
|
|
207
207
|
/**
|
|
208
208
|
* Creates the entity for an id reserved by `commands.spawn(...)` with its
|
|
209
|
-
* staged components.
|
|
209
|
+
* staged components. Returns `false`, creating nothing, when the
|
|
210
|
+
* components break a `Schema.requires` requirement.
|
|
210
211
|
*/
|
|
211
|
-
readonly spawnEntity: (id: Entity.EntityId<S, any>, components: ReadonlyArray<Entity.StagedComponent>) =>
|
|
212
|
+
readonly spawnEntity: (id: Entity.EntityId<S, any>, components: ReadonlyArray<Entity.StagedComponent>) => boolean
|
|
212
213
|
/**
|
|
213
214
|
* Removes an entity and its outgoing and incoming relations.
|
|
214
215
|
*/
|
|
@@ -225,13 +226,15 @@ export interface InternalWorld<S extends Schema.Any> {
|
|
|
225
226
|
*/
|
|
226
227
|
readonly destroyEntityScope: (scope: EntityScope.EntityScope.Any) => void
|
|
227
228
|
/**
|
|
228
|
-
* Removes
|
|
229
|
+
* Removes components from a live entity, all or none: nothing is removed
|
|
230
|
+
* when that would leave a component without one it requires.
|
|
229
231
|
*/
|
|
230
|
-
readonly
|
|
232
|
+
readonly removeComponents: (id: Entity.EntityId<S, any>, descriptors: ReadonlyArray<Descriptor<"component", string, any>>) => void
|
|
231
233
|
/**
|
|
232
|
-
* Inserts or replaces
|
|
234
|
+
* Inserts or replaces components on a live entity, all or none: nothing is
|
|
235
|
+
* written when an inserted component would miss one it requires.
|
|
233
236
|
*/
|
|
234
|
-
readonly
|
|
237
|
+
readonly insertComponents: (id: Entity.EntityId<S, any>, entries: ReadonlyArray<Entity.StagedComponent>) => void
|
|
235
238
|
/**
|
|
236
239
|
* Attempts to attach one relation edge between two live entities.
|
|
237
240
|
*/
|
|
@@ -542,6 +545,103 @@ declare const spawnedTypeId: unique symbol
|
|
|
542
545
|
export type SpawnedId<S extends Schema.Any, Root, Components extends string> =
|
|
543
546
|
Entity.EntityId<S, Root> & { readonly [spawnedTypeId]: (_: never) => Components }
|
|
544
547
|
|
|
548
|
+
/** The requirements (`[requirer, required]`) of the components in `Held` that `Held` lacks. */
|
|
549
|
+
type MissingPairs<S extends Schema.Any, Held extends string> =
|
|
550
|
+
Extract<Schema.Requires<S>, readonly [Held, string]> extends infer Pair
|
|
551
|
+
? Pair extends readonly [string, infer To extends string]
|
|
552
|
+
? To extends Held ? never : Pair
|
|
553
|
+
: never
|
|
554
|
+
: never
|
|
555
|
+
|
|
556
|
+
/** One message per missing requirement: `"Player requires Velocity"`. */
|
|
557
|
+
type MissingMessages<Pairs> = Pairs extends readonly [infer From extends string, infer To extends string] ? `${From} requires ${To}` : never
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Accepts a draft holding every requirement of every component it holds.
|
|
561
|
+
* Direct requirements are enough: each required component must be held
|
|
562
|
+
* too, with its own requirements.
|
|
563
|
+
*/
|
|
564
|
+
type DraftRequirementsMet<S extends Schema.Any, Held extends string> =
|
|
565
|
+
[MissingPairs<S, Held>] extends [never]
|
|
566
|
+
? unknown
|
|
567
|
+
: Fix<`${MissingMessages<MissingPairs<S, Held>>}: add the missing entries to the draft`>
|
|
568
|
+
|
|
569
|
+
/** What an insert or remove target is known to hold: a query match's proof, or a `SpawnedId`'s draft. A raw id proves nothing. */
|
|
570
|
+
type TargetHolds<E> =
|
|
571
|
+
E extends { readonly kind: "EntityRef" | "EntityMut"; readonly __proves?: (_: never) => infer Proves }
|
|
572
|
+
? Names<Proves>
|
|
573
|
+
: E extends { readonly [spawnedTypeId]: (_: never) => infer Spawned extends string }
|
|
574
|
+
? Spawned
|
|
575
|
+
: never
|
|
576
|
+
|
|
577
|
+
/** What a remove target is known to lack: its query's `without`. */
|
|
578
|
+
type TargetLacks<E> =
|
|
579
|
+
E extends { readonly kind: "EntityRef" | "EntityMut"; readonly __lacks?: (_: never) => infer Lacks }
|
|
580
|
+
? Names<Lacks>
|
|
581
|
+
: never
|
|
582
|
+
|
|
583
|
+
type EntryNames<Entries extends ReadonlyArray<readonly [ComponentDescriptor, unknown]>> = Names<Entries[number][0]>
|
|
584
|
+
|
|
585
|
+
/** Inserted components with requirements neither inserted alongside nor proven held by the target. */
|
|
586
|
+
type InsertRequirementsMet<S extends Schema.Any, E, Entries extends ReadonlyArray<readonly [ComponentDescriptor, unknown]>> =
|
|
587
|
+
[MissingPairs<S, EntryNames<Entries> | TargetHolds<E>> & readonly [EntryNames<Entries>, string]] extends [never]
|
|
588
|
+
? unknown
|
|
589
|
+
: Fix<`${MissingMessages<MissingPairs<S, EntryNames<Entries> | TargetHolds<E>> & readonly [EntryNames<Entries>, string]>}: insert it in the same call, or pass match.entity from a query that proves it`>
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Removing `Removed` is sound when every component that requires one of
|
|
593
|
+
* them is removed in the same call or proven absent by the target's query
|
|
594
|
+
* (`without`): otherwise the entity may keep a requirer without its
|
|
595
|
+
* requirement.
|
|
596
|
+
*/
|
|
597
|
+
type RemoveViolations<S extends Schema.Any, E, Removed extends string> =
|
|
598
|
+
Extract<Schema.Requires<S>, readonly [string, Removed]> extends infer Pair
|
|
599
|
+
? Pair extends readonly [infer From extends string, infer To extends string]
|
|
600
|
+
? From extends Removed | TargetLacks<E>
|
|
601
|
+
? never
|
|
602
|
+
: `${To} is required by ${From}: remove ${From} in the same call, or match the entity with a query that has without: [${From}]`
|
|
603
|
+
: never
|
|
604
|
+
: never
|
|
605
|
+
|
|
606
|
+
type RemoveRequirementsMet<S extends Schema.Any, E, Removed extends string> =
|
|
607
|
+
[RemoveViolations<S, E, Removed>] extends [never] ? unknown : Fix<RemoveViolations<S, E, Removed>>
|
|
608
|
+
|
|
609
|
+
/** A remove target: `match.entity`, or the id `spawn` returned in this run; never a raw id. */
|
|
610
|
+
type RemoveTargetAllowed<S extends Schema.Any, Root, E> =
|
|
611
|
+
E extends { readonly kind: "EntityRef" | "EntityMut"; readonly id: Entity.EntityId<S, Root> }
|
|
612
|
+
? unknown
|
|
613
|
+
: E extends SpawnedId<S, Root, string>
|
|
614
|
+
? unknown
|
|
615
|
+
: Fix<"remove needs an entity from a query (pass match.entity) or the id spawn returned in this run, not a raw id">
|
|
616
|
+
|
|
617
|
+
/** The transitive closure of the names `N` require (cycles stop). */
|
|
618
|
+
type RequiredClosure<Pairs extends RequirementPair, N extends string, Seen extends string = never> =
|
|
619
|
+
[Exclude<N, Seen>] extends [never]
|
|
620
|
+
? Seen
|
|
621
|
+
: RequiredClosure<Pairs, Extract<Pairs, readonly [Exclude<N, Seen>, string]>[1], Seen | N>
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* The component descriptors that `Names` require, transitively
|
|
625
|
+
* (`Schema.requires`): what `Game.System.spawns(...)` also allows.
|
|
626
|
+
*/
|
|
627
|
+
export type RequiredDescriptors<S extends Schema.Any, Names extends string> =
|
|
628
|
+
// Non-literal names (an unresolved descriptor, alone or next to known ones) would never
|
|
629
|
+
// close: leave the error to the descriptor.
|
|
630
|
+
0 extends 1 & Names
|
|
631
|
+
? never
|
|
632
|
+
: string extends Names
|
|
633
|
+
? never
|
|
634
|
+
: [Extract<Schema.Requires<S>, readonly [Names, string]>] extends [never]
|
|
635
|
+
? never
|
|
636
|
+
: Extract<Schema.ComponentDescriptor<S>, { readonly name: Exclude<RequiredClosure<Schema.Requires<S>, Names>, Names> }>
|
|
637
|
+
|
|
638
|
+
type SchemaComponent<S extends Schema.Any> = Extract<Schema.Components<S>[keyof Schema.Components<S>], ComponentDescriptor>
|
|
639
|
+
|
|
640
|
+
/** An entity a system has proven something about: `match.entity`, or the id `spawn` returned. */
|
|
641
|
+
type EntityTarget<S extends Schema.Any, Root> =
|
|
642
|
+
| { readonly kind: "EntityRef" | "EntityMut"; readonly id: Entity.EntityId<S, Root> }
|
|
643
|
+
| SpawnedId<S, Root, string>
|
|
644
|
+
|
|
545
645
|
/** The keys every member of a union of proofs requires (what a draft holds in every case). */
|
|
546
646
|
type RequiredKeys<P> = P extends unknown ? { [K in keyof P]-?: {} extends Pick<P, K> ? never : K }[keyof P] & string : never
|
|
547
647
|
type MissingSomewhere<P, All> = P extends unknown ? Exclude<All, RequiredKeys<P>> : never
|
|
@@ -574,33 +674,44 @@ export interface CommandsApi<
|
|
|
574
674
|
> {
|
|
575
675
|
/**
|
|
576
676
|
* Queues a staged entity for spawning and returns its stable runtime id.
|
|
677
|
+
*
|
|
678
|
+
* The draft must hold every component its components require
|
|
679
|
+
* (`Schema.requires`); drafts are checked here, so a partial draft built
|
|
680
|
+
* with `Game.Command.spawn(...)` and completed with `extend(...)` is fine.
|
|
577
681
|
*/
|
|
578
682
|
readonly spawn: [Spawns] extends [never]
|
|
579
683
|
? MethodNotDeclared<"spawn", "spawns">
|
|
580
|
-
: <P extends Entity.ComponentProof>(draft: Entity.EntityDraft<S, P, Root> & DraftAllowed<P, Spawns>) => SpawnedId<S, Root, HeldNames<P>>
|
|
684
|
+
: <P extends Entity.ComponentProof>(draft: Entity.EntityDraft<S, P, Root> & DraftAllowed<P, Spawns> & DraftRequirementsMet<S, HeldNames<P>>) => SpawnedId<S, Root, HeldNames<P>>
|
|
581
685
|
/**
|
|
582
686
|
* Queues an entity spawn owned by one lifetime scope (removed together
|
|
583
|
-
* with `despawnScope(...)`).
|
|
687
|
+
* with `despawnScope(...)`). The draft is checked like `spawn(...)`.
|
|
584
688
|
*/
|
|
585
689
|
readonly spawnIn: [Spawns] extends [never]
|
|
586
690
|
? MethodNotDeclared<"spawnIn", "spawns">
|
|
587
691
|
: <P extends Entity.ComponentProof>(
|
|
588
692
|
scope: EntityScope.EntityScope<string, Root>,
|
|
589
|
-
draft: Entity.EntityDraft<S, P, Root> & DraftAllowed<P, Spawns>
|
|
693
|
+
draft: Entity.EntityDraft<S, P, Root> & DraftAllowed<P, Spawns> & DraftRequirementsMet<S, HeldNames<P>>
|
|
590
694
|
) => SpawnedId<S, Root, HeldNames<P>>
|
|
591
695
|
/**
|
|
592
696
|
* Queues component inserts (or replacements) on an existing entity, applied
|
|
593
697
|
* at the next `applyDeferred()`. To change a value now, on an entity you
|
|
594
|
-
* matched, write through a query (`Game.Query.write`) instead
|
|
698
|
+
* matched, write through a query (`Game.Query.write`) instead; components
|
|
699
|
+
* declared `immutable: true` change only through `insert`.
|
|
700
|
+
*
|
|
701
|
+
* Pass `match.entity`: its query proves what the entity holds, which must
|
|
702
|
+
* cover what the inserted components require (`Schema.requires`) together
|
|
703
|
+
* with the entries inserted in the same call. The id `spawn` returned in
|
|
704
|
+
* this run proves its draft. A raw `EntityId` proves nothing, so it only
|
|
705
|
+
* inserts components without requirements.
|
|
595
706
|
*
|
|
596
707
|
* Entries must already be valid; validate raw input with
|
|
597
708
|
* `Game.Command.entryRaw(...)` first.
|
|
598
709
|
*/
|
|
599
710
|
readonly insert: [Inserts] extends [never]
|
|
600
711
|
? MethodNotDeclared<"insert", "inserts">
|
|
601
|
-
: <const Entries extends ReadonlyArray<SchemaEntry<S>>>(
|
|
602
|
-
entity:
|
|
603
|
-
...entries: Entries & EntriesAllowed<Entries, Inserts>
|
|
712
|
+
: <const E extends Entity.EntityId<S, Root> | EntityTarget<S, Root>, const Entries extends ReadonlyArray<SchemaEntry<S>>>(
|
|
713
|
+
entity: E,
|
|
714
|
+
...entries: Entries & EntriesAllowed<Entries, Inserts> & InsertRequirementsMet<S, E, Entries>
|
|
604
715
|
) => Entity.EntityId<S, Root>
|
|
605
716
|
/**
|
|
606
717
|
* Queues an entity removal. A despawned entity stays visible to queries
|
|
@@ -613,7 +724,7 @@ export interface CommandsApi<
|
|
|
613
724
|
*/
|
|
614
725
|
readonly despawn: [Despawns] extends [never]
|
|
615
726
|
? MethodNotDeclared<"despawn", "despawns">
|
|
616
|
-
: <const E>(entity: E
|
|
727
|
+
: <const E>(entity: unknown extends DespawnAllowed<E, Despawns> ? E : DespawnAllowed<E, Despawns>) => void
|
|
617
728
|
/**
|
|
618
729
|
* Queues removal of every entity owned by one lifetime scope.
|
|
619
730
|
*/
|
|
@@ -621,13 +732,22 @@ export interface CommandsApi<
|
|
|
621
732
|
? MethodNotDeclared<"despawnScope", "despawnsScope">
|
|
622
733
|
: (scope: Scopes) => void
|
|
623
734
|
/**
|
|
624
|
-
* Queues
|
|
735
|
+
* Queues the removal of one or more components from an existing entity,
|
|
736
|
+
* applied together at the next `applyDeferred()`.
|
|
737
|
+
*
|
|
738
|
+
* Pass `match.entity` from a query, or the id `spawn` returned in this run;
|
|
739
|
+
* never a raw id. A component another one requires (`Schema.requires`) can
|
|
740
|
+
* only go together with that requirer, in the same call, or from an
|
|
741
|
+
* entity whose query has `without: [Requirer]`.
|
|
625
742
|
*/
|
|
626
743
|
readonly remove: [Removes] extends [never]
|
|
627
744
|
? MethodNotDeclared<"remove", "removes">
|
|
628
|
-
: <
|
|
629
|
-
|
|
630
|
-
|
|
745
|
+
: <
|
|
746
|
+
const E,
|
|
747
|
+
const Ds extends readonly [SchemaComponent<S>, ...Array<SchemaComponent<S>>]
|
|
748
|
+
>(
|
|
749
|
+
entity: unknown extends RemoveTargetAllowed<S, Root, E> ? E : RemoveTargetAllowed<S, Root, E>,
|
|
750
|
+
...descriptors: Ds & RemoveAllowed<Ds[number], Removes> & RemoveRequirementsMet<S, E, Names<Ds[number]>>
|
|
631
751
|
) => Entity.EntityId<S, Root>
|
|
632
752
|
/**
|
|
633
753
|
* Queues one live relation mutation for deferred application.
|
|
@@ -664,10 +784,10 @@ export interface CommandsApi<
|
|
|
664
784
|
export interface CommandQueue<S extends Schema.Any, Root = unknown> {
|
|
665
785
|
readonly spawn: (draft: Entity.EntityDraft<S, any, Root>) => Entity.EntityId<S, Root>
|
|
666
786
|
readonly spawnIn: (scope: EntityScope.EntityScope<string, Root>, draft: Entity.EntityDraft<S, any, Root>) => Entity.EntityId<S, Root>
|
|
667
|
-
readonly insert: (entity: Entity.EntityId<S, Root
|
|
787
|
+
readonly insert: (entity: Entity.EntityId<S, Root> | { readonly id: Entity.EntityId<S, Root> }, ...entries: ReadonlyArray<SchemaEntry<S>>) => Entity.EntityId<S, Root>
|
|
668
788
|
readonly despawn: (entity: Entity.EntityId<S, Root> | { readonly id: Entity.EntityId<S, Root> }) => void
|
|
669
789
|
readonly despawnScope: (scope: EntityScope.EntityScope<string, Root>) => void
|
|
670
|
-
readonly remove: (entity: Entity.EntityId<S, Root
|
|
790
|
+
readonly remove: (entity: Entity.EntityId<S, Root> | { readonly id: Entity.EntityId<S, Root> }, ...descriptors: ReadonlyArray<ComponentDescriptor>) => Entity.EntityId<S, Root>
|
|
671
791
|
readonly relate: (entity: Entity.EntityId<S, Root>, relation: Relation.Relation.Any, target: Entity.EntityId<S, Root>) => void
|
|
672
792
|
readonly unrelate: (entity: Entity.EntityId<S, Root>, relation: Relation.Relation.Any) => void
|
|
673
793
|
readonly reorderChildren: (entity: Entity.EntityId<S, Root>, relation: Relation.Relation.Hierarchy, children: ReadonlyArray<Entity.EntityId<S, Root>>) => void
|
|
@@ -700,7 +820,7 @@ export const makeCommands = <S extends Schema.Any, Root = unknown>(
|
|
|
700
820
|
queue.push({
|
|
701
821
|
tag: "spawn",
|
|
702
822
|
apply(world) {
|
|
703
|
-
world.spawnEntity(id, draft.components)
|
|
823
|
+
if (!world.spawnEntity(id, draft.components)) return
|
|
704
824
|
for (const stagedRelation of draft.relations) {
|
|
705
825
|
world.tryRelate(id, stagedRelation.relation, stagedRelation.target)
|
|
706
826
|
}
|
|
@@ -713,7 +833,7 @@ export const makeCommands = <S extends Schema.Any, Root = unknown>(
|
|
|
713
833
|
queue.push({
|
|
714
834
|
tag: "spawnIn",
|
|
715
835
|
apply(world) {
|
|
716
|
-
world.spawnEntity(id, draft.components)
|
|
836
|
+
if (!world.spawnEntity(id, draft.components)) return
|
|
717
837
|
world.assignEntityScope(id, scope)
|
|
718
838
|
for (const stagedRelation of draft.relations) {
|
|
719
839
|
world.tryRelate(id, stagedRelation.relation, stagedRelation.target)
|
|
@@ -722,13 +842,12 @@ export const makeCommands = <S extends Schema.Any, Root = unknown>(
|
|
|
722
842
|
})
|
|
723
843
|
return id
|
|
724
844
|
},
|
|
725
|
-
insert(
|
|
845
|
+
insert(target, ...entries) {
|
|
846
|
+
const entity = typeof target === "object" ? target.id : target
|
|
726
847
|
queue.push({
|
|
727
848
|
tag: "insert",
|
|
728
849
|
apply(world) {
|
|
729
|
-
|
|
730
|
-
world.writeComponent(entity, descriptor, value)
|
|
731
|
-
}
|
|
850
|
+
world.insertComponents(entity, entries)
|
|
732
851
|
}
|
|
733
852
|
})
|
|
734
853
|
return entity
|
|
@@ -750,11 +869,12 @@ export const makeCommands = <S extends Schema.Any, Root = unknown>(
|
|
|
750
869
|
}
|
|
751
870
|
})
|
|
752
871
|
},
|
|
753
|
-
remove(
|
|
872
|
+
remove(target, ...descriptors) {
|
|
873
|
+
const entity = typeof target === "object" ? target.id : target
|
|
754
874
|
queue.push({
|
|
755
875
|
tag: "remove",
|
|
756
876
|
apply(world) {
|
|
757
|
-
world.
|
|
877
|
+
world.removeComponents(entity, descriptors)
|
|
758
878
|
}
|
|
759
879
|
})
|
|
760
880
|
return entity
|
package/src/Condition.ts
CHANGED
|
@@ -45,10 +45,25 @@ type AnyQuery = Query.Query.Any<any>
|
|
|
45
45
|
/** Access categories a check may declare. */
|
|
46
46
|
export interface CheckAccessInput {
|
|
47
47
|
readonly queries?: Record<string, AnyQuery>
|
|
48
|
-
readonly resources?: Record<string,
|
|
48
|
+
readonly resources?: Record<string, CheckResourceAccess>
|
|
49
49
|
readonly machines?: Record<string, Machine.MachineRead<Machine.StateMachine.Any>>
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/** Accepted at the constraint so `ExactCheckAccess` can reject the last two with a message naming the fix. */
|
|
53
|
+
type CheckResourceAccess =
|
|
54
|
+
| System.ResourceRead<Descriptor<"resource", string, any>>
|
|
55
|
+
| System.ResourceChanged<Descriptor<"resource", string, any>>
|
|
56
|
+
| System.ResourceWrite<Descriptor<"resource", string, any>>
|
|
57
|
+
|
|
58
|
+
/** A check reads committed values and owns no cursor: `changedResource` and `writeResource` slots become a message naming the fix. */
|
|
59
|
+
type CheckResources<Resources> = {
|
|
60
|
+
readonly [K in keyof Resources]: Resources[K] extends { readonly mode: "changed" }
|
|
61
|
+
? "changedResource consumes a per-reader cursor, which a check does not have: use Game.System.readResource here, and changedResource in the gated system"
|
|
62
|
+
: Resources[K] extends { readonly mode: "write" }
|
|
63
|
+
? "a check cannot write resources: use Game.System.readResource"
|
|
64
|
+
: Resources[K]
|
|
65
|
+
}
|
|
66
|
+
|
|
52
67
|
type QueryWriteAccess<Q extends AnyQuery> =
|
|
53
68
|
Extract<Q["selection"][keyof Q["selection"]], { readonly mode: "write" }>
|
|
54
69
|
|
|
@@ -72,6 +87,7 @@ export type ExactCheckAccess<Access extends CheckAccessInput> = Access & {
|
|
|
72
87
|
readonly queries?: Access["queries"] extends Record<string, AnyQuery>
|
|
73
88
|
? StatelessQueries<Access["queries"]>
|
|
74
89
|
: never
|
|
90
|
+
readonly resources?: CheckResources<Access["resources"]>
|
|
75
91
|
}
|
|
76
92
|
|
|
77
93
|
/** What a check's predicate sees: its declared resources, machines, and queries, read-only. */
|