Initialises the manager with the module access function.
Module access function
Success flag
Creates a new map instance.
Target element id
Configuration options
Module access function
Map instance, or null
Returns a map instance by id, read from the Core registry.
Target element id.
The registered IMapAdapter, or null when there is none (or when
the manager has not been initialised yet).
Returns every live map instance, read from the Core registry.
The registered adapters, in registration order; [] when there is
none (or when the manager has not been initialised yet).
Destroys a map instance by id.
⚠️ It now DESTROYS, where it used to drop a mirror entry and leave the real map running — that discrepancy was half of the measured disagreement. No production caller reached it (measured 14/08/2026: definition and unit tests only), so nothing depended on the old, weaker meaning.
Target element id.
true when an instance was found and destroyed, false otherwise.
Returns the manager statistics.
activeInstances counts what Core holds — this manager counts nothing of its
own. ⚠️ It is NOT on the GeoLeaf.getHealth() path: that one reads
APIController.healthStatus and never calls in here (measured 14/08/2026, against
a roadmap note claiming the opposite).
Resets the manager.
Resets ITS OWN state only — counters and module access. It does not destroy live maps, and never did: it used to clear a mirror, which left every real map running.
Factory manager for multi-map support.
⚠️ It holds NO registry of its own, and that is the point. It used to keep a
mapInstancesmap alongside the oneCorealready owns, filled only by its owncreateMap()with the veryIMapAdapterthatCore.getMap()returns — a mirror, not a second source of truth.Core.destroy()purged one of the two, soGeoLeaf.getMap()andGeoLeaf.Core.getMap()could disagree — measured once.The fix is subtraction: every accessor delegates, so there is nothing left to keep in sync. Measured before removing it — no production caller ever reached
GeoLeaf.createMap()(boot uses its own localcreateMapinapp/boot-modules/core-map-lifecycle.ts), so the mirror was never even populated:GeoLeaf.getMap()returnednullfor every live map. This is a simplification that happens to restore two published members, not a leak being patched.