@adobe/data 0.9.82 → 0.9.83

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 (56) hide show
  1. package/dist/ecs/archetype/archetype.d.ts +23 -0
  2. package/dist/ecs/archetype/archetype.js.map +1 -1
  3. package/dist/ecs/database/create-plugin.d.ts +2 -1
  4. package/dist/ecs/database/create-plugin.js.map +1 -1
  5. package/dist/ecs/database/database.d.ts +6 -5
  6. package/dist/ecs/database/database.js.map +1 -1
  7. package/dist/ecs/database/database.partition.test.d.ts +1 -0
  8. package/dist/ecs/database/database.partition.test.js +45 -0
  9. package/dist/ecs/database/database.partition.test.js.map +1 -0
  10. package/dist/ecs/database/database.partition.type-test.d.ts +1 -0
  11. package/dist/ecs/database/database.partition.type-test.js +41 -0
  12. package/dist/ecs/database/database.partition.type-test.js.map +1 -0
  13. package/dist/ecs/database/deep-extends-chain.type-test.d.ts +255 -255
  14. package/dist/ecs/database/index.d.ts +0 -1
  15. package/dist/ecs/database/index.js +0 -1
  16. package/dist/ecs/database/index.js.map +1 -1
  17. package/dist/ecs/database/transactional-store/transactional-store.d.ts +6 -5
  18. package/dist/ecs/store/core/core.d.ts +33 -8
  19. package/dist/ecs/store/core/create-core.d.ts +12 -2
  20. package/dist/ecs/store/core/create-core.js +141 -22
  21. package/dist/ecs/store/core/create-core.js.map +1 -1
  22. package/dist/ecs/store/core/create-core.partition.test.d.ts +1 -0
  23. package/dist/ecs/store/core/create-core.partition.test.js +229 -0
  24. package/dist/ecs/store/core/create-core.partition.test.js.map +1 -0
  25. package/dist/ecs/store/core/select-entities.js +87 -21
  26. package/dist/ecs/store/core/select-entities.js.map +1 -1
  27. package/dist/ecs/store/core/select-entities.partition.test.d.ts +1 -0
  28. package/dist/ecs/store/core/select-entities.partition.test.js +93 -0
  29. package/dist/ecs/store/core/select-entities.partition.test.js.map +1 -0
  30. package/dist/ecs/store/entity-select-options.d.ts +5 -1
  31. package/dist/ecs/store/partition.d.ts +63 -0
  32. package/dist/ecs/store/partition.js +3 -0
  33. package/dist/ecs/store/partition.js.map +1 -0
  34. package/dist/ecs/store/partition.type-test.d.ts +1 -0
  35. package/dist/ecs/store/partition.type-test.js +15 -0
  36. package/dist/ecs/store/partition.type-test.js.map +1 -0
  37. package/dist/ecs/store/public/create-store.d.ts +3 -1
  38. package/dist/ecs/store/public/create-store.js +19 -50
  39. package/dist/ecs/store/public/create-store.js.map +1 -1
  40. package/dist/ecs/store/public/create-store.partition.test.d.ts +1 -0
  41. package/dist/ecs/store/public/create-store.partition.test.js +111 -0
  42. package/dist/ecs/store/public/create-store.partition.test.js.map +1 -0
  43. package/dist/ecs/store/public/create-store.partition.type-test.d.ts +1 -0
  44. package/dist/ecs/store/public/create-store.partition.type-test.js +61 -0
  45. package/dist/ecs/store/public/create-store.partition.type-test.js.map +1 -0
  46. package/dist/ecs/store/store.d.ts +15 -10
  47. package/dist/ecs/store/store.js.map +1 -1
  48. package/dist/ecs/store/transaction-functions.d.ts +3 -3
  49. package/dist/schema/schema.d.ts +1 -0
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +1 -1
  52. package/references/data-lit/package.json +1 -1
  53. package/references/data-lit-tictactoe/package.json +1 -1
  54. package/references/data-react/package.json +1 -1
  55. package/references/data-react-hello/package.json +1 -1
  56. package/references/data-react-pixie/package.json +1 -1
