@forgeax/engine-ecs 0.1.21 → 0.1.24
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/README.md +83 -17
- package/dist/__tests__/changed-block-summary.candidate.test.d.ts +2 -0
- package/dist/__tests__/changed-block-summary.candidate.test.d.ts.map +1 -0
- package/dist/__tests__/component-requirements.unit.test.d.ts +2 -0
- package/dist/__tests__/component-requirements.unit.test.d.ts.map +1 -0
- package/dist/__tests__/component-version-surface.test.d.ts +2 -0
- package/dist/__tests__/component-version-surface.test.d.ts.map +1 -0
- package/dist/__tests__/derived-range-writer.contract.test-d.d.ts +2 -0
- package/dist/__tests__/derived-range-writer.contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/derived-range-writer.contract.test.d.ts +2 -0
- package/dist/__tests__/derived-range-writer.contract.test.d.ts.map +1 -0
- package/dist/__tests__/structural-evidence.contract.test-d.d.ts +2 -0
- package/dist/__tests__/structural-evidence.contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/structural-evidence.contract.test.d.ts +2 -0
- package/dist/__tests__/structural-evidence.contract.test.d.ts.map +1 -0
- package/dist/component-schema.d.ts +17 -0
- package/dist/component-schema.d.ts.map +1 -1
- package/dist/component.d.ts +16 -7
- package/dist/component.d.ts.map +1 -1
- package/dist/errors/query-and-component-errors.d.ts +1 -1
- package/dist/errors/query-and-component-errors.d.ts.map +1 -1
- package/dist/errors/validation-errors.d.ts +24 -0
- package/dist/errors/validation-errors.d.ts.map +1 -1
- package/dist/errors.d.ts +14 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/externalization/index.mjs.map +1 -1
- package/dist/index.mjs +977 -255
- package/dist/index.mjs.map +1 -1
- package/dist/internal.d.ts +18 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.mjs +20 -2
- package/dist/internal.mjs.map +1 -1
- package/dist/projection/index.d.ts +27 -52
- package/dist/projection/index.d.ts.map +1 -1
- package/dist/projection/index.mjs +66 -76
- package/dist/projection/index.mjs.map +1 -1
- package/dist/query/derived-range-writer.d.ts +62 -0
- package/dist/query/derived-range-writer.d.ts.map +1 -0
- package/dist/query/query.d.ts +1 -1
- package/dist/query/query.d.ts.map +1 -1
- package/dist/relationship-index.d.ts +8 -0
- package/dist/relationship-index.d.ts.map +1 -1
- package/dist/shared-ref-store.d.ts +5 -9
- package/dist/shared-ref-store.d.ts.map +1 -1
- package/dist/shared.mjs.map +1 -1
- package/dist/storage/change-detection.d.ts +1 -3
- package/dist/storage/change-detection.d.ts.map +1 -1
- package/dist/storage/structural-evidence.d.ts +30 -0
- package/dist/storage/structural-evidence.d.ts.map +1 -0
- package/dist/world-component-access.d.ts +65 -19
- package/dist/world-component-access.d.ts.map +1 -1
- package/dist/world-component-storage.d.ts +26 -10
- package/dist/world-component-storage.d.ts.map +1 -1
- package/dist/world-core.d.ts +2 -2
- package/dist/world-core.d.ts.map +1 -1
- package/dist/world-entity-lifecycle.d.ts.map +1 -1
- package/dist/world-internal.d.ts +1 -1
- package/dist/world-internal.d.ts.map +1 -1
- package/dist/world.d.ts +15 -14
- package/dist/world.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/__tests__/changed-block-summary.candidate.test.ts +57 -0
- package/src/__tests__/component-requirements.unit.test.ts +76 -0
- package/src/__tests__/component-version-surface.test.ts +45 -0
- package/src/__tests__/derived-range-writer.contract.test-d.ts +35 -0
- package/src/__tests__/derived-range-writer.contract.test.ts +339 -0
- package/src/__tests__/errors.unit.test.ts +21 -5
- package/src/__tests__/externalization-render-read-lease.test-d.ts +1 -1
- package/src/__tests__/externalization-render-read-lease.unit.test.ts +15 -15
- package/src/__tests__/query-storage-trends.perf.test.ts +19 -0
- package/src/__tests__/query.unit.test.ts +10 -6
- package/src/__tests__/relationship-index.test.ts +147 -1
- package/src/__tests__/shared-ref-store.unit.test.ts +3 -8
- package/src/__tests__/structural-evidence.contract.test-d.ts +6 -0
- package/src/__tests__/structural-evidence.contract.test.ts +49 -0
- package/src/component-schema.ts +51 -0
- package/src/component.ts +21 -8
- package/src/errors/query-and-component-errors.ts +4 -1
- package/src/errors/validation-errors.ts +30 -0
- package/src/errors.ts +29 -5
- package/src/internal.ts +59 -0
- package/src/projection/index.ts +68 -149
- package/src/query/derived-range-writer.ts +443 -0
- package/src/query/query.ts +115 -16
- package/src/relationship-index.ts +13 -1
- package/src/shared-ref-store.ts +16 -24
- package/src/storage/change-detection.ts +0 -15
- package/src/storage/structural-evidence.ts +64 -0
- package/src/world-component-access.ts +479 -130
- package/src/world-component-storage.ts +104 -18
- package/src/world-core.ts +2 -2
- package/src/world-entity-lifecycle.ts +59 -10
- package/src/world-internal.ts +10 -5
- package/src/world.ts +97 -53
- package/dist/.tsbuildinfo +0 -1
- package/dist/__tests__/world-change-journal.unit.test.d.ts +0 -2
- package/dist/__tests__/world-change-journal.unit.test.d.ts.map +0 -1
- package/dist/__tests__/world-internal-identity.unit.test.d.ts +0 -2
- package/dist/__tests__/world-internal-identity.unit.test.d.ts.map +0 -1
- package/dist/world-change-journal.d.ts +0 -34
- package/dist/world-change-journal.d.ts.map +0 -1
- package/src/__tests__/world-change-journal.unit.test.ts +0 -97
- package/src/__tests__/world-internal-identity.unit.test.ts +0 -17
- package/src/world-change-journal.ts +0 -84
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type Result } from '@forgeax/engine-types';
|
|
2
|
+
import type { Component } from '../component';
|
|
3
|
+
import type { EntityHandle } from '../entity-handle';
|
|
4
|
+
import type { Table } from '../storage/table';
|
|
5
|
+
import type { EcsError, World } from '../world';
|
|
6
|
+
import type { MutableColumnShape, ReadonlyColumnShape } from './query';
|
|
7
|
+
/** Package-internal whole-column storage owned by one dense query table. */
|
|
8
|
+
export interface DerivedColumnBinding<R extends Component, C extends Component> {
|
|
9
|
+
/** Physical table identity for package-internal projection consumers. */
|
|
10
|
+
readonly tableId: number;
|
|
11
|
+
/** Whole entity column; every dense table carries the essential Entity row. */
|
|
12
|
+
readonly entities: Readonly<Uint32Array>;
|
|
13
|
+
readonly read: ReadonlyColumnShape<R>;
|
|
14
|
+
readonly write: MutableColumnShape<C>;
|
|
15
|
+
readonly rowCapacity: number;
|
|
16
|
+
}
|
|
17
|
+
/** Reusable identity cursor for O(1) dense-table lookup without a row facade. */
|
|
18
|
+
export interface DerivedRangeCursor {
|
|
19
|
+
bindingIndex: number;
|
|
20
|
+
row: number;
|
|
21
|
+
}
|
|
22
|
+
export type DerivedRangeKernel<R extends Component, C extends Component> = (binding: DerivedColumnBinding<R, C>, base: number, start: number, count: number, context: unknown) => void;
|
|
23
|
+
/** Package-internal row probe used when the probe already has the derived value in scratch storage. */
|
|
24
|
+
export type DerivedRangeRowProbe<R extends Component, C extends Component> = (binding: DerivedColumnBinding<R, C>, row: number, context: unknown) => boolean;
|
|
25
|
+
/** Package-internal commit for a value prepared by a preceding row probe. */
|
|
26
|
+
export type DerivedRangeRowCommit<R extends Component, C extends Component> = (binding: DerivedColumnBinding<R, C>, row: number, context: unknown) => void;
|
|
27
|
+
interface DerivedRangeBindingSource {
|
|
28
|
+
readonly structureEpoch: () => number;
|
|
29
|
+
readonly tables: () => readonly Table[];
|
|
30
|
+
readonly readComponents: readonly Component[];
|
|
31
|
+
readonly writeComponents: readonly Component[];
|
|
32
|
+
}
|
|
33
|
+
export interface DerivedRangeAllocationTrace {
|
|
34
|
+
subarrayCalls: number;
|
|
35
|
+
shapeAllocations: number;
|
|
36
|
+
closureAllocations: number;
|
|
37
|
+
columnWindowAllocations: number;
|
|
38
|
+
rowFacadeAllocations: number;
|
|
39
|
+
proxyAllocations: number;
|
|
40
|
+
rangeCacheAllocations: number;
|
|
41
|
+
bindingRebuilds: number;
|
|
42
|
+
}
|
|
43
|
+
export declare function beginDerivedRangeAllocationTrace(): void;
|
|
44
|
+
export declare function endDerivedRangeAllocationTrace(): DerivedRangeAllocationTrace;
|
|
45
|
+
export interface DerivedRangeWriter<R extends Component, C extends Component> {
|
|
46
|
+
readonly bindings: readonly DerivedColumnBinding<R, C>[];
|
|
47
|
+
/** Locate a live entity in its bound table and return its physical row. */
|
|
48
|
+
locateEntity(entity: EntityHandle, cursor: DerivedRangeCursor): boolean;
|
|
49
|
+
/** Publish rows whose values were written directly into a derived column. */
|
|
50
|
+
publishChangedRows(bindingIndex: number, changed: Uint8Array): Result<void, EcsError>;
|
|
51
|
+
writeRange(bindingIndex: number, base: number, start: number, count: number, kernel: DerivedRangeKernel<R, C>, context: unknown): Result<void, EcsError>;
|
|
52
|
+
/**
|
|
53
|
+
* Probe and commit rows in one pass. The probe must only inspect the derived
|
|
54
|
+
* value prepared in reusable scratch storage; the commit copies that value.
|
|
55
|
+
* The writer publishes only contiguous changed runs and does not allocate in
|
|
56
|
+
* the hot loop.
|
|
57
|
+
*/
|
|
58
|
+
probeAndCommitRange(bindingIndex: number, base: number, start: number, count: number, probe: DerivedRangeRowProbe<R, C>, commit: DerivedRangeRowCommit<R, C>, context: unknown): Result<void, EcsError>;
|
|
59
|
+
}
|
|
60
|
+
export declare function createDerivedRangeWriter<R extends Component, C extends Component>(world: World, component: C, source: DerivedRangeBindingSource): DerivedRangeWriter<R, C>;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=derived-range-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derived-range-writer.d.ts","sourceRoot":"","sources":["../../src/query/derived-range-writer.ts"],"names":[],"mappings":"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"}
|
package/dist/query/query.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export interface Query<R extends readonly Component[] = readonly Component[], W
|
|
|
43
43
|
* Read one known entity without iterating the query's matching tables.
|
|
44
44
|
* Structural descriptor constraints are applied; temporal `changed` and
|
|
45
45
|
* `added` filters are intentionally not evaluated because this is an
|
|
46
|
-
* identity-addressed read, not a
|
|
46
|
+
* identity-addressed read, not a version scan.
|
|
47
47
|
*/
|
|
48
48
|
at(entity: EntityHandle): QueryRow<R, W, O> | undefined;
|
|
49
49
|
spans(): Result<Iterable<QuerySpan<R, W>>, QuerySpanUnavailableError>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/query/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,eAAe,EAIpB,KAAK,OAAO,EACZ,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAG5B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/query/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,14 @@ export interface RelationshipOptions {
|
|
|
15
15
|
readonly sourceField: string;
|
|
16
16
|
readonly targetName: string;
|
|
17
17
|
readonly targetField: string;
|
|
18
|
+
/**
|
|
19
|
+
* Components materialized with the writable source side. This is the
|
|
20
|
+
* relationship equivalent of `defineComponent(..., { requires })`: the
|
|
21
|
+
* dependency is resolved once at the structural boundary, never by a frame
|
|
22
|
+
* system. It applies only to the source; the reverse target remains an
|
|
23
|
+
* engine-owned projection.
|
|
24
|
+
*/
|
|
25
|
+
readonly sourceRequires?: readonly Component[];
|
|
18
26
|
readonly exclusive?: boolean;
|
|
19
27
|
readonly linkedSpawn?: boolean;
|
|
20
28
|
/** Allow a source to point at its own holder (e.g. self-animated entities). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-index.d.ts","sourceRoot":"","sources":["../src/relationship-index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,eAAe,EAGrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,CAAC,MAAM,uBAAuB,EAAE,OAAO,MAAM,CAAC;AAErD,kFAAkF;AAClF,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,CAAC,GAAG;IAC7E,QAAQ,CAAC,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC;CAC1C,CAAC;AAEF,wEAAwE;AACxE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAIN;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,EAAE,SAAS,MAAM,EACvB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,EAAE,SAAS,MAAM,EAEvB,OAAO,EAAE,mBAAmB,GAAG;IAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;CAC1B,GACA;IACD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE;SAAG,CAAC,IAAI,EAAE,GAAG,QAAQ;KAAE,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC,EAAE;SAAG,CAAC,IAAI,EAAE,GAAG,eAAe;KAAE,CAAC,CAAC,CAAC;CAC5F,
|
|
1
|
+
{"version":3,"file":"relationship-index.d.ts","sourceRoot":"","sources":["../src/relationship-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,15 +11,10 @@ export interface SharedRefReleaseEvidence {
|
|
|
11
11
|
readonly generation: number;
|
|
12
12
|
readonly evidence: 'released';
|
|
13
13
|
}
|
|
14
|
-
export
|
|
15
|
-
readonly status: 'ok';
|
|
14
|
+
export interface SharedRefMutationRead {
|
|
16
15
|
readonly cursor: number;
|
|
17
16
|
readonly records: readonly SharedRefMutation[];
|
|
18
|
-
}
|
|
19
|
-
readonly status: 'overflow';
|
|
20
|
-
readonly cursor: number;
|
|
21
|
-
readonly oldestAvailable: number;
|
|
22
|
-
};
|
|
17
|
+
}
|
|
23
18
|
/**
|
|
24
19
|
* Reference-counted store for ECS-aware `Handle<T, 'shared'>` lifecycles.
|
|
25
20
|
*
|
|
@@ -51,7 +46,8 @@ export declare class SharedRefStore {
|
|
|
51
46
|
private readonly internedKeys;
|
|
52
47
|
private nextSlot;
|
|
53
48
|
private mutationEpoch;
|
|
54
|
-
|
|
49
|
+
/** Latest published mutation epoch per live handle; not an event journal. */
|
|
50
|
+
private readonly mutationEpochs;
|
|
55
51
|
private readonly releaseJournal;
|
|
56
52
|
/**
|
|
57
53
|
* Generation table indexed by slot (D-6). Each entry tracks the current
|
|
@@ -106,7 +102,7 @@ export declare class SharedRefStore {
|
|
|
106
102
|
markChanged<Target extends string>(handle: Handle<Target, 'shared'>): Result<void, SharedRefReleasedError | SharedRefStaleError | BuiltinSlotNotOwnedError>;
|
|
107
103
|
/** Current upper bound for explicitly published payload mutations. */
|
|
108
104
|
getMutationEpoch(): number;
|
|
109
|
-
/** Read
|
|
105
|
+
/** Read each live handle whose latest published mutation is after `cursor`. */
|
|
110
106
|
readChangesSince(cursor: number): SharedRefMutationRead;
|
|
111
107
|
/**
|
|
112
108
|
* Increment the refcount of a live shared handle. Returns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-ref-store.d.ts","sourceRoot":"","sources":["../src/shared-ref-store.ts"],"names":[],"mappings":"AAgEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EASL,KAAK,MAAM,EAGZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAE3B,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;CAC/B;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"shared-ref-store.d.ts","sourceRoot":"","sources":["../src/shared-ref-store.ts"],"names":[],"mappings":"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"}
|