@oimdb/core 3.8.0 → 3.9.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/index.js CHANGED
@@ -550,7 +550,7 @@ var OIMIndexArrayBased = class extends OIMIndex {
550
550
 
551
551
  // src/core/OIMCarrierKeyedEmitter.ts
552
552
  var OIMCarrierKeyedEmitter = class {
553
- constructor(queue, resolver) {
553
+ constructor(queue, carrierProvider) {
554
554
  // Carriers with at least one subscriber — for markAllUpdated / metrics.
555
555
  this.subscribedCarriers = /* @__PURE__ */ new Set();
556
556
  // Pending flush batch. A plain array + a `carrier.dirty` flag for dedup —
@@ -575,17 +575,17 @@ var OIMCarrierKeyedEmitter = class {
575
575
  }
576
576
  };
577
577
  this.queue = queue;
578
- this.resolver = resolver;
578
+ this.carrierProvider = carrierProvider;
579
579
  }
580
580
  subscribeOnKey(key, handler) {
581
- const carrier = this.resolver.getOrReserveCarrier(key);
581
+ const carrier = this.carrierProvider.getOrReserveCarrier(key);
582
582
  this.addHandler(carrier, handler);
583
583
  return () => this.removeHandler(carrier, handler);
584
584
  }
585
585
  subscribeOnKeys(keys, handler) {
586
586
  const carriers = [];
587
587
  for (let i = 0; i < keys.length; i++) {
588
- const carrier = this.resolver.getOrReserveCarrier(keys[i]);
588
+ const carrier = this.carrierProvider.getOrReserveCarrier(keys[i]);
589
589
  this.addHandler(carrier, handler);
590
590
  carriers.push(carrier);
591
591
  }
@@ -596,7 +596,7 @@ var OIMCarrierKeyedEmitter = class {
596
596
  };
597
597
  }
598
598
  unsubscribeFromKey(key, handler) {
599
- const carrier = this.resolver.findCarrier(key);
599
+ const carrier = this.carrierProvider.findCarrier(key);
600
600
  if (carrier) this.removeHandler(carrier, handler);
601
601
  }
602
602
  unsubscribeFromKeys(keys, handler) {
@@ -619,7 +619,7 @@ var OIMCarrierKeyedEmitter = class {
619
619
  subscribers.delete(handler);
620
620
  if (subscribers.size === 0) {
621
621
  this.subscribedCarriers.delete(carrier);
622
- this.resolver.onCarrierEmptied?.(carrier);
622
+ this.carrierProvider.onCarrierEmptied?.(carrier);
623
623
  }
624
624
  }
625
625
  /** Fast path: the writer already holds the carrier. */
@@ -637,7 +637,7 @@ var OIMCarrierKeyedEmitter = class {
637
637
  this.assertNotInFlush();
638
638
  return;
639
639
  }
640
- const carrier = this.resolver.findCarrier(key);
640
+ const carrier = this.carrierProvider.findCarrier(key);
641
641
  if (carrier) this.markUpdatedCarrier(carrier);
642
642
  else this.assertNotInFlush();
643
643
  }
@@ -662,7 +662,7 @@ var OIMCarrierKeyedEmitter = class {
662
662
  return this.subscribedCarriers.size > 0;
663
663
  }
664
664
  getHandlerCount(key) {
665
- return this.resolver.findCarrier(key)?.subscribers?.size ?? 0;
665
+ return this.carrierProvider.findCarrier(key)?.subscribers?.size ?? 0;
666
666
  }
667
667
  getMetrics() {
668
668
  let totalHandlers = 0;
@@ -722,8 +722,8 @@ var OIMCarrierKeyedEmitter = class {
722
722
  }
723
723
  };
724
724
 
725
- // src/core/OIMKeyedCarrierResolver.ts
726
- var OIMKeyedCarrierResolver = class {
725
+ // src/core/OIMKeyedCarrierProvider.ts
726
+ var OIMKeyedCarrierProvider = class {
727
727
  constructor() {
728
728
  this.carriers = /* @__PURE__ */ new Map();
729
729
  }
@@ -745,8 +745,8 @@ var OIMKeyedCarrierResolver = class {
745
745
 
746
746
  // src/abstract/OIMReactiveIndex.ts
747
747
  var OIMReactiveIndex = class {
748
- constructor(queue, createIndex, createResolver = () => new OIMKeyedCarrierResolver()) {
749
- this.updateEmitter = new OIMCarrierKeyedEmitter(queue, createResolver());
748
+ constructor(queue, createIndex, createCarrierProvider = () => new OIMKeyedCarrierProvider()) {
749
+ this.updateEmitter = new OIMCarrierKeyedEmitter(queue, createCarrierProvider());
750
750
  this.index = createIndex(this.updateEmitter);
751
751
  }
752
752
  getEntitiesByKey(key) {
@@ -802,8 +802,8 @@ var OIMReactiveIndex = class {
802
802
 
803
803
  // src/abstract/OIMReactiveIndexSetBased.ts
804
804
  var OIMReactiveIndexSetBased = class extends OIMReactiveIndex {
805
- constructor(queue, createIndex, createResolver) {
806
- super(queue, createIndex, createResolver);
805
+ constructor(queue, createIndex, createCarrierProvider) {
806
+ super(queue, createIndex, createCarrierProvider);
807
807
  }
808
808
  getPksByKey(key) {
809
809
  return this.index.getPksByKey(key);
@@ -821,8 +821,8 @@ var OIMReactiveIndexSetBased = class extends OIMReactiveIndex {
821
821
 
822
822
  // src/abstract/OIMReactiveIndexArrayBased.ts
823
823
  var OIMReactiveIndexArrayBased = class extends OIMReactiveIndex {
824
- constructor(queue, createIndex, createResolver) {
825
- super(queue, createIndex, createResolver);
824
+ constructor(queue, createIndex, createCarrierProvider) {
825
+ super(queue, createIndex, createCarrierProvider);
826
826
  }
827
827
  getPksByKey(key) {
828
828
  return this.index.getPksByKey(key);
@@ -1097,24 +1097,10 @@ var OIMPkSelectorFactory = class {
1097
1097
  }
1098
1098
  };
1099
1099
 
1100
- // src/core/OIMKeyDomainNative.ts
1101
- var OIMKeyDomainNative = class {
1102
- createMap() {
1103
- return /* @__PURE__ */ new Map();
1104
- }
1105
- createSet() {
1106
- return /* @__PURE__ */ new Set();
1107
- }
1108
- canonicalize(key) {
1109
- return key;
1110
- }
1111
- };
1112
-
1113
1100
  // src/core/OIMCollectionStoreMapDriven.ts
1114
1101
  var OIMCollectionStoreMapDriven = class extends OIMCollectionStore {
1115
1102
  constructor() {
1116
1103
  super(...arguments);
1117
- this.keyDomain = new OIMKeyDomainNative();
1118
1104
  this.slots = /* @__PURE__ */ new Map();
1119
1105
  // Slots reserved by indexes for PKs whose entity has not arrived yet.
1120
1106
  // They carry `item: undefined` and live apart from `slots` so they do not
@@ -1287,10 +1273,6 @@ var OIMCollection = class {
1287
1273
  this.store = opts?.store ?? new OIMCollectionStoreMapDriven();
1288
1274
  this.updateEntity = opts?.updateEntity ?? new OIMEntityUpdaterFactory().createMergeEntityUpdater();
1289
1275
  }
1290
- /** The collection's PK keying strategy — read by indexes and wrappers. */
1291
- get keyDomain() {
1292
- return this.store.keyDomain;
1293
- }
1294
1276
  getOneByPk(pk) {
1295
1277
  return this.store.getOneByPk(pk);
1296
1278
  }
@@ -1303,6 +1285,14 @@ var OIMCollection = class {
1303
1285
  getOrReserveSlotByPk(pk) {
1304
1286
  return this.store.getOrReserveSlotByPk(pk);
1305
1287
  }
1288
+ /**
1289
+ * The existing slot for `pk` (live or reserved) WITHOUT creating one — used
1290
+ * by indexes to resolve a pk to its canonical slot for removal (delete by
1291
+ * reference), with no side effect for a pk that is not present.
1292
+ */
1293
+ findSlotByPk(pk) {
1294
+ return this.store.findSlotByPk(pk);
1295
+ }
1306
1296
  getSlotsByPks(pks) {
1307
1297
  return this.store.getSlotsByPks(pks);
1308
1298
  }
@@ -1389,7 +1379,9 @@ var OIMReactiveCollection = class extends OIMCollection {
1389
1379
  constructor(queue, opts) {
1390
1380
  super(opts);
1391
1381
  this.anyUpdateHandlers = /* @__PURE__ */ new Set();
1392
- this.pendingAnyUpdatePks = this.store.keyDomain.createSet();
1382
+ // Only ever holds `slot.pk` (one canonical reference per logical key), so a
1383
+ // native `Set` dedups correctly by reference even for composite pks.
1384
+ this.pendingAnyUpdatePks = /* @__PURE__ */ new Set();
1393
1385
  this.isAnyUpdateClearPending = false;
1394
1386
  this.isAnyUpdateScheduled = false;
1395
1387
  this.runAnyUpdate = () => {
@@ -1665,16 +1657,16 @@ var OIMIndexManualOrderedArrayBased = class extends OIMIndexArrayBased {
1665
1657
  var OIMCollectionIndexManualOrderedArrayBased = class extends OIMIndexManualOrderedArrayBased {
1666
1658
  constructor(opts) {
1667
1659
  super();
1668
- this.resolveSlot = opts.collection !== void 0 ? (pk) => opts.collection.getSlotByPk(pk) : opts.resolveSlot;
1660
+ this.getSlot = opts.collection !== void 0 ? (pk) => opts.collection.getSlotByPk(pk) : opts.getSlot;
1669
1661
  }
1670
1662
  push(key, pk) {
1671
- return this.pushSlot(key, this.resolveRequiredSlot(pk));
1663
+ return this.pushSlot(key, this.getRequiredSlot(pk));
1672
1664
  }
1673
1665
  insertAt(key, index, pk) {
1674
- return this.insertSlotAt(key, index, this.resolveRequiredSlot(pk));
1666
+ return this.insertSlotAt(key, index, this.getRequiredSlot(pk));
1675
1667
  }
1676
1668
  reset(key, pks) {
1677
- this.resetSlots(key, this.resolveSlots(pks));
1669
+ this.resetSlots(key, this.getRequiredSlots(pks));
1678
1670
  }
1679
1671
  getEntitiesByKey(key) {
1680
1672
  return super.getEntitiesByKey(key);
@@ -1682,26 +1674,25 @@ var OIMCollectionIndexManualOrderedArrayBased = class extends OIMIndexManualOrde
1682
1674
  getEntitiesByKeys(keys) {
1683
1675
  return super.getEntitiesByKeys(keys);
1684
1676
  }
1685
- resolvePk(pk) {
1686
- return this.resolveRequiredSlot(pk);
1677
+ // Gets the slot for a pk, throwing if the (custom) getter has none — this
1678
+ // ordered index requires a real slot to place in order.
1679
+ getRequiredSlot(pk) {
1680
+ const slot = this.getSlot(pk);
1681
+ if (!slot) {
1682
+ throw new Error(
1683
+ `[OIMCollectionIndexManualOrderedArrayBased]: no slot for PK "${String(pk)}".`
1684
+ );
1685
+ }
1686
+ return slot;
1687
1687
  }
1688
- resolveSlots(pks) {
1688
+ getRequiredSlots(pks) {
1689
1689
  const slots = [];
1690
1690
  slots.length = pks.length;
1691
1691
  for (let i = 0; i < pks.length; i++) {
1692
- slots[i] = this.resolveRequiredSlot(pks[i]);
1692
+ slots[i] = this.getRequiredSlot(pks[i]);
1693
1693
  }
1694
1694
  return slots;
1695
1695
  }
1696
- resolveRequiredSlot(pk) {
1697
- const slot = this.resolveSlot(pk);
1698
- if (!slot) {
1699
- throw new Error(
1700
- `[OIMCollectionIndexManualOrderedArrayBased]: Unable to resolve slot for PK "${String(pk)}".`
1701
- );
1702
- }
1703
- return slot;
1704
- }
1705
1696
  };
1706
1697
 
1707
1698
  // src/enums/EOIMEventQueueEventType.ts
@@ -2120,18 +2111,18 @@ var OIMOrderedListCommandStream = class extends OIMOrderedListCommandBuffer {
2120
2111
  var OIMCollectionOrderedListCommandStream = class extends OIMOrderedListCommandStream {
2121
2112
  constructor(queue, opts) {
2122
2113
  const index = opts.index ?? new OIMCollectionIndexManualOrderedArrayBased(
2123
- opts.collection !== void 0 ? { collection: opts.collection } : { resolveSlot: opts.resolveSlot }
2114
+ opts.collection !== void 0 ? { collection: opts.collection } : { getSlot: opts.getSlot }
2124
2115
  );
2125
2116
  super(queue, index);
2126
2117
  this.index = index;
2127
2118
  }
2128
2119
  push(key, pk) {
2129
- const slot = this.resolvePk(pk);
2120
+ const slot = this.getRequiredSlot(pk);
2130
2121
  const index = this.index.pushSlot(key, slot);
2131
2122
  this.appendCommand(key, { type: "insert", index, item: slot });
2132
2123
  }
2133
2124
  insertAt(key, index, pk) {
2134
- const slot = this.resolvePk(pk);
2125
+ const slot = this.getRequiredSlot(pk);
2135
2126
  const safeIndex = this.index.insertSlotAt(key, index, slot);
2136
2127
  this.appendCommand(key, {
2137
2128
  type: "insert",
@@ -2141,7 +2132,7 @@ var OIMCollectionOrderedListCommandStream = class extends OIMOrderedListCommandS
2141
2132
  }
2142
2133
  /** Replace the element at `index` with the slot for `pk`, in place. */
2143
2134
  setAt(key, index, pk) {
2144
- const slot = this.resolvePk(pk);
2135
+ const slot = this.getRequiredSlot(pk);
2145
2136
  const safeIndex = this.index.setSlotAt(key, index, slot);
2146
2137
  if (safeIndex < 0) return;
2147
2138
  this.appendCommand(key, {
@@ -2151,7 +2142,7 @@ var OIMCollectionOrderedListCommandStream = class extends OIMOrderedListCommandS
2151
2142
  });
2152
2143
  }
2153
2144
  set(key, pks) {
2154
- const slots = pks.map((pk) => this.resolvePk(pk));
2145
+ const slots = pks.map((pk) => this.getRequiredSlot(pk));
2155
2146
  this.index.resetSlots(key, slots);
2156
2147
  this.appendResetCommand(key, slots);
2157
2148
  }
@@ -2163,8 +2154,8 @@ var OIMCollectionOrderedListCommandStream = class extends OIMOrderedListCommandS
2163
2154
  getEntitiesByKey(key) {
2164
2155
  return this.index.getEntitiesByKey(key);
2165
2156
  }
2166
- resolvePk(pk) {
2167
- return this.index.resolvePk(
2157
+ getRequiredSlot(pk) {
2158
+ return this.index.getRequiredSlot(
2168
2159
  pk
2169
2160
  );
2170
2161
  }
@@ -2224,8 +2215,8 @@ var OIMIndexManualArrayBased = class extends OIMIndexArrayBased {
2224
2215
  }
2225
2216
  };
2226
2217
 
2227
- // src/core/OIMBucketCarrierResolver.ts
2228
- var OIMBucketCarrierResolver = class {
2218
+ // src/core/OIMBucketCarrierProvider.ts
2219
+ var OIMBucketCarrierProvider = class {
2229
2220
  constructor(store) {
2230
2221
  this.store = store;
2231
2222
  }
@@ -2266,7 +2257,7 @@ var OIMReactiveIndexManualArrayBased = class extends OIMReactiveIndexArrayBased
2266
2257
  comparePks: opts?.indexOptions?.comparePks,
2267
2258
  store
2268
2259
  }),
2269
- () => new OIMBucketCarrierResolver(store)
2260
+ () => new OIMBucketCarrierProvider(store)
2270
2261
  );
2271
2262
  }
2272
2263
  setSlots(key, slots) {
@@ -2283,52 +2274,61 @@ var OIMReactiveIndexManualArrayBased = class extends OIMReactiveIndexArrayBased
2283
2274
  // src/core/OIMReactiveCollectionIndexManualArrayBased.ts
2284
2275
  var OIMReactiveCollectionIndexManualArrayBased = class extends OIMReactiveIndexManualArrayBased {
2285
2276
  constructor(queue, opts) {
2286
- const resolveSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.resolveSlot;
2287
- const pkDomain = opts.collection?.keyDomain ?? new OIMKeyDomainNative();
2277
+ const getSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.getSlot;
2288
2278
  super(queue, {
2289
2279
  indexOptions: opts.indexOptions
2290
2280
  });
2291
- // Persistent per-key pk membership for O(1) `addPks` dedup (avoids rebuilding
2292
- // a Set from the whole bucket on every call). Kept in sync by setSlots/clear.
2293
- this.pksByKey = /* @__PURE__ */ new Map();
2294
- this.resolveSlot = resolveSlot;
2295
- this.pkDomain = pkDomain;
2281
+ // Persistent per-key membership for O(1) `addPks` dedup, keyed by the
2282
+ // canonical slot reference (correct for composite pks with a native Set — no
2283
+ // content-addressing needed, since slots are one reference per logical key).
2284
+ this.slotsByKey = /* @__PURE__ */ new Map();
2285
+ this.getSlot = getSlot;
2286
+ this.findSlotForRemoval = opts.collection !== void 0 ? (pk) => opts.collection.findSlotByPk(pk) : opts.getSlot;
2296
2287
  }
2297
2288
  setPks(key, pks) {
2298
- const pkSet = this.pkDomain.createSet();
2299
- for (let i = 0; i < pks.length; i++) pkSet.add(pks[i]);
2300
- this.pksByKey.set(key, pkSet);
2301
- super.setSlots(key, this.resolveSlots(pks));
2289
+ const slots = this.getSlotsOrTransient(pks);
2290
+ this.slotsByKey.set(key, new Set(slots));
2291
+ super.setSlots(key, slots);
2302
2292
  }
2303
2293
  addPks(key, pks) {
2304
2294
  if (pks.length === 0) return;
2305
- const pkSet = this.membershipOf(key);
2295
+ const slotSet = this.membershipOf(key);
2306
2296
  const newSlots = [];
2307
2297
  for (const pk of pks) {
2308
- if (pkSet.has(pk)) continue;
2309
- pkSet.add(pk);
2310
- newSlots.push(this.resolveRequiredSlot(pk));
2298
+ const slot = this.getSlotOrTransient(pk);
2299
+ if (slotSet.has(slot)) continue;
2300
+ slotSet.add(slot);
2301
+ newSlots.push(slot);
2311
2302
  }
2312
2303
  if (newSlots.length > 0) this.appendSlots(key, newSlots);
2313
2304
  }
2314
2305
  removePks(key, pks) {
2315
2306
  if (pks.length === 0) return;
2316
- const pksToRemove = new Set(pks);
2307
+ const slotsToRemove = /* @__PURE__ */ new Set();
2308
+ const pksToRemove = /* @__PURE__ */ new Set();
2309
+ for (let i = 0; i < pks.length; i++) {
2310
+ const slot = this.findSlotForRemoval(pks[i]);
2311
+ if (slot) slotsToRemove.add(slot);
2312
+ else pksToRemove.add(pks[i]);
2313
+ }
2317
2314
  const existingSlots = this.index.getSlotsByKey(key);
2318
- const nextSlots = existingSlots.filter(
2319
- (slot) => !pksToRemove.has(slot.pk)
2320
- );
2321
- if (nextSlots.length === existingSlots.length) return;
2322
- const pkSet = this.pksByKey.get(key);
2323
- if (pkSet) {
2324
- for (let i = 0; i < pks.length; i++) pkSet.delete(pks[i]);
2315
+ const slotSet = this.slotsByKey.get(key);
2316
+ const nextSlots = [];
2317
+ for (let i = 0; i < existingSlots.length; i++) {
2318
+ const slot = existingSlots[i];
2319
+ if (slotsToRemove.has(slot) || pksToRemove.has(slot.pk)) {
2320
+ slotSet?.delete(slot);
2321
+ } else {
2322
+ nextSlots.push(slot);
2323
+ }
2325
2324
  }
2325
+ if (nextSlots.length === existingSlots.length) return;
2326
2326
  if (nextSlots.length === 0) this.clear(key);
2327
2327
  else super.setSlots(key, nextSlots);
2328
2328
  }
2329
2329
  clear(key) {
2330
- if (key === void 0) this.pksByKey.clear();
2331
- else this.pksByKey.delete(key);
2330
+ if (key === void 0) this.slotsByKey.clear();
2331
+ else this.slotsByKey.delete(key);
2332
2332
  super.clear(key);
2333
2333
  }
2334
2334
  /**
@@ -2336,16 +2336,12 @@ var OIMReactiveCollectionIndexManualArrayBased = class extends OIMReactiveIndexM
2336
2336
  * stays correct even if slots were set through a lower-level path.
2337
2337
  */
2338
2338
  membershipOf(key) {
2339
- let pkSet = this.pksByKey.get(key);
2340
- if (!pkSet) {
2341
- pkSet = this.pkDomain.createSet();
2342
- const existing = this.index.getSlotsByKey(key);
2343
- for (let i = 0; i < existing.length; i++) {
2344
- pkSet.add(existing[i].pk);
2345
- }
2346
- this.pksByKey.set(key, pkSet);
2339
+ let slotSet = this.slotsByKey.get(key);
2340
+ if (!slotSet) {
2341
+ slotSet = new Set(this.index.getSlotsByKey(key));
2342
+ this.slotsByKey.set(key, slotSet);
2347
2343
  }
2348
- return pkSet;
2344
+ return slotSet;
2349
2345
  }
2350
2346
  getEntitiesByKey(key) {
2351
2347
  return super.getEntitiesByKey(key);
@@ -2353,16 +2349,16 @@ var OIMReactiveCollectionIndexManualArrayBased = class extends OIMReactiveIndexM
2353
2349
  getEntitiesByKeys(keys) {
2354
2350
  return super.getEntitiesByKeys(keys);
2355
2351
  }
2356
- resolveSlots(pks) {
2352
+ getSlotsOrTransient(pks) {
2357
2353
  const slots = [];
2358
2354
  slots.length = pks.length;
2359
2355
  for (let i = 0; i < pks.length; i++) {
2360
- slots[i] = this.resolveRequiredSlot(pks[i]);
2356
+ slots[i] = this.getSlotOrTransient(pks[i]);
2361
2357
  }
2362
2358
  return slots;
2363
2359
  }
2364
- resolveRequiredSlot(pk) {
2365
- const slot = this.resolveSlot(pk);
2360
+ getSlotOrTransient(pk) {
2361
+ const slot = this.getSlot(pk);
2366
2362
  if (!slot) return { pk, item: void 0 };
2367
2363
  return slot;
2368
2364
  }
@@ -2372,7 +2368,6 @@ var OIMReactiveCollectionIndexManualArrayBased = class extends OIMReactiveIndexM
2372
2368
  var OIMIndexManualSetBased = class extends OIMIndexSetBased {
2373
2369
  constructor(options = {}) {
2374
2370
  super(options);
2375
- this.pkDomain = options.pkDomain ?? new OIMKeyDomainNative();
2376
2371
  }
2377
2372
  setSlots(key, slots) {
2378
2373
  const bucket = this.setStore.getOrReserveBucket(key);
@@ -2381,27 +2376,28 @@ var OIMIndexManualSetBased = class extends OIMIndexSetBased {
2381
2376
  // --- pk-oriented writes: resolve the bucket ONCE and use its own membership
2382
2377
  // (pk → slot) for dedup/removal, so a composite (trie) key is walked a single
2383
2378
  // time instead of once for the bucket and once for a separate membership map.
2384
- setPks(key, pks, resolveSlot) {
2379
+ setPks(key, pks, getSlot) {
2385
2380
  const bucket = this.setStore.getOrReserveBucket(key);
2386
2381
  const slots = [];
2387
- for (let i = 0; i < pks.length; i++) slots.push(resolveSlot(pks[i]));
2382
+ for (let i = 0; i < pks.length; i++) slots.push(getSlot(pks[i]));
2388
2383
  this.replaceBucketContents(bucket, slots);
2389
- const membership = bucket.membership ?? (bucket.membership = this.pkDomain.createMap());
2384
+ const membership = bucket.membership ?? (bucket.membership = /* @__PURE__ */ new Map());
2390
2385
  membership.clear();
2391
- for (let i = 0; i < pks.length; i++) {
2392
- if (!membership.has(pks[i])) membership.set(pks[i], slots[i]);
2386
+ for (let i = 0; i < slots.length; i++) {
2387
+ if (!membership.has(slots[i].pk)) {
2388
+ membership.set(slots[i].pk, slots[i]);
2389
+ }
2393
2390
  }
2394
2391
  }
2395
- addPks(key, pks, resolveSlot) {
2392
+ addPks(key, pks, getSlot) {
2396
2393
  if (pks.length === 0) return;
2397
2394
  const bucket = this.setStore.getOrReserveBucket(key);
2398
2395
  const membership = this.membershipOf(bucket);
2399
2396
  let changed = false;
2400
2397
  for (let i = 0; i < pks.length; i++) {
2401
- const pk = pks[i];
2402
- if (membership.has(pk)) continue;
2403
- const slot = resolveSlot(pk);
2404
- membership.set(pk, slot);
2398
+ const slot = getSlot(pks[i]);
2399
+ if (membership.has(slot.pk)) continue;
2400
+ membership.set(slot.pk, slot);
2405
2401
  if (!bucket.has(slot)) {
2406
2402
  bucket.add(slot);
2407
2403
  changed = true;
@@ -2411,6 +2407,11 @@ var OIMIndexManualSetBased = class extends OIMIndexSetBased {
2411
2407
  this.setStore.retainBucket(bucket);
2412
2408
  this.emitBucketChanged(bucket);
2413
2409
  }
2410
+ /**
2411
+ * Removes by pk. `pks` must be canonical `slot.pk` references (membership is
2412
+ * keyed by them): for primitive pks that is just the pk; a collection-bound
2413
+ * composite index canonicalizes raw pks to `slot.pk` before calling this.
2414
+ */
2414
2415
  removePks(key, pks) {
2415
2416
  if (pks.length === 0) return;
2416
2417
  const bucket = this.setStore.findBucket(key);
@@ -2436,7 +2437,7 @@ var OIMIndexManualSetBased = class extends OIMIndexSetBased {
2436
2437
  membershipOf(bucket) {
2437
2438
  let membership = bucket.membership;
2438
2439
  if (!membership) {
2439
- membership = this.pkDomain.createMap();
2440
+ membership = /* @__PURE__ */ new Map();
2440
2441
  bucket.membership = membership;
2441
2442
  }
2442
2443
  if (membership.size === 0 && bucket.size > 0) {
@@ -2545,10 +2546,9 @@ var OIMReactiveIndexManualSetBased = class extends OIMReactiveIndexSetBased {
2545
2546
  queue,
2546
2547
  (updateEmitter) => new OIMIndexManualSetBasedReactive(updateEmitter, {
2547
2548
  comparePks: opts?.indexOptions?.comparePks,
2548
- store,
2549
- pkDomain: opts?.pkDomain
2549
+ store
2550
2550
  }),
2551
- () => new OIMBucketCarrierResolver(store)
2551
+ () => new OIMBucketCarrierProvider(store)
2552
2552
  );
2553
2553
  }
2554
2554
  setSlots(key, slots) {
@@ -2568,28 +2568,33 @@ var OIMReactiveIndexManualSetBased = class extends OIMReactiveIndexSetBased {
2568
2568
  // src/core/OIMReactiveCollectionIndexManualSetBased.ts
2569
2569
  var OIMReactiveCollectionIndexManualSetBased = class extends OIMReactiveIndexManualSetBased {
2570
2570
  constructor(queue, opts) {
2571
- const resolveSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.resolveSlot;
2571
+ const getSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.getSlot;
2572
2572
  super(queue, {
2573
- indexOptions: opts.indexOptions,
2574
- pkDomain: opts.collection?.keyDomain
2573
+ indexOptions: opts.indexOptions
2575
2574
  });
2576
2575
  // Bound once so the hot pk-write path passes a stable function (no per-call
2577
2576
  // closure allocation).
2578
- this.resolveRequiredSlot = (pk) => {
2579
- const slot = this.resolveSlot(pk);
2577
+ this.getSlotOrTransient = (pk) => {
2578
+ const slot = this.getSlot(pk);
2580
2579
  if (!slot) return { pk, item: void 0 };
2581
2580
  return slot;
2582
2581
  };
2583
- this.resolveSlot = resolveSlot;
2582
+ this.getSlot = getSlot;
2583
+ this.findSlotForRemoval = opts.collection !== void 0 ? (pk) => opts.collection.findSlotByPk(pk) : opts.getSlot;
2584
2584
  }
2585
2585
  setPks(key, pks) {
2586
- this.index.setPks(key, pks, this.resolveRequiredSlot);
2586
+ this.index.setPks(key, pks, this.getSlotOrTransient);
2587
2587
  }
2588
2588
  addPks(key, pks) {
2589
- this.index.addPks(key, pks, this.resolveRequiredSlot);
2589
+ this.index.addPks(key, pks, this.getSlotOrTransient);
2590
2590
  }
2591
2591
  removePks(key, pks) {
2592
- this.index.removePks(key, pks);
2592
+ const canonical = [];
2593
+ for (let i = 0; i < pks.length; i++) {
2594
+ const slot = this.findSlotForRemoval(pks[i]);
2595
+ canonical.push(slot ? slot.pk : pks[i]);
2596
+ }
2597
+ this.index.removePks(key, canonical);
2593
2598
  }
2594
2599
  getEntitiesByKey(key) {
2595
2600
  return super.getEntitiesByKey(key);
@@ -2798,29 +2803,34 @@ var OIMIndexStoreTrieDrivenSetBased = class extends OIMIndexStoreSetBased {
2798
2803
  // src/core/OIMReactiveCollectionIndexCompositeTrieSetBased.ts
2799
2804
  var OIMReactiveCollectionIndexCompositeTrieSetBased = class extends OIMReactiveIndexManualSetBased {
2800
2805
  constructor(queue, opts) {
2801
- const resolveSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.resolveSlot;
2806
+ const getSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.getSlot;
2802
2807
  super(queue, {
2803
2808
  indexOptions: {
2804
2809
  comparePks: opts.indexOptions?.comparePks,
2805
2810
  store: opts.indexOptions?.store ?? new OIMIndexStoreTrieDrivenSetBased()
2806
- },
2807
- pkDomain: opts.collection?.keyDomain
2811
+ }
2808
2812
  });
2809
- this.resolveRequiredSlot = (pk) => {
2810
- const slot = this.resolveSlot(pk);
2813
+ this.getSlotOrTransient = (pk) => {
2814
+ const slot = this.getSlot(pk);
2811
2815
  if (!slot) return { pk, item: void 0 };
2812
2816
  return slot;
2813
2817
  };
2814
- this.resolveSlot = resolveSlot;
2818
+ this.getSlot = getSlot;
2819
+ this.findSlotForRemoval = opts.collection !== void 0 ? (pk) => opts.collection.findSlotByPk(pk) : opts.getSlot;
2815
2820
  }
2816
2821
  setPks(key, pks) {
2817
- this.index.setPks(key, pks, this.resolveRequiredSlot);
2822
+ this.index.setPks(key, pks, this.getSlotOrTransient);
2818
2823
  }
2819
2824
  addPks(key, pks) {
2820
- this.index.addPks(key, pks, this.resolveRequiredSlot);
2825
+ this.index.addPks(key, pks, this.getSlotOrTransient);
2821
2826
  }
2822
2827
  removePks(key, pks) {
2823
- this.index.removePks(key, pks);
2828
+ const canonical = [];
2829
+ for (let i = 0; i < pks.length; i++) {
2830
+ const slot = this.findSlotForRemoval(pks[i]);
2831
+ canonical.push(slot ? slot.pk : pks[i]);
2832
+ }
2833
+ this.index.removePks(key, canonical);
2824
2834
  }
2825
2835
  getEntitiesByKey(key) {
2826
2836
  return super.getEntitiesByKey(key);
@@ -2927,7 +2937,7 @@ var OIMIndexStoreTrieDrivenArrayBased = class extends OIMIndexStoreArrayBased {
2927
2937
  // src/core/OIMReactiveCollectionIndexCompositeTrieArrayBased.ts
2928
2938
  var OIMReactiveCollectionIndexCompositeTrieArrayBased = class extends OIMReactiveIndexManualArrayBased {
2929
2939
  constructor(queue, opts) {
2930
- const resolveSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.resolveSlot;
2940
+ const getSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.getSlot;
2931
2941
  super(queue, {
2932
2942
  indexOptions: {
2933
2943
  comparePks: opts.indexOptions?.comparePks,
@@ -2937,13 +2947,13 @@ var OIMReactiveCollectionIndexCompositeTrieArrayBased = class extends OIMReactiv
2937
2947
  // Persistent per-key-path pk membership for O(1) `addPks` dedup. Trie-keyed
2938
2948
  // so a rebuilt key path matches by content.
2939
2949
  this.pksByKey = new OIMTrieMap();
2940
- this.resolveSlot = resolveSlot;
2950
+ this.getSlot = getSlot;
2941
2951
  }
2942
2952
  setPks(key, pks) {
2943
2953
  const pkSet = /* @__PURE__ */ new Set();
2944
2954
  for (let i = 0; i < pks.length; i++) pkSet.add(pks[i]);
2945
2955
  this.pksByKey.set(key, pkSet);
2946
- super.setSlots(key, this.resolveSlots(pks));
2956
+ super.setSlots(key, this.getSlotsOrTransient(pks));
2947
2957
  }
2948
2958
  addPks(key, pks) {
2949
2959
  if (pks.length === 0) return;
@@ -2952,7 +2962,7 @@ var OIMReactiveCollectionIndexCompositeTrieArrayBased = class extends OIMReactiv
2952
2962
  for (const pk of pks) {
2953
2963
  if (pkSet.has(pk)) continue;
2954
2964
  pkSet.add(pk);
2955
- newSlots.push(this.resolveRequiredSlot(pk));
2965
+ newSlots.push(this.getSlotOrTransient(pk));
2956
2966
  }
2957
2967
  if (newSlots.length > 0) this.appendSlots(key, newSlots);
2958
2968
  }
@@ -2998,16 +3008,16 @@ var OIMReactiveCollectionIndexCompositeTrieArrayBased = class extends OIMReactiv
2998
3008
  getEntitiesByKeys(keys) {
2999
3009
  return super.getEntitiesByKeys(keys);
3000
3010
  }
3001
- resolveSlots(pks) {
3011
+ getSlotsOrTransient(pks) {
3002
3012
  const slots = [];
3003
3013
  slots.length = pks.length;
3004
3014
  for (let i = 0; i < pks.length; i++) {
3005
- slots[i] = this.resolveRequiredSlot(pks[i]);
3015
+ slots[i] = this.getSlotOrTransient(pks[i]);
3006
3016
  }
3007
3017
  return slots;
3008
3018
  }
3009
- resolveRequiredSlot(pk) {
3010
- const slot = this.resolveSlot(pk);
3019
+ getSlotOrTransient(pk) {
3020
+ const slot = this.getSlot(pk);
3011
3021
  if (!slot) return { pk, item: void 0 };
3012
3022
  return slot;
3013
3023
  }
@@ -3320,20 +3330,20 @@ var OIMReactiveGlobalIndexManualArrayBased = class extends OIMReactiveGlobalInde
3320
3330
  // src/core/OIMReactiveCollectionGlobalIndexManualArrayBased.ts
3321
3331
  var OIMReactiveCollectionGlobalIndexManualArrayBased = class extends OIMReactiveGlobalIndexManualArrayBased {
3322
3332
  constructor(queue, opts) {
3323
- const resolveSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.resolveSlot;
3333
+ const getSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.getSlot;
3324
3334
  super(queue, { indexOptions: opts.indexOptions });
3325
3335
  // Single pk membership set for O(1) `addPks` dedup. Lazily seeded from the
3326
3336
  // bucket so it stays correct even after a raw `setSlots` (e.g. derived
3327
3337
  // rebuild), matching the keyed index's `membershipOf`.
3328
3338
  this.membership = /* @__PURE__ */ new Set();
3329
3339
  this.membershipSeeded = false;
3330
- this.resolveSlot = resolveSlot;
3340
+ this.getSlot = getSlot;
3331
3341
  }
3332
3342
  setPks(pks) {
3333
3343
  this.membership.clear();
3334
3344
  for (let i = 0; i < pks.length; i++) this.membership.add(pks[i]);
3335
3345
  this.membershipSeeded = true;
3336
- super.setSlots(this.resolveSlots(pks));
3346
+ super.setSlots(this.getSlotsOrTransient(pks));
3337
3347
  }
3338
3348
  addPks(pks) {
3339
3349
  if (pks.length === 0) return;
@@ -3342,7 +3352,7 @@ var OIMReactiveCollectionGlobalIndexManualArrayBased = class extends OIMReactive
3342
3352
  for (const pk of pks) {
3343
3353
  if (membership.has(pk)) continue;
3344
3354
  membership.add(pk);
3345
- newSlots.push(this.resolveRequiredSlot(pk));
3355
+ newSlots.push(this.getSlotOrTransient(pk));
3346
3356
  }
3347
3357
  if (newSlots.length > 0) super.appendSlots(newSlots);
3348
3358
  }
@@ -3379,16 +3389,16 @@ var OIMReactiveCollectionGlobalIndexManualArrayBased = class extends OIMReactive
3379
3389
  getEntities() {
3380
3390
  return super.getEntities();
3381
3391
  }
3382
- resolveSlots(pks) {
3392
+ getSlotsOrTransient(pks) {
3383
3393
  const slots = [];
3384
3394
  slots.length = pks.length;
3385
3395
  for (let i = 0; i < pks.length; i++) {
3386
- slots[i] = this.resolveRequiredSlot(pks[i]);
3396
+ slots[i] = this.getSlotOrTransient(pks[i]);
3387
3397
  }
3388
3398
  return slots;
3389
3399
  }
3390
- resolveRequiredSlot(pk) {
3391
- const slot = this.resolveSlot(pk);
3400
+ getSlotOrTransient(pk) {
3401
+ const slot = this.getSlot(pk);
3392
3402
  if (!slot) return { pk, item: void 0 };
3393
3403
  return slot;
3394
3404
  }
@@ -3468,18 +3478,18 @@ var OIMReactiveGlobalIndexManualSetBased = class extends OIMReactiveGlobalIndexS
3468
3478
  // src/core/OIMReactiveCollectionGlobalIndexManualSetBased.ts
3469
3479
  var OIMReactiveCollectionGlobalIndexManualSetBased = class extends OIMReactiveGlobalIndexManualSetBased {
3470
3480
  constructor(queue, opts) {
3471
- const resolveSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.resolveSlot;
3481
+ const getSlot = opts.collection !== void 0 ? (pk) => opts.collection.getOrReserveSlotByPk(pk) : opts.getSlot;
3472
3482
  super(queue, { indexOptions: opts.indexOptions });
3473
3483
  this.membership = /* @__PURE__ */ new Map();
3474
3484
  this.membershipSeeded = false;
3475
- this.resolveSlot = resolveSlot;
3485
+ this.getSlot = getSlot;
3476
3486
  }
3477
3487
  setPks(pks) {
3478
3488
  this.membership.clear();
3479
3489
  const slots = [];
3480
3490
  for (let i = 0; i < pks.length; i++) {
3481
3491
  const pk = pks[i];
3482
- const slot = this.resolveRequiredSlot(pk);
3492
+ const slot = this.getSlotOrTransient(pk);
3483
3493
  if (!this.membership.has(pk)) this.membership.set(pk, slot);
3484
3494
  slots.push(slot);
3485
3495
  }
@@ -3492,7 +3502,7 @@ var OIMReactiveCollectionGlobalIndexManualSetBased = class extends OIMReactiveGl
3492
3502
  const newSlots = [];
3493
3503
  for (const pk of pks) {
3494
3504
  if (membership.has(pk)) continue;
3495
- const slot = this.resolveRequiredSlot(pk);
3505
+ const slot = this.getSlotOrTransient(pk);
3496
3506
  membership.set(pk, slot);
3497
3507
  newSlots.push(slot);
3498
3508
  }
@@ -3531,8 +3541,8 @@ var OIMReactiveCollectionGlobalIndexManualSetBased = class extends OIMReactiveGl
3531
3541
  getEntities() {
3532
3542
  return super.getEntities();
3533
3543
  }
3534
- resolveRequiredSlot(pk) {
3535
- const slot = this.resolveSlot(pk);
3544
+ getSlotOrTransient(pk) {
3545
+ const slot = this.getSlot(pk);
3536
3546
  if (!slot) return { pk, item: void 0 };
3537
3547
  return slot;
3538
3548
  }
@@ -3941,7 +3951,7 @@ var OIMObject = class {
3941
3951
  var OIMReactiveObject = class extends OIMObject {
3942
3952
  constructor(queue, opts) {
3943
3953
  super(opts);
3944
- this.updateEmitter = new OIMCarrierKeyedEmitter(queue, new OIMKeyedCarrierResolver());
3954
+ this.updateEmitter = new OIMCarrierKeyedEmitter(queue, new OIMKeyedCarrierProvider());
3945
3955
  }
3946
3956
  /**
3947
3957
  * Mark the written key(s) on the keyed emitter directly — no general-event
@@ -3983,57 +3993,10 @@ var OIMReactiveObject = class extends OIMObject {
3983
3993
  }
3984
3994
  };
3985
3995
 
3986
- // src/core/OIMTrieSet.ts
3987
- var OIMTrieSet = class {
3988
- constructor() {
3989
- this.map = new OIMTrieMap();
3990
- }
3991
- get size() {
3992
- return this.map.size;
3993
- }
3994
- add(key) {
3995
- this.map.set(key, true);
3996
- }
3997
- has(key) {
3998
- return this.map.has(key);
3999
- }
4000
- delete(key) {
4001
- return this.map.delete(key);
4002
- }
4003
- *values() {
4004
- yield* this.map.keys();
4005
- }
4006
- clear() {
4007
- this.map.clear();
4008
- }
4009
- };
4010
-
4011
- // src/core/OIMKeyDomainTrie.ts
4012
- var OIMKeyDomainTrie = class {
4013
- constructor() {
4014
- // Interning pool: logical key (by content) → the one canonical reference.
4015
- this.pool = new OIMTrieMap();
4016
- }
4017
- createMap() {
4018
- return new OIMTrieMap();
4019
- }
4020
- createSet() {
4021
- return new OIMTrieSet();
4022
- }
4023
- canonicalize(key) {
4024
- const existing = this.pool.get(key);
4025
- if (existing !== void 0) return existing;
4026
- const canonical = Object.freeze(key.slice());
4027
- this.pool.set(canonical, canonical);
4028
- return canonical;
4029
- }
4030
- };
4031
-
4032
3996
  // src/core/OIMCollectionStoreTrieDriven.ts
4033
3997
  var OIMCollectionStoreTrieDriven = class extends OIMCollectionStore {
4034
- constructor(keyDomain = new OIMKeyDomainTrie()) {
4035
- super();
4036
- this.keyDomain = keyDomain;
3998
+ constructor() {
3999
+ super(...arguments);
4037
4000
  this.slots = new OIMTrieMap();
4038
4001
  this.reservedSlots = new OIMTrieMap();
4039
4002
  }
@@ -4051,7 +4014,7 @@ var OIMCollectionStoreTrieDriven = class extends OIMCollectionStore {
4051
4014
  return reserved;
4052
4015
  }
4053
4016
  const nextSlot = {
4054
- pk: this.keyDomain.canonicalize(pk),
4017
+ pk,
4055
4018
  item: entity
4056
4019
  };
4057
4020
  this.slots.set(pk, nextSlot);
@@ -4062,7 +4025,7 @@ var OIMCollectionStoreTrieDriven = class extends OIMCollectionStore {
4062
4025
  if (slot) return slot;
4063
4026
  let reserved = this.reservedSlots.get(pk);
4064
4027
  if (!reserved) {
4065
- reserved = { pk: this.keyDomain.canonicalize(pk), item: void 0 };
4028
+ reserved = { pk, item: void 0 };
4066
4029
  this.reservedSlots.set(pk, reserved);
4067
4030
  }
4068
4031
  return reserved;
@@ -4219,8 +4182,8 @@ var OIMObjectStoreMapDriven = class extends OIMObjectStore {
4219
4182
  }
4220
4183
  };
4221
4184
 
4222
- // src/core/OIMKeyPathCarrierResolver.ts
4223
- var OIMKeyPathCarrierResolver = class {
4185
+ // src/core/OIMKeyPathCarrierProvider.ts
4186
+ var OIMKeyPathCarrierProvider = class {
4224
4187
  constructor() {
4225
4188
  this.carriers = new OIMTrieMap();
4226
4189
  }
@@ -4520,6 +4483,31 @@ function createOIMDisposeScope() {
4520
4483
  return new OIMDisposeScope();
4521
4484
  }
4522
4485
 
4486
+ // src/core/OIMTrieSet.ts
4487
+ var OIMTrieSet = class {
4488
+ constructor() {
4489
+ this.map = new OIMTrieMap();
4490
+ }
4491
+ get size() {
4492
+ return this.map.size;
4493
+ }
4494
+ add(key) {
4495
+ this.map.set(key, true);
4496
+ }
4497
+ has(key) {
4498
+ return this.map.has(key);
4499
+ }
4500
+ delete(key) {
4501
+ return this.map.delete(key);
4502
+ }
4503
+ *values() {
4504
+ yield* this.map.keys();
4505
+ }
4506
+ clear() {
4507
+ this.map.clear();
4508
+ }
4509
+ };
4510
+
4523
4511
  // src/core/OIMPkCodecKeyPath.ts
4524
4512
  var OIMPkCodecKeyPath = class {
4525
4513
  encode(pk) {
@@ -6167,35 +6155,20 @@ var OIMComputed = class {
6167
6155
  };
6168
6156
 
6169
6157
  // src/modules/effect/core/OIMEffectDependencyKeyed.ts
6170
- function isReadonlyArray(value) {
6171
- return Array.isArray(value);
6172
- }
6173
6158
  var OIMEffectDependencyKeyed = class {
6174
- constructor(source, keyOrKeys) {
6159
+ constructor(source, key) {
6175
6160
  this.source = source;
6176
- if (isReadonlyArray(keyOrKeys)) {
6177
- this.keys = keyOrKeys;
6178
- } else {
6179
- this.key = keyOrKeys;
6180
- }
6161
+ this.key = key;
6181
6162
  }
6182
6163
  subscribe(onUpdate) {
6183
- if (this.keys !== void 0) {
6184
- return this.source.subscribeOnKeys(this.keys, onUpdate);
6185
- }
6186
- if (this.key === void 0) return () => {
6187
- };
6188
6164
  return this.source.subscribeOnKey(this.key, onUpdate);
6189
6165
  }
6190
6166
  };
6191
6167
 
6192
6168
  // src/modules/effect/core/OIMEffectDependencyKeyedObject.ts
6193
6169
  var OIMEffectDependencyKeyedObject = class {
6194
- constructor(object, keyOrKeys) {
6195
- this.dep = new OIMEffectDependencyKeyed(
6196
- object,
6197
- keyOrKeys
6198
- );
6170
+ constructor(object, key) {
6171
+ this.dep = new OIMEffectDependencyKeyed(object, key);
6199
6172
  }
6200
6173
  get source() {
6201
6174
  return this.dep.source;
@@ -6207,11 +6180,8 @@ var OIMEffectDependencyKeyedObject = class {
6207
6180
 
6208
6181
  // src/modules/effect/core/OIMEffectDependencyKeyedCollection.ts
6209
6182
  var OIMEffectDependencyKeyedCollection = class {
6210
- constructor(collection, pkOrPks) {
6211
- this.dep = new OIMEffectDependencyKeyed(
6212
- collection,
6213
- pkOrPks
6214
- );
6183
+ constructor(collection, pk) {
6184
+ this.dep = new OIMEffectDependencyKeyed(collection, pk);
6215
6185
  }
6216
6186
  get source() {
6217
6187
  return this.dep.source;
@@ -6223,11 +6193,8 @@ var OIMEffectDependencyKeyedCollection = class {
6223
6193
 
6224
6194
  // src/modules/effect/core/OIMEffectDependencyKeyedIndex.ts
6225
6195
  var OIMEffectDependencyKeyedIndex = class {
6226
- constructor(index, keyOrKeys) {
6227
- this.dep = new OIMEffectDependencyKeyed(
6228
- index,
6229
- keyOrKeys
6230
- );
6196
+ constructor(index, key) {
6197
+ this.dep = new OIMEffectDependencyKeyed(index, key);
6231
6198
  }
6232
6199
  get source() {
6233
6200
  return this.dep.source;
@@ -6374,7 +6341,7 @@ export {
6374
6341
  EOIMEventQueueSchedulerEventType,
6375
6342
  EOIMIndexEventType,
6376
6343
  EOIMObjectEventType,
6377
- OIMBucketCarrierResolver,
6344
+ OIMBucketCarrierProvider,
6378
6345
  OIMCarrierKeyedEmitter,
6379
6346
  OIMCarrierSingleEmitter,
6380
6347
  OIMCollection,
@@ -6441,9 +6408,7 @@ export {
6441
6408
  OIMIndexStoreSetBased,
6442
6409
  OIMIndexStoreTrieDrivenArrayBased,
6443
6410
  OIMIndexStoreTrieDrivenSetBased,
6444
- OIMKeyDomainNative,
6445
- OIMKeyDomainTrie,
6446
- OIMKeyPathCarrierResolver,
6411
+ OIMKeyPathCarrierProvider,
6447
6412
  OIMKeyedBucketArrayBased,
6448
6413
  OIMKeyedBucketSetBased,
6449
6414
  OIMMap2Keys,