diff --git a/packages-user/data-base/src/map/eventPath.test.ts b/packages-user/data-base/src/map/eventPath.test.ts index c603772..caeddcb 100644 --- a/packages-user/data-base/src/map/eventPath.test.ts +++ b/packages-user/data-base/src/map/eventPath.test.ts @@ -16,6 +16,17 @@ let modules: TestModules; beforeAll(async () => { vi.stubGlobal('main', { replayChecking: true }); + Map.prototype.getOrInsertComputed ??= function ( + this: Map, + key: K, + callback: (key: K) => V + ): V { + const existing = this.get(key); + if (existing !== undefined) return existing; + const value = callback(key); + this.set(key, value); + return value; + }; const mapModule = await import('./mapState'); const commonModule = await import('@user/data-common'); const loggerModule = await import('@motajs/common'); diff --git a/packages-user/data-base/src/map/mapLayer.ts b/packages-user/data-base/src/map/mapLayer.ts index 129c1ce..59042be 100644 --- a/packages-user/data-base/src/map/mapLayer.ts +++ b/packages-user/data-base/src/map/mapLayer.ts @@ -213,20 +213,10 @@ export class MapLayer event(x: number, y: number): ILayerEventView | null { if (!this.inMap(x, y)) return null; const index = y * this.width + x; - const getOrInsertComputed = this.pointEvents.getOrInsertComputed; - if (getOrInsertComputed) { - return getOrInsertComputed.call( - this.pointEvents, - index, - () => new LayerEventView() - ); - } - let eventView = this.pointEvents.get(index); - if (!eventView) { - eventView = new LayerEventView(); - this.pointEvents.set(index, eventView); - } - return eventView; + return this.pointEvents.getOrInsertComputed( + index, + () => new LayerEventView() + ); } getPointEvent(x: number, y: number): ReadonlyMap | null { diff --git a/packages-user/data-base/src/map/mapLifecycle.test.ts b/packages-user/data-base/src/map/mapLifecycle.test.ts index 12940ef..eb01e9f 100644 --- a/packages-user/data-base/src/map/mapLifecycle.test.ts +++ b/packages-user/data-base/src/map/mapLifecycle.test.ts @@ -9,6 +9,17 @@ import { vi.hoisted(() => { vi.stubGlobal('main', { replayChecking: true }); vi.stubGlobal('location', { origin: 'http://localhost' }); + Map.prototype.getOrInsertComputed ??= function ( + this: Map, + key: K, + callback: (key: K) => V + ): V { + const existing = this.get(key); + if (existing !== undefined) return existing; + const value = callback(key); + this.set(key, value); + return value; + }; }); interface TestModules { diff --git a/packages-user/data-system/src/event/eventDispatch.test.ts b/packages-user/data-system/src/event/eventDispatch.test.ts index f83bb44..8116e35 100644 --- a/packages-user/data-system/src/event/eventDispatch.test.ts +++ b/packages-user/data-system/src/event/eventDispatch.test.ts @@ -18,6 +18,17 @@ import { AnonTokyoInterpreter } from 'anon-tokyo'; vi.hoisted(() => { vi.stubGlobal('main', { replayChecking: true }); vi.stubGlobal('location', { origin: 'http://localhost' }); + Map.prototype.getOrInsertComputed ??= function ( + this: Map, + key: K, + callback: (key: K) => V + ): V { + const existing = this.get(key); + if (existing !== undefined) return existing; + const value = callback(key); + this.set(key, value); + return value; + }; }); const eventTriggers = {