@adobe/ecs 0.2.3 → 0.3.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/implementation/compiler/augmentations.js +8 -1
- package/dist/implementation/compiler/augmentations.js.map +1 -1
- 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 +5 -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/compiler/type-schemas.d.ts +1 -0
- package/dist/implementation/compiler/type-schemas.js +35 -2
- package/dist/implementation/compiler/type-schemas.js.map +1 -1
- package/dist/implementation/world/activate.d.ts +14 -3
- package/dist/implementation/world/activate.js +28 -10
- 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 +41 -5
- package/dist/implementation/world/commands.js.map +1 -1
- package/dist/implementation/world/create.js +57 -6
- package/dist/implementation/world/create.js.map +1 -1
- package/dist/implementation/world/execute.d.ts +4 -4
- package/dist/implementation/world/execute.js +228 -93
- package/dist/implementation/world/execute.js.map +1 -1
- package/dist/implementation/world/finalizers.d.ts +10 -0
- package/dist/implementation/world/finalizers.js +60 -10
- 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/program.js +5 -1
- package/dist/implementation/world/program.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 +15 -0
- package/dist/implementation/world/state.js +22 -1
- package/dist/implementation/world/state.js.map +1 -1
- package/dist/implementation/world/synchronize.js +81 -24
- 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 +4 -2
- package/dist/implementation/world/tables.js +137 -38
- 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 +40 -4
- package/dist/interface/finalizer/create.d.ts +8 -6
- package/dist/interface/finalizer/create.js +45 -10
- package/dist/interface/finalizer/create.js.map +1 -1
- package/dist/interface/finalizer/declaration.d.ts +26 -4
- 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/index.d.ts +1 -1
- package/dist/interface/registry/index.js +1 -1
- package/dist/interface/registry/index.js.map +1 -1
- package/dist/interface/registry/names.d.ts +4 -0
- package/dist/interface/registry/names.js +20 -0
- package/dist/interface/registry/names.js.map +1 -1
- package/dist/interface/registry/schedule.d.ts +29 -1
- package/dist/interface/registry/schedule.js +261 -25
- 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 +21 -3
- package/dist/interface/system/check.js.map +1 -1
- package/dist/interface/system/commands.d.ts +31 -5
- package/dist/interface/system/create-resolved.js +2 -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/declaration.d.ts +11 -4
- 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 +7 -0
- package/dist/interface/system/render.js +2 -1
- package/dist/interface/system/render.js.map +1 -1
- package/dist/interface/system/resolve.d.ts +14 -1
- package/dist/interface/system/resolve.js +50 -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/01-resources.md +4 -3
- package/src/guide/03-systems.out +1 -1
- package/src/guide/05-scheduling.md +12 -6
- package/src/guide/05-scheduling.out +1 -0
- package/src/guide/05-scheduling.ts +17 -0
- package/src/guide/06-sync-points.md +20 -8
- package/src/guide/06-sync-points.out +3 -2
- package/src/guide/06-sync-points.ts +24 -5
- package/src/guide/10-finalizers.md +5 -0
- package/src/guide/18-identity.out +1 -1
- package/src/guide/guide.test.ts +6 -153
- package/src/implementation/compiler/augmentations.test.ts +28 -1
- package/src/implementation/compiler/augmentations.ts +5 -1
- 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 +5 -2
- package/src/implementation/compiler/transform.test.ts +41 -21
- package/src/implementation/compiler/transform.ts +5 -3
- package/src/implementation/compiler/type-schemas.ts +28 -2
- package/src/implementation/world/activate.ts +32 -10
- 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 +37 -5
- package/src/implementation/world/create.test.ts +8 -8
- package/src/implementation/world/create.ts +61 -6
- package/src/implementation/world/defaults.test.ts +24 -1
- package/src/implementation/world/despawn-where.test.ts +310 -0
- package/src/implementation/world/execute.ts +222 -86
- package/src/implementation/world/finalizers.ts +63 -11
- 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/lifetime.test-helper.ts +1 -1
- package/src/implementation/world/names.test.ts +1 -2
- package/src/implementation/world/passes.test.ts +61 -0
- package/src/implementation/world/perf.md +12 -1
- package/src/implementation/world/program.ts +4 -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/run-results.test.ts +17 -0
- package/src/implementation/world/runner.ts +17 -13
- package/src/implementation/world/schedule.test.ts +42 -1
- package/src/implementation/world/shared.test.ts +2 -2
- package/src/implementation/world/state.ts +27 -0
- package/src/implementation/world/sync-points.test.ts +147 -0
- package/src/implementation/world/synchronize.ts +73 -20
- package/src/implementation/world/tables-read.ts +16 -5
- package/src/implementation/world/tables.test.ts +139 -4
- package/src/implementation/world/tables.ts +118 -35
- 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/watch-traits-late.test-helper.ts +14 -0
- package/src/implementation/world/watch-traits.test-helper.ts +10 -0
- package/src/implementation/world/watch-traits.test.ts +62 -0
- package/src/implementation/world/where.ts +38 -10
- package/src/interface/finalizer/body.ts +33 -4
- package/src/interface/finalizer/create.test.ts +6 -1
- package/src/interface/finalizer/create.ts +45 -12
- package/src/interface/finalizer/declaration.ts +31 -4
- 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/index.ts +1 -1
- package/src/interface/registry/names.ts +19 -0
- package/src/interface/registry/schedule.ts +275 -29
- package/src/interface/rule/rule.type-test.ts +23 -1
- package/src/interface/system/access.ts +16 -0
- package/src/interface/system/check.ts +17 -2
- package/src/interface/system/commands.ts +28 -4
- package/src/interface/system/commands.type-test.ts +31 -0
- package/src/interface/system/create-resolved.ts +2 -1
- package/src/interface/system/create.test.ts +10 -2
- package/src/interface/system/create.ts +9 -5
- package/src/interface/system/declaration.ts +10 -4
- package/src/interface/system/describe.test.ts +98 -0
- package/src/interface/system/describe.ts +122 -0
- package/src/interface/system/index.ts +1 -0
- package/src/interface/system/leaf.ts +7 -0
- package/src/interface/system/render.ts +2 -1
- package/src/interface/system/resolve.test.ts +17 -1
- package/src/interface/system/resolve.ts +60 -2
- package/src/interface/system/shared-only.ts +5 -0
- package/src/interface/system/system.type-test.ts +6 -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 +20 -0
- package/src/perftest/chained.ts +108 -0
- package/src/perftest/structural.ts +20 -0
- package/src/perftest/tables.ts +107 -0
|
@@ -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":"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
|
|
1
|
+
{"version":3,"file":"where.js","sourceRoot":"","sources":["../../../src/implementation/world/where.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,12 @@ import type { Commands } from '../system/commands.js';
|
|
|
4
4
|
import type { Listed, Property } from '../system/property.js';
|
|
5
5
|
import type { LookupFunction } from '../system/values.js';
|
|
6
6
|
import type { WriteResources } from '../system/body.js';
|
|
7
|
-
import type { ChangesDeclaration, Declaration } from './declaration.js';
|
|
7
|
+
import type { ChangesDeclaration, Declaration, OwnTrait } from './declaration.js';
|
|
8
8
|
import type { Essential, ReadonlyType } from '../component/value.js';
|
|
9
|
+
import type { Resource } from '../resource/resource.js';
|
|
10
|
+
import type { Resources } from '../resource/types.js';
|
|
11
|
+
import type { Components } from '../component/types.js';
|
|
12
|
+
import type { ReadonlyType as ResourceType } from '../resource/value.js';
|
|
9
13
|
import type { Elsewhere, ThreadsOf } from '../system/threads.js';
|
|
10
14
|
/**
|
|
11
15
|
* The entity that stopped matching, with the values of its `with` as they are before the sync point applies, and of
|
|
@@ -31,8 +35,28 @@ export type Context<D extends Declaration | ChangesDeclaration> = {
|
|
|
31
35
|
}) & (true extends Elsewhere<ThreadsOf<D>> ? {} : {
|
|
32
36
|
readonly commands: Commands;
|
|
33
37
|
});
|
|
38
|
+
/** The components declaring any of the traits `T`. */
|
|
39
|
+
type ComponentsDeclaring<T> = {
|
|
40
|
+
[K in Component.Key]: [Extract<keyof Components[K], T>] extends [never] ? never : K;
|
|
41
|
+
}[Component.Key];
|
|
42
|
+
/** The resources declaring any of the traits `T`. */
|
|
43
|
+
type ResourcesDeclaring<T> = {
|
|
44
|
+
[K in Resource.Key]: [Extract<keyof Resources[K], T>] extends [never] ? never : K;
|
|
45
|
+
}[Resource.Key];
|
|
46
|
+
/** The components keys `L` name: each, and each declaring a trait among them. */
|
|
47
|
+
type ComponentsOf<L> = Extract<L, Essential> | Extract<ComponentsDeclaring<Extract<L, OwnTrait>>, Essential>;
|
|
48
|
+
/** The resources keys `L` name: each, and each declaring a trait among them. */
|
|
49
|
+
type ResourcesOf<L> = Extract<L, Resource.Key> | ResourcesDeclaring<Extract<L, OwnTrait>>;
|
|
50
|
+
/** The keys a changes finalizer's `watch` lists, by kind: those of its list, or of its object's lists. */
|
|
51
|
+
export type WatchListed<D extends ChangesDeclaration, Of extends "components" | "resources"> = Property<D, "watch"> extends readonly (infer E)[] ? E : Property<D, "watch"> extends {
|
|
52
|
+
readonly [P in Of]: readonly (infer E)[];
|
|
53
|
+
} ? E : never;
|
|
34
54
|
/** The components a changes finalizer sees. */
|
|
35
|
-
export type Watched<D extends ChangesDeclaration> = Property<D, "watch"> extends readonly
|
|
55
|
+
export type Watched<D extends ChangesDeclaration> = Property<D, "watch"> extends readonly unknown[] | {
|
|
56
|
+
readonly components: readonly unknown[];
|
|
57
|
+
} ? ComponentsOf<WatchListed<D, "components">> : Essential;
|
|
58
|
+
/** The resources a changes finalizer sees: those it watches. */
|
|
59
|
+
export type WatchedResources<D extends ChangesDeclaration> = ResourcesOf<WatchListed<D, "resources">>;
|
|
36
60
|
/** Entities whose components changed the same way: `from` and `to` are null for those spawned and despawned. */
|
|
37
61
|
export type Group<C extends Component.Key> = {
|
|
38
62
|
readonly from: readonly C[] | null;
|
|
@@ -43,11 +67,23 @@ export type Group<C extends Component.Key> = {
|
|
|
43
67
|
readonly replaced: readonly C[];
|
|
44
68
|
readonly entities: readonly Entity[];
|
|
45
69
|
};
|
|
46
|
-
/**
|
|
47
|
-
|
|
70
|
+
/**
|
|
71
|
+
* A sync point's structural changes to the watched components, and the values adds replace, before they apply; and each
|
|
72
|
+
* watched resource written since the last sync point's finalizers ran, to a value that isn't equal to its last one,
|
|
73
|
+
* leaf by leaf for data and by identity for objects, with its value before and after.
|
|
74
|
+
*/
|
|
75
|
+
export type ChangeSet<C extends Component.Key, R extends Resource.Key = never> = {
|
|
48
76
|
readonly groups: readonly Group<C>[];
|
|
77
|
+
readonly resources: readonly {
|
|
78
|
+
readonly [K in R]: {
|
|
79
|
+
readonly key: K;
|
|
80
|
+
readonly previous: ResourceType<K>;
|
|
81
|
+
readonly next: ResourceType<K>;
|
|
82
|
+
};
|
|
83
|
+
}[R][];
|
|
49
84
|
/** The value before the sync point, or null if the entity didn't have it. */
|
|
50
85
|
previous<K extends C>(entity: Entity, component: K): ReadonlyType<K> | null;
|
|
51
86
|
/** The value after it, or null if the entity won't have it. */
|
|
52
87
|
next<K extends C>(entity: Entity, component: K): ReadonlyType<K> | null;
|
|
53
88
|
};
|
|
89
|
+
export {};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { 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, WatchListed } 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<
|
|
18
|
+
type OnWorld<D extends ChangesDeclaration> = true extends Elsewhere<ThreadsOf<D> | ThreadOfComponent<Extract<WatchListed<D, "components">, Component.Key>> | ThreadOfResource<Extract<WatchListed<D, "resources">, 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 {};
|
|
@@ -95,16 +95,55 @@ export const create = (declared, body) => {
|
|
|
95
95
|
}
|
|
96
96
|
return addFinalizer(finalizer, id);
|
|
97
97
|
};
|
|
98
|
+
const isList = (watch) => Array.isArray(watch);
|
|
99
|
+
/** What a changes finalizer watches, sorted by kind. Throws for a key that's neither of the kinds it's listed as, or derived. */
|
|
100
|
+
const watchOf = (name, watch) => {
|
|
101
|
+
const components = [];
|
|
102
|
+
const componentTraits = [];
|
|
103
|
+
const resources = [];
|
|
104
|
+
const resourceTraits = [];
|
|
105
|
+
const sort = (key, kinds) => {
|
|
106
|
+
const kind = kindOf(key);
|
|
107
|
+
if (typeof key !== "symbol" || kind === undefined || (kind !== "trait" && !kinds.includes(kind))) {
|
|
108
|
+
const among = kinds.length === 2 ? "" : ` among its ${kinds[0]}s`;
|
|
109
|
+
throw new Error(`Finalizer "${name}" watches "${labelOf(key)}"${among}, which isn't a registered ${kinds.length === 2 ? "component, resource" : kinds[0]} or trait: ${whyUnregistered(key)}.`);
|
|
110
|
+
}
|
|
111
|
+
if (kind === "trait") {
|
|
112
|
+
if (kinds.includes("component"))
|
|
113
|
+
componentTraits.push(key);
|
|
114
|
+
if (kinds.includes("resource"))
|
|
115
|
+
resourceTraits.push(key);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (declarationOf(key)?.derived === true)
|
|
119
|
+
throw new Error(`Finalizer "${name}" watches "${labelOf(key)}", which is derived; it sees only components user code adds and removes.`);
|
|
120
|
+
(kind === "component" ? components : resources).push(key);
|
|
121
|
+
};
|
|
122
|
+
if (watch === undefined)
|
|
123
|
+
return { components: true, componentTraits, resources, resourceTraits };
|
|
124
|
+
if (isList(watch)) {
|
|
125
|
+
for (const key of watch)
|
|
126
|
+
sort(key, ["component", "resource"]);
|
|
127
|
+
return { components, componentTraits, resources, resourceTraits };
|
|
128
|
+
}
|
|
129
|
+
const every = watch.components === true;
|
|
130
|
+
if (!every)
|
|
131
|
+
for (const key of watch.components)
|
|
132
|
+
sort(key, ["component"]);
|
|
133
|
+
for (const key of watch.resources)
|
|
134
|
+
sort(key, ["resource"]);
|
|
135
|
+
return { components: every ? true : components, componentTraits: every ? [] : componentTraits, resources, resourceTraits };
|
|
136
|
+
};
|
|
98
137
|
/**
|
|
99
138
|
* 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.
|
|
139
|
+
* on the world's thread. Throws as `create` does, for a watched component that isn't registered or is derived, a
|
|
140
|
+
* watched key that's neither a component nor a resource, and for one watching or reading another thread's values.
|
|
102
141
|
*/
|
|
103
142
|
export const changes = (declared, body) => {
|
|
104
143
|
const id = takeIdOfDeclaration(declared);
|
|
105
144
|
const name = nameOf(declared, id, "finalizer");
|
|
106
145
|
const what = `Finalizer "${name}"`;
|
|
107
|
-
const declaration = { ...resolveShared(what, declared, accessOf(what, declared)),
|
|
146
|
+
const declaration = { ...resolveShared(what, declared, accessOf(what, declared)), watch: watchOf(name, declared.watch) };
|
|
108
147
|
const finalizer = { kind: "changes", name, declaration, body };
|
|
109
148
|
checkResources(name, declaration.resources);
|
|
110
149
|
requireRegistered("Finalizer", name, "resource", declaration.resources?.read);
|
|
@@ -115,13 +154,9 @@ export const changes = (declared, body) => {
|
|
|
115
154
|
for (const keys of [lookup.read, "has" in lookup ? lookup.has : undefined, "not" in lookup ? lookup.not : undefined])
|
|
116
155
|
requireRegistered("Finalizer", name, "component", keys);
|
|
117
156
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
if (declarationOf(key)?.derived === true)
|
|
122
|
-
throw new Error(`Finalizer "${name}" watches "${labelOf(key)}", which is derived; it sees only components user code adds and removes.`);
|
|
123
|
-
}
|
|
124
|
-
const thread = threadOf({ components: { read: declaration.watch }, resources: declaration.resources, lookup: declaration.lookup }, "Finalizer", name);
|
|
157
|
+
const { watch } = declaration;
|
|
158
|
+
const read = [...declaration.resources?.read ?? [], ...watch.resources];
|
|
159
|
+
const thread = threadOf({ components: { read: watch.components === true ? [] : watch.components }, resources: { ...declaration.resources, read }, lookup: declaration.lookup }, "Finalizer", name);
|
|
125
160
|
if (thread !== null && thread !== "world")
|
|
126
161
|
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
162
|
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":"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"}
|
|
@@ -3,6 +3,9 @@ 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';
|
|
7
|
+
import type { Traits } from '../trait/types.js';
|
|
8
|
+
import type { BuiltIn } from '../trait/key.js';
|
|
6
9
|
/**
|
|
7
10
|
* What every finalizer declares. What its body reads of its row and lookups, and reads and writes of resources, the
|
|
8
11
|
* build infers; resource writes take the sync point's tick, so each system sees them once.
|
|
@@ -26,12 +29,21 @@ export type Declaration = Shared & {
|
|
|
26
29
|
readonly not?: readonly Component.Key[];
|
|
27
30
|
};
|
|
28
31
|
};
|
|
32
|
+
/** A trait of your own, which watches every component and resource declaring it. */
|
|
33
|
+
export type OwnTrait = Exclude<keyof Traits<never>, BuiltIn>;
|
|
29
34
|
/**
|
|
30
|
-
* A finalizer that sees each sync point's structural changes to the components it watches
|
|
31
|
-
*
|
|
35
|
+
* A finalizer that sees each sync point's structural changes to the components it watches, and the resources it
|
|
36
|
+
* watches written since the last sync point's finalizers ran. By default it watches every component that isn't derived
|
|
37
|
+
* or an object a joined thread fills, and no resource. `watch` lists components, resources and traits of your own, or,
|
|
38
|
+
* as an object, every component (`components: true`) or those listed, beside the resources listed. A trait watches each
|
|
39
|
+
* component and resource declaring it, as each registers, but those the default leaves out and resources on another
|
|
40
|
+
* thread.
|
|
32
41
|
*/
|
|
33
42
|
export type ChangesDeclaration = Shared & {
|
|
34
|
-
readonly watch?: readonly Essential[]
|
|
43
|
+
readonly watch?: readonly (Essential | Resource.Key | OwnTrait)[] | {
|
|
44
|
+
readonly components: true | readonly (Essential | OwnTrait)[];
|
|
45
|
+
readonly resources: readonly (Resource.Key | OwnTrait)[];
|
|
46
|
+
};
|
|
35
47
|
};
|
|
36
48
|
type Key = symbol;
|
|
37
49
|
/** What every finalizer's declaration holds as the world takes it, with what the build inferred its body uses. */
|
|
@@ -52,7 +64,17 @@ export type Resolved = ResolvedShared & {
|
|
|
52
64
|
readonly not?: readonly Key[];
|
|
53
65
|
};
|
|
54
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* A changes finalizer's declaration as the world takes it. It watches the components listed, or every one (`true`),
|
|
69
|
+
* and those declaring a trait of `componentTraits`; the resources listed, and those declaring a trait of
|
|
70
|
+
* `resourceTraits`.
|
|
71
|
+
*/
|
|
55
72
|
export type ResolvedChanges = ResolvedShared & {
|
|
56
|
-
readonly watch
|
|
73
|
+
readonly watch: {
|
|
74
|
+
readonly components: true | readonly Key[];
|
|
75
|
+
readonly componentTraits: readonly Key[];
|
|
76
|
+
readonly resources: readonly Key[];
|
|
77
|
+
readonly resourceTraits: readonly Key[];
|
|
78
|
+
};
|
|
57
79
|
};
|
|
58
80
|
export {};
|
|
@@ -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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export type { AnyDeclaration } from './declarations.js';
|
|
3
3
|
export { schemaOf, threadOfDeclaration } from './declarations.js';
|
|
4
4
|
export type { Kind } from './names.js';
|
|
5
|
-
export { declarationOf, firstKeyOf, keyOfId, kindOf, labelOf, newestKeyOf, whyUnregistered } from './names.js';
|
|
5
|
+
export { declarationOf, declaresTrait, declaredOf, firstKeyOf, keyOfId, keysVersion, kindOf, labelOf, newestKeyOf, whyUnregistered } from './names.js';
|
|
6
6
|
export type { Item } from './program.js';
|
|
7
7
|
export { definitionOf, programFinalizers, programRules, programVersion, requireDefinition } from './program.js';
|
|
8
8
|
export type { Schedule } from './schedule.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { schemaOf, threadOfDeclaration } from './declarations.js';
|
|
2
|
-
export { declarationOf, firstKeyOf, keyOfId, kindOf, labelOf, newestKeyOf, whyUnregistered } from './names.js';
|
|
2
|
+
export { declarationOf, declaresTrait, declaredOf, firstKeyOf, keyOfId, keysVersion, kindOf, labelOf, newestKeyOf, whyUnregistered } from './names.js';
|
|
3
3
|
export { definitionOf, programFinalizers, programRules, programVersion, requireDefinition } from './program.js';
|
|
4
4
|
export { accessOf, isLeaf, isObserver, reducedBy, scheduleOf } from './schedule.js';
|
|
5
5
|
export { strataOf } from './strata.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/registry/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/registry/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvJ,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEhH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEpF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMjE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -39,6 +39,10 @@ export declare const sameDeclaration: (a: unknown, b: unknown) => boolean;
|
|
|
39
39
|
* declaration.
|
|
40
40
|
*/
|
|
41
41
|
export declare const claimKey: (key: unknown, kind: Kind, declaration?: AnyDeclaration) => void;
|
|
42
|
+
/** How many keys are registered so far, so a world can tell when one registered since it last looked. */
|
|
43
|
+
export declare const keysVersion: () => number;
|
|
44
|
+
/** Whether a component's or resource's declaration declares one of `traits`, keys of traits of your own. */
|
|
45
|
+
export declare const declaresTrait: (key: unknown, traits: readonly symbol[]) => boolean;
|
|
42
46
|
/** The symbol last registered under an id, by which a world gives values, or undefined where none was. */
|
|
43
47
|
export declare const keyOfId: (id: string) => symbol | undefined;
|
|
44
48
|
/**
|
|
@@ -2,6 +2,8 @@ import { idOfKey } from './ids.js';
|
|
|
2
2
|
import { sameItem } from './items.js';
|
|
3
3
|
/** Every component, resource and user trait, by symbol identity: symbols of one id share an entry. */
|
|
4
4
|
const entries = new Map();
|
|
5
|
+
/** How many keys were registered, counting a symbol registered under another's id. */
|
|
6
|
+
let registered = 0;
|
|
5
7
|
/** Entries by the ids the plugin gave their keys. */
|
|
6
8
|
const identified = new Map();
|
|
7
9
|
/** A symbol's description; without one, its binding, which the plugin's id names, or `Symbol()` without an id. */
|
|
@@ -134,6 +136,7 @@ export const claimKey = (key, kind, declaration) => {
|
|
|
134
136
|
}
|
|
135
137
|
named.newest = symbol;
|
|
136
138
|
entries.set(symbol, named);
|
|
139
|
+
registered++;
|
|
137
140
|
return;
|
|
138
141
|
}
|
|
139
142
|
const description = descriptionOf(symbol);
|
|
@@ -141,6 +144,23 @@ export const claimKey = (key, kind, declaration) => {
|
|
|
141
144
|
if (id !== undefined)
|
|
142
145
|
identified.set(id, entry);
|
|
143
146
|
entries.set(symbol, entry);
|
|
147
|
+
registered++;
|
|
148
|
+
};
|
|
149
|
+
/** How many keys are registered so far, so a world can tell when one registered since it last looked. */
|
|
150
|
+
export const keysVersion = () => {
|
|
151
|
+
catchUp();
|
|
152
|
+
return registered;
|
|
153
|
+
};
|
|
154
|
+
/** Whether a component's or resource's declaration declares one of `traits`, keys of traits of your own. */
|
|
155
|
+
export const declaresTrait = (key, traits) => {
|
|
156
|
+
const declaration = declarationOf(key);
|
|
157
|
+
if (declaration === undefined)
|
|
158
|
+
return false;
|
|
159
|
+
for (const declared of Object.getOwnPropertySymbols(declaration))
|
|
160
|
+
for (const trait of traits)
|
|
161
|
+
if (sameKey(declared, trait))
|
|
162
|
+
return true;
|
|
163
|
+
return false;
|
|
144
164
|
};
|
|
145
165
|
/** The symbol last registered under an id, by which a world gives values, or undefined where none was. */
|
|
146
166
|
export const keyOfId = (id) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"names.js","sourceRoot":"","sources":["../../../src/interface/registry/names.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"names.js","sourceRoot":"","sources":["../../../src/interface/registry/names.ts"],"names":[],"mappings":"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"}
|