@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.
Files changed (179) hide show
  1. package/dist/implementation/compiler/body-access.d.ts +18 -1
  2. package/dist/implementation/compiler/body-access.js +104 -15
  3. package/dist/implementation/compiler/body-access.js.map +1 -1
  4. package/dist/implementation/compiler/estree.d.ts +5 -2
  5. package/dist/implementation/compiler/estree.js +8 -5
  6. package/dist/implementation/compiler/estree.js.map +1 -1
  7. package/dist/implementation/compiler/inferred.js +4 -2
  8. package/dist/implementation/compiler/inferred.js.map +1 -1
  9. package/dist/implementation/compiler/transform.js +5 -4
  10. package/dist/implementation/compiler/transform.js.map +1 -1
  11. package/dist/implementation/world/activate.js +14 -2
  12. package/dist/implementation/world/activate.js.map +1 -1
  13. package/dist/implementation/world/buffer.d.ts +7 -0
  14. package/dist/implementation/world/buffer.js +7 -0
  15. package/dist/implementation/world/buffer.js.map +1 -1
  16. package/dist/implementation/world/cascade.d.ts +10 -3
  17. package/dist/implementation/world/cascade.js +48 -23
  18. package/dist/implementation/world/cascade.js.map +1 -1
  19. package/dist/implementation/world/commands.js +40 -5
  20. package/dist/implementation/world/commands.js.map +1 -1
  21. package/dist/implementation/world/create.js +53 -2
  22. package/dist/implementation/world/create.js.map +1 -1
  23. package/dist/implementation/world/execute.d.ts +4 -4
  24. package/dist/implementation/world/execute.js +132 -83
  25. package/dist/implementation/world/execute.js.map +1 -1
  26. package/dist/implementation/world/finalizers.d.ts +2 -0
  27. package/dist/implementation/world/finalizers.js +24 -3
  28. package/dist/implementation/world/finalizers.js.map +1 -1
  29. package/dist/implementation/world/join.js +12 -2
  30. package/dist/implementation/world/join.js.map +1 -1
  31. package/dist/implementation/world/resource-changes.d.ts +18 -0
  32. package/dist/implementation/world/resource-changes.js +66 -0
  33. package/dist/implementation/world/resource-changes.js.map +1 -0
  34. package/dist/implementation/world/rows.js +21 -16
  35. package/dist/implementation/world/rows.js.map +1 -1
  36. package/dist/implementation/world/run-changes.d.ts +38 -0
  37. package/dist/implementation/world/run-changes.js +138 -0
  38. package/dist/implementation/world/run-changes.js.map +1 -0
  39. package/dist/implementation/world/runner.js +16 -12
  40. package/dist/implementation/world/runner.js.map +1 -1
  41. package/dist/implementation/world/state.d.ts +13 -0
  42. package/dist/implementation/world/state.js +13 -1
  43. package/dist/implementation/world/state.js.map +1 -1
  44. package/dist/implementation/world/synchronize.js +72 -22
  45. package/dist/implementation/world/synchronize.js.map +1 -1
  46. package/dist/implementation/world/tables-read.d.ts +5 -3
  47. package/dist/implementation/world/tables-read.js +16 -4
  48. package/dist/implementation/world/tables-read.js.map +1 -1
  49. package/dist/implementation/world/tables.d.ts +3 -2
  50. package/dist/implementation/world/tables.js +83 -37
  51. package/dist/implementation/world/tables.js.map +1 -1
  52. package/dist/implementation/world/thread-observer.js +1 -1
  53. package/dist/implementation/world/thread-observer.js.map +1 -1
  54. package/dist/implementation/world/thread-systems.js +10 -6
  55. package/dist/implementation/world/thread-systems.js.map +1 -1
  56. package/dist/implementation/world/up.js +7 -1
  57. package/dist/implementation/world/up.js.map +1 -1
  58. package/dist/implementation/world/where.d.ts +8 -0
  59. package/dist/implementation/world/where.js +40 -11
  60. package/dist/implementation/world/where.js.map +1 -1
  61. package/dist/interface/finalizer/body.d.ts +18 -3
  62. package/dist/interface/finalizer/create.d.ts +7 -5
  63. package/dist/interface/finalizer/create.js +8 -5
  64. package/dist/interface/finalizer/create.js.map +1 -1
  65. package/dist/interface/finalizer/declaration.d.ts +4 -2
  66. package/dist/interface/indexes/declaration-of.d.ts +17 -0
  67. package/dist/interface/indexes/declaration-of.js +20 -0
  68. package/dist/interface/indexes/declaration-of.js.map +1 -0
  69. package/dist/interface/indexes/index.d.ts +1 -0
  70. package/dist/interface/indexes/index.js +1 -0
  71. package/dist/interface/indexes/index.js.map +1 -1
  72. package/dist/interface/registry/schedule.d.ts +28 -1
  73. package/dist/interface/registry/schedule.js +182 -21
  74. package/dist/interface/registry/schedule.js.map +1 -1
  75. package/dist/interface/system/access.d.ts +15 -0
  76. package/dist/interface/system/check.d.ts +7 -0
  77. package/dist/interface/system/check.js +17 -3
  78. package/dist/interface/system/check.js.map +1 -1
  79. package/dist/interface/system/commands.d.ts +26 -5
  80. package/dist/interface/system/create-resolved.js +1 -1
  81. package/dist/interface/system/create-resolved.js.map +1 -1
  82. package/dist/interface/system/create.d.ts +10 -6
  83. package/dist/interface/system/create.js +5 -4
  84. package/dist/interface/system/create.js.map +1 -1
  85. package/dist/interface/system/describe.d.ts +120 -0
  86. package/dist/interface/system/describe.js +116 -0
  87. package/dist/interface/system/describe.js.map +1 -0
  88. package/dist/interface/system/index.d.ts +1 -0
  89. package/dist/interface/system/index.js +1 -0
  90. package/dist/interface/system/index.js.map +1 -1
  91. package/dist/interface/system/leaf.d.ts +6 -0
  92. package/dist/interface/system/render.js +1 -0
  93. package/dist/interface/system/render.js.map +1 -1
  94. package/dist/interface/system/resolve.d.ts +5 -1
  95. package/dist/interface/system/resolve.js +19 -1
  96. package/dist/interface/system/resolve.js.map +1 -1
  97. package/dist/interface/system/shared-only.d.ts +7 -0
  98. package/dist/interface/system/shared-only.js +2 -0
  99. package/dist/interface/system/shared-only.js.map +1 -0
  100. package/dist/interface/system/tables.d.ts +9 -1
  101. package/dist/interface/world/table/index.d.ts +3 -2
  102. package/dist/interface/world/world.d.ts +15 -0
  103. package/package.json +11 -2
  104. package/src/guide/03-systems.out +1 -1
  105. package/src/guide/06-sync-points.md +12 -8
  106. package/src/guide/06-sync-points.out +1 -2
  107. package/src/guide/06-sync-points.ts +9 -5
  108. package/src/guide/18-identity.out +1 -1
  109. package/src/guide/guide.test.ts +3 -150
  110. package/src/implementation/compiler/body-access.ts +102 -12
  111. package/src/implementation/compiler/estree.ts +9 -6
  112. package/src/implementation/compiler/inferred.test.ts +1 -1
  113. package/src/implementation/compiler/inferred.ts +4 -2
  114. package/src/implementation/compiler/transform.test.ts +41 -21
  115. package/src/implementation/compiler/transform.ts +5 -3
  116. package/src/implementation/world/activate.ts +11 -2
  117. package/src/implementation/world/batches.test.ts +3 -3
  118. package/src/implementation/world/buffer.ts +7 -0
  119. package/src/implementation/world/cascade.ts +46 -22
  120. package/src/implementation/world/commands.ts +36 -5
  121. package/src/implementation/world/create.test.ts +8 -8
  122. package/src/implementation/world/create.ts +57 -2
  123. package/src/implementation/world/despawn-where.test.ts +287 -0
  124. package/src/implementation/world/execute.ts +125 -78
  125. package/src/implementation/world/finalizers.ts +27 -4
  126. package/src/implementation/world/ids.test.ts +1 -1
  127. package/src/implementation/world/indexes.test.ts +2 -1
  128. package/src/implementation/world/join.test.ts +19 -0
  129. package/src/implementation/world/join.ts +16 -2
  130. package/src/implementation/world/names.test.ts +1 -2
  131. package/src/implementation/world/perf.md +3 -1
  132. package/src/implementation/world/resource-changes.test.ts +61 -0
  133. package/src/implementation/world/resource-changes.ts +67 -0
  134. package/src/implementation/world/rows.ts +21 -14
  135. package/src/implementation/world/rules.test.ts +37 -0
  136. package/src/implementation/world/run-changes.test.ts +88 -0
  137. package/src/implementation/world/run-changes.ts +160 -0
  138. package/src/implementation/world/runner.ts +17 -13
  139. package/src/implementation/world/shared.test.ts +2 -2
  140. package/src/implementation/world/state.ts +19 -0
  141. package/src/implementation/world/sync-points.test.ts +135 -0
  142. package/src/implementation/world/synchronize.ts +65 -18
  143. package/src/implementation/world/tables-read.ts +16 -5
  144. package/src/implementation/world/tables.test.ts +106 -4
  145. package/src/implementation/world/tables.ts +71 -33
  146. package/src/implementation/world/thread-observer.ts +1 -1
  147. package/src/implementation/world/thread-systems.ts +10 -6
  148. package/src/implementation/world/up.test.ts +13 -1
  149. package/src/implementation/world/up.ts +6 -1
  150. package/src/implementation/world/where.ts +38 -10
  151. package/src/interface/finalizer/body.ts +13 -3
  152. package/src/interface/finalizer/create.test.ts +3 -1
  153. package/src/interface/finalizer/create.ts +12 -7
  154. package/src/interface/finalizer/declaration.ts +4 -2
  155. package/src/interface/indexes/create.test.ts +10 -0
  156. package/src/interface/indexes/declaration-of.ts +34 -0
  157. package/src/interface/indexes/index.ts +1 -0
  158. package/src/interface/registry/schedule.ts +196 -23
  159. package/src/interface/system/access.ts +16 -0
  160. package/src/interface/system/check.ts +15 -2
  161. package/src/interface/system/commands.ts +23 -4
  162. package/src/interface/system/commands.type-test.ts +31 -0
  163. package/src/interface/system/create-resolved.ts +1 -1
  164. package/src/interface/system/create.test.ts +8 -0
  165. package/src/interface/system/create.ts +9 -5
  166. package/src/interface/system/describe.test.ts +79 -0
  167. package/src/interface/system/describe.ts +122 -0
  168. package/src/interface/system/index.ts +1 -0
  169. package/src/interface/system/leaf.ts +6 -0
  170. package/src/interface/system/render.ts +1 -0
  171. package/src/interface/system/resolve.ts +25 -2
  172. package/src/interface/system/shared-only.ts +5 -0
  173. package/src/interface/system/tables.ts +7 -1
  174. package/src/interface/world/run.type-test.ts +11 -1
  175. package/src/interface/world/table/index.ts +3 -2
  176. package/src/interface/world/world.ts +13 -0
  177. package/src/perftest/benchmarks.ts +18 -0
  178. package/src/perftest/structural.ts +20 -0
  179. 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
