@adobe/ecs 0.2.3 → 0.2.4
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/implementation/compiler/body-access.d.ts +18 -1
- package/dist/implementation/compiler/body-access.js +104 -15
- package/dist/implementation/compiler/body-access.js.map +1 -1
- package/dist/implementation/compiler/estree.d.ts +5 -2
- package/dist/implementation/compiler/estree.js +8 -5
- package/dist/implementation/compiler/estree.js.map +1 -1
- package/dist/implementation/compiler/inferred.js +4 -2
- package/dist/implementation/compiler/inferred.js.map +1 -1
- package/dist/implementation/compiler/transform.js +5 -4
- package/dist/implementation/compiler/transform.js.map +1 -1
- package/dist/implementation/world/activate.js +14 -2
- package/dist/implementation/world/activate.js.map +1 -1
- package/dist/implementation/world/buffer.d.ts +7 -0
- package/dist/implementation/world/buffer.js +7 -0
- package/dist/implementation/world/buffer.js.map +1 -1
- package/dist/implementation/world/cascade.d.ts +10 -3
- package/dist/implementation/world/cascade.js +48 -23
- package/dist/implementation/world/cascade.js.map +1 -1
- package/dist/implementation/world/commands.js +40 -5
- package/dist/implementation/world/commands.js.map +1 -1
- package/dist/implementation/world/create.js +53 -2
- package/dist/implementation/world/create.js.map +1 -1
- package/dist/implementation/world/execute.d.ts +4 -4
- package/dist/implementation/world/execute.js +132 -83
- package/dist/implementation/world/execute.js.map +1 -1
- package/dist/implementation/world/finalizers.d.ts +2 -0
- package/dist/implementation/world/finalizers.js +24 -3
- package/dist/implementation/world/finalizers.js.map +1 -1
- package/dist/implementation/world/join.js +12 -2
- package/dist/implementation/world/join.js.map +1 -1
- package/dist/implementation/world/resource-changes.d.ts +18 -0
- package/dist/implementation/world/resource-changes.js +66 -0
- package/dist/implementation/world/resource-changes.js.map +1 -0
- package/dist/implementation/world/rows.js +21 -16
- package/dist/implementation/world/rows.js.map +1 -1
- package/dist/implementation/world/run-changes.d.ts +38 -0
- package/dist/implementation/world/run-changes.js +138 -0
- package/dist/implementation/world/run-changes.js.map +1 -0
- package/dist/implementation/world/runner.js +16 -12
- package/dist/implementation/world/runner.js.map +1 -1
- package/dist/implementation/world/state.d.ts +13 -0
- package/dist/implementation/world/state.js +13 -1
- package/dist/implementation/world/state.js.map +1 -1
- package/dist/implementation/world/synchronize.js +72 -22
- package/dist/implementation/world/synchronize.js.map +1 -1
- package/dist/implementation/world/tables-read.d.ts +5 -3
- package/dist/implementation/world/tables-read.js +16 -4
- package/dist/implementation/world/tables-read.js.map +1 -1
- package/dist/implementation/world/tables.d.ts +3 -2
- package/dist/implementation/world/tables.js +83 -37
- package/dist/implementation/world/tables.js.map +1 -1
- package/dist/implementation/world/thread-observer.js +1 -1
- package/dist/implementation/world/thread-observer.js.map +1 -1
- package/dist/implementation/world/thread-systems.js +10 -6
- package/dist/implementation/world/thread-systems.js.map +1 -1
- package/dist/implementation/world/up.js +7 -1
- package/dist/implementation/world/up.js.map +1 -1
- package/dist/implementation/world/where.d.ts +8 -0
- package/dist/implementation/world/where.js +40 -11
- package/dist/implementation/world/where.js.map +1 -1
- package/dist/interface/finalizer/body.d.ts +18 -3
- package/dist/interface/finalizer/create.d.ts +7 -5
- package/dist/interface/finalizer/create.js +8 -5
- package/dist/interface/finalizer/create.js.map +1 -1
- package/dist/interface/finalizer/declaration.d.ts +4 -2
- package/dist/interface/indexes/declaration-of.d.ts +17 -0
- package/dist/interface/indexes/declaration-of.js +20 -0
- package/dist/interface/indexes/declaration-of.js.map +1 -0
- package/dist/interface/indexes/index.d.ts +1 -0
- package/dist/interface/indexes/index.js +1 -0
- package/dist/interface/indexes/index.js.map +1 -1
- package/dist/interface/registry/schedule.d.ts +28 -1
- package/dist/interface/registry/schedule.js +182 -21
- package/dist/interface/registry/schedule.js.map +1 -1
- package/dist/interface/system/access.d.ts +15 -0
- package/dist/interface/system/check.d.ts +7 -0
- package/dist/interface/system/check.js +17 -3
- package/dist/interface/system/check.js.map +1 -1
- package/dist/interface/system/commands.d.ts +26 -5
- package/dist/interface/system/create-resolved.js +1 -1
- package/dist/interface/system/create-resolved.js.map +1 -1
- package/dist/interface/system/create.d.ts +10 -6
- package/dist/interface/system/create.js +5 -4
- package/dist/interface/system/create.js.map +1 -1
- package/dist/interface/system/describe.d.ts +120 -0
- package/dist/interface/system/describe.js +116 -0
- package/dist/interface/system/describe.js.map +1 -0
- package/dist/interface/system/index.d.ts +1 -0
- package/dist/interface/system/index.js +1 -0
- package/dist/interface/system/index.js.map +1 -1
- package/dist/interface/system/leaf.d.ts +6 -0
- package/dist/interface/system/render.js +1 -0
- package/dist/interface/system/render.js.map +1 -1
- package/dist/interface/system/resolve.d.ts +5 -1
- package/dist/interface/system/resolve.js +19 -1
- package/dist/interface/system/resolve.js.map +1 -1
- package/dist/interface/system/shared-only.d.ts +7 -0
- package/dist/interface/system/shared-only.js +2 -0
- package/dist/interface/system/shared-only.js.map +1 -0
- package/dist/interface/system/tables.d.ts +9 -1
- package/dist/interface/world/table/index.d.ts +3 -2
- package/dist/interface/world/world.d.ts +15 -0
- package/package.json +11 -2
- package/src/guide/03-systems.out +1 -1
- package/src/guide/06-sync-points.md +12 -8
- package/src/guide/06-sync-points.out +1 -2
- package/src/guide/06-sync-points.ts +9 -5
- package/src/guide/18-identity.out +1 -1
- package/src/guide/guide.test.ts +3 -150
- package/src/implementation/compiler/body-access.ts +102 -12
- package/src/implementation/compiler/estree.ts +9 -6
- package/src/implementation/compiler/inferred.test.ts +1 -1
- package/src/implementation/compiler/inferred.ts +4 -2
- package/src/implementation/compiler/transform.test.ts +41 -21
- package/src/implementation/compiler/transform.ts +5 -3
- package/src/implementation/world/activate.ts +11 -2
- package/src/implementation/world/batches.test.ts +3 -3
- package/src/implementation/world/buffer.ts +7 -0
- package/src/implementation/world/cascade.ts +46 -22
- package/src/implementation/world/commands.ts +36 -5
- package/src/implementation/world/create.test.ts +8 -8
- package/src/implementation/world/create.ts +57 -2
- package/src/implementation/world/despawn-where.test.ts +287 -0
- package/src/implementation/world/execute.ts +125 -78
- package/src/implementation/world/finalizers.ts +27 -4
- package/src/implementation/world/ids.test.ts +1 -1
- package/src/implementation/world/indexes.test.ts +2 -1
- package/src/implementation/world/join.test.ts +19 -0
- package/src/implementation/world/join.ts +16 -2
- package/src/implementation/world/names.test.ts +1 -2
- package/src/implementation/world/perf.md +3 -1
- package/src/implementation/world/resource-changes.test.ts +61 -0
- package/src/implementation/world/resource-changes.ts +67 -0
- package/src/implementation/world/rows.ts +21 -14
- package/src/implementation/world/rules.test.ts +37 -0
- package/src/implementation/world/run-changes.test.ts +88 -0
- package/src/implementation/world/run-changes.ts +160 -0
- package/src/implementation/world/runner.ts +17 -13
- package/src/implementation/world/shared.test.ts +2 -2
- package/src/implementation/world/state.ts +19 -0
- package/src/implementation/world/sync-points.test.ts +135 -0
- package/src/implementation/world/synchronize.ts +65 -18
- package/src/implementation/world/tables-read.ts +16 -5
- package/src/implementation/world/tables.test.ts +106 -4
- package/src/implementation/world/tables.ts +71 -33
- package/src/implementation/world/thread-observer.ts +1 -1
- package/src/implementation/world/thread-systems.ts +10 -6
- package/src/implementation/world/up.test.ts +13 -1
- package/src/implementation/world/up.ts +6 -1
- package/src/implementation/world/where.ts +38 -10
- package/src/interface/finalizer/body.ts +13 -3
- package/src/interface/finalizer/create.test.ts +3 -1
- package/src/interface/finalizer/create.ts +12 -7
- package/src/interface/finalizer/declaration.ts +4 -2
- package/src/interface/indexes/create.test.ts +10 -0
- package/src/interface/indexes/declaration-of.ts +34 -0
- package/src/interface/indexes/index.ts +1 -0
- package/src/interface/registry/schedule.ts +196 -23
- package/src/interface/system/access.ts +16 -0
- package/src/interface/system/check.ts +15 -2
- package/src/interface/system/commands.ts +23 -4
- package/src/interface/system/commands.type-test.ts +31 -0
- package/src/interface/system/create-resolved.ts +1 -1
- package/src/interface/system/create.test.ts +8 -0
- package/src/interface/system/create.ts +9 -5
- package/src/interface/system/describe.test.ts +79 -0
- package/src/interface/system/describe.ts +122 -0
- package/src/interface/system/index.ts +1 -0
- package/src/interface/system/leaf.ts +6 -0
- package/src/interface/system/render.ts +1 -0
- package/src/interface/system/resolve.ts +25 -2
- package/src/interface/system/shared-only.ts +5 -0
- package/src/interface/system/tables.ts +7 -1
- package/src/interface/world/run.type-test.ts +11 -1
- package/src/interface/world/table/index.ts +3 -2
- package/src/interface/world/world.ts +13 -0
- package/src/perftest/benchmarks.ts +18 -0
- package/src/perftest/structural.ts +20 -0
- package/src/perftest/tables.ts +107 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../../src/implementation/world/up.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../../src/implementation/world/up.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,14 @@ type Observed = {
|
|
|
42
42
|
};
|
|
43
43
|
/** For tests: a system's `where` in the last world that registered it, or undefined without one. */
|
|
44
44
|
export declare const whereOf: (system: object) => Observed | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Whether an archetype holds each of `where`'s values, as a system's `where` of values passes it, for a `where` naming
|
|
47
|
+
* only shared components and giving no predicate; or the key of one that isn't shared. Its values are pinned with
|
|
48
|
+
* `pinned`, and otherwise only interned, for a `where` used before the sync point ends.
|
|
49
|
+
*/
|
|
50
|
+
export declare const holdsValuesOf: (state: State, where: {
|
|
51
|
+
readonly [key: symbol]: unknown;
|
|
52
|
+
}, pinned: boolean) => ((archetype: Valued) => boolean) | symbol;
|
|
45
53
|
/**
|
|
46
54
|
* A system's `where` in a world: its values interned there, by number, its predicates' context reading `reads`,
|
|
47
55
|
* evaluated again once one of them changed since they last were.
|
|
@@ -75,25 +75,54 @@ const whereOver = (predicated, passes, readsChanged, now, bind) => {
|
|
|
75
75
|
/** A predicate as the world calls it, with what its declaration gave. */
|
|
76
76
|
const predicateOf = (given) => typeof given === "function" ? (value, context) => Reflect.apply(given, undefined, [value, context]) : null;
|
|
77
77
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
78
|
+
* `where`'s conditions in a world, each value interned there, by number, and with `pinned`, pinned, so its number stays
|
|
79
|
+
* while no archetype holds it and one that comes to hold it again matches; or the key of a component that isn't shared.
|
|
80
|
+
* A value interned unpinned keeps its number to the end of the sync point.
|
|
80
81
|
*/
|
|
81
|
-
|
|
82
|
-
const conditions =
|
|
82
|
+
const conditionsOf = (state, where, pinned) => {
|
|
83
|
+
const conditions = [];
|
|
84
|
+
for (const key of Object.getOwnPropertySymbols(where)) {
|
|
83
85
|
const id = idOf(state, key);
|
|
84
86
|
const given = Reflect.get(where, key);
|
|
85
87
|
const predicate = predicateOf(given);
|
|
86
|
-
if (predicate !== null)
|
|
87
|
-
|
|
88
|
+
if (predicate !== null) {
|
|
89
|
+
conditions.push({ id, number: -1, predicate });
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
88
92
|
const values = state.shared[id];
|
|
89
93
|
if (values === undefined)
|
|
90
|
-
|
|
94
|
+
return key;
|
|
91
95
|
const number = internShared(values, given);
|
|
92
|
-
|
|
93
|
-
if (number >= 0)
|
|
96
|
+
if (pinned && number >= 0)
|
|
94
97
|
holdShared(values, number);
|
|
95
|
-
|
|
96
|
-
}
|
|
98
|
+
conditions.push({ id, number, predicate: null });
|
|
99
|
+
}
|
|
100
|
+
return conditions;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Whether an archetype holds each of `where`'s values, as a system's `where` of values passes it, for a `where` naming
|
|
104
|
+
* only shared components and giving no predicate; or the key of one that isn't shared. Its values are pinned with
|
|
105
|
+
* `pinned`, and otherwise only interned, for a `where` used before the sync point ends.
|
|
106
|
+
*/
|
|
107
|
+
export const holdsValuesOf = (state, where, pinned) => {
|
|
108
|
+
const conditions = conditionsOf(state, where, pinned);
|
|
109
|
+
if (typeof conditions === "symbol")
|
|
110
|
+
return conditions;
|
|
111
|
+
return archetype => {
|
|
112
|
+
for (let c = 0; c < conditions.length; c++)
|
|
113
|
+
if (archetype.shared[conditions[c].id] !== conditions[c].number)
|
|
114
|
+
return false;
|
|
115
|
+
return true;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* A system's `where` in a world: its values interned there, by number, its predicates' context reading `reads`,
|
|
120
|
+
* evaluated again once one of them changed since they last were.
|
|
121
|
+
*/
|
|
122
|
+
export const createWhere = (state, where, reads, leaf) => {
|
|
123
|
+
const conditions = conditionsOf(state, where, true);
|
|
124
|
+
if (typeof conditions === "symbol")
|
|
125
|
+
throw new Error(`System "${leaf.name}": where names "${labelOf(conditions)}", which isn't a shared component.`);
|
|
97
126
|
const readIds = reads.map(key => idOf(state, key));
|
|
98
127
|
// Its predicates' context: each resource read once per evaluation, since a struct's read copies it out.
|
|
99
128
|
const cached = reads.map(() => undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../../src/implementation/world/where.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAsC9C,8EAA8E;AAC9E,MAAM,MAAM,GAAG,IAAI,OAAO,EAAoB,CAAC;AAE/C,oGAAoG;AACpG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAwB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEpF;;;;GAIG;AACH,MAAM,SAAS,GAAG,CAAI,UAAmB,EAAE,MAA6B,EAAE,YAAwC,EAAE,GAAiB,EAAE,IAAgB,EAAY,EAAE;IACjK,mGAAmG;IACnG,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IACrB,mCAAmC;IACnC,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,kEAAkE;IAClE,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,MAAM,GAAa;QACrB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,CAAC;QACZ,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;YACf,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAClB,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,UAAU,EAAE,GAAG,EAAE;YACb,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,OAAO,CAAC,EAAE;YACf,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;YAC7B,MAAM,KAAK,GAAG,UAAU,IAAI,SAAS,GAAG,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK;gBAAE,OAAO;YAC7D,IAAI,UAAU;gBAAE,IAAI,EAAE,CAAC;YACvB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,GAAG,KAAK,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM;oBAAE,OAAO,GAAG,IAAI,CAAC;gBAC5D,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;YACxB,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;YAClC,WAAW,GAAG,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC1B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1B,KAAK,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,CAAC;KACJ,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,WAAW,GAAG,CAAC,KAAc,EAAyD,EAAE,CAC1F,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE/G
|
|
1
|
+
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../../src/implementation/world/where.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ import type { LookupFunction } from '../system/values.js';
|
|
|
6
6
|
import type { WriteResources } from '../system/body.js';
|
|
7
7
|
import type { ChangesDeclaration, Declaration } from './declaration.js';
|
|
8
8
|
import type { Essential, ReadonlyType } from '../component/value.js';
|
|
9
|
+
import type { Resource } from '../resource/resource.js';
|
|
10
|
+
import type { ReadonlyType as ResourceType } from '../resource/value.js';
|
|
9
11
|
import type { Elsewhere, ThreadsOf } from '../system/threads.js';
|
|
10
12
|
/**
|
|
11
13
|
* The entity that stopped matching, with the values of its `with` as they are before the sync point applies, and of
|
|
@@ -32,7 +34,9 @@ export type Context<D extends Declaration | ChangesDeclaration> = {
|
|
|
32
34
|
readonly commands: Commands;
|
|
33
35
|
});
|
|
34
36
|
/** The components a changes finalizer sees. */
|
|
35
|
-
export type Watched<D extends ChangesDeclaration> = Property<D, "watch"> extends readonly
|
|
37
|
+
export type Watched<D extends ChangesDeclaration> = Property<D, "watch"> extends readonly unknown[] ? Listed<D, "watch"> & Essential : Essential;
|
|
38
|
+
/** The resources a changes finalizer sees: those it watches. */
|
|
39
|
+
export type WatchedResources<D extends ChangesDeclaration> = Listed<D, "watch"> & Resource.Key;
|
|
36
40
|
/** Entities whose components changed the same way: `from` and `to` are null for those spawned and despawned. */
|
|
37
41
|
export type Group<C extends Component.Key> = {
|
|
38
42
|
readonly from: readonly C[] | null;
|
|
@@ -43,9 +47,20 @@ export type Group<C extends Component.Key> = {
|
|
|
43
47
|
readonly replaced: readonly C[];
|
|
44
48
|
readonly entities: readonly Entity[];
|
|
45
49
|
};
|
|
46
|
-
/**
|
|
47
|
-
|
|
50
|
+
/**
|
|
51
|
+
* A sync point's structural changes to the watched components, and the values adds replace, before they apply; and each
|
|
52
|
+
* watched resource written since the last sync point's finalizers ran, to a value that isn't equal to its last one,
|
|
53
|
+
* leaf by leaf for data and by identity for objects, with its value before and after.
|
|
54
|
+
*/
|
|
55
|
+
export type ChangeSet<C extends Component.Key, R extends Resource.Key = never> = {
|
|
48
56
|
readonly groups: readonly Group<C>[];
|
|
57
|
+
readonly resources: readonly {
|
|
58
|
+
readonly [K in R]: {
|
|
59
|
+
readonly key: K;
|
|
60
|
+
readonly previous: ResourceType<K>;
|
|
61
|
+
readonly next: ResourceType<K>;
|
|
62
|
+
};
|
|
63
|
+
}[R][];
|
|
49
64
|
/** The value before the sync point, or null if the entity didn't have it. */
|
|
50
65
|
previous<K extends C>(entity: Entity, component: K): ReadonlyType<K> | null;
|
|
51
66
|
/** The value after it, or null if the entity won't have it. */
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { Listed, Property } from '../system/property.js';
|
|
2
2
|
import type { ThreadOfComponent } from '../component/value.js';
|
|
3
|
+
import type { ThreadOfResource } from '../resource/value.js';
|
|
4
|
+
import type { Resource } from '../resource/resource.js';
|
|
3
5
|
import type { Component } from '../component/component.js';
|
|
4
6
|
import type { Elsewhere, OneThread, ThreadedBy, ThreadsOf } from '../system/threads.js';
|
|
5
|
-
import type { ChangeSet, Context, Row, Watched } from './body.js';
|
|
7
|
+
import type { ChangeSet, Context, Row, Watched, WatchedResources } from './body.js';
|
|
6
8
|
import type { ChangesDeclaration, Declaration } from './declaration.js';
|
|
7
9
|
import type { Finalizer } from './finalizer.js';
|
|
8
10
|
/**
|
|
@@ -13,7 +15,7 @@ type Remote<D> = true extends Elsewhere<ThreadsOf<D>> ? ([keyof Property<D, "loo
|
|
|
13
15
|
readonly "error: a finalizer on another thread than the world's looks up nothing": true;
|
|
14
16
|
}) : {};
|
|
15
17
|
/** A changes finalizer runs on the world's thread, in the sync point: it watches and reads no other thread's objects. */
|
|
16
|
-
type OnWorld<D> = true extends Elsewhere<ThreadsOf<D> | ThreadOfComponent<Listed<D, "watch"> & Component.Key>> ? {
|
|
18
|
+
type OnWorld<D> = true extends Elsewhere<ThreadsOf<D> | ThreadOfComponent<Listed<D, "watch"> & Component.Key> | ThreadOfResource<Listed<D, "watch"> & Resource.Key>> ? {
|
|
17
19
|
readonly "error: a changes finalizer watches and reads only the world's thread's objects": true;
|
|
18
20
|
} : {};
|
|
19
21
|
/** What a finalizer's body reads of its row and lookups, and reads and writes of resources, is inferred. */
|
|
@@ -36,8 +38,8 @@ export declare const create: <const D extends Declaration>(declared: D & Inferre
|
|
|
36
38
|
} & OneThread<ThreadsOf<D>, ThreadedBy<D>> & Remote<D>, body: (row: Row<D>, context: Context<D>) => void) => Finalizer;
|
|
37
39
|
/**
|
|
38
40
|
* Declares a finalizer of each sync point's structural changes, which applies in every world, and returns it. It runs
|
|
39
|
-
* on the world's thread. Throws as `create` does, for a watched component that isn't registered or is derived,
|
|
40
|
-
* one watching or reading another thread's values.
|
|
41
|
+
* on the world's thread. Throws as `create` does, for a watched component that isn't registered or is derived, a
|
|
42
|
+
* watched key that's neither a component nor a resource, and for one watching or reading another thread's values.
|
|
41
43
|
*/
|
|
42
|
-
export declare const changes: <const D extends ChangesDeclaration>(declared: D & Inferred & OnWorld<D>, body: (changes: ChangeSet<Watched<D>>, context: Context<D>) => void) => Finalizer;
|
|
44
|
+
export declare const changes: <const D extends ChangesDeclaration>(declared: D & Inferred & OnWorld<D>, body: (changes: ChangeSet<Watched<D>, WatchedResources<D>>, context: Context<D>) => void) => Finalizer;
|
|
43
45
|
export {};
|
|
@@ -97,8 +97,8 @@ export const create = (declared, body) => {
|
|
|
97
97
|
};
|
|
98
98
|
/**
|
|
99
99
|
* Declares a finalizer of each sync point's structural changes, which applies in every world, and returns it. It runs
|
|
100
|
-
* on the world's thread. Throws as `create` does, for a watched component that isn't registered or is derived,
|
|
101
|
-
* one watching or reading another thread's values.
|
|
100
|
+
* on the world's thread. Throws as `create` does, for a watched component that isn't registered or is derived, a
|
|
101
|
+
* watched key that's neither a component nor a resource, and for one watching or reading another thread's values.
|
|
102
102
|
*/
|
|
103
103
|
export const changes = (declared, body) => {
|
|
104
104
|
const id = takeIdOfDeclaration(declared);
|
|
@@ -116,12 +116,15 @@ export const changes = (declared, body) => {
|
|
|
116
116
|
requireRegistered("Finalizer", name, "component", keys);
|
|
117
117
|
}
|
|
118
118
|
for (const key of declaration.watch ?? []) {
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
const kind = kindOf(key);
|
|
120
|
+
if (kind !== "component" && kind !== "resource")
|
|
121
|
+
throw new Error(`Finalizer "${name}" watches "${labelOf(key)}", which isn't a registered component or resource: ${whyUnregistered(key)}.`);
|
|
121
122
|
if (declarationOf(key)?.derived === true)
|
|
122
123
|
throw new Error(`Finalizer "${name}" watches "${labelOf(key)}", which is derived; it sees only components user code adds and removes.`);
|
|
123
124
|
}
|
|
124
|
-
const
|
|
125
|
+
const watched = (kind) => (declaration.watch ?? []).filter(key => kindOf(key) === kind);
|
|
126
|
+
const read = [...declaration.resources?.read ?? [], ...watched("resource")];
|
|
127
|
+
const thread = threadOf({ components: { read: watched("component") }, resources: { ...declaration.resources, read }, lookup: declaration.lookup }, "Finalizer", name);
|
|
125
128
|
if (thread !== null && thread !== "world")
|
|
126
129
|
throw new Error(`Finalizer "${name}" watches or reads values on thread "${thread}"; a changes finalizer runs on the world's thread, in the sync point.`);
|
|
127
130
|
checkOrder(name, "world", declaration);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/interface/finalizer/create.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/interface/finalizer/create.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAUrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAsBlG,sIAAsI;AACtI,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,QAA0C,EAAE,MAAc,EAAE,EAAE;IAC/F,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kEAAkE,CAAC,CAAC;IACvH,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO;QACH,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;QACzC,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1D,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;QACnE,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;KACnE,CAAC;AACN,CAAC,CAAC;AAEF,yJAAyJ;AACzJ,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,UAAqC,EAAE,MAAc,EAA0B,EAAE;IACnH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,YAAY,OAAO,CAAC,OAAO,CAAC,gGAAgG,CAAC,CAAC;IAChL,mFAAmF;IACnF,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7H,CAAC,CAAC;AAEF,uFAAuF;AACvF,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,SAA0F,EAAQ,EAAE;IACtI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,YAAY,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IAC3J,iBAAiB,CAAC,cAAc,IAAI,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3D,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,aAAa,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IAC1K,CAAC;AACL,CAAC,CAAC;AAEF,gHAAgH;AAChH,MAAM,MAAM,GAAG,CAAC,SAAqB,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAErK,8FAA8F;AAC9F,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,WAA8F,EAAQ,EAAE;IACtJ,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC;QACtF,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,qBAAqB,MAAM,0BAA0B,KAAK,CAAC,IAAI,4BAA4B,MAAM,oGAAoG,CAAC,CAAC;QAC7O,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAClB,QAAsJ,EACtJ,IAAgD,EACvC,EAAE;IACX,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,cAAc,IAAI,GAAG,CAAC;IACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxC,MAAM,WAAW,GAAa;QAC1B,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;QACxC,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAChE,CAAC;IACF,MAAM,SAAS,GAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACvE,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,yEAAyE,CAAC;QAC5F,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,qBAAqB,MAAM,2BAA2B,SAAS,eAAe,CAAC,CAAC;QACvK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,qBAAqB,MAAM,kCAAkC,SAAS,iBAAiB,CAAC,CAAC;IACrL,CAAC;IACD,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,OAAO,EAAE,WAAW,CAAC,CAAC;IACjD,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9E,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9E,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5F,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACnB,QAAmC,EACnC,IAAwF,EAC/E,EAAE;IACX,MAAM,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,cAAc,IAAI,GAAG,CAAC;IACnC,MAAM,WAAW,GAAoB,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IACtK,MAAM,SAAS,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACxE,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5C,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9E,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/E,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAAE,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAClL,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,cAAc,OAAO,CAAC,GAAG,CAAC,sDAAsD,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5L,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,cAAc,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACtL,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,IAA8B,EAAqB,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;IACrI,MAAM,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACtK,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,wCAAwC,MAAM,uEAAuE,CAAC,CAAC;IACpM,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { SystemLookupLists, ResourceLists } from '../system/access.js';
|
|
|
3
3
|
import type { Lookup } from '../system/access.js';
|
|
4
4
|
import type { Finalizer } from './finalizer.js';
|
|
5
5
|
import type { Essential } from '../component/value.js';
|
|
6
|
+
import type { Resource } from '../resource/resource.js';
|
|
6
7
|
/**
|
|
7
8
|
* What every finalizer declares. What its body reads of its row and lookups, and reads and writes of resources, the
|
|
8
9
|
* build infers; resource writes take the sync point's tick, so each system sees them once.
|
|
@@ -28,10 +29,11 @@ export type Declaration = Shared & {
|
|
|
28
29
|
};
|
|
29
30
|
/**
|
|
30
31
|
* A finalizer that sees each sync point's structural changes to the components it watches: by default, every one that
|
|
31
|
-
* isn't derived or an object a joined thread fills
|
|
32
|
+
* isn't derived or an object a joined thread fills; and the resources it watches, none by default, written since the
|
|
33
|
+
* last sync point's finalizers ran.
|
|
32
34
|
*/
|
|
33
35
|
export type ChangesDeclaration = Shared & {
|
|
34
|
-
readonly watch?: readonly Essential[];
|
|
36
|
+
readonly watch?: readonly (Essential | Resource.Key)[];
|
|
35
37
|
};
|
|
36
38
|
type Key = symbol;
|
|
37
39
|
/** What every finalizer's declaration holds as the world takes it, with what the build inferred its body uses. */
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Component } from '../component/component.js';
|
|
2
|
+
import type { Index } from './index-type.js';
|
|
3
|
+
/**
|
|
4
|
+
* An index's declaration as `Index.create` registered it: its key, the components it holds by besides its key and those
|
|
5
|
+
* it excludes, and whether it's sorted or unique.
|
|
6
|
+
*/
|
|
7
|
+
export type Declared = {
|
|
8
|
+
readonly key: readonly Component.Key[];
|
|
9
|
+
readonly components: {
|
|
10
|
+
readonly with?: readonly Component.Key[];
|
|
11
|
+
readonly not?: readonly Component.Key[];
|
|
12
|
+
};
|
|
13
|
+
readonly sorted?: boolean;
|
|
14
|
+
readonly unique?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/** The declaration `index` was created from, as registered, or undefined for a value `Index.create` didn't return. */
|
|
17
|
+
export declare const declarationOf: <D extends object>(index: Index<D>) => Declared | undefined;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { indexDefinitionOf } from '../registry/indexes.js';
|
|
2
|
+
import { kindOf } from '../registry/names.js';
|
|
3
|
+
/** Registration takes only components for a key part, `with` and `not`. */
|
|
4
|
+
const isComponent = (key) => kindOf(key) === "component";
|
|
5
|
+
/** The declaration `index` was created from, as registered, or undefined for a value `Index.create` didn't return. */
|
|
6
|
+
export const declarationOf = (index) => {
|
|
7
|
+
const created = indexDefinitionOf(index);
|
|
8
|
+
if (created === undefined)
|
|
9
|
+
return undefined;
|
|
10
|
+
const { key, components, sorted, unique } = created.declaration;
|
|
11
|
+
const held = components?.has?.filter(isComponent);
|
|
12
|
+
const excluded = components?.not?.filter(isComponent);
|
|
13
|
+
return {
|
|
14
|
+
key: key.filter(isComponent),
|
|
15
|
+
components: { ...held === undefined ? {} : { with: held }, ...excluded === undefined ? {} : { not: excluded } },
|
|
16
|
+
...sorted === undefined ? {} : { sorted },
|
|
17
|
+
...unique === undefined ? {} : { unique },
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=declaration-of.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration-of.js","sourceRoot":"","sources":["../../../src/interface/indexes/declaration-of.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAc9C,2EAA2E;AAC3E,MAAM,WAAW,GAAG,CAAC,GAAW,EAAwB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC;AAEvF,sHAAsH;AACtH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAmB,KAAe,EAAwB,EAAE;IACrF,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAChE,MAAM,IAAI,GAAG,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACtD,OAAO;QACH,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5B,UAAU,EAAE,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;QAC/G,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;QACzC,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;KAC5C,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/indexes/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/indexes/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC"}
|
|
@@ -4,12 +4,14 @@ type Key = symbol;
|
|
|
4
4
|
/**
|
|
5
5
|
* Leaves in run order, grouped into tiers. Leaves in one tier have no ordering path between them. `reductions` are the
|
|
6
6
|
* resources its leaves reduce into, each with how many of them contribute. `observer` are its readonly leaves, in no
|
|
7
|
-
* tier: they run after its sync point, ordered with nothing.
|
|
7
|
+
* tier: they run after its sync point, ordered with nothing. `syncs` holds, after each tier, the reasons for a sync
|
|
8
|
+
* point there, which applies the commands so far before the next tier, or null for none.
|
|
8
9
|
*/
|
|
9
10
|
export type Schedule = {
|
|
10
11
|
readonly tiers: readonly (readonly Leaf[])[];
|
|
11
12
|
readonly reductions: ReadonlyMap<Key, number>;
|
|
12
13
|
readonly observer: readonly Leaf[];
|
|
14
|
+
readonly syncs: readonly (readonly SyncReason[] | null)[];
|
|
13
15
|
};
|
|
14
16
|
export declare const isLeaf: (system: Definition) => system is Leaf;
|
|
15
17
|
/** Whether a system is a readonly system leaf, which runs after a sync point rather than in a tier. */
|
|
@@ -31,6 +33,31 @@ export declare const reducedBy: (leaf: Leaf) => readonly Key[];
|
|
|
31
33
|
* symbol.
|
|
32
34
|
*/
|
|
33
35
|
export declare const accessOf: (leaf: Leaf) => Access;
|
|
36
|
+
/**
|
|
37
|
+
* What put a leaf after another: a constraint of either, or of a composite holding it, naming the other or a composite
|
|
38
|
+
* holding it (`after`, `before`), its reading a fold the other contributes to (`reduction`), or being placed during a
|
|
39
|
+
* span (`during`). `conflicts` are the keys both access, one writing, which need the order.
|
|
40
|
+
*/
|
|
41
|
+
export type Placement = {
|
|
42
|
+
readonly leaf: Leaf;
|
|
43
|
+
readonly because: "after" | "before" | "during" | "reduction";
|
|
44
|
+
readonly conflicts: readonly Key[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* For each leaf in a system's tiers, the leaves it follows directly: those with an ordering path to it through no other
|
|
48
|
+
* leaf of its tiers.
|
|
49
|
+
*/
|
|
50
|
+
export declare const placementsOf: (system: Definition) => ReadonlyMap<Leaf, readonly Placement[]>;
|
|
34
51
|
/** A system's schedule, created once per system. Throws on a cycle, or on two conflicting leaves with no ordering path between them. */
|
|
35
52
|
export declare const scheduleOf: (system: Definition) => Schedule;
|
|
53
|
+
/**
|
|
54
|
+
* Why a sync point follows a tier: a system in it or before it whose commands may change, structurally, what a system
|
|
55
|
+
* after the sync point that follows it reads, matches, looks up or indexes. `keys` are the components its commands name
|
|
56
|
+
* that the later one uses, none where it despawns, or where its commands or a cascade could change anything.
|
|
57
|
+
*/
|
|
58
|
+
export type SyncReason = {
|
|
59
|
+
readonly from: Leaf;
|
|
60
|
+
readonly to: Leaf;
|
|
61
|
+
readonly keys: readonly Key[];
|
|
62
|
+
};
|
|
36
63
|
export {};
|