@@ -7,7 +7,6 @@ export * from "./reconciling/reconciling-entry.js";
7
7
  export * from "./observed/create-observed-database.js";
8
8
  export * from "./observed/observed-database.js";
9
9
  export * from "./database.js";
10
- export * from "./observe-dependent-value.js";
11
10
  export * from "./transactional-store/index.js";
12
11
  export * from "./database-schema/index.js";
13
12
  export type { Undoable } from "./undoable.js";
@@ -8,7 +8,6 @@ export * from "./reconciling/reconciling-entry.js";
8
8
  export * from "./observed/create-observed-database.js";
9
9
  export * from "./observed/observed-database.js";
10
10
  export * from "./database.js";
11
- export * from "./observe-dependent-value.js";
12
11
  export * from "./transactional-store/index.js";
13
12
  export * from "./database-schema/index.js";
14
13
  export * from "./combine-plugins.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ecs/database/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ecs/database/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,sBAAsB,CAAC"}
@@ -9,6 +9,7 @@ import { ArchetypeComponents } from "../../store/archetype-components.js";
9
9
  import { FromSchemas } from "../../../schema/from-schemas.js";
10
10
  import { Undoable } from "../undoable.js";
11
11
  import { IndexDeclarations } from "../../store/index-types.js";
12
+ import { PartitionKeysOf } from "../../store/partition.js";
12
13
  /**
13
14
  * The first argument passed to every transaction function. Extends the full
14
15
  * store read/write surface with `userId` — the identifier of the peer or user
@@ -18,10 +19,10 @@ import { IndexDeclarations } from "../../store/index-types.js";
18
19
  *
19
20
  * `userId` is `undefined` in local-only (no-sync) databases.
20
21
  */