- * A system's `where` in a world: its values interned there, by number, its predicates' context reading `reads`,
79
- * evaluated again once one of them changed since they last were.
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
- export const createWhere = (state, where, reads, leaf) => {
82
- const conditions = Object.getOwnPropertySymbols(where).map(key => {
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
- return { id, number: -1, predicate };
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
- throw new Error(`System "${leaf.name}": where names "${labelOf(key)}", which isn't a shared component.`);
94
+ return key;
91
95
  const number = internShared(values, given);
92
- // Pinned, so its number stays while no archetype holds it: one that comes to hold it again matches.
93
- if (number >= 0)
96
+ if (pinned && number >= 0)
94
97
  holdShared(values, number);
95
- return { id, number, predicate: null };
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":"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"}
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 Essential[] ? Listed<D, "watch"> & Essential : Essential;
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
- /** A sync point's structural changes to the watched components, and the values adds replace, before they apply. */
47
- export type ChangeSet<C extends Component.Key> = {
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, and for
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, and for
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
- if (kindOf(key) !== "component")
120
- throw new Error(`Finalizer "${name}" watches "${labelOf(key)}", which isn't a registered component: ${whyUnregistered(key)}.`);
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 thread = threadOf({ components: { read: declaration.watch }, resources: declaration.resources, lookup: declaration.lookup }, "Finalizer", name);
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":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/interface/finalizer/create.ts"],"names":[],"mappings":"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"}
@@ -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,2 @@
1
1
  export * from './create.js';
2
+ export { declarationOf, type Declared } from './declaration-of.js';
@@ -1,3 +1,4 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
2
  export * from './create.js';
3
+ export { declarationOf } from './declaration-of.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -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 {};