21
- export type TransactionContext<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>, IX extends IndexDeclarations<C> = {}> = Store<C, R, A, IX> & {
22
+ export type TransactionContext<C extends Components, R extends ResourceComponents, A extends ArchetypeComponents<StringKeyof<C>>, IX extends IndexDeclarations<C> = {}, PK extends string = never> = Store<C, R, A, IX, PK> & {
22
23
  readonly userId: number | string | undefined;
23
24
  };
24
- export interface TransactionalStore<C extends Components = never, R extends ResourceComponents = never, A extends ArchetypeComponents<StringKeyof<C>> = never, IX extends IndexDeclarations<C> = {}> extends ReadonlyStore<C, R, A, IX> {
25
+ export interface TransactionalStore<C extends Components = never, R extends ResourceComponents = never, A extends ArchetypeComponents<StringKeyof<C>> = never, IX extends IndexDeclarations<C> = {}, PK extends string = never> extends ReadonlyStore<C, R, A, IX, PK> {
25
26
  /**
26
27
  * Execute a transaction on the store.
27
28
  * The transactionFunction must NOT directly mutate archetype rows as those changes would not be captured.
@@ -29,12 +30,12 @@ export interface TransactionalStore<C extends Components = never, R extends Reso
29
30
  * @param transactionFunction - A function that takes the store as an argument and performs some operations on it.
30
31
  * @returns A promise that resolves when the transaction is complete.
31
32
  */
32
- execute(transactionFunction: (t: TransactionContext<C, R, A>) => Entity | void, options?: {
33
+ execute(transactionFunction: (t: TransactionContext<C, R, A, IX, PK>) => Entity | void, options?: {
33
34
  intermediate?: boolean;
34
35
  userId?: number | string;
35
36
  }): TransactionResult<C>;
36
- extend<S extends Store.Schema<any, any, any>>(schema: S): TransactionalStore<C & (S extends Store.Schema<infer XC, any, any> ? FromSchemas<XC> : never), R & (S extends Store.Schema<any, infer XR, any> ? FromSchemas<XR> : never), A & (S extends Store.Schema<any, any, infer XA> ? XA : never)>;
37
- transactionStore: Store<C, R, A>;
37
+ extend<S extends Store.Schema<any, any, any>>(schema: S): TransactionalStore<C & (S extends Store.Schema<infer XC, any, any> ? FromSchemas<XC> : never), R & (S extends Store.Schema<any, infer XR, any> ? FromSchemas<XR> : never), A & (S extends Store.Schema<any, any, infer XA> ? XA : never), IX, PK | (S extends Store.Schema<infer XC, any, any> ? PartitionKeysOf<XC> : never)>;
38
+ transactionStore: Store<C, R, A, IX, PK>;
38
39
  }
39
40
  export type TransactionInsertOperation<C> = {
40
41
  type: "insert";
@@ -5,6 +5,7 @@ import { RequiredComponents } from "../../required-components.js";
5
5
  import { StringKeyof } from "../../../types/index.js";
6
6
  import { Components } from "../components.js";
7
7
  import { OptionalComponents } from "../../optional-components.js";
8
+ import { HasPartitionKey } from "../partition.js";
8
9
  export type EntityValues<C> = {
9
10
  readonly [K in (RequiredComponents & StringKeyof<C & OptionalComponents>)]: (C & OptionalComponents)[K];
10
11
  };
@@ -12,15 +13,32 @@ export type EntityReadValues<C> = RequiredComponents & {
12
13
  readonly [K in StringKeyof<C & OptionalComponents> as string extends K ? never : K]?: (C & OptionalComponents)[K];
13
14
  };
14
15
  export type EntityUpdateValues<C> = Partial<Omit<C, "id">>;
15
- export type ArchetypeQueryOptions<C extends object> = {
16
- exclude?: readonly StringKeyof<C & OptionalComponents>[];
16
+ export type ArchetypeQueryOptions<C extends object, PK extends string = never> = {
17
+ exclude?: readonly StringKeyof<C & RequiredComponents & OptionalComponents>[];
18
+ /**
19
+ * Filter to archetypes whose partition component equals the given value.
20
+ * A partition column is const per archetype, so this is decided at
21
+ * archetype granularity (O(archetypes), no row scan). Keyed to the store's
22
+ * partition components only — a non-partition column is not const per
23
+ * archetype, so a value filter on it is not archetype-decidable.
24
+ */
25
+ where?: {
26
+ readonly [K in Extract<PK, StringKeyof<C & OptionalComponents>>]?: (C & RequiredComponents & OptionalComponents)[K];
27
+ };
17
28
  };
18
- export interface ReadonlyCore<C extends Components = never> {
29
+ export interface ReadonlyCore<C extends Components = never, PK extends string = never> {
19
30
  readonly componentSchemas: {
20
31
  readonly [K in StringKeyof<C & RequiredComponents & OptionalComponents>]: Schema;
21
32
  };
22
- queryArchetypes<Include extends StringKeyof<C & RequiredComponents & OptionalComponents>>(include: readonly Include[] | ReadonlySet<string>, options?: ArchetypeQueryOptions<C>): readonly ReadonlyArchetype<RequiredComponents & Pick<C & RequiredComponents & OptionalComponents, Include>>[];
23
- ensureArchetype: <const CC extends StringKeyof<C & RequiredComponents & OptionalComponents>>(components: readonly CC[] | ReadonlySet<CC>) => ReadonlyArchetype<RequiredComponents & {
33
+ queryArchetypes<Include extends StringKeyof<C & RequiredComponents & OptionalComponents>>(include: readonly Include[] | ReadonlySet<string>, options?: ArchetypeQueryOptions<C, PK>): readonly ReadonlyArchetype<RequiredComponents & Pick<C & RequiredComponents & OptionalComponents, Include>>[];
34
+ ensureArchetype<const CC extends StringKeyof<C & RequiredComponents & OptionalComponents>>(components: readonly CC[] | ReadonlySet<CC>): HasPartitionKey<CC, PK> extends true ? Archetype.Router<RequiredComponents & {
35
+ [K in CC]: (C & RequiredComponents & OptionalComponents)[K];
36
+ }> : ReadonlyArchetype<RequiredComponents & {
37
+ [K in CC]: (C & RequiredComponents & OptionalComponents)[K];
38
+ }>;
39
+ ensureArchetype<const CC extends StringKeyof<C & RequiredComponents & OptionalComponents>>(components: readonly CC[] | ReadonlySet<CC>, partitionValues: {
40
+ readonly [K in Extract<CC, PK>]: (C & RequiredComponents & OptionalComponents)[K];
41
+ }): ReadonlyArchetype<RequiredComponents & {
24
42
  [K in CC]: (C & RequiredComponents & OptionalComponents)[K];
25
43
  }>;
26
44
  locate: (entity: Entity) => {
@@ -62,9 +80,16 @@ export interface ReadonlyCore<C extends Components = never> {
62
80
  /**
63
81
  * This is the main interface for the low level ECS Core.
64
82
  */
65
- export interface Core<C extends Components = never> extends ReadonlyCore<C> {
66
- queryArchetypes<Include extends StringKeyof<C & RequiredComponents & OptionalComponents>>(include: readonly Include[] | ReadonlySet<string>, options?: ArchetypeQueryOptions<C>): readonly Archetype<RequiredComponents & Pick<C & RequiredComponents & OptionalComponents, Include>>[];
67
- ensureArchetype: <const CC extends StringKeyof<C & RequiredComponents & OptionalComponents>>(components: readonly CC[] | ReadonlySet<CC>) => Archetype<RequiredComponents & {
83
+ export interface Core<C extends Components = never, PK extends string = never> extends ReadonlyCore<C, PK> {
84
+ queryArchetypes<Include extends StringKeyof<C & RequiredComponents & OptionalComponents>>(include: readonly Include[] | ReadonlySet<string>, options?: ArchetypeQueryOptions<C, PK>): readonly Archetype<RequiredComponents & Pick<C & RequiredComponents & OptionalComponents, Include>>[];
85
+ ensureArchetype<const CC extends StringKeyof<C & RequiredComponents & OptionalComponents>>(components: readonly CC[] | ReadonlySet<CC>): HasPartitionKey<CC, PK> extends true ? Archetype.Router<RequiredComponents & {
86
+ [K in CC]: (C & RequiredComponents & OptionalComponents)[K];
87
+ }> : Archetype<RequiredComponents & {
88
+ [K in CC]: (C & RequiredComponents & OptionalComponents)[K];
89
+ }>;
90
+ ensureArchetype<const CC extends StringKeyof<C & RequiredComponents & OptionalComponents>>(components: readonly CC[] | ReadonlySet<CC>, partitionValues: {
91
+ readonly [K in Extract<CC, PK>]: (C & RequiredComponents & OptionalComponents)[K];
92
+ }): Archetype<RequiredComponents & {
68
93
  [K in CC]: (C & RequiredComponents & OptionalComponents)[K];
69
94
  }>;
70
95
  locate: (entity: Entity) => {
@@ -1,8 +1,10 @@
1
1
  import { Schema } from "../../../schema/index.js";
2
+ import { Archetype } from "../../archetype/archetype.js";
2
3
  import { Core } from "./core.js";
3
4
  import { Simplify, StringKeyof } from "../../../types/index.js";
4
5
  import { ComponentSchemas } from "../../component-schemas.js";
5
6
  import { OptionalComponents } from "../../optional-components.js";
7
+ import { PartitionKeysOf } from "../partition.js";
6
8
  /**
7
9
  * Serialization format version stamped into every `toData` snapshot and
8
10
  * checked by `fromData`. A mismatch is thrown rather than silently
@@ -14,6 +16,14 @@ import { OptionalComponents } from "../../optional-components.js";
14
16
  * changes in a way older readers cannot load.
15
17
  */
16
18
  export declare const ECS_SNAPSHOT_VERSION = 1;
17
- export declare function createCore<NC extends ComponentSchemas>(newComponentSchemas: NC): Core<Simplify<OptionalComponents & {
19
+ export declare function createCore<NC extends ComponentSchemas>(newComponentSchemas: NC,
20
+ /**
21
+ * Called once, right after each archetype is created (direct or lazily as a
22
+ * partition value-child). The Store layer uses it to decorate the
23
+ * archetype's `insert` in place with index maintenance — so every write
24
+ * path (direct insert, router routing, migration target) shares one
25
+ * maintained insert with no wrapper or Proxy indirection.
26
+ */
27
+ onArchetypeCreated?: (archetype: Archetype<any>) => void): Core<Simplify<OptionalComponents & {
18
28
  [K in StringKeyof<NC>]: Schema.ToType<NC[K]>;
19
- }>>;
29
+ }>, PartitionKeysOf<NC>>;
@@ -15,7 +15,15 @@ import { True } from "../../../schema/true/index.js";
15
15
  * changes in a way older readers cannot load.
16
16
  */
17
17
  export const ECS_SNAPSHOT_VERSION = 1;
18
- export function createCore(newComponentSchemas) {
18
+ export function createCore(newComponentSchemas,
19
+ /**
20
+ * Called once, right after each archetype is created (direct or lazily as a
21
+ * partition value-child). The Store layer uses it to decorate the
22
+ * archetype's `insert` in place with index maintenance — so every write
23
+ * path (direct insert, router routing, migration target) shares one
24
+ * maintained insert with no wrapper or Proxy indirection.
25
+ */
26
+ onArchetypeCreated) {
19
27
  const componentSchemas = {
20
28
  id: Entity.schema,
21
29
  nonPersistent: True.schema,
@@ -25,47 +33,126 @@ export function createCore(newComponentSchemas) {
25
33
  const nonPersistentLocationTable = createEntityLocationTable(16, true);
26
34
  const getLocationTable = (entity) => entity < 0 ? nonPersistentLocationTable : persistentLocationTable;
27
35
  const archetypes = [];
36
+ // A component declared `partition: true`: every distinct runtime value gets
37
+ // its own archetype whose column for that component is a const buffer (zero
38
+ // per-row bytes). Read from the *live* component schema so components added
39
+ // after createCore (via the Store layer's `extend`) are detected too. Cost
40
+ // is only paid when *resolving* an archetype (an O(names) scan) — never on
41
+ // the per-row insert hot path, which goes straight to a concrete archetype.
42
+ const isPartition = (name) => componentSchemas[name]?.partition === true;
43
+ // Identity → archetype. Replaces the former linear scan (O(archetypes) per
44
+ // resolve) with an O(1) lookup, and — for partition components — folds the
45
+ // per-archetype const value into the key so value-children are distinct.
46
+ const archetypeByIdentity = new Map();
47
+ const partitionNamesIn = (sortedNames) => sortedNames.filter(isPartition);
48
+ const identityKey = (sortedNames, partitionValues, partitionNames) => {
49
+ const base = sortedNames.join(",");
50
+ if (partitionNames.length === 0)
51
+ return base;
52
+ // `typeof` tag guards "1"(number) vs "1"(string) collisions.
53
+ const vals = partitionNames
54
+ .map((n) => `${n}=${typeof partitionValues[n]}:${String(partitionValues[n])}`)
55
+ .join(",");
56
+ return `${base}|${vals}`;
57
+ };
28
58
  const queryArchetypes = (include, options) => {
29
59
  const includeArray = Array.from(include);
60
+ const where = options?.where;
30
61
  const results = [];
31
62
  for (const archetype of archetypes) {
32
63
  const hasAllRequired = includeArray.every(comp => archetype.columns[comp] !== undefined);
33
64
  const hasNoExcluded = !options?.exclude || options.exclude.every(comp => archetype.columns[comp] === undefined);
34
- if (hasAllRequired && hasNoExcluded) {
65
+ // Partition `where`: a partition column is const per archetype, so a
66
+ // value filter is decidable at archetype granularity (O(archetypes),
67
+ // no row scan). Read the const via get(0) — valid even at rowCount 0.
68
+ let matchesWhere = true;
69
+ if (where) {
70
+ for (const key in where) {
71
+ const column = archetype.columns[key];
72
+ if (column === undefined || column.get(0) !== where[key]) {
73
+ matchesWhere = false;
74
+ break;
75
+ }
76
+ }
77
+ }
78
+ if (hasAllRequired && hasNoExcluded && matchesWhere) {
35
79
  results.push(archetype);
36
80
  }
37
81
  }
38
82
  return results;
39
83
  };
40
- const ensureArchetype = (componentNames) => {
41
- const componentCount = Array.isArray(componentNames)
42
- ? componentNames.length
43
- : componentNames.size;
44
- for (const archetype of queryArchetypes(componentNames)) {
45
- if (archetype.components.size === componentCount) {
46
- return archetype;
84
+ // Concrete archetype for exactly `componentNames`, resolved by identity and
85
+ // created on first use. A partition component in the set requires its value
86
+ // in `partitionValues`; that value is baked into the column schema as
87
+ // `const`, so the column is a zero-per-row const buffer. This is the single
88
+ // internal primitive behind ensureArchetype, the router, migration, and
89
+ // restore the *only* place archetypes are created.
90
+ const resolveArchetype = (componentNames, partitionValues) => {
91
+ const namesArr = Array.from(componentNames);
92
+ const sorted = namesArr.slice().sort();
93
+ const partitionNames = partitionNamesIn(sorted);
94
+ for (const n of partitionNames) {
95
+ if (partitionValues?.[n] === undefined) {
96
+ throw new Error(`partition component '${n}' requires a value to resolve a concrete archetype`);
47
97
  }
48
98
  }
99
+ const key = identityKey(sorted, partitionValues, partitionNames);
100
+ const existing = archetypeByIdentity.get(key);
101
+ if (existing)
102
+ return existing;
49
103
  const id = archetypes.length;
50
104
  const archetypeComponentSchemas = {};
51
105
  let hasId = false;
52
106
  let isNonPersistent = false;
53
- for (const comp of componentNames) {
54
- if (comp === "id") {
107
+ for (const comp of namesArr) {
108
+ if (comp === "id")
55
109
  hasId = true;
56
- }
57
- if (comp === "nonPersistent") {
110
+ if (comp === "nonPersistent")
58
111
  isNonPersistent = true;
59
- }
60
- archetypeComponentSchemas[comp] = componentSchemas[comp];
112
+ const base = componentSchemas[comp];
113
+ archetypeComponentSchemas[comp] = isPartition(comp)
114
+ ? { ...base, const: partitionValues[comp] }
115
+ : base;
61
116
  }
62
117
  if (!hasId) {
63
118
  throw new Error("id is required");
64
119
  }
65
120
  const archetype = ARCHETYPE.createArchetype(archetypeComponentSchemas, id, isNonPersistent ? nonPersistentLocationTable : persistentLocationTable);
66
121
  archetypes.push(archetype);
122
+ archetypeByIdentity.set(key, archetype);
123
+ onArchetypeCreated?.(archetype);
67
124
  return archetype;
68
125
  };
126
+ // Write-only handle over a partition family: reads the partition value(s)
127
+ // from each row, resolves (creating on first use) the concrete child, and
128
+ // inserts there. Its `insert` is the by-keys routing inserter.
129
+ const makeRouter = (componentNames) => {
130
+ const namesArr = Array.from(componentNames);
131
+ const partitionNames = partitionNamesIn(namesArr.slice().sort());
132
+ const partitionValuesOf = (rowData) => {
133
+ const values = {};
134
+ for (const n of partitionNames)
135
+ values[n] = rowData[n];
136
+ return values;
137
+ };
138
+ return {
139
+ components: new Set(namesArr),
140
+ // Routes to the concrete child and calls its `insert`. When the Store
141
+ // layer has decorated inserts with index maintenance (via
142
+ // onArchetypeCreated), the child's `insert` is already the maintained
143
+ // one — so routing needs no special-casing at the Store layer.
144
+ insert: (rowData) => resolveArchetype(namesArr, partitionValuesOf(rowData)).insert(rowData),
145
+ };
146
+ };
147
+ const ensureArchetype = ((componentNames, partitionValues) => {
148
+ if (partitionValues === undefined) {
149
+ const namesArr = Array.from(componentNames);
150
+ if (namesArr.some(isPartition)) {
151
+ return makeRouter(componentNames);
152
+ }
153
+ }
154
+ return resolveArchetype(componentNames, partitionValues);
155
+ });
69
156
  const locateInternal = (entity) => {
70
157
  return (entity < 0 ? nonPersistentLocationTable : persistentLocationTable).locate(entity);
71
158
  };
@@ -131,7 +218,18 @@ export function createCore(newComponentSchemas) {
131
218
  (addComponents ??= []).push(key);
132
219
  }
133
220
  }
134
- if (addComponents || removeComponents) {
221
+ // A partition value change migrates the entity to a different child
222
+ // archetype even when the component *set* is unchanged, because the
223
+ // partition value is part of archetype identity.
224
+ let partitionValueChanged = false;
225
+ for (const key in components) {
226
+ if (isPartition(key) && currentArchetype.components.has(key)) {
227
+ if (components[key] !== currentArchetype.columns[key].get(currentLocation.row)) {
228
+ partitionValueChanged = true;
229
+ }
230
+ }
231
+ }
232
+ if (addComponents || removeComponents || partitionValueChanged) {
135
233
  // currently changing archetype requires a set, but later we should have an edge map for better performance
136
234
  // Alternatively we can have a faster path using addComponent and deleteComponent.
137
235
  const newComponents = new Set(currentArchetype.components);
@@ -145,7 +243,19 @@ export function createCore(newComponentSchemas) {
145
243
  newComponents.delete(comp);
146
244
  }
147
245
  }
148
- newArchetype = ensureArchetype(newComponents);
246
+ // Target child's partition values: the updated value where provided,
247
+ // else the entity's current (const) value.
248
+ let newPartitionValues;
249
+ const targetPartitionNames = partitionNamesIn([...newComponents].sort());
250
+ if (targetPartitionNames.length > 0) {
251
+ newPartitionValues = {};
252
+ for (const n of targetPartitionNames) {
253
+ newPartitionValues[n] = (n in components)
254
+ ? components[n]
255
+ : currentArchetype.columns[n]?.get(currentLocation.row);
256
+ }
257
+ }
258
+ newArchetype = resolveArchetype(newComponents, newPartitionValues);
149
259
  }
150
260
  if (newArchetype !== currentArchetype) {
151
261
  // create a new row in the new archetype
@@ -208,9 +318,16 @@ export function createCore(newComponentSchemas) {
208
318
  // reproduced on load. Only persistent archetypes carry `data`;
209
319
  // nonPersistent ones back the negative-ID space, whose location
210
320
  // table is never serialized, so their rows aren't persistent.
211
- archetypesData: archetypes.map((archetype) => archetype.components.has("nonPersistent")
212
- ? { componentNames: [...archetype.components] }
213
- : { componentNames: [...archetype.components], data: archetype.toData(copy) })
321
+ archetypesData: archetypes.map((archetype) => {
322
+ const componentNames = [...archetype.components];
323
+ const partitionNames = partitionNamesIn(componentNames.slice().sort());
324
+ const partitionValues = partitionNames.length > 0
325
+ ? Object.fromEntries(partitionNames.map((n) => [n, archetype.columns[n].get(0)]))
326
+ : undefined;
327
+ return archetype.components.has("nonPersistent")
328
+ ? { componentNames, partitionValues }
329
+ : { componentNames, partitionValues, data: archetype.toData(copy) };
330
+ })
214
331
  }),
215
332
  fromData: (data) => {
216
333
  if (data.version !== ECS_SNAPSHOT_VERSION) {
@@ -236,10 +353,12 @@ export function createCore(newComponentSchemas) {
236
353
  }
237
354
  }
238
355
  persistentLocationTable.fromData(data.entityLocationTableData);
239
- for (const { componentNames, data: archetypeData } of data.archetypesData) {
356
+ for (const { componentNames, partitionValues, data: archetypeData } of data.archetypesData) {
240
357
  // Recreating the archetype reserves its id and leaves it
241
358
  // empty; only persistent entries carry data to restore.
242
- const archetype = ensureArchetype(componentNames);
359
+ // resolveArchetype (not the public ensureArchetype) so a
360
+ // partition archetype restores as its concrete value-child.
361
+ const archetype = resolveArchetype(componentNames, partitionValues);
243
362
  if (archetypeData !== undefined) {
244
363
  archetype.fromData(archetypeData);
245
364
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-core.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/create-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-core.js","sourceRoot":"","sources":["../../../../src/ecs/store/core/create-core.ts"],"names":[],"mappings":"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"}